Skip to content

读懂代码

你将学到什么

  • 如何在 5 分钟内读懂一个 PR 的改动范围和风险
  • 如何读懂 API 文档并判断对接可行性
  • 如何快速扫描技术方案文档并提出有价值的问题

为什么重要:PM 不需要写代码,但必须能读懂改动的影响范围,才能做好需求验收和风险把控。


一、读 PR Diff(5分钟掌握)

Pull Request 是工程师提交代码改动的地方。你需要能看懂变更的范围和意图,不需要理解具体实现。

Diff 语法速查

diff
- 红色行(减号):被删除的代码
+ 绿色行(加号):新增的代码
  灰色行:未变化的上下文

PM 读 PR 的三个核心问题

问题 1:改动了哪些文件?

文件路径透露关键信息:

文件路径含义PM 关注点
api/routes/接口层改动可能影响前端调用,需确认接口文档是否更新
components/pages/前端 UI 改动需要验收视觉和交互
config/.env配置改动注意环境差异(开发/测试/生产)
prompts/system_promptPrompt 改动AI 行为会变,需要回归测试
migrations/.sql数据库变更高风险,需确认数据兼容性

问题 2:这个改动和我的需求对齐吗?

不需要看懂代码逻辑,只需确认:

  • ✅ 新增的接口名称/参数是否符合你在 PRD 里写的
  • ✅ 删除的代码是否是你说要下掉的功能
  • ✅ 改动的配置是否和你预期的一致

问题 3:有没有意外的副作用?

关注以下风险信号:

风险信号含义PM 应对
改动了公共函数(被多处调用)影响范围大要求工程师说明影响范围和测试覆盖
删除了大量代码而不是修改可能是重构确认功能不受影响,回归测试
修改了数据库 Schema数据结构变更关注数据迁移方案和回滚策略
改动了认证/权限相关代码安全风险需要安全测试,确认不会误开权限

实战示例

diff
// api/chat.py
- def call_model(prompt: str) -> str:
-     return openai_client.complete(prompt)
+ def call_model(prompt: str, temperature: float = 0.7) -> str:
+     return openai_client.complete(prompt, temperature=temperature)

PM 能读出的信息

  1. 函数签名增加了 temperature 参数,有默认值 0.7(向后兼容)
  2. 这可能是为了支持 PRD 里某个"创意模式/精确模式"的需求
  3. 需要确认:前端调用的地方是否也会传这个参数?

快速检查清单

在 PR 评审时,用这个清单快速扫描:

  • [ ] 改动的文件路径符合预期(前端/后端/配置)
  • [ ] 新增/删除的功能和 PRD 一致
  • [ ] 没有改动高风险文件(数据库/认证/支付)
  • [ ] PR 描述清楚说明了改动原因和测试方法

二、读 API 文档(10分钟掌握)

AI 产品几乎都有 API 对接需求。能自己读懂 API 文档,是 PM 的基础能力。

API 文档的标准结构

1. Endpoint(接口地址)    POST https://api.example.com/v1/chat
2. Headers(请求头)       Authorization: Bearer {api_key}
3. Request Body(请求体)  JSON 格式的参数
4. Response(返回值)      JSON 格式的结果
5. Error Codes(错误码)   4xx 客户端错误 / 5xx 服务端错误

读 OpenAI 兼容 API 示例

json
// 请求
POST /v1/chat/completions
{
  "model": "gpt-4o",
  "messages": [
    {"role": "system", "content": "你是一个助手"},
    {"role": "user", "content": "你好"}
  ],
  "temperature": 0.7,
  "max_tokens": 1000,
  "stream": true
}

