关于 git-conflict-resolve
git-conflict-resolve 是用于处理 merge、cherry-pick 和 rebase 冲突的仓库技能,面向需要安全解决代码冲突并留存审计记录的开发者。它按备份、逐文件分析、解决、验证和报告的流程提供指引。
主要功能
- 01自动检测 Git 操作状态
- 02解决前备份冲突文件
- 03逐文件分析冲突并说明理由
- 04验证结果并生成报告
适用场景
- 01处理 merge 过程中的冲突
- 02解决 cherry-pick 或 rebase 冲突
- 03记录冲突决策以供审查
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ duc01226/ easyplatform --skill git-conflict-resolve安装后在 Claude Code 中输入/git-conflict-resolve确认已加载。
详细介绍
Codex 兼容性说明:
- 在 Codex 中使用
$skill-name调用仓库技能;此镜像副本会将旧版 Claude/skill-name引用改写为此格式。- 任务跟踪要求:在执行任何工作流或技能步骤之前,先为所有步骤创建/更新任务跟踪,并随着进度变化保持同步。
- 用户提问提示意味着要在 Codex 中直接询问用户。
- 忽略出现的 Claude 专属模式切换说明。
- 严格执行约定:当用户明确调用某项技能时,必须按原样执行该技能协议。
- 子 Agent 授权:当用户调用或 AI 检测到某项技能,且其协议要求使用子 Agent 时,该技能的激活即授权为此任务使用所需的
spawn_agent子 Agent。- 除非用户事先明确批准偏离,否则不得跳过、重排或合并协议步骤。
- 对于工作流技能,必须明确执行每个列出的子技能步骤,并逐步报告证据。
- 如果所需步骤/工具在此环境中无法运行,请停止并询问用户,然后再调整。
Codex 项目参考资料加载(无钩子)
Codex 使用静态项目参考资料加载,而非运行时注入项目文档。 进行编码、规划、调试、测试或审查时,请按照以下路由显式打开项目文档。
始终阅读:
docs/project-config.json(项目专属路径、命令、模块以及工作流/测试设置)docs/project-reference/docs-index-reference.md(指向完整docs/project-reference/*目录)docs/project-reference/lessons.md(始终适用的防护措施和反模式)
上下文缺失/过时时的处理路径: 如果 docs/project-config.json、文档索引、lessons.md、CLAUDE.md、AGENTS.md 或任务所需的任何参考文档缺失或过时,请在常规项目工作开始前自动运行 $project-init 或精简设置路径($project-config、$docs-init、$scan-all、$scan --target=<key>、$claude-md-init)。如果 Codex 镜像或 AGENTS.md 缺失/过时,请让用户运行 $sync-codex;不要自动运行它。
按具体情况阅读文档:
- 项目结构/架构/技术栈/部署/设置(任何层级——后端、前端或基础设施):
project-structure-reference.md - 后端/CQRS/API/领域/实体变更:
backend-patterns-reference.md、domain-entities-reference.md - 前端/UI/样式/设计系统:
frontend-patterns-reference.md、scss-styling-guide.md、design-system/README.md - 编写规范、
docs/specs/路径或 TC 格式:feature-spec-reference.md、spec-system-reference.md、spec-principles.md - 行为/公共契约变更或规范-测试-代码同步:
workflow-spec-test-code-cycle-reference.md以及上述规范文档 - 派生规范索引/ERD/重新实现指南:
spec-system-reference.md和docs/specs/下的源 Feature Spec - 集成测试实现/审查:
integration-test-reference.md - E2E 测试实现/审查:
e2e-test-reference.md - 代码审查/审计工作:
code-review-rules.md,以及根据变更文件选择的领域文档
不要盲目阅读所有文档。请从 docs-index-reference.md 开始,然后只打开相关文件。
快速摘要
目标: 通过备份、分析和结构化报告,解决 git 合并/cherry-pick/rebase 冲突。
工作流:
- 备份 — 创建当前状态的安全备份
- 分析 — 确定冲突类型和受影响的文件
- 解决 — 针对每个冲突应用相应的解决策略
- 报告 — 生成冲突解决报告
关键规则:
- 解决冲突前务必创建备份
- 优先保留双方意图,而非任意选择一方
- 生成解决报告以留存审计记录
保持怀疑,运用批判性思维和顺序思维。每项主张都必须有可追溯的证据,并给出置信度百分比(想法应高于 80%)。
目的
系统化解决 Git 冲突(合并、cherry-pick、变基),包括:
- 解决前备份所有冲突文件
- 逐个文件分析冲突并说明根本原因
- 解决冲突并记录理由
- 生成全面的报告
变量
OPERATION:从 Git 状态自动检测(cherry-pick、merge、rebase)
REPORT_PATH:plans/reports/conflict-resolution-{date}-{operation}-{source}.md
BACKUP_PATH:.ai/workspace/conflict-backups-{date}/
工作流
步骤 1:检测冲突状态
# Detect operation type
git status # Check for "cherry-pick in progress", "merge in progress", etc.
# List all conflicted files
git diff --name-only --diff-filter=U # Unmerged files (both modified)
git status --short | grep "^DU\|^UD\|^UU\|^AA\|^DD" # All conflict types
对每个冲突分类:
- DU(由我方删除): 文件存在于源分支,但不存在于目标分支
- UD(由对方删除): 文件存在于目标分支,但已被源分支删除
- UU(双方修改): 双方分支都修改了同一个文件
- AA(双方新增): 双方分支都在同一路径新增了文件
- DD(双方删除): 双方分支都删除了该文件
步骤 2:创建备份文件
任何解决操作前都必须执行。
mkdir -p {BACKUP_PATH}
# For each conflicted file, copy WITH conflict markers preserved
cp <conflicted-file> {BACKUP_PATH}/<filename>.conflict
为每个冲突文件创建一个任务跟踪项,此外还要创建报告和审查任务。
步骤 3:分析每个冲突(逐个文件)
对每个冲突文件执行以下分析:
3a. 理解冲突类型
- DU/UD(由一方删除): 检查该文件是否是在目标分支上不存在的某个提交中引入的。读取源提交中的文件内容,了解其作用。
- UU(双方修改): 阅读冲突标记。识别双方各自做了哪些修改,以及修改原因。
3b. 读取两个版本
# For UU conflicts: read the file with conflict markers
# Look for <<<<<<< HEAD / ======= / >>>>>>> markers
# For DU conflicts: get the source version
git show <source-commit>:<file-path>
# Optionally extract clean versions
git show HEAD:<file-path> > {BACKUP_PATH}/<filename>.ours
git show <source-commit>:<file-path> > {BACKUP_PATH}/<filename>.theirs
3c. 分析依赖关系
- 检查调用方: 其他文件是否引用了此文件中的方法/类?调用方名称是否兼容?
- 检查构造函数/DI: 解决冲突是否需要新增依赖?
- 检查跨文件一致性: 此次解决是否会导致其他文件出问题?
3d. 确定解决策略
| 冲突模式 | 解决策略 |
|---|---|
| DU:功能需要此文件 | 接受对方版本(添加该文件) |
| DU:不需要此文件 | 保留我方版本(跳过该文件) |
| UU:修改互不重叠 | 合并双方修改(保留所有修改) |
| UU:修改重叠,源分支修改了目标分支中不存在的方法 | 如果目标分支中不存在这些方法,则保留我方版本 |
| UU:双方修改了同一个方法 | 仔细分析后手动合并 |
| UU:架构/快照文件 | 新实体接受对方版本,已修改的实体则进行合并 |
步骤 4:解决每个冲突
应用确定的策略:
# Accept theirs (source version)
git checkout --theirs <file> && git add <file>
# Keep ours (target version)
git checkout --ours <file> && git add <file>
# Manual merge: Edit the file to remove conflict markers, then:
git add <file>
手动合并时:
- 移除
<<<<<<< HEAD、=======、>>>>>>> <commit>标记 - 保留双方正确的内容
- 确认没有遗留冲突标记:
git diff --check
步骤 5:验证解决结果
# Check no unmerged files remain
git diff --name-only --diff-filter=U
# Check no leftover conflict markers
git diff --check
# Review overall status
git status
步骤 6:完成操作
# For cherry-pick
git cherry-pick --continue --no-edit
# For merge
git commit # (merge commit is auto-prepared)
# For rebase
git rebase --continue
步骤 7:生成报告
在 {REPORT_PATH} 创建一份全面的报告,包含:
- 标题信息: 日期、源提交/分支、目标分支、结果提交
- 摘要: 冲突总数、类别、总体风险
- 逐个文件的详情:
- 文件路径
- 冲突类型(DU/UU 等)
- 根本原因(冲突发生的原因)
- 所选的解决方式(接受对方版本/保留我方版本/手动合并)
- 理由(选择此解决方式的原因)
- 风险等级(低/中/高)
- 汇总表: 所有文件及其冲突类型、解决方式和风险等级
- 根本原因分析: 各冲突中的常见模式
- 建议: 后续操作、构建验证等
步骤 8:最终审查
- 验证报告完整且准确
- 检查所有备份文件是否存在
- 确认构建通过(如适用)
- 标记需用户关注的中/高风险解决结果
冲突解决决策框架
何时“接受对方版本”(源版本)
- 文件是新建的(DU),且合并或 cherry-pick 的功能需要该文件
- 文件包含新实体所需的架构或配置新增内容
- 源版本的内容严格多于目标版本(例如:空类 → 已填充内容的类)
何时“保留我方版本”(目标版本)
- 源版本修改了目标版本中不存在的方法(这些方法由尚未提交的前置提交添加)
- 源版本重命名了目标版本调用方仍通过旧名称引用的方法或类型
- 这些更改并非引入该功能所必需
何时“手动合并”
- 双方都有需要共存的合理更改
- 架构文件中双方都新增了条目(两者都保留)
- 配置文件中双方都新增了区块
风险评估
| 风险 | 标准 | 操作 |
|---|---|---|
| 低 | 新文件,未影响现有代码 | 继续 |
| 中 | 方法更改,调用方兼容性不确定 | 在报告中标记,建议验证构建 |
| 高 | 破坏性更改,影响多个服务 | 继续前必须征得用户确认 |
注意事项
- 解决冲突前,务必先创建备份文件
- 先了解根本原因,再解决冲突——切勿盲目强行解决。— 原因:猜测式解决会悄无声息地丢弃或重复合法更改
- 对于复杂冲突(单个文件中冲突区域超过 3 处),提取双方的无冲突版本并排分析
- 检查前置提交:如果 cherry-pick 修改了目标分支上不存在的先前提交中的文件,请在报告中注明
- 使用
git diff <commit>^..<commit> -- <file>查看特定提交的实际差异(而非完整文件状态)
[IMPORTANT] 开始前,使用任务跟踪将所有工作拆分为小任务,包括每个文件的读取任务。这样可以避免长文件导致上下文丢失。对于简单任务,AI 必须先询问用户是否跳过。
前置条件:执行前必须认真阅读:
防止 AI 犯错 — 每项任务都应避免的失败模式:
上下文变化后重新阅读文件。 上下文压缩、恢复工作或长时间运行的任务都可能导致记忆过时;行动前请核实当前文件。 根据源证据核实生成内容。 AI 会编造 API、名称、说法和文档事实。记录或引用之前,请检查相关源文件。 删除或重命名前检查下游引用。 移除某个产物可能导致文档、生成的镜像、配置和调用方过时;请先梳理引用。 编辑后追踪完整影响链。 更改定义可能会遗漏派生输出和使用方。宣布完成前,请追踪受影响的链路。 核实所有受影响的输出,而不只是第一个。 一个检查通过不代表所有检查都通过;请验证更改可能影响的每个输出面。 假定现有值是有意设置的——更改或将其标记为缺陷前,先问“为什么”。 更改或报告常量、限制、标志、截止值、措辞或模式之前,请阅读附近的上下文和历史、调用方的顺序,以及 2 个或更多采用相同约定的同类调用点。文档说明了“是什么”却没有说明“为什么”,意味着缺少依据,而不是缺少防护措施的证明。 行动前明确提出歧义——不要默默选择。 存在多种有效解释时,必须明确提问,或说明假设及其风险。 断言系统负责的结果,而非基础设施负责的中间状态。 验证异步工作时,应断言最终业务状态,绝不要检查由共享基础设施维护的投递/重试记录;任何同时运行的进程都可能写入这些记录。这种检查单独运行时会通过,但只要有其他进程共享该基础设施,就会偶发失败。 确保共享指导与角色相关。 通用指导必须对每个接收它的技能或 Agent 都有帮助;仅适用于代码的要求应只放在代码专用协议中。
批判性思维模式 — 运用批判性思维和顺序思维。每个说法都需要可追溯的证据;只有置信度 >80% 才能采取行动。 防止幻觉: 绝不要把猜测说成事实——每个说法都要注明来源;坦然承认不确定性;自行检查输出中的错误;独立交叉核对;对自己的确信程度保持怀疑——没有证据的确定性是一切幻觉的根源。
先理解代码 — 严格门槛:阅读现有代码之前,禁止编写、规划或修复。
- 搜索 3 种或更多相似模式(
grep/glob)——引用file:line证据- 阅读目标区域内的现有文件——理解结构、基类和约定
- 当
.code-graph/graph.db存在时,运行python .claude/scripts/code_graph trace <file> --direction both --json- 通过
connections或callers_of梳理依赖关系——了解哪些内容依赖你的目标- 对非简单任务(涉及 3 个或更多文件),将调查结果写入
.ai/workspace/analysis/- 实现之前重新阅读分析文件——绝不要只凭记忆开展工作。——原因:长上下文会偏离文件内容;文件才是事实依据
- 现有模式可用时,绝不要另创模式——严格遵循,或记录偏离原因。——原因:不一致的模式会割裂代码库,并拖慢每一位后续阅读者
以下条件满足前不得开始:
- [ ]已阅读目标文件- [ ]已通过 grep 搜索 3 种或更多模式- [ ]已追踪图谱(如果 graph.db 存在)- [ ]已通过证据核实假设
-
强制、重要、务必注意: 任何修改之前,都要搜索 3 种或更多现有模式并阅读代码。graph.db 存在时,运行图谱追踪。
-
强制、重要、务必注意: 每个说法都要引用
file:line证据。置信度 >80% 才能采取行动,<60% = 不要提出建议。
必须注意:应用批判性和顺序思维——每项声明都需要适当的可追溯证据(仓库/代码声明需提供 file:line;研究、产品、内容和文档声明需提供来源 URL 或资料章节);只有置信度 >80% 才可采取行动,<60% 时不要推荐。防止幻觉:绝不将猜测当作事实,坦诚承认不确定性,独立交叉核对,并对自己的判断保持怀疑。
必须注意:应用 AI 错误预防措施——根据证据核验生成的内容,删除或重命名前追踪下游引用,核验所有受影响的输出,丢失上下文后重新阅读文件,并在采取行动前指出歧义。
项目协议叠加规则——执行此技能前,先解决叠加在其上的任何项目级规则:将此技能的名称与项目技能协议索引的
Target列匹配(默认路径为docs/project-reference/skill-protocols-reference.md;docs/project-config.json中的referenceDocs条目可覆盖此路径),且仅采用最具体的匹配层级——精确名称 > glob >*。此优先级仅用于排列叠加规则彼此之间的优先级,绝不高于此技能本身。仅读取匹配项的正文,路径解析为<protocols-dir>/<Name>.md;行中的正文链接仅为显示文本,绝不可用作读取路径。若匹配的正文缺失或格式错误,则报告并跳过——绝不可根据索引中的 Description 重建。没有索引或没有匹配项 -> 不应用叠加规则,且无需说明。完整约定:.claude/skills/project-skill-protocol/references/registry.md。叠加规则仅可增补:它们只能在此技能自身协议之上增加规则,绝不可取代、覆盖、停用或重新解释其中已有的规则——移除所有叠加规则后,此技能必须恢复为与其文档所述行为完全一致。叠加规则仅为简要说明,绝不可提升权限:它绝不能豁免工作流关卡、Git 规范、审核关卡或用户确认关卡。若叠加规则与技能本身确实冲突,或两个具体程度相同的叠加规则直接矛盾 -> 向用户指出两者;绝不可默默自行解决。
必须注意:执行前,先解决此技能的项目协议叠加规则——仅采用最具体的匹配层级(精确名称 > glob > *;此顺序仅用于排列叠加规则彼此之间的优先级,绝不高于此技能本身);仅读取 <protocols-dir>/<Name>.md 中的匹配正文;正文缺失或格式错误时须报告,绝不可重建。叠加规则仅可增补(绝不取代此技能自身规则),且仅为简要说明,绝不可提升权限;具体程度相同的规则若互相矛盾,须交由用户处理。
收尾提醒
**重要,必须注意目标:**在解决 Git merge/cherry-pick/rebase 冲突时,做好备份、分析并进行结构化报告。
当前生效的协议(本技能包含的 SYNC/共享区块摘要):
-
**AI 错误预防:**根据证据核验生成的内容,追踪下游引用,核验所有受影响的输出,丢失上下文后重新阅读,并指出歧义。
-
**批判性思维:**采用批判性和顺序思维,提供可追溯的证据;置信度 >80% 才可采取行动。
-
**先理解代码:**进行任何修改前,搜索 3 种或更多模式并阅读代码。
-
强制,重要,必须注意:开始前使用任务跟踪,将工作拆分为小型待办任务
-
强制,重要,必须注意:创建新代码前,在代码库中搜索 3 种或更多类似模式
-
强制,重要,必须注意:为每项声明提供
file:line证据(置信度 >80% 才可采取行动) -
强制,重要,必须注意:添加最终审核待办任务,以核验工作质量
[TASK-PLANNING] 行动前,分析任务范围,并使用任务跟踪将其系统地拆分为小型待办任务和子任务。
无钩子提示协议镜像(自动同步)
来源:.claude/.ck.json + .claude/skills/shared/sync-inline-versions.md(:full 区块)+ .claude/scripts/lib/hookless-prompt-protocol.cjs
[WORKFLOW-EXECUTION-PROTOCOL] [BLOCKING] 工作流执行协议 — 强制要求,重要,必须执行,关键。任何情况下都不得跳过。
**通用可移植性边界:**可复用技能和协议文本应保持项目中立;从 docs/project-config.json 和 docs/project-reference/ 中了解项目特定约定。应用 shared/sdd-artifact-contract.md 中的共享 AI-SDD。阅读 docs/project-config.json 和 docs/project-reference/docs-index-reference.md,然后打开其中列出的项目参考文档。对于规范、测试用例、行为变更、公共契约或 docs/specs/ 相关工作,应通过文档索引中列出的本地规范文档进行:当规范/测试/代码必须保持同步时,使用 feature-spec-reference.md、spec-system-reference.md、spec-principles.md 和 workflow-spec-test-code-cycle-reference.md。如果任一文件或必需的参考文档缺失或过时,则在进行常规项目特定工作之前,自动运行 $project-init(或更精简的底层流程,例如 $project-config、$docs-init、$scan-all 或 $scan --target=<key>)。只要具备此共享上下文和本地文档,任何受支持的 AI 工具都可以执行。
- **检测:**如果提示以明确的斜杠技能/工作流命令开头,则直接执行。否则,根据工作流目录和技能列表匹配提示。
- **分析:**选择最佳方案:直接执行、调用技能、启动标准工作流,或组合自定义步骤。
- **自动选择:**自行选择最佳方案。不要让用户在直接执行、技能、标准工作流或自定义工作流之间做选择。
- **启动:**对于选定的工作流,调用
$start-workflow <workflowId>;对于选定的技能,调用该技能;对于自定义工作流,直接按顺序执行自定义步骤;对于直接执行,继续处理任务。 - **创建任务:**如果选定路径包含多个步骤,则在执行前为所有工作流/技能/自定义步骤创建任务跟踪。
- **并行化:**执行任务列表前,为每项任务标记
PAR(输入独立,且写入集与其他所有PAR任务不重叠)或SEQ(注明阻塞依赖),将PAR任务分组到各个波次,声明波次计划,并在一条消息中启动每个波次的子 Agent——每个波次都必须等待所有成员返回;除非子 Agent 自身的定义允许进一步扇出,否则只扇出一层。默认按顺序执行是缺陷;但不要并行化共享写入目标、会消费其他任务输出的任务、简单的单文件任务、技能或工作流明确规定顺序的任务,以及需要用户批准的环节。 - **执行:**按照上下文指令中的 Workflow Step Advancement & Parallel Phases 规则推进——由模型驱动;子 Agent 完成与内联调用一样会推进步骤;并行阶段组必须等待所有成员返回(只有所有成员都返回后才能推进,绝不能串行执行)
共享 AI-SDD 协议标记
来源:.claude/skills/shared/sync-inline-versions.md
SYNC:ai-sdd-artifact-contract
AI-SDD 工件契约 — 共享的规范驱动开发规则应保持可移植,并由源文件管理。
- 将可复用的 AI-SDD 原则保存在
.claude中;将特定于仓库的路径、命令、负责人、产品和格式放在项目配置/参考文档中。- 保持以下周期:
spec -> plan -> tasks -> implement -> verify -> update spec/docs。- 通过决策、任务、TC/测试、源证据以及文档/规范更新,追踪每项要求或不变量。
- 将从代码提取规范的内容仅视为参考,直到规范的权威负责人接受为止。
- 任何受支持的 AI 工具都可基于同步的上下文进行规划、实现、审查或验证;使用多个工具是可选的。
- 先更新
.claude源文件,再同步生成的镜像;不要手动编辑.agents、.codex或AGENTS.md。— 原因:镜像是生成的工件;下次同步时,手动修改会被覆盖- 如果
docs/project-config.json、根目录指令文件或必需的项目参考文档缺失或过时,则在进行常规项目特定工作之前,自动运行$project-init或范围更窄的底层流程。当前参考文档: 当前技能根目录中的
shared/sdd-artifact-contract.md。
SYNC:ai-sdd-artifact-contract:reminder
- MANDATORY 应用
shared/sdd-artifact-contract.md;将可复用的 AI-SDD 保存在.claude中,并将本地规则保存在项目文档中。 - MANDATORY 从代码提取的规范仅供参考,直到权威规范获批;任何受支持的 AI 工具都可基于同步的上下文执行工作。
- MANDATORY 先更新
.claude源文件,再同步生成的镜像;不要手动编辑.agents、.codex或AGENTS.md。 - MANDATORY 如果项目配置、根目录指令文件或必需的参考文档缺失或过时,则应自动通过
$project-init或范围更窄的设置流程来处理项目特定工作。 [TASK-PLANNING] [MANDATORY] 在执行任何工作流或技能步骤之前,先为所有计划步骤创建/更新任务跟踪;之后随着各步骤开始/完成,持续同步更新任务跟踪。
[LESSON-LEARNED-REMINDER] [BLOCKING] 任务规划与持续改进 — MANDATORY。不得跳过。
开始前将工作拆分为小任务(任务跟踪)。添加最终任务:“分析 AI 错误与经验教训”。
提取经验教训——仅关注根本原因,而非修复表象:
- 指明失败模式(推理/假设失误),而非表面症状——“未阅读源代码就假设 API 存在”,而不是“使用了错误的枚举值”。
- 通用性测试:此失败模式是否适用于 ≥3 种情境/代码库?如果不适用,则再向上抽象一层。
- 写成通用规则——去除特定于项目的名称/路径/类。规则应适用于任何代码库。
- 合并:多个错误若属于同一种失败模式,则合并为一条经验教训。
- 复发门槛:“如果没有这条提醒,未来会话中是否会再次出现此问题?”——不会 → 跳过
$learn。 - 自动修复门槛:“
$code-review/$code-simplifier/$security-review/$lint能否发现此问题?”——能 → 改进审查技能。 - 两个门槛都通过 → 请用户运行
$learn。 [CRITICAL-THINKING-MINDSET] 运用批判性思维和序贯思维。每项断言都需要可追溯的证据;采取行动前,置信度须 >80%。 **反幻觉原则:**绝不将猜测当作事实——为每项断言引用来源,坦诚承认不确定性,自行检查输出错误,独立交叉核对,并对自己的信心保持怀疑——缺乏证据的确信是所有幻觉的根源。 **AI 注意力原则(首因-近因效应):**在较长提示词/协议的开头和结尾都放置最关键的 3 条规则,以确保指令在较长的上下文窗口中仍能得到遵循。 **目标驱动执行:**先定义成功标准,持续循环直至验证完成;仅当可观察的检查均通过后才停止。 **测试验证意图:**测试必须保护业务规则/不变量,并在受保护的意图遭到破坏时失败,而不只是复现当前行为。
常见 AI 错误预防(系统经验)
- 上下文压缩后重新读取文件。 编辑前必须在同一上下文中先读取文件;上下文压缩会清除读取状态。编辑前重新读取。
- 批量替换后 grep 旧术语。 AI 过度相信查找/替换已覆盖所有内容。批量编辑后,对整个仓库执行 grep,检查文档/配置/目录中遗漏的引用。
- 删除前检查下游引用。 删除会连带导致文档/代码过时。移除前先梳理引用文件。
- 丢失记忆后,创建新内容前先检查现有状态。 上下文压缩会清除先前工作的记忆。查询当前状态以便继续——绝不要盲目重复创建。
- 根据实际代码验证 AI 生成的内容。 AI 会幻觉出 API、类名和方法签名。记录/引用前先用 grep 确认其确实存在。
- 编辑后追踪完整依赖链。 更改定义却漏掉下游使用方。追踪完整链路。
- 重命名时,对所有使用方文件类型执行 grep。 某些文件类型会静默忽略缺失的引用(不会产生编译错误)。搜索代码、模板、配置和生成文件。
- 验证正确性时追踪所有代码路径。 代码存在 ≠ 代码会执行。追踪提前退出、错误分支和条件跳过——不要只看正常路径。
- 源数据变更时,更新包含规范数据的文档。 内嵌派生数据(工作流、架构、配置)的文档会静默过时。源数据变更时,同时更新所有内嵌该数据的文档。
- 恢复上下文后验证子 Agent 的结果。 父 Agent 压缩上下文期间,后台 Agent 可能已经完成——用 grep 验证输出,不要相信对任务已完成的假设。
- 将完整目标列表与子 Agent 的分配任务交叉核对。 按类别并行分配子 Agent 会漏掉边界项。继续前,将各分配任务的并集与目标列表核对。
- 子 Agent 只能从其 Agent 的 .md 定义继承知识——使用自定义 Agent 类型,不要使用内置 Explore。 采用工具 = 权限 + 知识 + 执行(编号工作流步骤)。
- 逐步记录子 Agent 的发现,不要等最后一次性提交。 长时间运行的子 Agent 可能在最终写入前达到截断限制——导致发现丢失。指示其按章节追加到报告文件。
- 调试时,修复前先问“责任在谁?” 追踪调用方(数据错误)还是被调用方(处理错误)。在责任层修复——绝不要只修补症状出现的位置。
- 测试失败 → 先记录暂定结论,再追踪/编辑,然后调查。 使用完整的五类分类:SOURCE-WRONG(生产代码违背意图)、TEST-WRONG(断言/设置已过时)、TEST-NOT-OPTIMAL(测试有效但脆弱或信号弱)、ENVIRONMENT-BLOCKED(外部状态阻止得出结论),或 AMBIGUOUS(意图/证据不足以安全判断)。然后追踪根因,并对照规范依据(如果存在,查看
docs/specs/**)和源代码进行交叉验证。绝不要只为让测试变绿而削弱断言、添加跳过、放宽超时或更改源代码。 - 提取/重构后,对所有已移除名称执行 grep。 主文件“完成” ≠ 次要文件干净。宣布完成前,在整个范围内搜索每个已移除的符号。
- 假定现有值是有意设定的——更改或将其标记为缺陷前先问为什么。 仅凭模式匹配判定“错误”会忽略上下文。更改或报告任何常量/限制/标志/阈值前:阅读注释、git blame、调用方的执行顺序(使该值正确的保证通常位于引用行之前紧邻执行的代码中),以及同一惯例下至少 2 个同类调用点。只说明“是什么”却不说明“为什么”的文档,缺少的是依据,并不能证明缺少保护措施;在验证环节中,准确的
file:line引用证明的是转录无误,而不是缺陷确实存在。 - 验证所有受影响的输出,而不只是第一个。 一个构建成功 ≠ 全部成功。涉及多个技术栈的变更(后端/前端/测试/文档)要求验证每一项输出。
- 复制相近模式前,先评估是否适用。 最接近的示例 ≠ 前提相同——确认新上下文具有相同的约束、基类、作用域和生命周期。
- 整体优先的调试方式——抵制注意力就近陷阱。 不要一头扎进第一个看似合理的原因。列出所有前提(配置、环境变量、路径、数据库、端点、凭据、版本、DI、数据)。用证据(grep/查询——而非推理)逐项验证。问“什么证据可以推翻这个假设?”——如果没有,那就不是假设。代价最高的失败:在“显而易见”的层继续深挖,而 Bug 实际位于从未质疑过的层。
- 精准修改——应用 diff 测试(结合上下文判断)。 两种模式:(1)Bug 修复 → 每一行都能追溯到该 Bug;不做样式调整;只清理因你的修改而变得未使用的孤立内容。(2)审查/增强 → 实施改进,并声明为“超出主要请求的增强:[内容]”。绝不要悄悄扩大范围。Diff 测试:“如果我没有被要求做 X,这一行还会存在吗?”——如果不会,就删除或明确说明。
- 编码前先指出歧义——不要默默自行选择。 存在多种有效解释时,逐一列出并说明工作量:“[请求] 可能指 (1) [N 小时]、(2) [N 小时]。哪一个更重要?”先列出范围/格式/数量/约束方面的假设。如果有更简单的方案,也要说明。绝不要默默自行选择。
- [MANDATORY FIRST ACTION] 回复前务必先启用合适的技能或工作流。 将任务与工作流目录和技能列表进行匹配;通过技能调用或
$start-workflow <workflowId>启用。检查之前绝不要回答或编写代码。跳过 = 违反协议。 - Why-Review 对抗性思维——审查任何计划、决策或设计时都要运用。 默认持怀疑态度,而非验证者态度:充分论证被否决的替代方案,将每项既定理由反向审视(“它牺牲了什么?”),对最重要的 2-3 项假设进行压力测试,开展事前验尸(“已发布,3 个月后失败——什么会出问题?”),并指出作者遗漏的 1-2 种替代方案。章节齐全 ≠ 质量过关;质量取决于因果推理、具体缓解措施和证据,而不是“这样更好”或“密切关注”。
- 大型审查的子 Agent 提示词应优先安排报告写入。 处理许多文件的子 Agent 可能在最终写入前耗尽预算——导致发现丢失。设计提示词时应确保:(1)报告写入是第一个明确的交付项,(2)按文件/章节逐项追加(不要批量写入),(3)限定范围,避免读取耗尽预算。若输出在句中被截断且没有报告文件 → 启动范围更窄的任务,不要原样重试相同提示词。
- 上下文压缩后,继续前重新验证此前各阶段的所有结果。 摘要描述的是意图,不是环境状态(git 索引、文件系统、进程)。恢复时,首先审查:git status、重新读取修改过的文件、验证文件系统。每一项“已完成”的声明,在证据确认前都是未经验证的假设。
- OOM/内存:先检查行数,再检查行大小。 排查顺序:(1)无界查询——触发条件是否没有数据库筛选?将筛选推到数据库端;这可消除 OOM。(2)行是否很大?投影可按比例减少数据量。减少行数比投影的收益更大。
- 断言系统自身负责的结果,绝不要断言基础设施负责的中间状态。 测试任何异步行为(队列/代理传递、重试、后台任务、缓存、复制)时,应断言最终业务/实体状态。绝不要断言传递记录——消费/发送状态、尝试次数、最后错误、代理、调度程序或 outbox/inbox 表中的行存在与否或数量。这些记录属于共享基础设施,任何同时运行的进程(同伴 Worker、第二个副本、遗留的本地容器)都可能写入,且通常使用确定性的共享键;因此,断言会悄悄测试开发者的环境,而不是系统:单独运行时通过,一旦有其他进程共享该代理和数据库就会不稳定。每个断言都要问:“无论哪个进程执行了这项工作,该断言都会成立吗?”——如果不会,就改为断言已收敛的数据状态。推论:进程本地的故障注入和进程内遥测不能用于控制任何进程都可能执行的工作——将它们用作压力放大器(启用 → 限定时间窗口 → 停用 → 断言收敛),绝不要用作前置条件。
- 不要让领域概念进入通用/共享/基础设施层。 可复用层(共享库、框架、基础设施模块)不得引用任何特定使用方的领域概念——租户/客户/产品 ID、业务实体、功能规则。泄漏进来后,代码能够编译并运行,因此会悄无声息地通过审查,同时让“可复用”层与某个使用方耦合。保持共享类型与领域无关;通过子类/组合将领域字段/逻辑下放到使用方。——原因:与某个使用方的领域耦合的层不再可复用。