ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

oh-my-posh 仓库 Code Changes 技能全解:从 Issue 到交付的六阶段 Agent 编排工作流

oh-my-posh 仓库 Code Changes 技能全解:从 Issue 到交付的六阶段 Agent 编排工作流 oh-my-posh 仓库 Code Changes 技能全解从 Issue 到交付的六阶段 Agent 编排工作流【免费下载链接】oh-my-poshThe most customisable and low-latency cross platform/shell prompt renderer项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-posh导读code-changes 技能 是 oh-my-posh 仓库为 AI Agent如 Claude Code、GitHub Copilot、Codex 等设计的端到端代码变更编排工作流覆盖Issue 分析 → 用户批准 → 规划 → 执行器匹配 → 子代理委派与监督 → 验证 → 交付的完整链路。它定义了何时分析、何时停下等待用户拍板、如何挑选合适的模型、如何委派并监督子代理、如何在合并态上独立验证以及如何以约定式提交和结果优先的报告收尾。读完本文你将掌握一套可复用的 Agent 编排方法论理解四个角色Coordinator / Escalation / Implementer / Trivial的能力分层、六个阶段的产物契约、停止门Stop Gate与重试上限Retry Cap的执行细节并能对照仓库内的完整参考文档自行落地。一、文档定位仓库内 Agent 技能体系的一员oh-my-posh 在仓库根目录的.agents/skills/下维护了一套面向 AI 编码代理的技能集除本文核心的code-changes外还包括conventional-commit约定式提交消息生成feat、fix、docs等类型与BREAKING CHANGE:双标记规范project-knowledge沉淀 Shell 集成、终端 / pty 行为、缓存、分段渲染等领域的经验知识库以及golang、markdown、powershell、ast-grep、segment-create、segment-docs、writing-clearly-and-concisely等专项技能。code-changes的定位是总编排器它不替代上述任何一个专项技能而是规定任何以代码变更收尾的任务Issue 分析、PR 评审、功能实现、缺陷修复、重构、想法落地必须遵循的分析-规划-委派-监督-验证-交付流程。其核心原则是先分析、后代码——分析永远在第一位代码永远在最后一位。二、角色模型按能力分层而非按名称分层工作流的职责分配基于模型能力分层capability tier协调者Coordinator不是最强模型而是常驻、默认接管每个阶段、并且清楚自己何时力有不逮的那个模型。角色能力层级默认职责Coordinator协调者能力适中的中档模型任务全程常驻默认接管分析、规划、委派、监督、验证、交付全部阶段Escalation升级可用的最强推理模型仅在触发器命中时被调用只回答协调者标记出来的那一个具体判断问题答完即归还控制权Implementer实现者与协调者同档琐碎改动可用更小模型执行一个被钉死的、自包含的任务Trivial琐碎小型快速模型处理机械且无歧义的编辑批量重命名、配置微调、拼写修复、文档润色——绝不处理判断性决策具体到各家厂商的模型映射Anthropic / OpenAI / Google 四层各对应哪些模型以及如何在 Claude Code、GitHub Copilot、Codex、IDE 代理中落地这套拆分见 model-tiers.md。该文件特别指出模型名称是快照会过时当名称不再存在时应按层级而非名称来映射替代品。一个关键推论如果当前代理本身就运行在实现者层级标准工作无需单独的委派步骤——直接规划并执行但每个阶段仍要完整走一遍。升级Escalation只在触发器命中时发生绝非常态也不为协调者自己就能做的常规判断而触发。三、六阶段流程总览整个流程按顺序执行六个阶段每个阶段的边界都携带一个命名产物见 artifacts.md这使得某个阶段可以在之后被重入例如 Verify 失败、升级问题返回而不必从头推导上下文Analyze分析——对照代码而非仅凭报告确定根因与范围Plan规划——钉死规格说明spec、任务拆分、并行/串行决策、每个任务的工作区Delegate委派——为每个任务匹配正确的执行者默认是协调者层级Supervise监督——监控、解阻、并以批判性眼光评审实现者输出Verify验证——质量门禁 功能实证在合并后的最终状态上运行绝不向下委派同一任务连续第二次失败时升级而非第三次循环Deliver交付——约定式提交 结果优先的报告。Analyze、Supervise、Verify 三个阶段各带一个升级检查点见 escalate.md用于把某个具体判断交给最强模型同时不让出阶段所有权。停止门Stop Gate分析后必须等用户放行Phase 1 结束时必须以分析报告向用户汇报并等待放行go。只有用户已在请求中明确给出放行如do it、fix it and commit、implement with Sonnet时才可跳过。两个重要细节为分析给出的 go不等于为实现的 go首轮通过的 go不会延续到 Verify 失败后的重新诊断上——重入 Phase 1 会重新武装停止门即使是一次 Verify 弹回也不是继续无人值守实现的长期授权。四、Phase 1 — Analyze先复现后归因analyze.md 规定无论任务从何而来Issue 链接、PR 编号、口头想法、缺陷报告都要从这里开始但有两个更锐利交付物的例外入口见后文特殊入口。本阶段不写任何代码。收集完整上下文用gh issue view n --comments/gh pr view n --comments获取 Issue/PR 及其全部评论和关联链接对想法类请求用自己的话复述目标与约束若有歧义当场解决用git log -- path检查既有助手函数、类似模块与过往提交prior art。先复现再理论化尽可能复现问题。一次成功的复现能把分析从假设变成事实同时为 Phase 5 白送一个验证用例当复现不可能平台、硬件、凭据受限时必须在报告中显式说明并把该修复标记为unverified-by-repro。在代码里找根因必须阅读真实实现绝不只凭 Issue 文本、评审评论或堆栈追踪推断——报告与机器人评审经常是错的。要区分根因与症状修复在哪崩溃不等于修复为什么崩溃。报告应说明改动应是什么、触及哪些文件、刻意不碰什么。何时升级若根因无法置信地钉死或修复看起来是架构级、安全敏感或不可逆的就把这个具体问题交给最强可用模型而不是靠猜。本阶段产物一份给用户的简短分析报告包含实际发生了什么及原因根因 文件引用、建议改动及其范围、刻意排除在外的内容、剩余未决问题。这对应 artifacts.md 中定义的root_cause/proposed_change/out_of_scope/repro_status/open_questions五个字段——无论任务从哪个入口进来Plan 都以这个固定形状消费它。五、Phase 2 — Plan把批准的分析变成可执行计划plan.md 的质量标尺是实现者层级的模型必须能不提问地执行每个任务。钉死规格Pin the spec先写规格再委派内容包括——已定方案含已做的决策避免实现者重新争论、要改的文件与入口点、约束风格规则、要遵循的既有模式、性能/兼容性要求、覆盖本任务文件的语言/框架/格式技能在写代码前加载并把规则复制进规格否则验证时发现的违规只是返工、验证命令、显式非目标任务不得改什么。替换现有代码时的铁律当改动替换的是可用代码重写、移植、换引擎、换依赖时必须读代码而非读请求来枚举被替换代码当前的行为并把该清单作为验收标准——快捷键、自动插入、默认值、错误消息全都算数。清单上任何打算丢弃的项都是需要用户先放行的移除而不是事后报告的简化。样例数据的通用性示例数据、演示夹具、随附默认值必须通用绝不把某个真实用户或客户的数据提升为项目默认状态。任务拆分与工作区一个任务 一个实现者可独立完成并验证的自包含单元标记独立任务与消费他人输出的任务独立任务并行、其余串行——拿不准就串行两个并行子代理的合并冲突成本大于并行省下的时间。文档更新属于改变行为的那个任务不单列。工作区二选一主工作树任务依赖未提交的本地改动或本会话要评审并提交结果或隔离 worktree其他一切情况并行任务绝不共享工作树。合并规划只要有并行 worktree就必须在委派前定好集成步骤——分支按何顺序合并、由谁协调者在 Phase 4 集成时执行合并并解决冲突。注意隔离 worktree 的分支永远看不到另一任务的分支因此永远无法也不该自行解决跨任务冲突。VerifyPhase 5只在所有并行任务落地后的合并态上跑一次绝不按分支跑——单任务的绿色运行不是门禁。六、Phase 3 — Delegate让执行者匹配任务而非相反delegate.md 的核心是成本与速度的平衡而不失质量协调者对结果始终负责。执行者矩阵琐碎任务机械编辑、配置微调、错字、文档更新直接做或批量交给 trivial 层级模型标准且规格明确的任务由协调者自己做或派给同层子代理以换取并行命中升级触发器的任务其那个具体问题交给 escalation 层级子代理——这是有界的一问一答不是任务分派也永远不出现在任务清单的executor_tier字段里该字段只取 trivial、implementer、coordinator-direct。每次委派携带的内容Phase 2 的完整钉死规格 必须跑通才能上报完成的验证命令 报告你改了什么、验证了什么的指令 遇到规格未覆盖之处就停下报告而不是即兴扩权的指令。永不向下委派的三件事分析Phase 1、最终验证Phase 5、提交/历史重写/推送/面向用户的报告Phase 6。实现者的绿色运行只是声称不是结果提交等行为关乎问责而非能力因此也不交给 Escalation 层级。七、Phase 4 — Supervise委派不是发了就不管supervise.md 要求协调者跟踪交付并对结果负责。先集成再评审评审任何 diff 之前合并态必须存在——确认本阶段等待的所有任务已按其依赖上报完成按 Phase 2 钉死的merge_plan依序把各 worktree 分支合并回来落在的冲突由协调者解决只有所有并行任务都合并后已评审 diff才成立Verify 才在合并态上跑一次。无并行的单任务场景合并步骤为空操作待评审的就是该任务自身的改动。监控与解阻子代理停滞或打转时停止它、自己诊断、把答案交给它继续别让它反复消耗轮次子代理报告规格缺口时由协调者决定更新规格或砍掉范围绝不让子代理自行决定范围。批判性评审输出把每个子代理 diff 当作外部 PR 来评审即使协调者亲自执行无子代理也要对自己的 diff 做同等批判性检查。对照规格检查该做的都做了、规格之外的没做。对错误或过度设计的方案行使覆盖权偏好删代码而不是加代码——保留子代理的诊断但替换成更简单的修复是正常操作要在最终报告中记录覆盖及其理由。还要警惕符合规格但难看的改动——与周围代码的一致性优先。批判性评审新增测试测试套件通过 ≠ 测试有用。子代理被要求加测试时倾向于过度产出应裁掉三类断言实现细节而非行为指针/内存同一性、精确分配计数、内部调用顺序的测试钉死大段硬编码快照、只是镜像 diff 中已声明数据的测试复制 map 的 key 到字面量列表再断言相等是在重复源码而非独立验证以及同一 diff 中更精简测试已覆盖的不变量。保留真正检验改动所要保证的行为/不变量的测试——每个属性一个断言而不是每个实现选择一个断言。低置信度时升级、未验证不信任若 diff 让你无法确定修复是正确还是貌似正确或触及安全、数据迁移等不可逆领域签字前找最强模型二读escalate.md。子代理说的测试通过是声称不是结果Phase 5 会在合并态上独立地全部重验。八、Phase 5 — Verify质量门禁 功能实证verify.md 强调验证绝不向下委派且在改动的最终合并态上运行分两半项目质量门禁与功能实证默认都是协调者自己的工作。质量门禁构建、完整测试套件、格式化器、linter 全部零错误通过手工对照 Phase 2 钉死的语言/框架技能逐条复查最终 diff再跑各技能定义的门禁——linter 覆盖不了控制流、测试结构、日志、注释约定绿色 linter 不等于技能被遵守平台特定文件改动时要为每个目标平台交叉编译或重新 lint本地工具链会跳过其他平台的规则。功能实证测试通过是必要条件而非充分条件。要跑真实流程并确认具体输出渲染提示符、执行命令、访问端点记录观察到的实际值——最终报告引用这些值作为证据而不是形容词。用用户实际触达的方式走流程构建产物而非开发服务器、冷启动而非运行中的进程、用户真正打开的入口点涉及 dev server 或文件监视器时先重启再判断行为——陈旧 bundle 会产生自信的错误验证。用户说要自己做手工验证时明确说出该检查什么、预期结果是什么。高影响结果时升级门禁与功能实证的运行留在协调者手中若结果含糊或改动是高爆炸半径迁移、安全、不可逆操作请最强模型评判证据再宣布完成。失败处理按实际坏在哪选目的地而非按默认值——门禁失败构建/测试/lint或 diff 不符规格 → 回到 Phase 4通过实现者修复规格没错是执行错了功能实证与陈述的根因矛盾、或修复完全没改变观察到的行为 → 回到 Phase 1规格建立在错误诊断上。重入 Phase 1 会重新武装其停止门再次报告修订后的分析并等待放行。永不为了变绿而放宽门禁、跳过 linter 或删除测试。重试上限Retry Cap跨轮次没有内存计数必须以文本形式携带不能靠记忆。每次 Verify 失败都要在交给下一阶段的报告中显式说明本任务的尝试次数、坏在哪、目的地。同一任务指同一原始用户请求——Phase 1 弹回后的修订诊断仍是同一任务不重置计数。同一任务连续第二次失败时在第三次发回之前停止循环把具体问题修复为何落不了地、根因为何总抓偏升级给 Escalation 层级若升级答案之后的那个周期仍然失败不再升级、也不第四次发回彻底停止循环并向用户汇报前两次尝试、升级的问题与答案、以及最新的失败证据。继续循环意味着工作流本身在此任务上不收敛这个决定属于用户。九、阶段间产物契约没有产物就不算完成artifacts.md 是全文的骨架每个阶段边界都是一条边每条边携带一个命名产物我搞完了这个阶段而没有产物不构成有效交接。Analyze → Plan分析报告root_cause/proposed_change/out_of_scope/repro_status/open_questions三个入口必须产出完全相同的形状Plan → Delegate任务清单每条含spec/verification_commands/executor_tier/workspace/dependencies/ 多任务 worktree 时的merge_planDelegate → Supervise委派包规格 验证命令原样 常驻指令报告改了什么、验证了什么遇到规格缺口就停下报告而非即兴扩权Supervise → Verify已评审 diffmerged_diff最终集成改动、overrides被替换的子代理方案及原因、tests_kept/tests_cutVerify → Supervise / Verify → Analyze失败记录attempt_number从 1 开始、failure_class门禁失败/规格不符或错误根因、destination、attempt_number到 2 且已咨询 Escalation 后才有escalation_answerVerify → Deliver验证证据gates_run只记 pass/fail、functional_proof真实观察值、retry_countEscalate永远携带最小问题对——Question in具体判断问题 相关代码/证据 迄今假设 不确定的原因Answer out决策及理由控制权归还提问阶段答案并入该阶段自己的产物。文档用一句犀利的话总结其价值没有产物的阶段不是真的完成——这正是阻止我看了下悄悄冒充真实分析报告、并让 Verify 能把任务送回 Phase 1 或 Phase 4 而无须接收方猜测缺什么的关键。十、特殊入口Issue 分诊与 PR 评审意见这两个是 Phase 1 的备选入口不是独立轨道每个仍必须产出同一个分析报告产物Plan 无需知道任务从哪个门进来后续 Phase 2–6 原样适用。Issue 分诊issue-triage.md当任务只是看看 issue #n / 分诊 #n / #n 还有效吗且未要求修复时使用分析本身就是产品实现仅在明确放行后发生。步骤gh issue view n --comments读全报告与每条评论复现报告行为环境缺失时说明并从代码推理标注为未复现在代码而非 issue 文本中定位根因issue 描述的是症状且常猜错原因评估爆炸半径还有谁受影响、自哪个版本/提交引入、有无规避手段。交付物确认或无法复现带证据、根因带文件引用、建议修复及范围或无需修复的理由works-as-intended / 重复 / 环境问题、需要上传达人时的建议回复。同样映射到root_cause等五个字段。PR 评审意见pr-review-comments.md当任务是处理 PR #n 上的评审意见时用它替换 Phase 1 的 Issue 分析Phase 2–6 原样适用包括停止门、合并态 Verify、Deliver 的推送策略。先取全部未解决评论gh pr view n --comments或gh api动任何东西前对照实际代码逐条验证分类为有效/无效——自动评审者经常标记非问题把它们当线索而非裁决。有效评论按拥有该代码的提交规划修复Phase 2以git commit --fixup sha落在分支上fixup 是工作态还不是交付态git rebase --autosquash折叠进目标提交用git diff确认重写后的树与重写前树 预期修复字节级一致改了其他任何东西就是进错了提交在 rebase 后的树上跑完整质量门禁与功能实证。无效评论不为其改代码用证据反驳代码路径、既有测试、验证过的行为若评论错了但暴露了真正的困惑点就加固代码/注释对抗误读并在回复中说明。每个线程都要回复做了什么、如何验证把解决线程留给人类。推送含 force-push遵循 Deliver 的推送策略仅当用户要求时重写分支用--force-with-lease。十一、Phase 6 — Deliver打包与报告deliver.md 在验证完成后负责打包。提交必须使用 conventional-commit 技能的规范一个提交一个逻辑单元功能与其 lint 善后如果回答不同为什么可以分开提交显式暂存文件绝不用git add -A提交前评审已暂存 diff尤其自动修复工具改写过文件之后。推送与 PR 策略除非用户要求不推送、不 force-push、不开 PR——commit 就是 commit仅此而已在重写后的分支上推送时用--force-with-lease。最终报告结果优先然后是证据改了什么带可点击文件引用及为什么一段话内说完实现者输出在何处被覆盖及原因验证证据跑过的门禁与观察到的具体功能结果显式留给用户的尾巴要删的密钥、手工验证步骤、延后的决策各附适用的确切命令或检查项改动没做、但其标题暗示做了的事——若提交说drop X说明 X 还剩什么、为什么能力被移除或替换时要命名为移除而非简化。绝不把未验证的步骤报成已完成绝不把失败埋在成功故事中间。十二、升级Escalation有界的一问一答escalate.md 强调协调者默认拥有每个阶段升级是对最强可用模型的一次有界子代理调用只针对一个具体判断不是阶段交接。协调者提出问题、拿到答案、仍是结果的责任人。真实触发器不是任务很难的模糊感觉读代码后根因仍无法置信地钉死改动是架构级跨模块边界、动公共 API/接口、引入横切抽象代码对安全/认证/加密/支付/数据迁移敏感操作不可逆或高爆炸半径schema 迁移、删除、force-push、生产配置同一任务的实现者不止一次报告规格缺口或矛盾跟踪方式同 Verify 重试计数每次在报告中显式说明Verify 连续第二次把同一任务弹回两次失败意味着诊断不收敛而非第三次会成功——该触发器每任务只触发一次升级后的周期再失败就走 verify.md 的终局步骤停止循环向用户汇报评审 diff 后无法确定修复正确还是仅貌似正确用户明确要求第二意见或对抗性评审。如何升级提具体问题不是整任务。交出回答问题所需的钉死上下文相关代码、迄今假设、不确定的原因拿到答案后恢复阶段。升级永远不会成为任务的新主人也绝不决定范围。十三、模型分层与多工具落地model-tiers.md 给出四层模型映射以文中快照为准过时按层级替换Escalation 层Anthropic Fable 5 / Opus 4.8OpenAI Sol / GPT-5 (high)Google Gemini 2.5 ProCoordinator 层Anthropic Sonnet 5OpenAI GPT-5 / GPT-4.1Google Gemini 2.5 FlashImplementer 层与协调者同档Trivial 层Anthropic Haiku 4.5OpenAI GPT-4.1 miniGoogle Gemini Flash-Lite。Coordinator 与 Implementer 常是同一模型——区别在于并行与工作区隔离而非能力。工具映射Claude Code / GitHub Copilot / Codex / IDE 代理各自怎么跑Claude Code 在 coordinator 层模型上开会话仅在升级检查点用Agentmodel: opus或fable限定在那个问题上并行实现任务用 worktree 隔离批量琐碎编辑用model: haikuGitHub Copilot 全程用 coordinator 层模型跑 Copilot Chat仅在升级触发的问题上切换到最强推理模型再切回独立且规格明确的任务可指派给 Copilot 编码代理钉死规格变成 issue 正文Codex 在 coordinator 层模型上本地编排每个独立单元作为一个 Codex 云端任务下发diff 自己评审触发器命中才升级前沿模型Cursor 等 IDE 代理每个任务一个 coordinator 层会话后台代理跑并行实现升级检查点在会话内临时切换最强模型。完全没有子代理支持时保留阶段、去掉并行——全程用 coordinator 层模型跑整个流程仅在升级触发器命中的具体问题上把会话模型临时切到最强再切回。这套纪律在委派机制缺失时依然成立。十四、实践要点总结先分析后代码一切任务从 Analyze 进入分析永远是第一步Phase 1 结束时必须停下等待用户放行除非请求自带 go。在合并态验证Verify 只在所有并行任务合并后的最终状态上跑一次功能实证要记录真实观察值绝不以单任务绿跑充当门禁。产物即交接每个阶段边界必须有命名产物阶段才能被可靠重入计数attempt_number、重试次数、规格缺口次数必须以文本显式携带因为跨轮次没有内存。升级是例外升级只在真实触发器命中时发生、只问一个具体问题、只借最强模型之脑、不交出阶段所有权大多数任务应全程不触发升级。失败要收敛同一任务连续两次 Verify 失败即升级升级后仍失败则停止循环向用户汇报——继续循环是用户的决定不是又一次升级调用。这套工作流已经固化在 oh-my-posh 仓库的 .agents/skills/code-changes/ 目录下主文件 SKILL.md 是入口含角色定义、流程总览、停止门与特殊用例八个参考文件分别承载各阶段与配套机制的完整细则可直接作为团队搭建 Agent 编码流水线的蓝本。【免费下载链接】oh-my-poshThe most customisable and low-latency cross platform/shell prompt renderer项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-posh创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表