// 返回(非流式)
{
  "choices": [{
    "message": {"role": "assistant", "content": "你好!有什么可以帮你?"},
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 20,
    "completion_tokens": 15,
    "total_tokens": 35
  }
}

PM 需要关注的关键字段

字段含义产品决策相关
model使用的模型版本成本/性能平衡,GPT-4o 贵但好,GPT-4o-mini 便宜但弱
max_tokens最大输出长度限制影响回答完整性,设太小会被截断
temperature随机性(0-2)0 = 精确一致,1 = 创意多样,2 = 非常随机
stream是否流式输出true = 打字机效果(用户体验好),false = 一次性返回
usage.total_tokens本次消耗 Token 数成本计算依据,1K Token ≈ ¥0.01-0.1(视模型)
finish_reason停止原因stop = 正常结束,length = 被截断(需调大 max_tokens)

常见 HTTP 状态码速查

状态码含义PM 应对策略
200成功正常
400请求参数错误检查前端传参,可能是字段缺失或格式错误
401未授权(API Key 无效)Key 过期或权限不足,联系供应商
429请求过多(限流)触发了 Rate Limit,需要加队列或降频
500服务端错误后端问题,找工程师排查日志
503服务不可用模型供应商故障,关注官方状态页

常见踩坑

  1. 忽略 finish_reason:如果是 length,说明回答被截断了,用户看到的是不完整的内容
  2. 不看 Rate Limit:很多 API 有 RPM(每分钟请求数)限制,高并发场景容易触发 429
  3. 不处理 503:模型供应商偶尔会故障,产品需要有降级方案(如切换备用模型)

互动练习:读懂这个 API 错误

json
{
  "error": {
    "message": "This model's maximum context length is 4096 tokens. However, your messages resulted in 5200 tokens.",
    "type": "invalid_request_error",
    "code": "context_length_exceeded"
  }
}

这个错误说明了什么?PM 应该怎么处理?

查看答案

错误原因:输入的对话历史 + 当前问题超过了模型的上下文窗口(4096 Token)。

PM 应对方案

  1. 短期:截断对话历史,只保留最近 N 轮对话
  2. 中期:实现智能摘要,压缩历史对话
  3. 长期:升级到更大上下文的模型(如 GPT-4o 支持 128K Token)

产品设计建议:在 UI 上提示用户"对话过长,已自动精简历史记录",避免用户困惑。


三、读技术方案文档(5分钟扫描法)

工程师写的技术方案(Tech Design Doc)是 PM 对齐需求的关键文档。

快速扫描框架

第 1 分钟:看背景和目标

  • ✅ 解决什么问题?和 PRD 的目标一致吗?
  • ✅ 有没有明确的成功指标?

第 2 分钟:看架构图或流程图

  • ✅ 数据从哪里来,经过什么处理,到哪里去
  • ✅ 有没有外部依赖(第三方 API、数据库)

第 3 分钟:看方案对比

  • ✅ 工程师通常会列出 2-3 个备选方案,看他们为什么选了这个
  • ✅ 被放弃的方案往往藏着重要的约束条件

第 4 分钟:看风险和限制

  • ✅ 明确写出的风险要重点关注
  • ✅ 看 edge case(边界情况)的处理

第 5 分钟:看时间估算

  • ✅ 工期是否合理?有没有 Buffer?
  • ✅ 依赖哪些外部资源(其他团队、三方服务)

PM 在技术评审中应该提的问题

✅ 好问题(从用户/产品视角)

  • "这个方案在高并发下,用户会感受到延迟上升吗?"
  • "如果第三方 API 挂了,我们的降级策略是什么?"
  • "这个改动会影响已有用户的数据吗?需要数据迁移吗?"
  • "AB 测试怎么设计?怎么衡量成功?"
  • "这个方案的成本是多少?和预算对齐吗?"

❌ 不好的问题(越俎代庖或太模糊)

  • "为什么不用 X 技术?"(除非你有充分理由,否则是质疑而非讨论)
  • "这里能不能优化一下?"(太模糊,帮不上忙)
  • "为什么要这么写?"(质疑而不是好奇,容易引起对立)
  • "能不能加个功能 Y?"(评审不是需求变更会,应该在 PRD 阶段提)

互动练习:技术方案评审

假设工程师提出以下方案:

"为了降低成本,我们把所有用户的对话历史都用 GPT-4o-mini 做摘要,然后存到数据库。每次对话时,先读取摘要,再拼接当前问题,发给 GPT-4o。"

作为 PM,你会提什么问题?

查看参考答案

好问题示例

  1. 用户体验:"摘要会丢失哪些信息?用户会感觉 AI '忘记'了之前说的话吗?"
  2. 成本核算:"摘要的成本是多少?和直接用完整历史对话相比,能省多少?"
  3. 边界情况:"如果用户的对话历史很短(只有 1-2 轮),还需要摘要吗?"
  4. 降级方案:"如果摘要 API 失败了,是直接用原始历史,还是拒绝服务?"
  5. AB 测试:"怎么验证摘要方案不会降低用户满意度?"

为什么这些是好问题

  • 从产品视角出发(用户体验、成本、风险)
  • 具体可执行(不是泛泛而谈)
  • 帮助工程师完善方案(而非质疑技术能力)

检查点

在继续之前,确保你能回答:

  • [ ] 能在 5 分钟内读懂一个 PR 的改动范围和风险点
  • [ ] 能识别 API 文档中的关键字段(model、temperature、max_tokens)
  • [ ] 能判断 HTTP 状态码的含义并提出应对方案
  • [ ] 能用 5 分钟扫描法快速读完一份技术方案
  • [ ] 能在技术评审中提出有价值的产品视角问题

延伸阅读

专为 AI 产品经理打造