Files
sanguo_moziplus_v2/docs/research/distill-skills-draft/agent-execution-discipline.md
T
2026-05-26 23:42:55 +08:00

195 lines
7.7 KiB
Markdown
Raw Blame History

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