作者为 Cursor/Claude Code/Windsurf 等自主编程智能体设计了 5 个强制的结构化契约:任务描述含 acceptance_criteria、工具调用含 expected_shape 校验、测试结果不可用自然语言。
你的 agent 说"完成了",但线上环境不这么认为。
如果你运行过自主 coding agents(Cursor、Claude Code、Windsurf、自定义循环),你一定遇到过这种静默失败模式:agent 返回看似合理的结果,pipeline 接受了它,但问题在三个步骤之后才暴露出来。
修复方案不是用更聪明的模型,而是在每个交接点建立确定性契约。下面是我现在在每个 agent pipeline 中强制要求的 5 个 JSON Schema。
每个 agent 之间的任务都携带:id、goal、inputs[]、acceptance_criteria[]、max_turns。如果一个 agent 无法产出 acceptance_criteria,就不允许开始。
将每个 tool call 包装为 {tool, args, expected_shape, on_failure}。expected_shape 在结果重新进入 agent context 之前被验证,这样格式错误的 API 响应永远不会污染推理过程。
{status: pass|fail, tests_run, tests_passed, error_excerpt}。不允许自由文本的"看起来没问题"。一个无法统计测试数量的 pipeline 也不可能信任任何结论。
{verdict: approve|request_changes, blocking_issues[], nits[]}。将阻塞性问题与非阻塞性问题分开,避免经典循环:agent 因为一个typo 就 blocking PR。
{files[], hash, produced_by, verified_by}。确定性就在这里:如果 hash 不在 manifest 里,它就没有上线。
Schema 将失败检测向左移——从凌晨两点的故障变成边界处的验证错误。它们枯燥、可版本化、与模型无关:把 GPT 换成 Claude,契约依然成立。
我把这两个 5 个 schema(外加一个 Pydantic V2 验证 CLI 和 Cursor/Windsurf/Claude Code 的跨平台配置)打包成了一个开箱即用的 vault:
-> Universal Agent Skills & Production Prompt Vault 2026 — use code LAUNCH50 for 50% OFF https://ancuboy.gumroad.com/l/universal-agent-skills-vault/LAUNCH50
部署能够坚守的契约。停止手动修复坏掉的 agent 运行。
由一位独立工程师打造,专注于确定性自动化工具。