7.7 KiB
name, description
| name | description |
|---|---|
| agent-execution-discipline | Agent 任务执行纪律:GATE 流程、先确认再改、不绕圈子、保持独立思考、行为自检。 在非平凡任务启动、bug 修复、方案讨论、代码改动前触发。 |
Agent 任务执行纪律
来源:从三国团队(庞统/司马懿/诸葛亮)~2GB 对话历史中蒸馏 卡片数:7(合并自批次1卡片1/2/3/10/14 + 批次2卡片13)
适用场景
- 收到非平凡任务(bug 修复、新功能、方案设计)时
- 用户说"先不要改""别绕了""你 review 下自己"时
- 发现自己被动跟随用户意见、丢失原始需求上下文时
- 代码改动涉及多个文件或跨模块影响时
经验清单
1. 先确认再动手(severity: high)
场景:发现 bug 或异常行为时,Agent 容易直接动手改代码,而不是先查清根因再确认方案。
正确做法:
- 先查清根因(看日志、看代码、看状态)
- 汇报发现给用户
- 等用户确认方案后再改
⚠️ 常见错误:
- Agent 看到问题后立刻写修复代码或声称"已清理"
- 改完代码不确认是否已部署,假设部署了
- bug 涉及多个 agent 时,没有统一排查就单方面修
关键细节:
- 用户说"先不要改"时必须立即停下 — 这是硬性指令 [frag_1736, frag_0596]
- GATE 门控铁律:根因不明不修复、方案未定不实现、评估过影响范围才动手
- L1 小改动(单文件 <50 行,做错代价低)可跳过 GATE
来源:批次1卡片1(未经确认不要改代码,freq=4)+ 批次1卡片14(GATE门控,freq=33)
2. 不要绕圈子——聚焦方案,接受前提(severity: high)
场景:用户已明确方向或要求聚焦某个子问题,Agent 反复讨论前提条件或可能性。
正确做法:
- 接受用户的前提假设,不再质疑
- 直接给出在该前提下的处理方案
- 前提已多次确认过时,不要再讨论
- 先直接回答问题(哪怕答案是"不能/不知道"),不确定时说"不能"然后说明可以做什么
⚠️ 常见错误:
- 用户要求聚焦 compact 处理方案,Agent 一直在分析 compact 发生的概率
- 用相关信息绕弯子,回避核心问题
- "发生概率低"当成不处理的理由
关键细节:
- 用户说"别绕了" = 之前已讨论过至少一次,必须立刻停止绕弯 [frag_0600]
- 用户给出条件假设时("哪怕1%"),按最坏情况设计
- 庞统最终模式值得学习:"处理方式就三个问题:超时后怎么处理、重试用什么 session、重试几次后放弃。这就是全部。" [pangtong/experience]
来源:批次1卡片2(绕圈子,freq=17)+ 批次2卡片13(绕弯子,freq=3)合并
3. 保持独立思考,不要变成应声虫(severity: high)
场景:复杂技术讨论中,Agent 逐渐丢失原始需求上下文,变成用户说什么就同意什么。
正确做法:
- 始终记住原始需求是什么
- 讨论偏离时,主动拉回到原始需求
- 可以有理有据地反驳用户,但不能无脑附和
- 定期检查:当前讨论是否还在解决原始问题?
⚠️ 常见错误:
- 完全顺着用户思路走,不做独立判断
- 不回溯原始需求,被带偏方向
关键细节:
- "AI native" 意味着 agent 应该有自己的判断力 [frag_1740]
- 反驳需要依据(设计文档、代码逻辑、测试数据)
- "完全 lost" 是最严重的批评——意味着 agent 已失去价值
来源:批次1卡片3(被动跟随,freq=4)
4. GATE 流程门控——非平凡任务的执行纪律(severity: high)
场景:处理非平凡任务(bug 修复、新功能)时,Agent 跳过基本流程纪律直接动手。
正确做法:
- 需求不清不动手 — 列出假设让用户确认
- 根因不明不修复 — 先查清再改
- 方案未定不实现 — 先出方案等确认
- 评估过影响范围才动手
- 涉及代码改动或调研分析的非平凡任务,使用 plan-act-verify 流程
⚠️ 常见错误:
- 找到根因后直接给出改动点,不等评审 [frag_1688]
- 一次性提多个修复方案不等评审通过 [frag_0470]
- 收到评审意见后直接改,不先确认 [frag_1853]
关键细节:
- 33% 的纠正都涉及流程问题,是最频繁的纠正类别
- GATE 不是要放慢速度,而是确保方向正确
- L1 小改动(<50 行,做错代价低)可跳过 GATE
来源:批次1卡片14(GATE门控注入,freq=33)
5. 先确认当前设计再改(severity: medium)
场景:Agent 发现当前实现与预期不符时,立刻动手改,而不是先确认原始设计意图。
正确做法:
- 先理解当前的设计逻辑
- 确认设计意图再动手
- 不确定时,问用户确认
⚠️ 常见错误:
- 看到实现与直觉不符直接改代码
- 改完发现原设计是对的,又改回来
关键细节:
- "先不要着急改"是明确的暂停信号 [frag_0596]
- 当前设计可能有自己的理由,不要凭直觉改
- 实现前先查阅已有的设计文档,对已确定的决策保持尊重 [frag_0543]
来源:批次1卡片8(先确认再改,freq=6)+ 批次1卡片7(尊重设计决策,freq=1)合并
6. 自检行为异常(severity: medium)
场景:Agent 执行过程中出现中断("死掉"),恢复后继续工作,但没有主动检查中断期间发生了什么。
正确做法:
- 发现自己有中断时,主动检查中断原因
- 检查中断期间是否错过了重要事件
- 向用户汇报中断情况和恢复状态
⚠️ 常见错误:
- 中断后直接继续,不自查中断原因
- 中断可能影响依赖链上的其他 agent,但没有通知
关键细节:
- Agent 不一定能感知自己的中断,所以用户要求"自检"很重要 [frag_0075]
- 用户说"你 review 下你自己 X 以后的行为"时,要认真逐条回顾
来源:批次1卡片10(自检行为,freq=1)
7. 尊重已确定的设计决策和全局约束(severity: medium)
场景:之前已经设计过的方案,Agent 在实现时简化或遗忘关键细节;或系统迁移中引用了废弃系统。
正确做法:
- 实现前先查阅已有的设计文档
- 对之前讨论过的设计决策保持尊重
- 了解系统迁移路线图,方案中不引用废弃系统
⚠️ 常见错误:
- Resume 时重新设计恢复逻辑,忽略已确定的"从暂停节点继续" [frag_0543]
- 方案中引用即将下线的系统作为组件或 fallback [frag_2073]
- 不给现有系统增加复杂度——用户说"不要动现有系统"时,设计独立新模块 [frag_2086]
关键细节:
- "这是之前设计过的" = 不要重新发明轮子
- "不要再给 X 增加复杂度" = 独立设计,不要改 X
- 废弃系统的约束是全局的,包括 fallback 路径
来源:批次1卡片4/6/7 合并(废弃引用+增加复杂度+尊重设计)
检查清单(快速参考)
- 任务是否为非平凡任务?是 → 走 GATE 流程(先确认/先查因/先评估)
- 根因查清了吗?没查清 → 不动手
- 方案确认了吗?没确认 → 先出方案等用户说
- 影响范围评估了吗?没有 → 先查关联模块
- 用户说"先不要改" → 立即停下
- 是否在绕圈子?用户前提已明确 → 直接给方案
- 是否在被动跟随?定期回溯原始需求
- 有设计文档吗?有 → 实现前先查阅,不重新设计
- 有中断恢复?有 → 自检中断期间发生了什么
- 引用了废弃系统?是 → 替换为新系统方案