生产级 Agent 上线前必须检查的 50 件事
前面我发布了 Production Agent Checklist v1.0。
那是一份模块级清单。
今天这篇更像上线门禁。
如果一个 Agent 要进入真实用户环境,尤其是能读文件、写文件、跑命令、联网、调用 MCP 或触发业务流程,我会至少检查下面 50 件事。
不是为了吓人。
是为了避免那句最危险的上线理由:
我试了几次,感觉还行。
感觉不够。
上线要有证据。
1-5:身份和状态
- 每次执行都有
runId、turnId、traceId。 - 每个 step 有稳定 index 或
stepId。 - 每个 tool call 有
toolCallId。 final、failed、cancelled、paused、max_steps、budget_exhausted能区分。- 用户能看到当前任务状态,而不是只看到一个转圈动画。
没有身份,后面所有排障都会散。
6-10:Loop 控制
- 有
maxSteps。 - 有 wall-clock timeout。
- 支持用户取消。
- 能识别 repeated tool call。
- 能识别 repeated error。
Agent 不只要会跑。
它还要会停。
11-15:上下文
- Context Builder 不是简单拼聊天记录。
- 当前用户目标和显式约束不会被摘要覆盖。
- 安全策略不会被历史挤掉。
- 工具结果过长时会截断、摘要或保存 artifact。
- 每次 context build 都有 debug report。
模型答错时,先看它到底看见了什么。
16-20:模型和 Provider
- Runtime 有自己的
ModelResponse中间表示。 - provider 原始字段没有散落在业务代码里。
- 记录模型 token、latency、finish reason。
- 限流、超时、上下文超限有不同错误类型。
- 有 deterministic mock provider 测 Runtime 逻辑。
真实模型会变。
Runtime 的状态转移不能跟着飘。
21-25:工具系统
- 工具不是
Map<string, Function>。 - 每个工具有 schema、risk、timeout、output policy。
- 工具先 schema validation,再 policy validation。
- 未知工具返回 observation,不让进程崩溃。
- 工具版本进入 trace 和 eval。
Tool Calling 只是接口能力。
Tool Runtime 才是工程边界。
26-30:权限审批
- PermissionGate 在 execute 前运行。
- 写文件有 preview 或 diff。
- 网络工具展示域名和用途。

