Prompt Contracts
先给结论
Prompt contract 的作用不是把提示词写得更长,而是把任务边界写得更清楚。它最少要回答 5 个问题:
- 输入是什么
- 输出是什么
- 能改哪里
- 怎么验证
- 要交什么证据
适用场景
- 把同类任务做成可复用模板
- 在不同工具之间共享同一套任务描述
- 把执行、验证和 review 接起来
- 降低“这次改成了,下次又跑偏”的波动
一份最小模板
任务:
范围:
相关文件:
不要做:
输出要求:
验证方式:
交付证据:
遇到不确定时:先停下来问
合同字段应该怎么写
输入
说明需求来源、相关文件、上下文材料和前置条件。
输出
说明希望交付什么,例如:
- 代码修改
- 测试用例
- 根因说明
- PR 描述草稿
边界
说明允许改动和禁止改动的目录、命令、依赖、架构层。
验证
说明要跑哪些命令,什么结果算通过。
证据
说明最终必须给出哪些结果,例如测试输出、截图、diff 说明或风险声明。
为什么团队要用 contract
- 同类任务可以复用
- 不同工具能共享同一套输入输出
- review 更容易判断是否越界
- 失败模式可以回流进模板,而不是只靠个人经验
3 类最值得先固化的 contract
Bugfix
- 先定位根因
- 只做最小修复
- 给出复现和验证结果
Refactor
- 先定义行为边界
- 写清允许 改动的结构层
- 给出行为不变的验证证据
Test
- 先定义覆盖目标
- 先给测试计划再落用例
- 区分主路径和边界条件
推荐做法
- 每类高频任务至少维护一份可复制模板
- 合同里必须写可验证命令,而不是只写“请自测”
- 合同要明确接管点,遇到超边界情况必须停下来
- 复盘失败案例时,优先回写合同模板而不是只做口头经验分享
常见错误
- 只写目标,不写边界
- 让 agent 自己决定完成标准
- 一次合同里同时塞多个主目标
- 没有证据字段,导致 PR 里还要重新解释
- 任务已经变了,合同却还是旧版本
一份更适合团队使用的模板
任务目标:
背景与上下文:
允许修改:
禁止修改:
验证命令:
交付物:
风险提示:
超边界时如何处理: