[{"data":1,"prerenderedAt":4845},["ShallowReactive",2],{"post-\u002Fposts\u002F2026\u002Fagent-workbench":3,"i-lucide:sun":4833,"i-lucide:moon":4837,"i-simple-icons:github":4839,"i-simple-icons:x":4841,"i-lucide:mail":4843},{"id":4,"title":5,"body":6,"date":4800,"description":4801,"draft":4802,"extension":4803,"lang":4804,"meta":4805,"navigation":513,"path":4806,"seo":4807,"sitemap":4808,"stem":4827,"tags":4828,"__hash__":4832},"posts\u002Fposts\u002F2026\u002Fagent-workbench\u002Findex.md","Agent Workbench：多 Agent 协作开发工作流实践",{"type":7,"value":8,"toc":4728},"minimark",[9,13,27,30,36,41,44,51,56,142,149,164,167,171,176,183,239,246,250,362,365,371,379,383,386,403,410,648,662,669,675,680,684,694,741,755,758,1057,1090,1104,1108,1111,1305,1315,1321,1326,1330,1337,1345,1357,1361,1367,1371,1377,1381,1384,1409,1412,1416,1554,1557,1561,1566,1595,1601,1606,1612,1617,1624,1627,1631,1634,1640,1643,1657,1664,1668,1671,1721,1727,1730,1733,1739,1744,1748,1751,1827,1833,1838,1842,1849,1855,1860,1873,1883,1900,1903,1907,1913,1946,1950,1953,1976,1985,1989,1994,1998,2265,2287,2291,2294,2300,2315,2496,2500,2513,2572,2592,2596,2610,2634,2638,2660,2663,2669,2674,2680,2690,2694,2700,2704,2744,2753,2756,2776,2786,2790,2793,2801,2810,2814,2819,2825,2829,2832,2879,2882,2897,2917,2931,2936,2939,2973,2979,2982,2993,2999,3011,3015,3024,3035,3041,3046,3052,3057,3064,3069,3073,3179,3186,3193,3253,3257,3260,3288,3294,3300,3314,3321,3333,3337,3354,3363,3367,3370,3373,3377,3383,3388,3394,3405,3409,3422,3426,3432,3439,3462,3465,3469,3472,3524,3527,3533,3537,3540,3561,3582,3588,3593,3597,3603,3654,3660,3664,3672,3684,3726,3750,3789,3804,3820,3878,3891,3928,3941,3982,3988,3993,3997,4017,4025,4029,4032,4038,4203,4207,4210,4261,4265,4311,4315,4461,4465,4477,4484,4488,4495,4724],[10,11,12],"p",{},"本文介绍个人在 AI 辅助开发中逐步形成的一套多 Agent 协作工作流。它以 Claude Code 或 Pi 作为 Main，通过 Herdr 调度 Pi 子 Agent，并结合共享 Core 规则、可复用 Skills 和任务上下文产物，串联需求澄清、任务规划、代码实现、独立审查与最终验收，借助任务契约、决策记录、实现交接和开发者审阅让工作过程可追溯。",[10,14,15,19,20],{},[16,17,18],"strong",{},"项目仓库："," ",[21,22,26],"a",{"href":23,"rel":24},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench",[25],"nofollow","eteplus\u002Fagent-workbench",[10,28,29],{},"仓库维护共享 Core 规则、Claude Code \u002F Pi Runtime 入口、Skills、任务模板和安装脚本；实际 Agent 调度依赖本机安装的 Herdr、Pi、模型 Provider 及相关工具，仓库只定义工作方式与集成约定，不包含独立的 Agent 调度服务。",[31,32,33],"blockquote",{},[10,34,35],{},"这套方案来自日常开发中的持续探索，目前仍在演进，主要适配维护者现阶段的工具组合与工程习惯。本文侧重介绍设计思路与协作机制，读者可结合自身项目、工具链、权限模型和团队流程调整采用；具体安装、配置和使用细节以仓库文档为准。",[37,38,40],"h2",{"id":39},"_1-为什么需要-agent-workbench不只关心产出也关心理解与意图","1. 为什么需要 agent-workbench：不只关心产出，也关心理解与意图",[10,42,43],{},"多 Agent 可以并行研究、实现和审查，但也会带来新的工程管理问题：主控需要把任务拆成可执行单元，子 Agent 需要准确理解边界，开发者则需要清楚代码为何这样改、自动化决策是否偏离原始需求。",[10,45,46,50],{},[47,48,49],"code",{},"agent-workbench"," 用任务分级、角色分工、显式上下文契约和证据验收来承接这些责任，并针对开发者理解补充了三项机制：决策追踪、实现 Walkthrough 和按风险触发的人工 Developer Review。",[52,53,55],"h3",{"id":54},"三种-ai-技术债与工作流回应","三种 AI 技术债与工作流回应",[57,58,59,78],"table",{},[60,61,62],"thead",{},[63,64,65,69,72,75],"tr",{},[66,67,68],"th",{},"技术债",[66,70,71],{},"典型表现",[66,73,74],{},"当前工作流的对应机制",[66,76,77],{},"机制边界",[79,80,81,102,122],"tbody",{},[63,82,83,89,92,99],{},[84,85,86],"td",{},[16,87,88],{},"Cognitive Debt（认知债务）",[84,90,91],{},"产出持续增加，开发者对系统的理解没有同步增长",[84,93,94,95,98],{},"L2 ",[47,96,97],{},"overview.md"," 汇总任务、参与者、阶段、决策、实现、验证和未解决事项；Research \u002F Review \u002F Retro 与 Knowledge Update 提供进一步沉淀入口",[84,100,101],{},"文档存在不等于开发者已经理解；仍需要开发者主动阅读和确认",[63,103,104,109,112,119],{},[84,105,106],{},[16,107,108],{},"Comprehension Debt（理解债务）",[84,110,111],{},"代码能运行，但开发者逐渐不了解内部实现",[84,113,114,115,118],{},"L2 实现任务的 ",[47,116,117],{},"handoff.md"," 必须提供 Implementation Walkthrough，解释调用链、状态\u002F数据流、关键抽象、取舍、扩展入口和排障线索；Developer Review 提供人工理解环节",[84,120,121],{},"Walkthrough 是理解入口，仍需结合实际源码、Diff 和项目环境验证",[63,123,124,129,132,139],{},[84,125,126],{},[16,127,128],{},"Intent Debt（意图债务）",[84,130,131],{},"Agent 作出产品或设计决策，但原始意图、选项和责任人缺乏记录",[84,133,134,135,138],{},"实质性决策进入 ",[47,136,137],{},"decisions.md","，记录来源、负责人、状态、依据和取舍；AI Reviewer 检查未记录假设；高影响改动触发 Developer Review",[84,140,141],{},"人工批准只覆盖明确呈现的审阅范围；未确认的实质决策仍需回到 Clarify",[10,143,144],{},[145,146],"img",{"alt":147,"src":148},"图 1：三种 AI 技术债与 agent-workbench 的治理机制","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F01-design-debt.svg",[10,150,151],{},[152,153,154,155,157,158,160,161,163],"em",{},"图 1｜认知债务、理解债务和意图债务分别对应知识沉淀、Implementation Walkthrough、决策追踪与人工确认，并落到 ",[47,156,97],{},"、",[47,159,117],{}," 和 ",[47,162,137],{}," 等可审阅产物。",[10,165,166],{},"这三种技术债是分析 AI 辅助开发风险的视角，并非仓库内置的三个独立模块或 Agent 角色；表中的映射来自当前 Core 规则对任务总览、决策记录、实现 Walkthrough、人工审阅和知识沉淀的定义。这些机制旨在降低技术债累积的概率，把重要上下文和责任边界显式化，方便开发者查找证据、提出修改并确认重要决定，但不会自动保证每位开发者理解所有变更，也不会代替产品负责人作出业务取舍。",[37,168,170],{"id":169},"_2-整体架构runtime-入口共享-coreherdr-调度skills-与任务产物","2. 整体架构：Runtime 入口、共享 Core、Herdr 调度、Skills 与任务产物",[10,172,173,175],{},[47,174,49],{}," 将工作流规则与 Agent Runtime 分开维护。Claude Code 或 Pi 都可以担任 Main；Core 定义统一的任务规则；Main 根据规则通过 Herdr 派发 Pi 子 Agent；Skills 提供可复用的专项能力；执行报告写入目标项目中的任务目录。",[52,177,179,180],{"id":178},"_21-runtime-入口claude-code-与-pi-共用-workflow","2.1 Runtime 入口：Claude Code 与 Pi 共用 ",[47,181,182],{},"\u002Fworkflow",[57,184,185,201],{},[60,186,187],{},[63,188,189,192,195,198],{},[66,190,191],{},"Main Runtime",[66,193,194],{},"入口文件",[66,196,197],{},"入口形式",[66,199,200],{},"主控模型偏好",[79,202,203,221],{},[63,204,205,208,213,218],{},[84,206,207],{},"Claude Code",[84,209,210],{},[47,211,212],{},"runtimes\u002Fclaude-code\u002Fworkflow\u002FSKILL.md",[84,214,215,216],{},"Claude Code Skill：",[47,217,182],{},[84,219,220],{},"Claude Opus 5.5",[63,222,223,226,231,236],{},[84,224,225],{},"Pi",[84,227,228],{},[47,229,230],{},"runtimes\u002Fpi\u002Fworkflow.md",[84,232,233,234],{},"Pi Prompt Template：",[47,235,182],{},[84,237,238],{},"Claude Opus 5.5 或 GPT-6.1 Sol",[10,240,241,242,245],{},"两个入口读取 ",[47,243,244],{},"AGENT_WORKBENCH_ROOT","，再加载共享 Core。Runtime Adapter 负责入口格式、上下文加载以及当前运行时的模型、工具、Skill 调用和 Herdr 适配；任务分级、权限、Task Contract 和验收规则由 Core 维护。这里的 Runtime Adapter 指各入口 Prompt \u002F Skill 与适配文档中的约定，由运行时按自身能力解释执行，并非独立的可执行程序。",[52,247,249],{"id":248},"_22-core跨-runtime-的唯一规则来源","2.2 Core：跨 Runtime 的唯一规则来源",[57,251,252,262],{},[60,253,254],{},[63,255,256,259],{},[66,257,258],{},"文件",[66,260,261],{},"权威职责",[79,263,264,274,284,294,304,322,332,342,352],{},[63,265,266,271],{},[84,267,268],{},[47,269,270],{},"core\u002Fworkflow.md",[84,272,273],{},"Main 职责、整体阶段、阶段门禁和按需加载策略",[63,275,276,281],{},[84,277,278],{},[47,279,280],{},"core\u002Ftask-classification.md",[84,282,283],{},"L0 \u002F L1 \u002F L2、任务类型、流程选择、L1 升级和 Plan 条件",[63,285,286,291],{},[84,287,288],{},[47,289,290],{},"core\u002Fmodel-routing.md",[84,292,293],{},"Main \u002F 子 Agent 模型偏好、Thinking、运行时解析和升级条件",[63,295,296,301],{},[84,297,298],{},[47,299,300],{},"core\u002Fpermissions.md",[84,302,303],{},"角色权限、决策权属、工作区安全、并行和外部副作用",[63,305,306,311],{},[84,307,308],{},[47,309,310],{},"core\u002Ftask-contract.md",[84,312,313,314,316,317,316,319,321],{},"委派字段、上下文、产物目录、",[47,315,97],{}," \u002F ",[47,318,137],{},[47,320,117],{}," 内容与状态",[63,323,324,329],{},[84,325,326],{},[47,327,328],{},"core\u002Facceptance.md",[84,330,331],{},"Test、AI Review、Gate、Developer Review、修复、最终验收、Knowledge Update 和 Retro",[63,333,334,339],{},[84,335,336],{},[47,337,338],{},"core\u002Freferences\u002Fcode-retrieval.md",[84,340,341],{},"可选 CodeGraph 与确定性检索工具的选择和证据策略",[63,343,344,349],{},[84,345,346],{},[47,347,348],{},"core\u002Freferences\u002Freview-escalation.md",[84,350,351],{},"Secondary Review 盲审、Finding 合并和定向裁决",[63,353,354,359],{},[84,355,356],{},[47,357,358],{},"core\u002Ftemplates\u002F",[84,360,361],{},"任务总览、决策记录和实现交接模板",[10,363,364],{},"每类规则只在一个权威文件中定义，Runtime 入口和其他文档通过引用使用，减少重复规则造成的不一致。",[10,366,367],{},[145,368],{"alt":369,"src":370},"图 2A：Runtime 与共享 Core 架构","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F02a-runtime-core.svg",[10,372,373],{},[152,374,375,376,378],{},"图 2A｜Claude Code 与 Pi 提供两个 Main 入口，共用 ",[47,377,244],{}," 和 Core 规则；Runtime Adapter 负责入口适配，Core 保持任务规则的唯一来源。",[52,380,382],{"id":381},"_23-herdr-与-pi-子-agent受控委派和独立执行","2.3 Herdr 与 Pi 子 Agent：受控委派和独立执行",[10,384,385],{},"Main 按任务类型和风险，通过 Herdr 启动 Pi 子 Agent。常见子任务包括仓库调研、外部资料调研、L2 代码实现、Debug 诊断、独立 Review 和按需 Test。Main 负责任务目标、决策、授权、阶段门禁和验收；子 Agent 在 Task Contract 限定的范围内执行并交付证据。",[10,387,388,389,157,392,157,395,398,399,402],{},"Herdr 自动化分为 Layout、Pane 和 Agent 三层：Layout 管理 Workspace \u002F Tab \u002F Pane；Pane 控制原始终端；Agent 层启动和控制识别到的 Pi Agent，并观察 ",[47,390,391],{},"working",[47,393,394],{},"blocked",[47,396,397],{},"idle"," 等状态。",[47,400,401],{},"herdr agent start"," 需要一个已经存在、位于 Shell Prompt 的 Pane，它本身不会创建或拆分 Pane。Main 应先创建或选择 Workspace \u002F Tab \u002F Shell Pane，再从命令响应中读取实际 Pane ID 启动 Pi。",[10,404,405,406,409],{},"典型调度顺序如下（示例假设 Main 已运行在可用的 Herdr Pane 中，并已安装 ",[47,407,408],{},"jq","）：",[411,412,417],"pre",{"className":413,"code":414,"language":415,"meta":416,"style":416},"language-bash shiki shiki-themes github-light github-dark","# 1. 在 Main Pane 旁边创建 Shell Pane\nsplit_json=$(herdr pane split --current --direction right --no-focus)\nPI_PANE_ID=$(printf '%s\\n' \"$split_json\" | jq -r '.result.pane.pane_id')\n\n# 2. 在该 Pane 中启动 Pi Agent\nherdr agent start implementer --kind pi --pane \"$PI_PANE_ID\"\n\n# 3. Main 按 core\u002Ftask-contract.md 组装完整 Task Contract\nTASK_CONTRACT_PROMPT='\u003CMain 生成的完整 Task Contract>'\n\n# 4. 传入任务并等待 Agent 状态变化\nherdr agent prompt implementer \"$TASK_CONTRACT_PROMPT\" --wait --timeout 300000\n\n# 5. 读取 Agent 输出；文件与 Diff 仍需独立核验\nherdr agent read implementer --source recent-unwrapped --lines 120\n","bash","",[47,418,419,428,469,508,515,521,552,557,563,574,579,585,613,618,624],{"__ignoreMap":416},[420,421,424],"span",{"class":422,"line":423},"line",1,[420,425,427],{"class":426},"sJ8bj","# 1. 在 Main Pane 旁边创建 Shell Pane\n",[420,429,431,435,439,442,446,450,453,457,460,463,466],{"class":422,"line":430},2,[420,432,434],{"class":433},"sVt8B","split_json",[420,436,438],{"class":437},"szBVR","=",[420,440,441],{"class":433},"$(",[420,443,445],{"class":444},"sScJk","herdr",[420,447,449],{"class":448},"sZZnC"," pane",[420,451,452],{"class":448}," split",[420,454,456],{"class":455},"sj4cs"," --current",[420,458,459],{"class":455}," --direction",[420,461,462],{"class":448}," right",[420,464,465],{"class":455}," --no-focus",[420,467,468],{"class":433},")\n",[420,470,472,475,477,479,482,485,488,491,494,497,500,503,506],{"class":422,"line":471},3,[420,473,474],{"class":433},"PI_PANE_ID",[420,476,438],{"class":437},[420,478,441],{"class":433},[420,480,481],{"class":455},"printf",[420,483,484],{"class":448}," '%s\\n'",[420,486,487],{"class":448}," \"",[420,489,490],{"class":433},"$split_json",[420,492,493],{"class":448},"\"",[420,495,496],{"class":437}," |",[420,498,499],{"class":444}," jq",[420,501,502],{"class":455}," -r",[420,504,505],{"class":448}," '.result.pane.pane_id'",[420,507,468],{"class":433},[420,509,511],{"class":422,"line":510},4,[420,512,514],{"emptyLinePlaceholder":513},true,"\n",[420,516,518],{"class":422,"line":517},5,[420,519,520],{"class":426},"# 2. 在该 Pane 中启动 Pi Agent\n",[420,522,524,526,529,532,535,538,541,544,546,549],{"class":422,"line":523},6,[420,525,445],{"class":444},[420,527,528],{"class":448}," agent",[420,530,531],{"class":448}," start",[420,533,534],{"class":448}," implementer",[420,536,537],{"class":455}," --kind",[420,539,540],{"class":448}," pi",[420,542,543],{"class":455}," --pane",[420,545,487],{"class":448},[420,547,548],{"class":433},"$PI_PANE_ID",[420,550,551],{"class":448},"\"\n",[420,553,555],{"class":422,"line":554},7,[420,556,514],{"emptyLinePlaceholder":513},[420,558,560],{"class":422,"line":559},8,[420,561,562],{"class":426},"# 3. Main 按 core\u002Ftask-contract.md 组装完整 Task Contract\n",[420,564,566,569,571],{"class":422,"line":565},9,[420,567,568],{"class":433},"TASK_CONTRACT_PROMPT",[420,570,438],{"class":437},[420,572,573],{"class":448},"'\u003CMain 生成的完整 Task Contract>'\n",[420,575,577],{"class":422,"line":576},10,[420,578,514],{"emptyLinePlaceholder":513},[420,580,582],{"class":422,"line":581},11,[420,583,584],{"class":426},"# 4. 传入任务并等待 Agent 状态变化\n",[420,586,588,590,592,595,597,599,602,604,607,610],{"class":422,"line":587},12,[420,589,445],{"class":444},[420,591,528],{"class":448},[420,593,594],{"class":448}," prompt",[420,596,534],{"class":448},[420,598,487],{"class":448},[420,600,601],{"class":433},"$TASK_CONTRACT_PROMPT",[420,603,493],{"class":448},[420,605,606],{"class":455}," --wait",[420,608,609],{"class":455}," --timeout",[420,611,612],{"class":455}," 300000\n",[420,614,616],{"class":422,"line":615},13,[420,617,514],{"emptyLinePlaceholder":513},[420,619,621],{"class":422,"line":620},14,[420,622,623],{"class":426},"# 5. 读取 Agent 输出；文件与 Diff 仍需独立核验\n",[420,625,627,629,631,634,636,639,642,645],{"class":422,"line":626},15,[420,628,445],{"class":444},[420,630,528],{"class":448},[420,632,633],{"class":448}," read",[420,635,534],{"class":448},[420,637,638],{"class":455}," --source",[420,640,641],{"class":448}," recent-unwrapped",[420,643,644],{"class":455}," --lines",[420,646,647],{"class":455}," 120\n",[10,649,650,651,654,655,657,658,661],{},"这是 Runtime 文档中的典型 CLI 示例，不是跨版本固定接口。实际使用前查看本机 Herdr Help 或 MCP Schema；Pane ID 必须从创建命令的响应中读取，不能猜测。等待超时或出现 ",[47,652,653],{},"agent_prompt_stalled"," 后，先读取 Agent 状态和输出，再决定是否重试；超时不代表 Prompt 一定没有发送，盲目重试可能造成重复任务。Agent 处于 ",[47,656,394],{}," 时，先读取阻塞原因并处理所需输入，",[47,659,660],{},"agent prompt"," 不会直接向已 blocked 的 Agent 提交新任务。",[10,663,664,665,668],{},"Main 收到输出后，还要检查子 Agent 写入的任务产物、当前源码和 Git Diff。Herdr 状态用于运行协调，子 Agent 自报 ",[47,666,667],{},"DONE"," 和终端摘要均不能代替 Main 验收。",[10,670,671],{},[145,672],{"alt":673,"src":674},"图 2B：Main 与 Pi 子 Agent 的执行链","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F02b-agent-execution.svg",[10,676,677],{},[152,678,679],{},"图 2B｜Main 通过 Herdr 委派 Pi 子 Agent，任务产物回流后，Main 独立检查源码、Diff 和测试并完成验收。",[52,681,683],{"id":682},"_24-skills可复用能力与-runtime-解耦","2.4 Skills：可复用能力与 Runtime 解耦",[10,685,686,689,690,693],{},[47,687,688],{},"skills\u002F"," 是个人 Skills 的统一维护源。当前仓库内置 ",[47,691,692],{},"ui-impl","，也允许维护个人 Skill 和经审查导入的第三方 Skill。Skills CLI 可以将同一份源文件以 Symlink 方式安装到多个 Agent Runtime；具体安装位置和发现行为由目标 Runtime 决定。",[10,695,696,697,702,703,157,706,160,709,712,713,716,717,720,721,723,724,727,728,157,731,157,734,160,737,740],{},"工作流复用 ",[21,698,701],{"href":699,"rel":700},"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills",[25],"mattpocock\u002Fskills"," 中的部分工程 Skills。上游 ",[47,704,705],{},"implement",[47,707,708],{},"grill-with-docs",[47,710,711],{},"retro"," 的 frontmatter 设置了 ",[47,714,715],{},"disable-model-invocation: true","，表示模型不会自主选择并调用这些 Skill；用户或编排器仍可显式启动它们。在 Claude Code 中由用户输入 ",[47,718,719],{},"\u002Fskill-name","；在 Pi 交互式会话或通过 Herdr ",[47,722,660],{}," 向 Pi Agent 派发时，统一使用 ",[47,725,726],{},"\u002Fskill:\u003Cname>","（Herdr 派发时将其放在 Prompt 开头，再附 Task Contract 和必要上下文）。该 Pi 触发约定适用于所有已安装到目标 Pi Agent 的 Skills，例如 ",[47,729,730],{},"\u002Fskill:implement",[47,732,733],{},"\u002Fskill:grill-with-docs",[47,735,736],{},"\u002Fskill:retro",[47,738,739],{},"\u002Fskill:ui-impl","。",[10,742,743,744,746,747,750,751,754],{},"显式加载 parent Skill 与执行 parent 声明的嵌套依赖属于两个环节。Claude Code 中，parent 可以按上游定义通过 Skill Tool 调用依赖；Pi 中使用 ",[47,745,726],{}," 只表示 parent 成功加载，不会自动将正文里的 Claude Code ",[47,748,749],{},"Skill"," Tool 调用转换为 Pi 的独立 Skill 调用。Pi 场景需要某项依赖能力时，由 Main 单独派发对应 ",[47,752,753],{},"\u002Fskill:\u003Cdependency>"," 并核验执行结果；没有单独派发时使用 Core fallback。Handoff 分别记录 parent 是否加载、嵌套依赖是否执行，以及跳过或不支持的原因。",[10,756,757],{},"Core 只引用逻辑 Skill 名称，由 Runtime Adapter 映射各运行时的调用语法与约束边界：",[57,759,760,777],{},[60,761,762],{},[63,763,764,767,770,772,774],{},[66,765,766],{},"逻辑 Skill",[66,768,769],{},"用途与上游关系",[66,771,207],{},[66,773,225],{},[66,775,776],{},"约束与调用边界",[79,778,779,813,843,871,901,925,955,981,1008,1034],{},[63,780,781,785,788,794,798],{},[84,782,783],{},[47,784,705],{},[84,786,787],{},"上游完整实现编排，面向 spec \u002F ticket 驱动的任务",[84,789,790,793],{},[47,791,792],{},"\u002Fimplement","（显式调用语法；本工作流的条件安装目标为 Pi）",[84,795,796],{},[47,797,730],{},[84,799,800,802,803,805,806,316,809,812],{},[47,801,715],{},"；Herdr ",[47,804,660],{}," 显式加载 parent，内部 ",[47,807,808],{},"tdd",[47,810,811],{},"code-review"," 依赖需单独核验",[63,814,815,819,826,832,838],{},[84,816,817],{},[47,818,808],{},[84,820,821,822,825],{},"Red-Green-Refactor 测试驱动实践（依赖 ",[47,823,824],{},"codebase-design","）",[84,827,828,829,825],{},"可选安装（",[47,830,831],{},"\u002Ftdd",[84,833,834,837],{},[47,835,836],{},"\u002Fskill:tdd","（默认安装）",[84,839,840,842],{},[47,841,705],{}," 的上游依赖之一；TDD 可单独显式调用",[63,844,845,849,852,857,866],{},[84,846,847],{},[47,848,824],{},[84,850,851],{},"为 TDD 提供接口设计和模块边界参考",[84,853,828,854,825],{},[47,855,856],{},"\u002Fcodebase-design",[84,858,859,862,863,865],{},[47,860,861],{},"\u002Fskill:codebase-design","（随 ",[47,864,808],{}," 默认安装）",[84,867,868,869],{},"Pi 需要时可通过 Herdr 单独显式委派 ",[47,870,861],{},[63,872,873,877,883,889,895],{},[84,874,875],{},[47,876,811],{},[84,878,879,880,882],{},"上游 ",[47,881,705],{}," 内的实现自检",[84,884,885,886],{},"保留 Claude Code 内置 ",[47,887,888],{},"\u002Fcode-review",[84,890,891,894],{},[47,892,893],{},"\u002Fskill:code-review","（条件安装）",[84,896,897,898,900],{},"第三方版本默认不安装到任何 Runtime；仅在明确试用上游 ",[47,899,705],{}," 且 Tracker \u002F fixed point 条件满足时按需安装到 Pi；只覆盖已提交分支 Diff，不能替代 Core Primary Review",[63,902,903,907,910,916,920],{},[84,904,905],{},[47,906,708],{},[84,908,909],{},"Main 进行重要需求、领域术语和设计澄清",[84,911,912,915],{},[47,913,914],{},"\u002Fgrill-with-docs","（用户手动触发，通过 Skill Tool 调用依赖）",[84,917,918],{},[47,919,733],{},[84,921,922,924],{},[47,923,715],{},"；Pi 只保证加载 parent，不自动执行嵌套依赖；Pi Main 默认使用 Core Clarify",[63,926,927,932,937,943,949],{},[84,928,929],{},[47,930,931],{},"grilling",[84,933,934,936],{},[47,935,708],{}," 的需求访谈与边界澄清依赖",[84,938,939,942],{},[47,940,941],{},"\u002Fgrilling","（由 Claude Code parent 通过 Skill Tool 调用）",[84,944,945,948],{},[47,946,947],{},"\u002Fskill:grilling","（单独安装并委派）",[84,950,951,952,954],{},"Pi 中不会由 ",[47,953,708],{}," 自动触发；需要时由 Main 单独显式派发，否则使用 Core Clarify",[63,956,957,962,967,972,977],{},[84,958,959],{},[47,960,961],{},"domain-modeling",[84,963,964,966],{},[47,965,708],{}," 的领域建模与术语梳理依赖",[84,968,969,942],{},[47,970,971],{},"\u002Fdomain-modeling",[84,973,974,948],{},[47,975,976],{},"\u002Fskill:domain-modeling",[84,978,951,979,954],{},[47,980,708],{},[63,982,983,987,990,999,1003],{},[84,984,985],{},[47,986,711],{},[84,988,989],{},"任务复盘和开发环境改进建议",[84,991,992,995,996,825],{},[47,993,994],{},"\u002Fretro","（用户手动触发，通过 Skill Tool 调用 ",[47,997,998],{},"writing-for-agents",[84,1000,1001],{},[47,1002,736],{},[84,1004,1005,1007],{},[47,1006,715],{},"；Pi 只保证加载 parent，不自动执行嵌套依赖；Pi Main 默认使用 Core Retro",[63,1009,1010,1014,1019,1024,1029],{},[84,1011,1012],{},[47,1013,998],{},[84,1015,1016,1018],{},[47,1017,711],{}," 的 Agent 文档写作辅助依赖",[84,1020,1021,942],{},[47,1022,1023],{},"\u002Fwriting-for-agents",[84,1025,1026,948],{},[47,1027,1028],{},"\u002Fskill:writing-for-agents",[84,1030,951,1031,1033],{},[47,1032,711],{}," 自动触发；需要时由 Main 单独显式派发，否则使用 Core Retro",[63,1035,1036,1040,1043,1048,1052],{},[84,1037,1038],{},[47,1039,692],{},[84,1041,1042],{},"视觉分析、浏览器还原和截图验证",[84,1044,1045],{},[47,1046,1047],{},"\u002Fui-impl",[84,1049,1050],{},[47,1051,739],{},[84,1053,1054,1055],{},"视觉任务由实际执行的 Pi Implementer 加载；Herdr → Pi 使用 ",[47,1056,739],{},[10,1058,879,1059,1061,1062,1064,1065,160,1067,1069,1070,1072,1073,1075,1076,1078,1079,1082,1083,1086,1087,740],{},[47,1060,705],{}," 面向 spec \u002F ticket 驱动的实现：传入 Issue \u002F Ticket 引用时会尝试从 Tracker 读取详情，并在上游定义中通过 Claude Code ",[47,1063,749],{}," Tool 请求调用 ",[47,1066,808],{},[47,1068,811],{},"。在 Pi 中，如需 TDD 能力，Main 可单独派发 ",[47,1071,836],{},"（按需配合已安装的 ",[47,1074,824],{},"）；而上游 ",[47,1077,811],{}," 要求项目提供 ",[47,1080,1081],{},"docs\u002Fagents\u002Fissue-tracker.md"," 等 Tracker 配置与用户指定的 fixed point，使用 ",[47,1084,1085],{},"git diff \u003Cfixed-point>...HEAD","（三点比较 merge-base 到 HEAD）审查已提交的分支变更，不包含 staged \u002F unstaged 工作区修改，缺少 Tracker 时还会提示运行 ",[47,1088,1089],{},"\u002Fsetup-matt-pocock-skills",[10,1091,1092,1093,316,1095,1097,1098,1100,1101,1103],{},"使用该链路时需注意三项边界：第一，本工作流的 Task Contract 不等同于 Tracker 配置，也不自动提供 fixed point、生成 Tracker 文件或运行 setup；未满足前置条件时，不调用上游 ",[47,1094,705],{},[47,1096,811],{},"，直接按 Core 实现与独立 Review 流程执行。第二，未提交的工作区修改仍须按 Core Workspace Baseline 和独立 Primary Review 审查；上游 ",[47,1099,811],{}," 仅作为 Implementer 自检，不能替代 Core 要求的独立 Primary Review。第三，上游 ",[47,1102,705],{}," 包含提交分支的建议，而本仓库默认不执行 Git commit \u002F push，除非用户对当前任务明确授权。",[52,1105,1107],{"id":1106},"_25-环境与依赖哪些组件负责运行工作流","2.5 环境与依赖：哪些组件负责运行工作流",[10,1109,1110],{},"仓库保存规则和入口，运行时依赖需要在本机单独安装与配置。依赖按必要程度分为：",[57,1112,1113,1129],{},[60,1114,1115],{},[63,1116,1117,1120,1123,1126],{},[66,1118,1119],{},"分类",[66,1121,1122],{},"依赖",[66,1124,1125],{},"必要程度",[66,1127,1128],{},"作用",[79,1130,1131,1147,1161,1174,1187,1204,1230,1249,1263,1291],{},[63,1132,1133,1135,1138,1141],{},[84,1134,191],{},[84,1136,1137],{},"Claude Code 或 Pi",[84,1139,1140],{},"二选一",[84,1142,1143,1144,1146],{},"运行 Main \u002F Planner 和 ",[47,1145,182],{}," 入口",[63,1148,1149,1152,1155,1158],{},[84,1150,1151],{},"Subagent Runtime",[84,1153,1154],{},"Pi Coding Agent",[84,1156,1157],{},"必需",[84,1159,1160],{},"执行 L2 子任务；也是固定的子 Agent Runtime",[63,1162,1163,1166,1169,1171],{},[84,1164,1165],{},"Orchestration",[84,1167,1168],{},"Herdr",[84,1170,1157],{},[84,1172,1173],{},"管理 Workspace \u002F Tab \u002F Pane，并启动、控制 Pi Agent",[63,1175,1176,1179,1182,1184],{},[84,1177,1178],{},"Model Access",[84,1180,1181],{},"Main 与 Pi 所需的 Provider \u002F Model 认证",[84,1183,1157],{},[84,1185,1186],{},"提供 Main 和各子 Agent 的模型能力",[63,1188,1189,1192,1198,1201],{},[84,1190,1191],{},"Skill Manager",[84,1193,1194,1195],{},"Node.js、pnpm、",[47,1196,1197],{},"pnpx skills",[84,1199,1200],{},"安装 \u002F 同步时需要",[84,1202,1203],{},"将本地和第三方 Skills 安装到目标 Runtime",[63,1205,1206,1209,1214,1217],{},[84,1207,1208],{},"Engineering Skills",[84,1210,1211,1213],{},[47,1212,701],{}," 中的指定 Skills",[84,1215,1216],{},"按需安装 \u002F 使用",[84,1218,1219,1221,1222,1224,1225,316,1227,1229],{},[47,1220,808],{}," 需配套 ",[47,1223,824],{},"；",[47,1226,705],{},[47,1228,811],{}," 条件安装并要求 Tracker 配置",[63,1231,1232,1235,1243,1246],{},[84,1233,1234],{},"Visual Tooling",[84,1236,1237,157,1239,1242],{},[47,1238,692],{},[47,1240,1241],{},"agent-browser","、图片理解能力",[84,1244,1245],{},"仅视觉任务需要",[84,1247,1248],{},"在真实浏览器中还原、截图和比较页面",[63,1250,1251,1254,1257,1260],{},[84,1252,1253],{},"Code Retrieval",[84,1255,1256],{},"CodeGraph",[84,1258,1259],{},"可选",[84,1261,1262],{},"辅助跨文件关系、调用链和影响分析；不可用时回退到确定性检索",[63,1264,1265,1268,1271,1282],{},[84,1266,1267],{},"Issue Tracker",[84,1269,1270],{},"项目 Tracker 配置",[84,1272,879,1273,1275,1276,1278,1279,1281],{},[47,1274,811],{}," 必需；",[47,1277,705],{}," 传入 Ticket 引用或依赖内部 ",[47,1280,811],{}," 时需要",[84,1283,1284,1285,1287,1288,1290],{},"需要 ",[47,1286,1081],{}," 等配置与 ",[47,1289,811],{}," fixed point；Core Task Contract 不替代 Tracker 配置",[63,1292,1293,1296,1300,1302],{},[84,1294,1295],{},"CLI JSON Parsing",[84,1297,1298],{},[47,1299,408],{},[84,1301,1259],{},[84,1303,1304],{},"只在采用 §2.3 的 Herdr CLI JSON 示例时用于提取 Pane ID；MCP 或结构化工具可直接读取字段",[10,1306,1307,1308,1311,1312,740],{},"建议安装 Herdr Pi Integration，以提供 Pi Session 身份、状态上报和会话恢复支持。基础 Pane \u002F Agent 调度由 Herdr 自动化能力提供，Integration 属于增强项，不会替代 Main 建立 Pane、启动 Agent、传递 Task Contract 和读取结果的职责。详细安装与配置见仓库中的 ",[47,1309,1310],{},"runtimes\u002FREADME.md","；第三方 Skills 的安装分流见 ",[47,1313,1314],{},"skills\u002FREADME.md",[10,1316,1317],{},[145,1318],{"alt":1319,"src":1320},"图 3：agent-workbench 的运行时依赖与可选能力","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F03-environment-dependencies.svg",[10,1322,1323],{},[152,1324,1325],{},"图 3｜将依赖分为运行必需、安装同步和按需启用三类；详细安装条件与 Tracker 等前置要求见正文依赖表。",[52,1327,1329],{"id":1328},"_26-项目内任务产物","2.6 项目内任务产物",[10,1331,1332,1333,1336],{},"每个 L2 任务将上下文产物写入",[16,1334,1335],{},"目标项目仓库","：",[411,1338,1343],{"className":1339,"code":1341,"language":1342,"meta":416},[1340],"language-text",".agents\u002Fworkflow\u002Ftasks\u002F\u003Ctask-id>\u002F\n","text",[47,1344,1341],{"__ignoreMap":416},[10,1346,1347,1349,1350,1352,1353,1356],{},[47,1348,49],{}," 中的模板位于 ",[47,1351,358],{},"；模板定义产物结构，实际任务文档和截图写入目标项目。",[47,1354,1355],{},"workspace-baseline\u002F"," 仅在任务获得授权、且目标路径与任务开始前的已有修改重叠时生成，用来保存必要的任务前快照。这样工作流规则与项目任务记录分离，同时保留任务与代码仓库的对应关系。",[52,1358,1360],{"id":1359},"_27-仓库目录一览","2.7 仓库目录一览",[411,1362,1365],{"className":1363,"code":1364,"language":1342,"meta":416},[1340],"agent-workbench\u002F\n├── README.md\n├── core\u002F\n│   ├── README.md\n│   ├── workflow.md\n│   ├── task-classification.md\n│   ├── model-routing.md\n│   ├── permissions.md\n│   ├── task-contract.md\n│   ├── acceptance.md\n│   ├── templates\u002F\n│   │   ├── overview.template.md\n│   │   ├── decisions.template.md\n│   │   └── handoff.template.md\n│   └── references\u002F\n│       ├── code-retrieval.md\n│       └── review-escalation.md\n├── runtimes\u002F\n│   ├── README.md\n│   ├── claude-code\u002F\n│   │   ├── README.md\n│   │   └── workflow\u002FSKILL.md\n│   └── pi\u002F\n│       ├── README.md\n│       └── workflow.md\n├── skills\u002F\n│   ├── README.md\n│   └── ui-impl\u002FSKILL.md\n└── scripts\u002F\n    └── install-runtime-links.sh\n",[47,1366,1364],{"__ignoreMap":416},[37,1368,1370],{"id":1369},"_3-角色分工与决策权属谁负责分析执行和批准","3. 角色分工与决策权属：谁负责分析、执行和批准",[10,1372,1373,1374,1376],{},"工作流使用逻辑角色表达职责，再由 ",[47,1375,290],{}," 给出模型偏好。模型名称是目标偏好，不是固定 Provider 配置；实际 Provider、Model ID、Thinking 和能力以部署环境为准。",[52,1378,1380],{"id":1379},"_31-main-planner","3.1 Main \u002F Planner",[10,1382,1383],{},"Main 可以运行在 Claude Code 或 Pi 中，负责：",[1385,1386,1387,1391,1394,1397,1400,1403],"ul",{},[1388,1389,1390],"li",{},"理解用户目标、任务类型和风险级别。",[1388,1392,1393],{},"收集证据、解决关键歧义、制定方案并记录实质性决策。",[1388,1395,1396],{},"通过 Herdr 派发子 Agent，明确范围、约束、Skill、References 和验收条件。",[1388,1398,1399],{},"汇总 Research、Handoff、Test 和 Review 结果，执行 Gate。",[1388,1401,1402],{},"为适用任务整理 Developer Review Package，并依据人工反馈继续、修正或验收。",[1388,1404,1405,1406,1408],{},"维护 L2 ",[47,1407,97],{},"，检查决策记录和 Implementation Walkthrough 是否完整。",[10,1410,1411],{},"Main 不直接实现 L2 业务代码。L2 实现由 Herdr → Pi Implementer 执行。",[52,1413,1415],{"id":1414},"_32-子-agent-角色与模型偏好","3.2 子 Agent 角色与模型偏好",[57,1417,1418,1434],{},[60,1419,1420],{},[63,1421,1422,1425,1428,1431],{},[66,1423,1424],{},"角色",[66,1426,1427],{},"模型偏好",[66,1429,1430],{},"默认 Thinking",[66,1432,1433],{},"职责 \u002F 触发条件",[79,1435,1436,1452,1466,1480,1496,1511,1526,1540],{},[63,1437,1438,1441,1444,1449],{},[84,1439,1440],{},"Repo Researcher",[84,1442,1443],{},"DeepSeek V4.1 Flash",[84,1445,1446],{},[47,1447,1448],{},"max",[84,1450,1451],{},"项目内部代码、配置、依赖和调用链调研",[63,1453,1454,1457,1459,1463],{},[84,1455,1456],{},"Web Researcher",[84,1458,1443],{},[84,1460,1461],{},[47,1462,1448],{},[84,1464,1465],{},"外部文档、版本和规范调研",[63,1467,1468,1471,1473,1477],{},[84,1469,1470],{},"Implementer",[84,1472,1443],{},[84,1474,1475],{},[47,1476,1448],{},[84,1478,1479],{},"L2 代码实现；视觉实现也由该角色承担",[63,1481,1482,1485,1488,1493],{},[84,1483,1484],{},"Primary Reviewer",[84,1486,1487],{},"GPT-6 Luna",[84,1489,1490],{},[47,1491,1492],{},"medium",[84,1494,1495],{},"所有 L2 代码变更的默认独立 Review",[63,1497,1498,1501,1504,1508],{},[84,1499,1500],{},"Secondary Reviewer",[84,1502,1503],{},"GLM-5.3 Flash",[84,1505,1506],{},[47,1507,1448],{},[84,1509,1510],{},"高风险、复杂 Diff 或需要独立补充缺陷覆盖时",[63,1512,1513,1516,1519,1523],{},[84,1514,1515],{},"Reviewer Escalation",[84,1517,1518],{},"Claude Sonnet 5.5（默认）",[84,1520,1521],{},[47,1522,1492],{},[84,1524,1525],{},"P0\u002FP1 实质争议或高影响问题无法形成证据结论时；实际模型家族必须与 Implementer 不同",[63,1527,1528,1531,1533,1537],{},[84,1529,1530],{},"Tester",[84,1532,1443],{},[84,1534,1535],{},[47,1536,1448],{},[84,1538,1539],{},"高风险、跨模块、关键契约或独立验证能增加覆盖时",[63,1541,1542,1545,1547,1551],{},[84,1543,1544],{},"Expert",[84,1546,220],{},[84,1548,1549],{},[47,1550,1492],{},[84,1552,1553],{},"重大架构决策或常规 Agent 无法解决的问题",[10,1555,1556],{},"Main 模型偏好：Claude Code Main 使用 Claude Opus 5.5；Pi Main 可使用 Claude Opus 5.5 或 GPT-6.1 Sol。",[52,1558,1560],{"id":1559},"_33-decision-ownership不同类型的决定由谁负责","3.3 Decision Ownership：不同类型的决定由谁负责",[10,1562,1563,1565],{},[47,1564,300],{}," 明确了决策权属：",[1385,1567,1568,1574,1580,1586,1592],{},[1388,1569,1570,1573],{},[16,1571,1572],{},"用户 \u002F Product or Domain Owner"," 拥有原始产品意图、目标、范围和最终业务取舍的决定权；需要业务权衡的决策应在依赖它的实现开始前完成批准。",[1388,1575,1576,1579],{},[16,1577,1578],{},"Main"," 可以在用户目标、已确认决策和项目约定范围内选择执行方案，并记录实质性决策及其来源；无法从需求或项目约定确定的重要产品行为、契约或架构选择，应先 Clarify。",[1388,1581,1582,1585],{},[16,1583,1584],{},"子 Agent"," 可以研究、比较选项并提出建议；不能擅自扩大范围，也不能把未经确认的产品行为或契约选择当成已批准决定。",[1388,1587,1588,1591],{},[16,1589,1590],{},"Developer \u002F Technical Owner"," 通过 Developer Review 确认自己理解并接受审阅包中明确呈现的关键实现、技术取舍和维护风险。",[1388,1593,1594],{},"Product \u002F Domain Approval 与 Developer Review 可以由同一人完成，但记录和责任不可混同。Developer Review 不能补做或代替业务批准，也不能授权审阅包之外的改动。",[10,1596,1597],{},[145,1598],{"alt":1599,"src":1600},"图 4A：不同参与者的决策权属","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F04a-decision-ownership.svg",[10,1602,1603],{},[152,1604,1605],{},"图 4A｜用户 \u002F Product Owner 保留业务取舍决定权；Main 负责工程编排；子 Agent 在授权范围内执行；Developer \u002F Technical Owner 负责理解并接受明确呈现的技术实现。",[10,1607,1608],{},[145,1609],{"alt":1610,"src":1611},"图 4B：从编排到验收的执行职责","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F04b-execution-responsibility.svg",[10,1613,1614],{},[152,1615,1616],{},"图 4B｜Main 建立任务目标和授权，Herdr 协调 Pane 与 Session，Pi 子 Agent 执行任务并回传产物，最终由 Main 独立验收。",[37,1618,1620,1621,1623],{"id":1619},"_4-一次任务如何流转从-workflow-到最终验收","4. 一次任务如何流转：从 ",[47,1622,182],{}," 到最终验收",[10,1625,1626],{},"以下以“为账户设置页增加二步验证开关，并补齐相关测试”为例，说明一项典型 L2 实施任务。",[52,1628,1630],{"id":1629},"_41-启动与-intake","4.1 启动与 Intake",[10,1632,1633],{},"在 Claude Code 或 Pi 中输入：",[411,1635,1638],{"className":1636,"code":1637,"language":1342,"meta":416},[1340],"\u002Fworkflow 为账户设置页增加二步验证开关，并补齐相关测试\n",[47,1639,1637],{"__ignoreMap":416},[10,1641,1642],{},"入口加载共享 Core 后，Main 明确：",[1385,1644,1645,1648,1651,1654],{},[1388,1646,1647],{},"原始目标、预期交付物和验收条件。",[1388,1649,1650],{},"修改范围、非目标、项目规范和依赖。",[1388,1652,1653],{},"风险、数据或 API 契约影响。",[1388,1655,1656],{},"当前分支、工作区状态、用户既有未提交修改和 Diff 基线。",[10,1658,1659,1660,1663],{},"如果判定为 L2，Main 在目标项目的 ",[47,1661,1662],{},".agents\u002Fworkflow\u002Ftasks\u002F\u003Ctask-id>\u002Foverview.md"," 建立任务总览，并记录 Workspace Baseline（当前分支、Base Commit、初始 Git 状态、已有 Modified \u002F Untracked 路径、重叠路径处理方式与允许修改范围）。工作流默认排除任务前已修改的路径；确需修改重叠路径时，须先取得用户明确授权并建立任务前快照（详见 §5.4）。",[52,1665,1667],{"id":1666},"_42-任务分级l0-l1-l2","4.2 任务分级：L0 \u002F L1 \u002F L2",[10,1669,1670],{},"任务级别按影响范围和风险判定，任务类型按实际交付目标判定，两者分别处理。",[57,1672,1673,1686],{},[60,1674,1675],{},[63,1676,1677,1680,1683],{},[66,1678,1679],{},"级别",[66,1681,1682],{},"实施前判据",[66,1684,1685],{},"执行方式",[79,1687,1688,1699,1710],{},[63,1689,1690,1693,1696],{},[84,1691,1692],{},"L0",[84,1694,1695],{},"文案、注释、局部文档或纯文字配置，无行为变化",[84,1697,1698],{},"Main 直接处理，按需自检",[63,1700,1701,1704,1707],{},[84,1702,1703],{},"L1",[84,1705,1706],{},"预计单文件、总变更不超过 50 行、无外部接口\u002F数据契约变化、无跨模块行为影响且风险低",[84,1708,1709],{},"Main 直接处理，运行受影响检查",[63,1711,1712,1715,1718],{},[84,1713,1714],{},"L2",[84,1716,1717],{},"多文件、行为变化、接口\u002F数据契约变化，或存在实质兼容性、安全、稳定性风险",[84,1719,1720],{},"代码变更委派 Implementer，执行独立 Review；按风险增加 Tester \u002F Expert",[10,1722,1723,1724,1726],{},"这里的 L0 \u002F L1 是工作流启动后的轻量处理路径，并不意味着建议为简单请求专门调用 ",[47,1725,182],{},"；文案、注释、纯文字配置和低风险单文件修改直接在当前 Agent 对话中完成即可。文件数量和变更行数只是判断线索，单文件安全修复或接口\u002F数据契约变更因具有实质风险，仍属于 L2。",[10,1728,1729],{},"变更行数按 Git Diff 中新增行数与删除行数之和计算，实施过程中以实际 Diff 判断是否需要升级为 L2。L1 实施中如果实际触及第二个文件、总变更超过 50 行，或出现跨模块行为、接口\u002F数据契约及实质风险，Main 会暂停直接修改，保存当前 Diff 和工作区状态，再升级为 L2 并委派 Implementer。",[10,1731,1732],{},"任务类型包括 Research、Plan \u002F Architecture、Implement、Visual Implementation、Review、Test、Debug、Documentation、Issue \u002F Ticket 和 Mixed。纯调研、规划、Review 或 Test 任务只执行完成目标所需的最小阶段，不强行走完完整实现流水线；Debug 任务则先走诊断分支，仅在需要修复时按修复本身的风险重新分级（见 §4.4）。",[10,1734,1735],{},[145,1736],{"alt":1737,"src":1738},"图 5A：任务入口与风险分级","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F05a-task-classification.svg",[10,1740,1741],{},[152,1742,1743],{},"图 5A｜先判断任务是否值得启动完整工作流，再按影响范围和风险选择 L0 \u002F L1 或 L2；多文件修改按 Core 规则进入 L2。",[52,1745,1747],{"id":1746},"_43-researchclarifydecision-trace-与-plan","4.3 Research、Clarify、Decision Trace 与 Plan",[10,1749,1750],{},"进入 L2 主流程后，实施前的准备阶段按需推进：",[1385,1752,1753,1759,1765,1813],{},[1388,1754,1755,1758],{},[16,1756,1757],{},"Research","：Main 按需委派 Repo Researcher 和 Web Researcher。调研结果须区分事实、推断和待确认事项，并提供代码路径、符号、行号或外部来源。",[1388,1760,1761,1764],{},[16,1762,1763],{},"Clarify","：当歧义会实质影响行为、范围、兼容性、数据或验收时，Main 先通过已有会话、源码和项目文档排查可自行确认的问题；仍需业务或架构权衡时再向用户 Clarify。",[1388,1766,1767,1770,1771,1773,1774,1777,1778,157,1781,1784,1785,1224,1788,1791,1792,157,1795,157,1798,1801,1802,1805,1806,1808,1809,1812],{},[16,1768,1769],{},"Decision Trace","：出现实质性产品、交互、架构、接口、数据、安全、兼容性或性能决策时，必须创建 ",[47,1772,137],{},"（完整字段见 §5.3）。其中 ",[47,1775,1776],{},"Origin"," 区分 ",[47,1779,1780],{},"USER_APPROVED",[47,1782,1783],{},"PROJECT_CONVENTION"," 与 ",[47,1786,1787],{},"AGENT_PROPOSAL",[47,1789,1790],{},"Status"," 使用 ",[47,1793,1794],{},"PROPOSED",[47,1796,1797],{},"CONFIRMED",[47,1799,1800],{},"REJECTED"," 或 ",[47,1803,1804],{},"DEFERRED","；无实质性决策时在 ",[47,1807,97],{}," 标注 ",[47,1810,1811],{},"No material decisions","。实施期间发现新的实质性选择时，须先更新记录（需用户权衡的先完成确认），再继续依赖该决定的工作。",[1388,1814,1815,1818,1819,1822,1823,1826],{},[16,1816,1817],{},"Plan","：所有 L2 代码变更在实施前都必须有可执行方案。达到 ",[47,1820,1821],{},"task-classification.md"," 中任一条件时生成 ",[47,1824,1825],{},"plan.md","；其他 L2 任务将方案写入 Task Contract 和委派消息。",[10,1828,1829],{},[145,1830],{"alt":1831,"src":1832},"图 5B：L2 标准执行流程","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F05b-l2-workflow.svg",[10,1834,1835],{},[152,1836,1837],{},"图 5B｜L2 代码实施主流程：实施前完成需求澄清、实质性决策记录与必要业务批准；随后进入代码实施、独立验证与自动化门禁；Gate 通过后按风险触发 Developer Review，最后完成 Acceptance 与知识沉淀。",[52,1839,1841],{"id":1840},"_44-debugimplementhandofftest-和-ai-review","4.4 Debug、Implement、Handoff、Test 和 AI Review",[10,1843,1844,1845,1848],{},"Debug 任务先复现问题、诊断根因并收集证据；仅诊断时以 ",[47,1846,1847],{},"debug-report.md"," 验收结束；需要代码修复时按修复本身的风险重新分级，L2 修复进入完整的 Implement、Handoff、Test、Review 和 Gate。",[10,1850,1851],{},[145,1852],{"alt":1853,"src":1854},"图 5C：Debug 诊断与修复分支","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F05c-debug-workflow.svg",[10,1856,1857],{},[152,1858,1859],{},"图 5C｜Debug 先完成复现和诊断报告；仅诊断即可结束，需要修复时再按修复风险进入 L0 \u002F L1 或 L2 流程。",[10,1861,1862,1863,1865,1866,1868,1869,1872],{},"L2 代码实现由 Main 通过 Herdr 派发 Pi Implementer，默认按 Core Task Contract 在授权范围内完成代码修改、基础检查与 ",[47,1864,117],{},"（视觉任务须加载 ",[47,1867,692],{},"；若满足 §2.4 的 Tracker 与 fixed point 前置条件，也可通过 ",[47,1870,1871],{},"\u002Fskill:implement \u003CIssue \u002F Spec URL>"," 显式加载上游编排，但其自检不能替代独立 Primary Review）。",[10,1874,1875,1876,1878,1879,1882],{},"所有 L2 实现任务的 ",[47,1877,117],{}," 必须包含 ",[16,1880,1881],{},"Implementation Walkthrough","，说明：",[1385,1884,1885,1888,1891,1894,1897],{},[1388,1886,1887],{},"主要调用链和数据流；",[1388,1889,1890],{},"新增或修改的关键抽象、状态和领域规则；",[1388,1892,1893],{},"重要技术取舍及其决策记录；",[1388,1895,1896],{},"后续扩展入口；",[1388,1898,1899],{},"常见问题的排查入口。",[10,1901,1902],{},"Main 先读取 Handoff，再检查实际 Diff、关键源码和检查结果。Handoff 完整后，独立 Test 和 Primary Review 可以并行：所有 L2 代码变更都必须执行 Primary Review；Tester、Secondary Review 和 Expert 按风险触发。",[52,1904,1906],{"id":1905},"_45-gatedeveloper-review-与-acceptance","4.5 Gate、Developer Review 与 Acceptance",[10,1908,1909,1910,740],{},"必需测试、Primary Review 和已触发的补充 Review 完成后进入自动化 Gate。存在未解决 P0\u002FP1 时执行定向修复与复审（最多两轮），第二轮后仍未解决则标记 ",[47,1911,1912],{},"BLOCKED",[10,1914,1915,1916,1918,1919,1922,1923,1925,1926,157,1929,1801,1932,1935,1936,1938,1939,1942,1943,1945],{},"业务批准与技术审阅处于不同节点：若 ",[47,1917,137],{}," 中的 Product \u002F Domain Approval 仍为 PENDING，Main 必须在依赖该决定的实现开始前暂停并记为 ",[47,1920,1921],{},"NEEDS USER DECISION","；Developer Review 则在自动化 Gate 通过后按风险触发。Main 在 ",[47,1924,97],{}," 中标注 ",[47,1927,1928],{},"REQUIRED",[47,1930,1931],{},"RECOMMENDED",[47,1933,1934],{},"NOT REQUIRED"," 及理由；",[47,1937,1928],{}," 任务在获得开发者明确批准前保持 ",[47,1940,1941],{},"NEEDS DEVELOPER REVIEW","，不从测试通过、AI Review PASS、子 Agent ",[47,1944,667],{}," 或用户沉默推断批准（触发条件与审阅包详见 §6.4）。",[52,1947,1949],{"id":1948},"_46-knowledge-update-与-retro","4.6 Knowledge Update 与 Retro",[10,1951,1952],{},"完成 Acceptance 后，Main 在任务授权范围内评估值得长期保留的知识：",[1385,1954,1955,1961,1970],{},[1388,1956,1957,1960],{},[16,1958,1959],{},"ADR \u002F Architecture Docs","：稳定的架构边界、公共契约和领域规则；",[1388,1962,1963,1969],{},[16,1964,1965,1966],{},"项目文档或 ",[47,1967,1968],{},"AGENTS.md","：经验证的模块入口、调用链和排障方法；",[1388,1971,1972,1975],{},[16,1973,1974],{},"个人 Skill","：可跨项目复用的 Agent 执行方法。",[10,1977,1978,1979,316,1981,1984],{},"未获授权或暂不适合沉淀的候选项记入 ",[47,1980,97],{},[47,1982,1983],{},"retro.md"," 并说明原因；一次性实现细节和短期调试过程保留在任务目录，不机械复制到长期知识库。出现重复失败、模型路由错误、成本异常、并行冲突或交付缺口时，再按需执行 Retro。",[37,1986,1988],{"id":1987},"_5-上下文如何传递task-contract-与任务产物","5. 上下文如何传递：Task Contract 与任务产物",[10,1990,1991,1993],{},[47,1992,310],{}," 定义委派协议，子 Agent 不依赖继承 Main 的完整会话历史，而是接收本次任务实际需要的目标、范围、证据、权限和验收条件。",[52,1995,1997],{"id":1996},"_51-task-contract-传递什么","5.1 Task Contract 传递什么",[57,1999,2000,2010],{},[60,2001,2002],{},[63,2003,2004,2007],{},[66,2005,2006],{},"字段",[66,2008,2009],{},"用途",[79,2011,2012,2022,2049,2088,2098,2108,2140,2150,2160,2170,2180,2190,2200,2210,2220,2230,2240,2255],{},[63,2013,2014,2019],{},[84,2015,2016],{},[47,2017,2018],{},"Task ID",[84,2020,2021],{},"任务唯一标识，关联产物目录",[63,2023,2024,2029],{},[84,2025,2026],{},[47,2027,2028],{},"Agent Role",[84,2030,2031,2032,157,2035,157,2038,157,2040,157,2043,157,2045,1801,2047],{},"执行者角色：",[47,2033,2034],{},"Main \u002F Planner",[47,2036,2037],{},"Repo \u002F Web Researcher",[47,2039,1470],{},[47,2041,2042],{},"Primary \u002F Secondary Reviewer",[47,2044,1515],{},[47,2046,1530],{},[47,2048,1544],{},[63,2050,2051,2056],{},[84,2052,2053],{},[47,2054,2055],{},"Task Type",[84,2057,2058,2059,157,2061,157,2064,157,2067,157,2070,157,2073,157,2076,157,2079,157,2082,1801,2085],{},"任务类型：",[47,2060,1757],{},[47,2062,2063],{},"Plan \u002F Architecture",[47,2065,2066],{},"Implement",[47,2068,2069],{},"Visual Implementation",[47,2071,2072],{},"Review",[47,2074,2075],{},"Test",[47,2077,2078],{},"Debug",[47,2080,2081],{},"Documentation",[47,2083,2084],{},"Issue \u002F Ticket",[47,2086,2087],{},"Mixed",[63,2089,2090,2095],{},[84,2091,2092],{},[47,2093,2094],{},"Goal",[84,2096,2097],{},"具体目标和预期结果",[63,2099,2100,2105],{},[84,2101,2102],{},[47,2103,2104],{},"Model Preference \u002F Thinking",[84,2106,2107],{},"模型偏好和推理档位",[63,2109,2110,2115],{},[84,2111,2112],{},[47,2113,2114],{},"Skills",[84,2116,2117,2118,2121,2122,316,2125,316,2128,316,2131,2134,2135,2137,2138],{},"逻辑 Skill 名称、",[47,2119,2120],{},"REQUIRED \u002F OPTIONAL","、是否已安装、调用策略（",[47,2123,2124],{},"HERDR_EXPLICIT_COMMAND",[47,2126,2127],{},"USER_COMMAND",[47,2129,2130],{},"RUNTIME_AUTO",[47,2132,2133],{},"CORE_FALLBACK","）与加载结果；",[47,2136,715],{}," 不得标为 ",[47,2139,2130],{},[63,2141,2142,2147],{},[84,2143,2144],{},[47,2145,2146],{},"References",[84,2148,2149],{},"需要读取的 Core 参考文档",[63,2151,2152,2157],{},[84,2153,2154],{},[47,2155,2156],{},"Workspace Baseline",[84,2158,2159],{},"Branch、Base Commit、初始状态、既有 Modified \u002F Untracked 路径、重叠路径策略、Baseline Snapshot 和 Allowed Paths",[63,2161,2162,2167],{},[84,2163,2164],{},[47,2165,2166],{},"Scope",[84,2168,2169],{},"允许检查或修改的文件、模块和边界",[63,2171,2172,2177],{},[84,2173,2174],{},[47,2175,2176],{},"Context",[84,2178,2179],{},"需求、方案、代码位置、前序证据和项目规范",[63,2181,2182,2187],{},[84,2183,2184],{},[47,2185,2186],{},"Retrieval",[84,2188,2189],{},"代码检索工具策略",[63,2191,2192,2197],{},[84,2193,2194],{},[47,2195,2196],{},"Time Budget",[84,2198,2199],{},"阶段预算和检查点",[63,2201,2202,2207],{},[84,2203,2204],{},[47,2205,2206],{},"Deliverables",[84,2208,2209],{},"产物路径与交付内容",[63,2211,2212,2217],{},[84,2213,2214],{},[47,2215,2216],{},"Constraints",[84,2218,2219],{},"当前任务适用的权限和安全约束",[63,2221,2222,2227],{},[84,2223,2224],{},[47,2225,2226],{},"Acceptance Criteria",[84,2228,2229],{},"可观察、可验证的完成条件",[63,2231,2232,2237],{},[84,2233,2234],{},[47,2235,2236],{},"Decision Authority",[84,2238,2239],{},"已确认决策、项目约定和 Agent 可提案范围",[63,2241,2242,2247],{},[84,2243,2244],{},[47,2245,2246],{},"Developer Review Requirement",[84,2248,2249,316,2251,316,2253],{},[47,2250,1928],{},[47,2252,1931],{},[47,2254,1934],{},[63,2256,2257,2262],{},[84,2258,2259],{},[47,2260,2261],{},"Final Response",[84,2263,2264],{},"状态、交付路径、未完成和未验证事项",[10,2266,2267,2268,2270,2271,157,2274,157,2277,157,2280,160,2283,2286],{},"针对 ",[47,2269,2069],{}," 任务，Task Contract 还会额外包含 ",[47,2272,2273],{},"Reference",[47,2275,2276],{},"Target",[47,2278,2279],{},"Viewport",[47,2281,2282],{},"States",[47,2284,2285],{},"Assets"," 字段。",[52,2288,2290],{"id":2289},"_52-任务产物各自解决什么问题","5.2 任务产物各自解决什么问题",[10,2292,2293],{},"默认任务目录：",[411,2295,2298],{"className":2296,"code":2297,"language":1342,"meta":416},[1340],".agents\u002Fworkflow\u002Ftasks\u002F\u003Ctask-id>\u002F\n├── overview.md\n├── workspace-baseline\u002F       # 仅在授权重叠路径时创建\n├── research.md\n├── debug-report.md           # 仅诊断任务\n├── decisions.md\n├── plan.md\n├── handoff.md\n├── review.md\n├── review-secondary.md\n├── review-escalation.md\n├── test-report.md\n├── visual-report.md\n├── screenshots\u002F\n└── retro.md\n",[47,2299,2297],{"__ignoreMap":416},[10,2301,2302,2303,2305,2306,2308,2309,2311,2312,2314],{},"以上是可能出现的产物集合。具体任务只创建被触发的文件：所有 L2 任务必须有 ",[47,2304,97],{},"；存在经用户授权的重叠脏路径时才创建 ",[47,2307,1355],{},"；有实质性决策时创建 ",[47,2310,137],{},"；L2 实施任务的 ",[47,2313,117],{}," 必须包含 Walkthrough；其他报告按相应阶段创建。",[57,2316,2317,2330],{},[60,2318,2319],{},[63,2320,2321,2324,2327],{},[66,2322,2323],{},"产物",[66,2325,2326],{},"谁维护 \u002F 何时创建",[66,2328,2329],{},"主要职责",[79,2331,2332,2344,2356,2369,2381,2393,2405,2418,2431,2444,2456,2469,2484],{},[63,2333,2334,2338,2341],{},[84,2335,2336],{},[47,2337,97],{},[84,2339,2340],{},"Main；所有 L2，Intake 后建立并在 Gate \u002F Acceptance 前更新",[84,2342,2343],{},"统一导航：目标、阶段、参与者、Workspace Baseline 摘要、关键修改、决策索引、实现理解摘要、验证状态、Developer Review 和未解决事项",[63,2345,2346,2350,2353],{},[84,2347,2348],{},[47,2349,1355],{},[84,2351,2352],{},"Main；仅当用户授权修改与任务开始前既有变更重叠的路径时",[84,2354,2355],{},"保存必要的任务前快照，用于区分原有修改与本次任务修改；快照遵循源文件访问控制，不进入产品构建、发布包或实现提交",[63,2357,2358,2363,2366],{},[84,2359,2360],{},[47,2361,2362],{},"research.md",[84,2364,2365],{},"Researcher；触发 Research 时",[84,2367,2368],{},"记录事实、推断、源码位置、来源、风险和待确认事项",[63,2370,2371,2375,2378],{},[84,2372,2373],{},[47,2374,137],{},[84,2376,2377],{},"Main；出现实质性决策时",[84,2379,2380],{},"记录上下文、备选方案、决策来源\u002F负责人、理由、取舍、影响和状态",[63,2382,2383,2387,2390],{},[84,2384,2385],{},[47,2386,1825],{},[84,2388,2389],{},"Main；达到 Plan 文件生成条件时",[84,2391,2392],{},"记录目标、范围、契约、实施步骤、测试、风险与回滚",[63,2394,2395,2399,2402],{},[84,2396,2397],{},[47,2398,117],{},[84,2400,2401],{},"Implementer；L2 实现任务",[84,2403,2404],{},"说明实现摘要、需求\u002F决策映射、调用链、关键抽象、取舍、扩展\u002F排障入口和验证结果",[63,2406,2407,2412,2415],{},[84,2408,2409],{},[47,2410,2411],{},"review.md",[84,2413,2414],{},"Primary Reviewer；所有 L2 代码变更",[84,2416,2417],{},"记录审查范围、Finding、严重级别、证据、需求\u002F决策依据和审查限制",[63,2419,2420,2425,2428],{},[84,2421,2422],{},[47,2423,2424],{},"review-secondary.md",[84,2426,2427],{},"Secondary Reviewer；满足风险条件时",[84,2429,2430],{},"独立盲审结果",[63,2432,2433,2438,2441],{},[84,2434,2435],{},[47,2436,2437],{},"review-escalation.md",[84,2439,2440],{},"Reviewer Escalation；实质争议升级时",[84,2442,2443],{},"定向争议裁决及证据",[63,2445,2446,2450,2453],{},[84,2447,2448],{},[47,2449,1847],{},[84,2451,2452],{},"Debug 诊断任务",[84,2454,2455],{},"记录症状、复现步骤、环境、日志\u002F源码证据、已排除方向、根因或待确认假设及建议修复验证方式",[63,2457,2458,2463,2466],{},[84,2459,2460],{},[47,2461,2462],{},"test-report.md",[84,2464,2465],{},"Tester；触发独立测试时",[84,2467,2468],{},"记录实际命令、范围、结果、失败、未覆盖项和环境限制",[63,2470,2471,2479,2481],{},[84,2472,2473,316,2476],{},[47,2474,2475],{},"visual-report.md",[47,2477,2478],{},"screenshots\u002F",[84,2480,2069],{},[84,2482,2483],{},"记录参考、页面状态、截图比较、差异和验证状态",[63,2485,2486,2490,2493],{},[84,2487,2488],{},[47,2489,1983],{},[84,2491,2492],{},"Main；有复盘价值时",[84,2494,2495],{},"流程、模型、成本、质量、并行与交付复盘",[52,2497,2499],{"id":2498},"_53-三个关键模板","5.3 三个关键模板",[10,2501,2502,2508,2509,2512],{},[16,2503,2504,2507],{},[47,2505,2506],{},"overview.template.md","：任务导航和审阅摘要。"," 它不复制各份报告的全文，而是提供相对路径链接与全局状态索引（完整字段构成见 §7.2）；对未触发的阶段明确标注 ",[47,2510,2511],{},"N\u002FA","，不生成空白报告。",[10,2514,2515,2521,2522,157,2525,157,2527,157,2530,157,2532,157,2535,157,2538,157,2541,2544,2545,157,2547,157,2550,157,2553,157,2556,157,2559,157,2562,160,2565,2568,2569,740],{},[16,2516,2517,2520],{},[47,2518,2519],{},"decisions.template.md","：决策登记。"," 每项实质性决策记录 ",[47,2523,2524],{},"Type",[47,2526,1776],{},[47,2528,2529],{},"Decision Owner",[47,2531,1790],{},[47,2533,2534],{},"Product \u002F Domain Approval",[47,2536,2537],{},"Approved By",[47,2539,2540],{},"Approval Evidence",[47,2542,2543],{},"Affected Areas","，以及 ",[47,2546,2176],{},[47,2548,2549],{},"Problem",[47,2551,2552],{},"Options",[47,2554,2555],{},"Decision",[47,2557,2558],{},"Rationale",[47,2560,2561],{},"Trade-offs",[47,2563,2564],{},"Evidence",[47,2566,2567],{},"Follow-up","。待确认和延后事项统一汇总到 ",[47,2570,2571],{},"Deferred \u002F Unresolved Decisions",[10,2573,2574,2580,2581,2584,2585,316,2588,2591],{},[16,2575,2576,2579],{},[47,2577,2578],{},"handoff.template.md","：实现理解。"," 包含执行状态、需求与决策映射表、§4.4 所述的 Implementation Walkthrough、契约与兼容性说明、验证结果及剩余限制。当 Task Contract 指定了 Skill 时，还须填写 ",[47,2582,2583],{},"Skill Loading & Execution"," 表，记录每个 Skill 的调用策略、目标 Runtime 安装状态、parent 是否加载、嵌套依赖执行结果（如 ",[47,2586,2587],{},"UNSUPPORTED",[47,2589,2590],{},"SKIPPED","）以及是否回退到 Core。它用于解释本次实现如何工作，不替代代码 Diff。",[52,2593,2595],{"id":2594},"_54-workspace-baseline先区分已有修改再审查本次变更","5.4 Workspace Baseline：先区分已有修改，再审查本次变更",[10,2597,2598,2601,2602,2605,2606,2609],{},[47,2599,2600],{},"Base Commit"," 只表示任务开始时的 HEAD。",[47,2603,2604],{},"git diff \u003Cbase>"," 仍然包含任务开始前已经存在的工作区修改，不能单独证明这些变更属于当前任务。Main 默认将已有脏文件从本次 ",[47,2607,2608],{},"Allowed Paths"," 排除；任务前已有的 Untracked 文件也不能被当作本次新增文件。",[10,2611,2612,2613,2616,2617,2619,2620,2622,2623,2626,2627,2630,2631,2633],{},"确实需要修改与已有脏文件重叠的路径时，Main 必须先说明重叠路径和风险，取得用户明确授权，再在任何子 Agent 写入前为相关文件建立任务前快照（",[47,2614,2615],{},"Overlap Handling: USER_AUTHORIZED_WITH_SNAPSHOT","），放入 ",[47,2618,1355],{},"。快照只包含必要文件，遵循与源文件相同的访问控制，不复制无关凭据或私密数据，也不混入产品构建、发布包或实现提交；无法安全建立可靠快照时，将该路径标记为 ",[47,2621,1912],{}," 并暂停写入。审查阶段若无法可靠区分任务变更与既有变更，相关 Review 标记为 ",[47,2624,2625],{},"INCOMPLETE","，Main 不得放行 ",[47,2628,2629],{},"PASS","。任务结束时，Main 在 ",[47,2632,97],{}," 标注快照位置和处理建议，由用户或项目约定决定是否清理。",[52,2635,2637],{"id":2636},"_55-上下文与结果如何回流","5.5 上下文与结果如何回流",[10,2639,2640,2641,2643,2644,2646,2647,2649,2650,2653,2654,2656,2657,2659],{},"Main 在委派前确认子 Agent 可以访问 Contract 指定的文件：其中 ",[47,2642,2146],{}," 路径相对于 ",[47,2645,244],{}," 解析，而 ",[47,2648,2166],{}," 与任务产物路径（",[47,2651,2652],{},".agents\u002Fworkflow\u002Ftasks\u002F\u003Ctask-id>\u002F","）相对于目标项目根目录。执行所需 Skill 必须由实际子 Agent 加载；Core 中的逻辑 Skill 名称由 Runtime Adapter 映射为 Claude Code ",[47,2655,719],{}," 或 Pi ",[47,2658,726],{},"。无法访问某份 Reference 时，Main 将必要规则摘要或片段写入 Context。",[10,2661,2662],{},"子 Agent 写入任务目录并返回状态、产物路径、实际模型信息和未完成事项。Main 既读取报告，也独立检查 Workspace Baseline、实际 Diff、源码和测试结果。任务目录只隔离文档、快照和截图，不会自动隔离共享代码工作区。",[10,2664,2665],{},[145,2666],{"alt":2667,"src":2668},"图 6A：Task Contract 与上下文回流","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F06a-task-contract-flow.svg",[10,2670,2671],{},[152,2672,2673],{},"图 6A｜Main 将目标、范围、权限和验收标准组装为 Task Contract，经 Herdr 交给 Pi 子 Agent；任务报告和证据回流 Main 进行独立核验。",[10,2675,2676],{},[145,2677],{"alt":2678,"src":2679},"图 6B：Workspace Baseline 与任务 Diff 归属","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F06b-workspace-baseline.svg",[10,2681,2682],{},[152,2683,2684,2685,2687,2688,740],{},"图 6B｜干净路径以 Base Commit 为比较基准；已有修改默认排除，授权重叠路径先快照再比较；无法安全建立快照时路径标记 ",[47,2686,1912],{},"，审查时无法可靠区分变更归属则标记 ",[47,2689,2625],{},[37,2691,2693],{"id":2692},"_6-结果汇总与质量门禁ai-reviewdeveloper-review-和修复闭环","6. 结果汇总与质量门禁：AI Review、Developer Review 和修复闭环",[10,2695,2696,2697,2699],{},"多 Agent 输出可能互相补充，也可能出现重复发现或观点冲突。",[47,2698,49],{}," 将自动化代码审查与面向开发者的人工审阅分开定义：前者检查实现质量和需求一致性；后者确认关键实现和决策是否符合原始意图、开发者是否理解并接受重要取舍。",[52,2701,2703],{"id":2702},"_61-test-与-primary-review","6.1 Test 与 Primary Review",[1385,2705,2706,2711,2714,2717],{},[1388,2707,2708,2709,740],{},"Implementer 先运行与修改范围直接相关的基础检查，记录在 ",[47,2710,117],{},[1388,2712,2713],{},"高风险、跨模块、关键契约或独立验证能增加覆盖时，Main 委派 Tester；简单变更可复用真实执行过的基础检查。",[1388,2715,2716],{},"所有 L2 代码变更必须执行独立 Primary Review，完整覆盖约定 Diff；Reviewer 的实际模型家族必须与 Implementer 不同。",[1388,2718,2719,2720,316,2722,2724,2725,2724,2727,2729,2730,2732,2733,2736,2737,2739,2740,2626,2742,740],{},"Review 输入包括完整 Workspace Baseline、依据路径状态确定的任务专属 Diff、原始需求和验收标准、",[47,2721,2362],{},[47,2723,137],{},"（如有）、",[47,2726,1825],{},[47,2728,117],{},"、项目规范和必要测试结果。干净且无重叠的路径结合 Base Commit 检查 Diff；授权重叠路径比较 ",[47,2731,1355],{}," 快照与最终文件并单独说明本次变更；",[47,2734,2735],{},"EXCLUDED"," 路径不作为本次实现变更审查；无法安全建立快照的 ",[47,2738,1912],{}," 路径不得继续实现或获得 Review PASS。若 Reviewer 未覆盖完整约定 Diff，或无法可靠区分任务变更与既有修改，相关 Review 必须标记 ",[47,2741,2625],{},[47,2743,2629],{},[10,2745,2746,2747,2749,2750,2752],{},"Reviewer 除检查代码缺陷外，还要核对实现与原始需求、已确认决策和项目约定是否一致，特别是实现过程中是否出现未记录的产品行为、交互、架构、API 或数据契约选择。若 Implementer 在执行中升级到 Claude Sonnet 5.5 \u002F Opus 5.5，Main 必须重新核对 Reviewer 模型家族，按 ",[47,2748,290],{}," 选择与 Implementer 不同家族的模型。测试场景也应覆盖 ",[47,2751,137],{}," 中已确认且可验证的行为或契约决策。",[10,2754,2755],{},"Finding 严重级别：",[1385,2757,2758,2764,2770],{},[1388,2759,2760,2763],{},[16,2761,2762],{},"P0","：发布阻断、核心功能失效、严重数据、安全、权限或契约问题。",[1388,2765,2766,2769],{},[16,2767,2768],{},"P1","：明确缺陷、重要行为错误，或缺失测试会掩盖具体且重要的风险。",[1388,2771,2772,2775],{},[16,2773,2774],{},"P2","：非阻断改进、边界建议或偏好性意见，不触发自动修复循环。",[10,2777,2778,2779,2782,2783,740],{},"Finding 使用 ",[47,2780,2781],{},"ID | Severity | File:Line | Issue | Evidence | Suggested Fix","；涉及意图或决策偏差时补充 ",[47,2784,2785],{},"Requirement \u002F Decision Ref",[52,2787,2789],{"id":2788},"_62-secondary-review-与定向升级","6.2 Secondary Review 与定向升级",[10,2791,2792],{},"普通、范围明确且风险可控的 L2 任务只执行 Primary Review。涉及安全\u002F权限、迁移\u002F一致性、核心契约、复杂跨模块 Diff 或具体高影响测试缺口时，才触发 GLM-5.3 Flash Secondary Review。",[10,2794,2795,2796,316,2798,2800],{},"Secondary Reviewer 使用独立 Pi Session，基于相同的原始需求、验收标准、",[47,2797,2362],{},[47,2799,137],{},"、Diff、Plan \u002F Handoff 和测试证据独立盲审，第一轮完成前不读取 Primary Reviewer 的 Findings。Main 随后合并重复项、保留实质分歧，并依据源码、Diff、需求、决策和测试证据裁决。",[10,2802,2803,2804,2806,2807,2809],{},"Reviewer Escalation 仅在 P0\u002FP1 实质争议或高影响问题仍无法形成证据结论时定向介入。默认模型偏好为 Claude Sonnet 5.5；如果 Implementer 已升级到 Claude 模型家族，则按 ",[47,2805,290],{}," 优先选择尚未参与当前争议的 GLM-5.3 Flash，不可用或已参与时改选 GPT-6 Luna。若 Luna 与 GLM 已分别作为 Primary \u002F Secondary 参与分歧，且没有其他可用的不同模型家族 Reviewer，Main 不重复委派已参与的 Reviewer，也不启动同家族审查，而是根据原始需求、源码、Diff、测试和双方证据直接裁决并记录理由；仍无法形成有证据的结论时，未解决的 P0\u002FP1 保持 ",[47,2808,1912],{},"。Escalation 不重新扫描整个仓库，也不替代 Main 最终决策。",[52,2811,2813],{"id":2812},"_63-gate-与修复","6.3 Gate 与修复",[10,2815,2816,2817,740],{},"必需测试、Primary Review 和所有已触发的补充审查完成后进入 Gate。存在 P0\u002FP1 时，由原 Implementer 定向修复，运行针对性回归，并由 Primary Reviewer 复审修复 Diff。复审结果返回 Main Gate 重新核验，最多修复与复审两轮；第二轮后仍存在 P0\u002FP1，标记 ",[47,2818,1912],{},[10,2820,2821,2822,2824],{},"Main 不以模型数量或多数票代替证据，而是核对真实源码、当前 Diff、需求、Decision ID、契约和测试结果。",[47,2823,2625],{}," Review 不放行。",[52,2826,2828],{"id":2827},"_64-developer-review-与-product-domain-approval分开确认技术实现和业务意图","6.4 Developer Review 与 Product \u002F Domain Approval：分开确认技术实现和业务意图",[10,2830,2831],{},"两类确认承担不同责任：",[57,2833,2834,2850],{},[60,2835,2836],{},[63,2837,2838,2841,2844,2847],{},[66,2839,2840],{},"确认类型",[66,2842,2843],{},"负责人",[66,2845,2846],{},"关注内容",[66,2848,2849],{},"时机",[79,2851,2852,2865],{},[63,2853,2854,2856,2859,2862],{},[84,2855,2534],{},[84,2857,2858],{},"用户或指定 Product \u002F Domain Owner",[84,2860,2861],{},"产品规则、业务行为、用户可见交互和领域取舍",[84,2863,2864],{},"在依赖该业务决定的实现开始前",[63,2866,2867,2870,2873,2876],{},[84,2868,2869],{},"Developer Review",[84,2871,2872],{},"开发者 \u002F 技术负责人",[84,2874,2875],{},"是否理解并接受关键实现、技术取舍和维护风险",[84,2877,2878],{},"自动化 Gate 通过后、最终 Acceptance 之前",[10,2880,2881],{},"同一人可以承担两种责任，但批准记录必须区分。Developer Review 位于自动化验证、AI Review 和 Main Gate 之后、最终 Acceptance 之前；它不替代 AI Review 或业务批准，也不允许绕过 P0\u002FP1 门禁。",[10,2883,2884,2885,2887,2888,157,2890,1801,2892,2894,2895,1336],{},"Main 必须为每个 L2 任务在 ",[47,2886,97],{}," 中记录 ",[47,2889,1928],{},[47,2891,1931],{},[47,2893,1934],{}," 及理由。以下情形必须标记为 ",[47,2896,1928],{},[1385,2898,2899,2902,2905,2908,2911,2914],{},[1388,2900,2901],{},"用户可见的产品规则、业务行为或交互设计发生变化；",[1388,2903,2904],{},"公共 API、事件、数据结构、数据库 Schema 或跨模块契约发生变化；",[1388,2906,2907],{},"架构边界、核心抽象、关键依赖或跨模块设计发生实质调整；",[1388,2909,2910],{},"涉及认证授权、安全、敏感数据、事务、一致性、并发或权限边界；",[1388,2912,2913],{},"涉及数据迁移、破坏性变更、兼容性取舍或难以回滚的操作；",[1388,2915,2916],{},"Agent 实质性产品\u002F设计决策尚未确认，或原始意图存在会影响结果的重要不确定性。",[10,2918,2919,2920,2922,2923,1801,2925,2927,2928,2930],{},"用户明确要求审阅时一律为 ",[47,2921,1928],{},"。普通、范围受控、遵循既有项目约定且没有实质性行为\u002F契约决策的 L2 修改，可以标记 ",[47,2924,1931],{},[47,2926,1934],{},"，但必须在 ",[47,2929,97],{}," 记录依据。",[2932,2933,2935],"h4",{"id":2934},"developer-review-package","Developer Review Package",[10,2937,2938],{},"Main 至少提供：",[2940,2941,2942,2947,2952,2957,2960,2965,2970],"ol",{},[1388,2943,2944,2946],{},[47,2945,97],{},"：目标、范围、状态和产物导航；",[1388,2948,2949,2951],{},[47,2950,137],{},"（如有）：选项、决策来源、理由、取舍和确认状态；",[1388,2953,2954,2956],{},[47,2955,117],{},"（实施任务）：Implementation Walkthrough；",[1388,2958,2959],{},"关键 Diff：重要文件、符号、变更位置和基准；",[1388,2961,2962,2964],{},[47,2963,2411],{}," 及补充 Review（适用时）；",[1388,2966,2967,2969],{},[47,2968,2462],{},"（执行独立测试时）；",[1388,2971,2972],{},"未解决假设、风险、技术债和后续建议。",[10,2974,2975,2976,2978],{},"开发者从 ",[47,2977,97],{}," 进入其他产物，再按需查看源码和 Diff；流程不要求逐行阅读所有实现才能掌握关键变化。",[2932,2980,2981],{"id":2981},"批准与反馈",[10,2983,2984,2986,2987,2989,2990,2992],{},[47,2985,1928],{}," 任务在开发者明确确认前，Verdict 为 ",[47,2988,1941],{},"。Main 不从测试通过、AI Reviewer PASS、子 Agent ",[47,2991,667],{}," 或用户沉默推断批准。",[10,2994,2995,2996,2998],{},"开发者可以批准、要求修改或要求澄清。批准记录在 ",[47,2997,97],{},"，包括确认来源、审阅基准 Commit \u002F 变更范围和结果。批准后若代码、决策或验收范围发生实质变化，必须更新审阅包并重新请求受影响部分的确认。要求澄清时回到 Clarify 更新决策与方案；要求修改时重新执行受影响的实现、Test、Review 和 Gate，完成后更新审阅包并重新请求相应范围的确认。",[10,3000,3001,3002,3004,3005,3007,3008,3010],{},"开发者批准表示接受已呈现的实现和技术取舍，不改变测试、Review、安全和权限门禁。若 ",[47,3003,137],{}," 中的 Product \u002F Domain Approval 仍为 PENDING，Verdict 使用 ",[47,3006,1921],{},"，而不是 ",[47,3009,1941],{},"；任何未解决 P0\u002FP1 仍然阻止 PASS。",[52,3012,3014],{"id":3013},"_65-acceptance-与-knowledge-update","6.5 Acceptance 与 Knowledge Update",[10,3016,3017,3018,3020,3021,3023],{},"最终 ",[47,3019,2629],{}," 必须同时满足：全部必需验收条件达成、必需测试真实执行、Review 完整通过、无未解决 P0\u002FP1、必要用户业务决策已完成，且所有 ",[47,3022,1928],{}," Developer Review 已明确批准。",[10,3025,3026,3027,3029,3030,316,3032,3034],{},"完成 Acceptance 后，Main 按 §4.6 的规则与任务授权范围评估 Knowledge Update（如沉淀 ADR、更新项目文档 \u002F ",[47,3028,1968],{}," 或提炼个人 Skill），将未获授权或暂不适合长期保存的候选项留在 ",[47,3031,97],{},[47,3033,1983],{}," 中。",[10,3036,3037],{},[145,3038],{"alt":3039,"src":3040},"图 7A：自动化 Review 与质量门禁","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F07a-automated-review.svg",[10,3042,3043],{},[152,3044,3045],{},"图 7A｜Implementer 完成基础检查与 Handoff 后，由 Primary Reviewer 独立检查全部 L2 代码变更；Secondary Review \u002F Tester 按风险触发，最终由 Main Gate 根据证据裁决。",[10,3047,3048],{},[145,3049],{"alt":3050,"src":3051},"图 7B：业务批准、开发者审阅与最终验收","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F07b-human-approval.svg",[10,3053,3054],{},[152,3055,3056],{},"图 7B｜Product \u002F Domain Approval 在依赖业务决定的实现开始前完成；Developer Review 在自动化 Gate 通过后按风险触发；所有必需条件满足后进入 Acceptance。",[37,3058,3060,3061,3063],{"id":3059},"_7-开发者从哪里理解一次任务以-overviewmd-为审阅入口","7. 开发者从哪里理解一次任务：以 ",[47,3062,97],{}," 为审阅入口",[10,3065,3066,3068],{},[47,3067,97],{}," 是所有 L2 任务的统一审阅入口，提供全局导航与摘要，避免开发者在多份任务产物之间自行拼接上下文。",[52,3070,3072],{"id":3071},"_71-推荐阅读顺序","7.1 推荐阅读顺序",[57,3074,3075,3088],{},[60,3076,3077],{},[63,3078,3079,3082,3085],{},[66,3080,3081],{},"顺序",[66,3083,3084],{},"阅读内容",[66,3086,3087],{},"开发者需要回答的问题",[79,3089,3090,3102,3115,3127,3138,3151,3164],{},[63,3091,3092,3095,3099],{},[84,3093,3094],{},"1",[84,3096,3097],{},[47,3098,97],{},[84,3100,3101],{},"目标、范围、阶段、参与 Agent、关键修改、验证和风险是什么？",[63,3103,3104,3107,3112],{},[84,3105,3106],{},"2",[84,3108,3109,3111],{},[47,3110,137],{},"（如有）",[84,3113,3114],{},"有哪些重要选择？来源、负责人、理由、取舍和确认状态是什么？",[63,3116,3117,3120,3124],{},[84,3118,3119],{},"3",[84,3121,3122],{},[47,3123,117],{},[84,3125,3126],{},"核心调用链如何工作？关键抽象、状态、数据流和扩展入口在哪里？",[63,3128,3129,3132,3135],{},[84,3130,3131],{},"4",[84,3133,3134],{},"实际 Git Diff 与源码",[84,3136,3137],{},"代码是否实现了已记录的需求和决策？修改范围是否符合授权？",[63,3139,3140,3143,3148],{},[84,3141,3142],{},"5",[84,3144,3145,3147],{},[47,3146,2411],{}," \u002F 补充 Review",[84,3149,3150],{},"Reviewer 发现了什么？哪些问题已修复？审查覆盖有何限制？",[63,3152,3153,3156,3161],{},[84,3154,3155],{},"6",[84,3157,3158,3160],{},[47,3159,2462],{}," 与验证证据",[84,3162,3163],{},"实际执行了什么测试？失败、未覆盖和环境限制有哪些？",[63,3165,3166,3169,3176],{},[84,3167,3168],{},"7",[84,3170,3171,316,3173,3175],{},[47,3172,2475],{},[47,3174,2478],{},"（视觉任务）",[84,3177,3178],{},"参考图和最终结果在同等状态下是否经过实际比较？",[52,3180,3182,3183,3185],{"id":3181},"_72-overviewmd-包含什么","7.2 ",[47,3184,97],{}," 包含什么",[10,3187,3188,3189,3192],{},"仓库的 ",[47,3190,3191],{},"core\u002Ftemplates\u002Foverview.template.md"," 包含以下主要模块：",[1385,3194,3195,3200,3205,3211,3217,3223,3229,3235,3241,3247],{},[1388,3196,3197,3199],{},[16,3198,1790],{},"：Task ID、类型\u002F级别、Main Runtime \u002F Model、当前阶段、Verdict、Developer Review 要求、状态与判定理由；",[1388,3201,3202,3204],{},[16,3203,2156],{},"：分支、Base Commit、初始状态、既有脏路径\u002F未跟踪路径、重叠处理策略、快照路径与允许修改范围；",[1388,3206,3207,3210],{},[16,3208,3209],{},"Intent","：原始目标、范围\u002F非目标、验收标准和用户约束；",[1388,3212,3213,3216],{},[16,3214,3215],{},"Participants","：各角色、Runtime \u002F Model、职责和结果；",[1388,3218,3219,3222],{},[16,3220,3221],{},"Artifact Index","：Baseline 快照、Research、Debug、Decisions、Plan、Handoff、Review、Test、Visual 和 Retro 的路径与状态；",[1388,3224,3225,3228],{},[16,3226,3227],{},"Key Changes \u002F Decision Index","：关键变更映射表和决策索引；",[1388,3230,3231,3234],{},[16,3232,3233],{},"Implementation Understanding","：主调用\u002F数据流、核心抽象、重要取舍、扩展和排障入口；",[1388,3236,3237,3240],{},[16,3238,3239],{},"Verification Summary","：测试、AI Review、P0\u002FP1、视觉验证和已知覆盖缺口；",[1388,3242,3243,3246],{},[16,3244,3245],{},"Product \u002F Domain Approval & Developer Review Package","：业务决策批准状态，以及面向开发者的关键文件\u002FDiff 位置、待关注决策、审阅问题、审阅范围基线和批准证据；",[1388,3248,3249,3252],{},[16,3250,3251],{},"Open Risks & Next Steps \u002F Knowledge Update Candidates","：未解决假设、延后决策、技术债、后续建议和长期知识沉淀候选项。",[52,3254,3256],{"id":3255},"_73-这如何帮助开发者审阅关键改动","7.3 这如何帮助开发者审阅关键改动",[10,3258,3259],{},"建议将审阅分成三层：",[2940,3261,3262,3273,3282],{},[1388,3263,3264,3267,3268,160,3270,3272],{},[16,3265,3266],{},"先理解意图","：从 ",[47,3269,97],{},[47,3271,137],{}," 了解为什么要改、有哪些已确认选择，以及哪些假设仍待确认。",[1388,3274,3275,3278,3279,3281],{},[16,3276,3277],{},"再理解实现","：通过 ",[47,3280,117],{}," 的 Implementation Walkthrough 找到关键调用链、状态和数据契约，再按链接检查真实源码与 Diff。",[1388,3283,3284,3287],{},[16,3285,3286],{},"最后核验质量","：查看 Review Finding、Test 结果和视觉证据，确认自动化验证覆盖了哪些内容、仍有哪些盲区。",[10,3289,3290,3291,3293],{},"对于 ",[47,3292,1928],{}," 的 Developer Review，Main 会把这组文件和关键 Diff 整理为 Developer Review Package。开发者可以从摘要一路追查到源码、测试和决策证据，对存疑的实现要求修改或澄清。",[10,3295,3296],{},[145,3297],{"alt":3298,"src":3299},"图 8：Developer Review 的五步阅读路径","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F08-developer-review-navigation.svg",[10,3301,3302],{},[152,3303,3304,3305,3307,3308,3310,3311,3313],{},"图 8｜将 §7.1 的阅读顺序收敛为五个步骤：从 ",[47,3306,97],{},"（01）出发，依次查看 ",[47,3309,137],{},"（02）与 ",[47,3312,117],{}," Walkthrough（03），再核对 Diff、Review、Test 与视觉证据（04，对应 §7.1 第 4–7 项），最后在明确呈现的审阅范围内完成确认或反馈（05）。",[37,3315,3317,3318,3320],{"id":3316},"_8-专项流程ui-impl-如何完成视觉实现","8. 专项流程：",[47,3319,692],{}," 如何完成视觉实现",[10,3322,3323,3326,3327,3329,3330,3332],{},[47,3324,3325],{},"skills\u002Fui-impl\u002FSKILL.md"," 将视觉还原定义为专项实施能力，不新增 Agent 角色。通用实现流程、权限和交付要求由 Core Task Contract 定义；",[47,3328,692],{}," 负责视觉分析、还原方法和浏览器验证步骤（如需结合上游 ",[47,3331,705],{},"，同样受 §2.4 所述前置条件约束）。",[52,3334,3336],{"id":3335},"_81-输入和前置条件","8.1 输入和前置条件",[10,3338,3339,3340,157,3342,157,3344,157,3346,157,3348,3350,3351,3353],{},"Visual Task Contract 需要提供 ",[47,3341,2273],{},[47,3343,2276],{},[47,3345,2279],{},[47,3347,2282],{},[47,3349,2285],{}," 和项目约束。执行环境需要能够访问目标仓库和页面、视觉参考、可理解图像的模型能力、",[47,3352,1241],{}," 集成，以及让截图作为图像内容进入模型上下文的途径。",[10,3355,3356,3357,3359,3360,740],{},"Skill 支持通过 CLI、MCP 或 Runtime Native Tool 使用 ",[47,3358,1241],{},"；具体工具名称和参数以当前环境为准。浏览器和图片能力不满足时，仍可执行有证据支持的代码工作，但视觉验证必须标记 ",[47,3361,3362],{},"NOT VERIFIED",[52,3364,3366],{"id":3365},"_82-实现与视觉迭代","8.2 实现与视觉迭代",[10,3368,3369],{},"Pi Implementer 先检查项目路由、组件、Token、字体、图标和素材，优先复用现有约定；随后先实现宏观布局和几何，再逐步处理排版、颜色、边框、阴影和细节。",[10,3371,3372],{},"通过真实浏览器打开目标页面，匹配参考图的 Viewport、Route、状态和滚动位置，等待字体、图片和异步内容完成后截图。模型必须实际读取截图，并与参考图比较。按最大影响优先修正差异，再在相同条件下截图复核。Skill 将“初始实现 + 三轮重点修正”作为计划基线，而非硬性迭代上限。",[52,3374,3376],{"id":3375},"_83-视觉产物","8.3 视觉产物",[411,3378,3381],{"className":3379,"code":3380,"language":1342,"meta":416},[1340],".agents\u002Fworkflow\u002Ftasks\u002F\u003Ctask-id>\u002F\n├── visual-report.md\n└── screenshots\u002F\n    ├── iteration-1.png\n    ├── iteration-2.png\n    └── final.png\n",[47,3382,3380],{"__ignoreMap":416},[10,3384,3385,3387],{},[47,3386,2475],{}," 记录参考、目标路由、Viewport、页面状态、实现文件、浏览器操作、截图路径、比较结果、剩余差异、限制和验证状态。Handoff 引用该报告和最终截图。视觉、功能和代码验证分别报告。",[10,3389,3390],{},[145,3391],{"alt":3392,"src":3393},"图 9：ui-impl 的真实浏览器视觉验证流程","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F09-visual-ui.svg",[10,3395,3396],{},[152,3397,3398,3399,3401,3402,3404],{},"图 9｜参考图和任务约束进入 ",[47,3400,692],{},"，Implementer 通过 ",[47,3403,1241],{}," 渲染页面，截图进入视觉比较，差异反馈到下一轮实现，最终报告和截图返回 Main。",[37,3406,3408],{"id":3407},"_9-如何安装与使用两个入口共享同一份-core","9. 如何安装与使用：两个入口共享同一份 Core",[10,3410,3411,3412,160,3417,740],{},"安装前建议先阅读 ",[21,3413,3416],{"href":3414,"rel":3415},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002FREADME.md",[25],"仓库 README",[21,3418,3421],{"href":3419,"rel":3420},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fruntimes\u002FREADME.md",[25],"Runtime 使用说明",[52,3423,3425],{"id":3424},"_91-准备运行环境并设置仓库路径","9.1 准备运行环境并设置仓库路径",[10,3427,3428,3429,3431],{},"基本运行环境包括：Herdr、Pi Coding Agent、可用的模型 Provider \u002F Model 访问权限，以及 Claude Code 或 Pi 中任选其一作为 Main Runtime。安装或同步 Skills 时还需要 Node.js、pnpm 和 Skills CLI；视觉任务按需准备 ",[47,3430,1241],{}," 与图片理解能力。依赖和用途见 §2.5。",[10,3433,3434,3435,3438],{},"将仓库放在稳定位置，例如 ",[47,3436,3437],{},"~\u002FWorkspace\u002Fagent-workbench","，在 Shell Profile 中设置唯一环境变量：",[411,3440,3442],{"className":413,"code":3441,"language":415,"meta":416,"style":416},"export AGENT_WORKBENCH_ROOT=\"$HOME\u002FWorkspace\u002Fagent-workbench\"\n",[47,3443,3444],{"__ignoreMap":416},[420,3445,3446,3449,3452,3454,3456,3459],{"class":422,"line":423},[420,3447,3448],{"class":437},"export",[420,3450,3451],{"class":433}," AGENT_WORKBENCH_ROOT",[420,3453,438],{"class":437},[420,3455,493],{"class":448},[420,3457,3458],{"class":433},"$HOME",[420,3460,3461],{"class":448},"\u002FWorkspace\u002Fagent-workbench\"\n",[10,3463,3464],{},"两个 Main Runtime 和 Herdr 启动的 Pi 子 Agent 都必须能读取该变量。通过桌面应用启动 Runtime 或 Herdr 时，需要确认对应进程和子进程继承了变量；仅在交互式 Shell 中设置，不保证 GUI 进程自动读取。变量缺失或路径无效时，入口暂停并报告配置问题，不猜测仓库位置。",[52,3466,3468],{"id":3467},"_92-安装-claude-code-入口","9.2 安装 Claude Code 入口",[10,3470,3471],{},"通过 Skills CLI 将 Claude Code Skill 全局安装，交互时选择 Symlink：",[411,3473,3475],{"className":413,"code":3474,"language":415,"meta":416,"style":416},"pnpx skills add \"$AGENT_WORKBENCH_ROOT\u002Fruntimes\u002Fclaude-code\" \\\n  --skill workflow \\\n  --agent claude-code \\\n  --global\n",[47,3476,3477,3499,3509,3519],{"__ignoreMap":416},[420,3478,3479,3482,3485,3488,3490,3493,3496],{"class":422,"line":423},[420,3480,3481],{"class":444},"pnpx",[420,3483,3484],{"class":448}," skills",[420,3486,3487],{"class":448}," add",[420,3489,487],{"class":448},[420,3491,3492],{"class":433},"$AGENT_WORKBENCH_ROOT",[420,3494,3495],{"class":448},"\u002Fruntimes\u002Fclaude-code\"",[420,3497,3498],{"class":455}," \\\n",[420,3500,3501,3504,3507],{"class":422,"line":430},[420,3502,3503],{"class":455},"  --skill",[420,3505,3506],{"class":448}," workflow",[420,3508,3498],{"class":455},[420,3510,3511,3514,3517],{"class":422,"line":471},[420,3512,3513],{"class":455},"  --agent",[420,3515,3516],{"class":448}," claude-code",[420,3518,3498],{"class":455},[420,3520,3521],{"class":422,"line":510},[420,3522,3523],{"class":455},"  --global\n",[10,3525,3526],{},"随后使用：",[411,3528,3531],{"className":3529,"code":3530,"language":1342,"meta":416},[1340],"\u002Fworkflow \u003C任务目标>\n",[47,3532,3530],{"__ignoreMap":416},[52,3534,3536],{"id":3535},"_93-安装-pi-入口","9.3 安装 Pi 入口",[10,3538,3539],{},"在仓库根目录执行：",[411,3541,3543],{"className":413,"code":3542,"language":415,"meta":416,"style":416},"cd \"$AGENT_WORKBENCH_ROOT\"\n.\u002Fscripts\u002Finstall-runtime-links.sh\n",[47,3544,3545,3556],{"__ignoreMap":416},[420,3546,3547,3550,3552,3554],{"class":422,"line":423},[420,3548,3549],{"class":455},"cd",[420,3551,487],{"class":448},[420,3553,3492],{"class":433},[420,3555,551],{"class":448},[420,3557,3558],{"class":422,"line":430},[420,3559,3560],{"class":444},".\u002Fscripts\u002Finstall-runtime-links.sh\n",[10,3562,3563,3564,3566,3567,3570,3571,3574,3575,3578,3579,740],{},"脚本将 ",[47,3565,230],{}," Symlink 到 Pi Prompt Template 目录。默认位置为 ",[47,3568,3569],{},"~\u002F.pi\u002Fagent\u002Fprompts\u002F","，也可通过 ",[47,3572,3573],{},"PI_CODING_AGENT_DIR"," 调整。活动 Pi Session 执行 ",[47,3576,3577],{},"\u002Freload"," 后使用 ",[47,3580,3581],{},"\u002Fworkflow \u003C任务目标>",[10,3583,3584],{},[145,3585],{"alt":3586,"src":3587},"图 10A：Runtime 启动与 Pi Agent 执行","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F10a-runtime-execution.svg",[10,3589,3590],{},[152,3591,3592],{},"图 10A｜Main Runtime 加载 Core 后，通过 Herdr 准备 Shell Pane、启动 Pi Agent、传入 Task Contract、读取状态和输出，最后独立核验任务结果。",[52,3594,3596],{"id":3595},"_94-安装共享-skills","9.4 安装共享 Skills",[10,3598,3599,3600,3602],{},"例如将 ",[47,3601,692],{}," 安装到 Claude Code 和 Pi：",[411,3604,3606],{"className":413,"code":3605,"language":415,"meta":416,"style":416},"pnpx skills add \"$AGENT_WORKBENCH_ROOT\u002Fskills\" \\\n  --skill ui-impl \\\n  --agent claude-code \\\n  --agent pi \\\n  --global\n",[47,3607,3608,3625,3634,3642,3650],{"__ignoreMap":416},[420,3609,3610,3612,3614,3616,3618,3620,3623],{"class":422,"line":423},[420,3611,3481],{"class":444},[420,3613,3484],{"class":448},[420,3615,3487],{"class":448},[420,3617,487],{"class":448},[420,3619,3492],{"class":433},[420,3621,3622],{"class":448},"\u002Fskills\"",[420,3624,3498],{"class":455},[420,3626,3627,3629,3632],{"class":422,"line":430},[420,3628,3503],{"class":455},[420,3630,3631],{"class":448}," ui-impl",[420,3633,3498],{"class":455},[420,3635,3636,3638,3640],{"class":422,"line":471},[420,3637,3513],{"class":455},[420,3639,3516],{"class":448},[420,3641,3498],{"class":455},[420,3643,3644,3646,3648],{"class":422,"line":510},[420,3645,3513],{"class":455},[420,3647,540],{"class":448},[420,3649,3498],{"class":455},[420,3651,3652],{"class":422,"line":517},[420,3653,3523],{"class":455},[10,3655,3656,3657,3659],{},"安装时选择 Symlink。",[47,3658,688],{}," 是个人 Skills 的统一维护源，也可保存第三方 Skills；导入第三方 Skill 时需记录来源仓库、原始路径、Commit、许可证、同步时间和本地修改，安装或升级上游前先检查 frontmatter、依赖、脚本与副作用并比较 Diff。",[2932,3661,3663],{"id":3662},"第三方工程-skills-安装分流","第三方工程 Skills 安装分流",[10,3665,3666,3669,3670,409],{},[21,3667,701],{"href":699,"rel":3668},[25]," 按 Runtime 角色与前置条件分流安装（调用语法、parent 与嵌套依赖边界见 §2.4，完整说明见仓库 ",[47,3671,1314],{},[2940,3673,3674],{},[1388,3675,3676,3679,3680,1221,3682,409],{},[16,3677,3678],{},"Pi 子 Agent 默认安装 TDD 与设计辅助","（不依赖 Issue Tracker，",[47,3681,808],{},[47,3683,824],{},[411,3685,3687],{"className":413,"code":3686,"language":415,"meta":416,"style":416},"pnpx skills add https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills \\\n  --skill tdd --skill codebase-design \\\n  --agent pi --global\n",[47,3688,3689,3702,3717],{"__ignoreMap":416},[420,3690,3691,3693,3695,3697,3700],{"class":422,"line":423},[420,3692,3481],{"class":444},[420,3694,3484],{"class":448},[420,3696,3487],{"class":448},[420,3698,3699],{"class":448}," https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills",[420,3701,3498],{"class":455},[420,3703,3704,3706,3709,3712,3715],{"class":422,"line":430},[420,3705,3503],{"class":455},[420,3707,3708],{"class":448}," tdd",[420,3710,3711],{"class":455}," --skill",[420,3713,3714],{"class":448}," codebase-design",[420,3716,3498],{"class":455},[420,3718,3719,3721,3723],{"class":422,"line":471},[420,3720,3513],{"class":455},[420,3722,540],{"class":448},[420,3724,3725],{"class":455}," --global\n",[2940,3727,3728],{"start":430},[1388,3729,3730,1336,3738,3740,3741,3743,3744,3746,3747,3749],{},[16,3731,3732,3733,1784,3735,3737],{},"按需条件安装上游 ",[47,3734,705],{},[47,3736,811],{}," 到 Pi",[47,3739,705],{}," 和第三方 ",[47,3742,811],{}," 均不作为默认安装项。第三方 ",[47,3745,811],{}," 不安装到 Claude Code，以保留 Claude Code bundled ",[47,3748,888],{},"。只有满足 Spec \u002F Ticket、Tracker、fixed point 前置条件且明确选择试用时，才将两者按需安装到 Pi：",[411,3751,3753],{"className":413,"code":3752,"language":415,"meta":416,"style":416},"pnpx skills add https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills \\\n  --skill implement --skill code-review \\\n  --agent pi --global\n",[47,3754,3755,3767,3781],{"__ignoreMap":416},[420,3756,3757,3759,3761,3763,3765],{"class":422,"line":423},[420,3758,3481],{"class":444},[420,3760,3484],{"class":448},[420,3762,3487],{"class":448},[420,3764,3699],{"class":448},[420,3766,3498],{"class":455},[420,3768,3769,3771,3774,3776,3779],{"class":422,"line":430},[420,3770,3503],{"class":455},[420,3772,3773],{"class":448}," implement",[420,3775,3711],{"class":455},[420,3777,3778],{"class":448}," code-review",[420,3780,3498],{"class":455},[420,3782,3783,3785,3787],{"class":422,"line":471},[420,3784,3513],{"class":455},[420,3786,540],{"class":448},[420,3788,3725],{"class":455},[10,3790,3791,3792,3795,3796,3798,3799,316,3801,3803],{},"触发时由 Main 在 ",[47,3793,3794],{},"herdr agent prompt"," 开头发送 ",[47,3797,1871],{},"；其内部 ",[47,3800,808],{},[47,3802,811],{}," 仍需按 §2.4 单独派发并核验，未满足 Tracker \u002F fixed point 前置条件时回退到 Core Task Contract 实现与独立 Review。",[2940,3805,3806],{"start":471},[1388,3807,3808,3811,3812,1784,3814,3816,3817,3819],{},[16,3809,3810],{},"Claude Code Main 安装需求澄清与复盘 Skills","（",[47,3813,708],{},[47,3815,711],{}," 由用户手动输入 ",[47,3818,719],{}," 触发，其依赖随 parent 一并安装）：",[411,3821,3823],{"className":413,"code":3822,"language":415,"meta":416,"style":416},"pnpx skills add https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills \\\n  --skill grill-with-docs --skill grilling --skill domain-modeling \\\n  --skill retro --skill writing-for-agents \\\n  --agent claude-code --global\n",[47,3824,3825,3837,3856,3870],{"__ignoreMap":416},[420,3826,3827,3829,3831,3833,3835],{"class":422,"line":423},[420,3828,3481],{"class":444},[420,3830,3484],{"class":448},[420,3832,3487],{"class":448},[420,3834,3699],{"class":448},[420,3836,3498],{"class":455},[420,3838,3839,3841,3844,3846,3849,3851,3854],{"class":422,"line":430},[420,3840,3503],{"class":455},[420,3842,3843],{"class":448}," grill-with-docs",[420,3845,3711],{"class":455},[420,3847,3848],{"class":448}," grilling",[420,3850,3711],{"class":455},[420,3852,3853],{"class":448}," domain-modeling",[420,3855,3498],{"class":455},[420,3857,3858,3860,3863,3865,3868],{"class":422,"line":471},[420,3859,3503],{"class":455},[420,3861,3862],{"class":448}," retro",[420,3864,3711],{"class":455},[420,3866,3867],{"class":448}," writing-for-agents",[420,3869,3498],{"class":455},[420,3871,3872,3874,3876],{"class":422,"line":510},[420,3873,3513],{"class":455},[420,3875,3516],{"class":448},[420,3877,3725],{"class":455},[2940,3879,3880],{"start":510},[1388,3881,3882,3885,3886,1801,3888,3890],{},[16,3883,3884],{},"Pi 按需安装澄清 \u002F 复盘 parent 及其独立依赖","：Pi Main 默认使用 Core Clarify \u002F Retro；如确需在 Pi 中显式加载 ",[47,3887,708],{},[47,3889,711],{}," parent，可按需安装：",[411,3892,3894],{"className":413,"code":3893,"language":415,"meta":416,"style":416},"pnpx skills add https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills \\\n  --skill grill-with-docs --skill retro \\\n  --agent pi --global\n",[47,3895,3896,3908,3920],{"__ignoreMap":416},[420,3897,3898,3900,3902,3904,3906],{"class":422,"line":423},[420,3899,3481],{"class":444},[420,3901,3484],{"class":448},[420,3903,3487],{"class":448},[420,3905,3699],{"class":448},[420,3907,3498],{"class":455},[420,3909,3910,3912,3914,3916,3918],{"class":422,"line":430},[420,3911,3503],{"class":455},[420,3913,3843],{"class":448},[420,3915,3711],{"class":455},[420,3917,3862],{"class":448},[420,3919,3498],{"class":455},[420,3921,3922,3924,3926],{"class":422,"line":471},[420,3923,3513],{"class":455},[420,3925,540],{"class":448},[420,3927,3725],{"class":455},[10,3929,3930,3931,3933,3934,157,3936,1801,3938,3940],{},"由于 Pi 不会自动执行 parent 正文中的 Claude Code ",[47,3932,749],{}," Tool 嵌套调用，如需使用其子依赖能力，需单独安装并由 Main 通过 Herdr 发送 ",[47,3935,947],{},[47,3937,976],{},[47,3939,1028],{},"，并在 Handoff 中核对结果（未安装或未派发时使用 Core Clarify \u002F Retro）：",[411,3942,3944],{"className":413,"code":3943,"language":415,"meta":416,"style":416},"pnpx skills add https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills \\\n  --skill grilling --skill domain-modeling --skill writing-for-agents \\\n  --agent pi --global\n",[47,3945,3946,3958,3974],{"__ignoreMap":416},[420,3947,3948,3950,3952,3954,3956],{"class":422,"line":423},[420,3949,3481],{"class":444},[420,3951,3484],{"class":448},[420,3953,3487],{"class":448},[420,3955,3699],{"class":448},[420,3957,3498],{"class":455},[420,3959,3960,3962,3964,3966,3968,3970,3972],{"class":422,"line":430},[420,3961,3503],{"class":455},[420,3963,3848],{"class":448},[420,3965,3711],{"class":455},[420,3967,3853],{"class":448},[420,3969,3711],{"class":455},[420,3971,3867],{"class":448},[420,3973,3498],{"class":455},[420,3975,3976,3978,3980],{"class":422,"line":471},[420,3977,3513],{"class":455},[420,3979,540],{"class":448},[420,3981,3725],{"class":455},[10,3983,3984],{},[145,3985],{"alt":3986,"src":3987},"图 10B：Skills 安装与 Runtime 调用","\u002Fposts\u002F2026\u002Fagent-workbench\u002Fimages\u002F10b-skills-installation.svg",[10,3989,3990],{},[152,3991,3992],{},"图 10B｜Skills CLI 以 Symlink 将统一源目录安装到目标 Runtime；Claude Code 与 Pi 使用不同的显式调用语法，嵌套依赖也按各自运行时能力处理。",[52,3994,3996],{"id":3995},"_95-codegraph-和其他按需依赖","9.5 CodeGraph 和其他按需依赖",[10,3998,3999,4000,4003,4004,4006,4007,157,4010,160,4013,4016],{},"CodeGraph 是可选的跨文件结构检索增强，仓库引用 ",[47,4001,4002],{},"@colbymchenry\u002Fcodegraph","。它可帮助定位符号关系、调用链和变更影响；工具不可用或索引状态不确定时，按 ",[47,4005,338],{}," 回退到 ",[47,4008,4009],{},"rg",[47,4011,4012],{},"fd",[47,4014,4015],{},"Read","，重要结论仍需核对当前源码、Diff 和测试证据。安装与工具参数以项目文档和当前 Runtime Schema 为准。",[10,4018,4019,4021,4022,4024],{},[47,4020,1241],{}," 与图片理解能力只在视觉实现任务中需要；",[47,4023,408],{}," 仅用于解析 §2.3 展示的 Herdr CLI JSON 示例。克隆仓库不会自动安装 Herdr、Pi、模型 Provider、第三方 Skills、CodeGraph 或浏览器工具，也不会提供相关凭据。",[37,4026,4028],{"id":4027},"_10-适用场景收益与使用注意事项","10. 适用场景、收益与使用注意事项",[10,4030,4031],{},"这套工作流面向需要多 Agent 协作、过程可追溯和独立质量验证的复杂开发任务，并非所有日常请求的默认入口。",[52,4033,4035,4036],{"id":4034},"_101-什么时候值得启动-workflow","10.1 什么时候值得启动 ",[47,4037,182],{},[57,4039,4040,4053],{},[60,4041,4042],{},[63,4043,4044,4047,4050],{},[66,4045,4046],{},"任务特征",[66,4048,4049],{},"建议方式",[66,4051,4052],{},"原因",[79,4054,4055,4071,4086,4101,4115,4129,4143,4157,4172,4189],{},[63,4056,4057,4060,4068],{},[84,4058,4059],{},"文案、拼写、注释、局部文档、纯文字配置，无行为变化",[84,4061,4062,4067],{},[16,4063,4064,4065],{},"通常不使用 ",[47,4066,182],{},"；在当前 Agent 对话中直接处理",[84,4069,4070],{},"任务边界明确，Main 直接修改和自检即可",[63,4072,4073,4076,4083],{},[84,4074,4075],{},"单文件、低风险、预计不超过 50 行且无接口或数据契约变化",[84,4077,4078,4082],{},[16,4079,4064,4080],{},[47,4081,182],{},"；由当前 Main 直接处理",[84,4084,4085],{},"多 Agent 委派、任务产物和独立 Review 的成本高于任务本身",[63,4087,4088,4091,4098],{},[84,4089,4090],{},"多文件功能开发、跨模块业务改造",[84,4092,4093],{},[16,4094,4095,4096],{},"建议使用 ",[47,4097,182],{},[84,4099,4100],{},"需要调研、计划、授权范围、实现交接和独立验证",[63,4102,4103,4106,4112],{},[84,4104,4105],{},"API、数据结构、数据库契约或事件协议变更",[84,4107,4108],{},[16,4109,4095,4110],{},[47,4111,182],{},[84,4113,4114],{},"需要明确兼容性、调用方、迁移影响和验收条件",[63,4116,4117,4120,4126],{},[84,4118,4119],{},"架构重构、复杂依赖调整或有回滚要求的改造",[84,4121,4122],{},[16,4123,4095,4124],{},[47,4125,182],{},[84,4127,4128],{},"需要记录方案、权衡、实施顺序和风险",[63,4130,4131,4134,4140],{},[84,4132,4133],{},"安全、权限、数据迁移、一致性、并发等高风险任务",[84,4135,4136],{},[16,4137,4095,4138],{},[47,4139,182],{},[84,4141,4142],{},"即使代码改动集中在少数文件，也需要更严格的证据、Review 和人工确认",[63,4144,4145,4148,4154],{},[84,4146,4147],{},"根因不明确、跨模块或难以复现的复杂故障",[84,4149,4150],{},[16,4151,4095,4152],{},[47,4153,182],{},[84,4155,4156],{},"Research、Debug、Test 和独立 Review 可以分工执行并保留排查证据",[63,4158,4159,4162,4169],{},[84,4160,4161],{},"需要独立完成的架构研究、技术方案或专项 Review",[84,4163,4164],{},[16,4165,4166,4167],{},"按复杂度使用 ",[47,4168,182],{},[84,4170,4171],{},"当结论影响较大、需要多来源证据或需要独立分析时，工作流可提供追溯；简单问答和局部代码查询无需启动",[63,4173,4174,4177,4186],{},[84,4175,4176],{},"基于设计稿或截图进行整页、多状态 UI 还原",[84,4178,4179],{},[16,4180,4095,4181,4183,4184],{},[47,4182,182],{}," + ",[47,4185,692],{},[84,4187,4188],{},"需要真实浏览器验证、截图对比和多轮迭代；单个 CSS 属性或局部样式微调按 L0\u002FL1 处理",[63,4190,4191,4194,4200],{},[84,4192,4193],{},"需要并行处理、跨 Agent 交接或明确人工验收的任务",[84,4195,4196],{},[16,4197,4095,4198],{},[47,4199,182],{},[84,4201,4202],{},"Task Contract、Workspace Baseline 和任务产物可以明确职责及变更归属",[52,4204,4206],{"id":4205},"_102-设计上可以获得的收益","10.2 设计上可以获得的收益",[10,4208,4209],{},"以下是从仓库规则推导出的预期收益，不代表已经通过量化实验验证：",[2940,4211,4212,4218,4224,4230,4236,4244,4252],{},[1388,4213,4214,4217],{},[16,4215,4216],{},"主控方式灵活","：Claude Code 和 Pi 复用同一份 Core，主控 Runtime 与模型可以独立选择。",[1388,4219,4220,4223],{},[16,4221,4222],{},"按风险控制调度成本","：简单任务由 Main 直接处理；只有达到 L2 条件时才启用完整委派和独立 Review。纯 Research \u002F Plan \u002F Test 等任务也只执行必要阶段。",[1388,4225,4226,4229],{},[16,4227,4228],{},"执行和验证分离","：L2 实现由 Implementer 承担，Primary Review 独立审查，Tester 按风险补充验证。",[1388,4231,4232,4235],{},[16,4233,4234],{},"上下文可追踪","：Task Contract 限定子 Agent 接收的目标、范围、约束、Skills、References 和验收标准。",[1388,4237,4238,1336,4241,4243],{},[16,4239,4240],{},"开发者有统一审阅入口",[47,4242,97],{}," 串联决策、实现、Review、Test 和视觉证据；Walkthrough 帮助理解核心实现。",[1388,4245,4246,1336,4249,4251],{},[16,4247,4248],{},"意图与决策可追溯",[47,4250,137],{}," 记录重要选择的来源、负责人、理由、取舍和状态，Review 检查实现期间新增的实质性假设。",[1388,4253,4254,4257,4258,4260],{},[16,4255,4256],{},"长期知识有筛选地沉淀","：Knowledge Update 评估 ADR、项目文档、",[47,4259,1968],{}," 和 Skill 候选项，避免机械复制所有任务报告。",[52,4262,4264],{"id":4263},"_103-使用中的注意事项","10.3 使用中的注意事项",[2940,4266,4267,4276,4291],{},[1388,4268,4269,4272,4273,4275],{},[16,4270,4271],{},"按运行时核验 Skill 与模型配置","：Main 已加载的 Skill 不会自动继承给子 Agent；Pi 显式加载 parent Skill 时不会自动执行 Claude Code ",[47,4274,749],{}," Tool 嵌套依赖（见 §2.4）；模型表仅为偏好，实际 Provider、Model ID、Thinking 和 Herdr Schema 均以运行环境为准。",[1388,4277,4278,4281,4282,4284,4285,4287,4288,4290],{},[16,4279,4280],{},"共享工作区须隔离变更归属","：任务目录不隔离代码修改；默认排除既有脏文件与未跟踪文件，修改重叠路径须按 §5.4 取得授权、建立 ",[47,4283,1355],{}," 快照并对比审查（无法安全建立快照时路径标记 ",[47,4286,1912],{},"；Review 未覆盖完整约定 Diff 或无法可靠区分变更归属时标记 ",[47,4289,2625],{},"）；并行实施仅限文件范围无交集的任务，Git \u002F 分支 \u002F worktree 操作均需明确授权。",[1388,4292,4293,4296,4297,157,4299,160,4301,1224,4303,4305,4306,4308,4309,740],{},[16,4294,4295],{},"可选工具按需独立配置","：CodeGraph 不可用时回退到 ",[47,4298,4009],{},[47,4300,4012],{},[47,4302,4015],{},[47,4304,692],{}," 依赖可用的 ",[47,4307,1241],{},"、目标页面和模型读图能力，不可用时视觉状态标为 ",[47,4310,3362],{},[52,4312,4314],{"id":4313},"_104-当前实现边界与待确认事项","10.4 当前实现边界与待确认事项",[57,4316,4317,4330],{},[60,4318,4319],{},[63,4320,4321,4324,4327],{},[66,4322,4323],{},"项目",[66,4325,4326],{},"仓库明确内容",[66,4328,4329],{},"部署 \u002F 运行时待确认内容",[79,4331,4332,4344,4355,4365,4376,4398,4408,4419,4435,4451],{},[63,4333,4334,4336,4341],{},[84,4335,191],{},[84,4337,4338,4339,1146],{},"Claude Code \u002F Pi 两种 ",[47,4340,182],{},[84,4342,4343],{},"用户当前选择的 Runtime、会话模型和推理档位",[63,4345,4346,4349,4352],{},[84,4347,4348],{},"Main Model",[84,4350,4351],{},"Claude Code 偏好 Claude Opus 5.5；Pi 可用 Claude Opus 5.5 或 GPT-6.1 Sol",[84,4353,4354],{},"实际 Provider \u002F Model ID 和模型能力",[63,4356,4357,4359,4362],{},[84,4358,1168],{},[84,4360,4361],{},"作为 Pi 子 Agent 调度入口；Pane \u002F Agent 创建、启动、Prompt、等待和结果读取按运行时流程执行",[84,4363,4364],{},"是否安装、Pi Integration 状态、实际 CLI \u002F MCP Schema、Session 生命周期和进程状态",[63,4366,4367,4370,4373],{},[84,4368,4369],{},"Subagent Models",[84,4371,4372],{},"角色模型偏好和 Thinking 已定义",[84,4374,4375],{},"模型映射是否生效、Fallback、成本和 Usage 可读性",[63,4377,4378,4381,4395],{},[84,4379,4380],{},"Context Artifacts",[84,4382,94,4383,4385,4386,4388,4389,4391,4392,4394],{},[47,4384,97],{},"、重叠路径条件性 ",[47,4387,1355],{},"、实质决策 ",[47,4390,137],{},"、L2 实现 ",[47,4393,117],{}," 规则和模板已定义",[84,4396,4397],{},"目标项目中的实际产物是否按规则创建、链接、快照和维护",[63,4399,4400,4402,4405],{},[84,4401,2869],{},[84,4403,4404],{},"触发条件、审阅包、反馈状态和 PASS 门禁已定义",[84,4406,4407],{},"开发者是否实际审阅并给出明确确认",[63,4409,4410,4413,4416],{},[84,4411,4412],{},"Knowledge Update",[84,4414,4415],{},"候选类别、授权边界和记录位置已定义",[84,4417,4418],{},"是否有 ADR \u002F 文档规范，以及本次变更是否授权沉淀",[63,4420,4421,4423,4432],{},[84,4422,1256],{},[84,4424,4425,4426,316,4428,316,4430],{},"作为可选的跨文件检索增强；不可用时可回退到 ",[47,4427,4009],{},[47,4429,4012],{},[47,4431,4015],{},[84,4433,4434],{},"是否安装、Runtime 是否可访问、索引是否覆盖当前仓库和最新文件",[63,4436,4437,4440,4448],{},[84,4438,4439],{},"UI Browser",[84,4441,4442,4444,4445,4447],{},[47,4443,692],{}," 定义 ",[47,4446,1241],{}," 使用与截图验证要求",[84,4449,4450],{},"CLI \u002F MCP \u002F Native Tool 是否可用、目标应用是否可访问、视觉模型能否读取截图",[63,4452,4453,4455,4458],{},[84,4454,2114],{},[84,4456,4457],{},"Skill 源码目录与 Skills CLI Symlink 方案",[84,4459,4460],{},"实际安装方式、Runtime 是否发现 Skill、第三方 Skill 的版本和许可证",[37,4462,4464],{"id":4463},"_11-总结让-agent-交付与开发者理解同步发生","11. 总结：让 Agent 交付与开发者理解同步发生",[10,4466,4467,4469,4470,157,4472,157,4474,4476],{},[47,4468,49],{}," 把规则、执行、验证和理解放进同一套协作链路：Runtime 入口与共享 Core 统一任务规则，Herdr → Pi 子 Agent 隔离角色执行，Task Contract 约束上下文与权限，Test \u002F AI Review \u002F Gate 把关实现质量，最后由 ",[47,4471,97],{},[47,4473,137],{},[47,4475,117],{}," 和 Developer Review 承接任务意图、实现说明与人工确认。",[10,4478,4479,4480,4483],{},"围绕这套链路，开发者在审阅任务时可以直接回答四个问题：",[16,4481,4482],{},"为什么要改、做了哪些重要决定、代码现在如何工作、哪些验证和人工确认已经完成。"," 这些机制有助于减缓 Cognitive Debt、Comprehension Debt 和 Intent Debt 的累积，但实际效果仍取决于产物质量、决策记录是否如实反映取舍、开发者是否参与重要审阅，以及长期知识是否持续维护。",[37,4485,4487],{"id":4486},"附录关键文件索引","附录：关键文件索引",[10,4489,4490,4491,4494],{},"以下链接指向公开仓库 ",[47,4492,4493],{},"main"," 分支中的对应文件，具体规则以仓库当前版本为准。",[57,4496,4497,4507],{},[60,4498,4499],{},[63,4500,4501,4504],{},[66,4502,4503],{},"主题",[66,4505,4506],{},"仓库文件",[79,4508,4509,4520,4532,4543,4554,4565,4576,4587,4598,4609,4621,4633,4644,4655,4671,4687,4698,4713],{},[63,4510,4511,4514],{},[84,4512,4513],{},"仓库定位与快速开始",[84,4515,4516],{},[21,4517,4519],{"href":3414,"rel":4518},[25],"README.md",[63,4521,4522,4525],{},[84,4523,4524],{},"Core 权威文件说明",[84,4526,4527],{},[21,4528,4531],{"href":4529,"rel":4530},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002FREADME.md",[25],"core\u002FREADME.md",[63,4533,4534,4537],{},[84,4535,4536],{},"总体阶段与门禁",[84,4538,4539],{},[21,4540,270],{"href":4541,"rel":4542},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Fworkflow.md",[25],[63,4544,4545,4548],{},[84,4546,4547],{},"任务分级与 Plan 条件",[84,4549,4550],{},[21,4551,280],{"href":4552,"rel":4553},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Ftask-classification.md",[25],[63,4555,4556,4559],{},[84,4557,4558],{},"模型选择与升级",[84,4560,4561],{},[21,4562,290],{"href":4563,"rel":4564},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Fmodel-routing.md",[25],[63,4566,4567,4570],{},[84,4568,4569],{},"角色权限与决策权属",[84,4571,4572],{},[21,4573,300],{"href":4574,"rel":4575},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Fpermissions.md",[25],[63,4577,4578,4581],{},[84,4579,4580],{},"Task Contract 与产物规范",[84,4582,4583],{},[21,4584,310],{"href":4585,"rel":4586},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Ftask-contract.md",[25],[63,4588,4589,4592],{},[84,4590,4591],{},"Test \u002F AI Review \u002F Developer Review \u002F Gate \u002F Acceptance \u002F Knowledge Update",[84,4593,4594],{},[21,4595,328],{"href":4596,"rel":4597},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Facceptance.md",[25],[63,4599,4600,4603],{},[84,4601,4602],{},"任务总览模板",[84,4604,4605],{},[21,4606,3191],{"href":4607,"rel":4608},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Ftemplates\u002Foverview.template.md",[25],[63,4610,4611,4614],{},[84,4612,4613],{},"决策记录模板",[84,4615,4616],{},[21,4617,4620],{"href":4618,"rel":4619},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Ftemplates\u002Fdecisions.template.md",[25],"core\u002Ftemplates\u002Fdecisions.template.md",[63,4622,4623,4626],{},[84,4624,4625],{},"实现交接模板",[84,4627,4628],{},[21,4629,4632],{"href":4630,"rel":4631},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Ftemplates\u002Fhandoff.template.md",[25],"core\u002Ftemplates\u002Fhandoff.template.md",[63,4634,4635,4638],{},[84,4636,4637],{},"代码检索策略（CodeGraph 可选）",[84,4639,4640],{},[21,4641,338],{"href":4642,"rel":4643},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Freferences\u002Fcode-retrieval.md",[25],[63,4645,4646,4649],{},[84,4647,4648],{},"Blind Review 与争议裁决",[84,4650,4651],{},[21,4652,348],{"href":4653,"rel":4654},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fcore\u002Freferences\u002Freview-escalation.md",[25],[63,4656,4657,4660],{},[84,4658,4659],{},"Claude Code 入口",[84,4661,4662,157,4667],{},[21,4663,4666],{"href":4664,"rel":4665},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fruntimes\u002Fclaude-code\u002FREADME.md",[25],"runtimes\u002Fclaude-code\u002FREADME.md",[21,4668,212],{"href":4669,"rel":4670},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fruntimes\u002Fclaude-code\u002Fworkflow\u002FSKILL.md",[25],[63,4672,4673,4676],{},[84,4674,4675],{},"Pi 入口",[84,4677,4678,157,4683],{},[21,4679,4682],{"href":4680,"rel":4681},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fruntimes\u002Fpi\u002FREADME.md",[25],"runtimes\u002Fpi\u002FREADME.md",[21,4684,230],{"href":4685,"rel":4686},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fruntimes\u002Fpi\u002Fworkflow.md",[25],[63,4688,4689,4692],{},[84,4690,4691],{},"UI 视觉实现",[84,4693,4694],{},[21,4695,3325],{"href":4696,"rel":4697},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fskills\u002Fui-impl\u002FSKILL.md",[25],[63,4699,4700,4703],{},[84,4701,4702],{},"Runtime 安装",[84,4704,4705,157,4710],{},[21,4706,4709],{"href":4707,"rel":4708},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fscripts\u002Finstall-runtime-links.sh",[25],"scripts\u002Finstall-runtime-links.sh",[21,4711,1310],{"href":3419,"rel":4712},[25],[63,4714,4715,4718],{},[84,4716,4717],{},"个人 Skills 管理",[84,4719,4720],{},[21,4721,1314],{"href":4722,"rel":4723},"https:\u002F\u002Fgithub.com\u002Feteplus\u002Fagent-workbench\u002Fblob\u002Fmain\u002Fskills\u002FREADME.md",[25],[4725,4726,4727],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":416,"searchDepth":430,"depth":430,"links":4729},[4730,4733,4743,4748,4757,4764,4771,4778,4784,4791,4798,4799],{"id":39,"depth":430,"text":40,"children":4731},[4732],{"id":54,"depth":471,"text":55},{"id":169,"depth":430,"text":170,"children":4734},[4735,4737,4738,4739,4740,4741,4742],{"id":178,"depth":471,"text":4736},"2.1 Runtime 入口：Claude Code 与 Pi 共用 \u002Fworkflow",{"id":248,"depth":471,"text":249},{"id":381,"depth":471,"text":382},{"id":682,"depth":471,"text":683},{"id":1106,"depth":471,"text":1107},{"id":1328,"depth":471,"text":1329},{"id":1359,"depth":471,"text":1360},{"id":1369,"depth":430,"text":1370,"children":4744},[4745,4746,4747],{"id":1379,"depth":471,"text":1380},{"id":1414,"depth":471,"text":1415},{"id":1559,"depth":471,"text":1560},{"id":1619,"depth":430,"text":4749,"children":4750},"4. 一次任务如何流转：从 \u002Fworkflow 到最终验收",[4751,4752,4753,4754,4755,4756],{"id":1629,"depth":471,"text":1630},{"id":1666,"depth":471,"text":1667},{"id":1746,"depth":471,"text":1747},{"id":1840,"depth":471,"text":1841},{"id":1905,"depth":471,"text":1906},{"id":1948,"depth":471,"text":1949},{"id":1987,"depth":430,"text":1988,"children":4758},[4759,4760,4761,4762,4763],{"id":1996,"depth":471,"text":1997},{"id":2289,"depth":471,"text":2290},{"id":2498,"depth":471,"text":2499},{"id":2594,"depth":471,"text":2595},{"id":2636,"depth":471,"text":2637},{"id":2692,"depth":430,"text":2693,"children":4765},[4766,4767,4768,4769,4770],{"id":2702,"depth":471,"text":2703},{"id":2788,"depth":471,"text":2789},{"id":2812,"depth":471,"text":2813},{"id":2827,"depth":471,"text":2828},{"id":3013,"depth":471,"text":3014},{"id":3059,"depth":430,"text":4772,"children":4773},"7. 开发者从哪里理解一次任务：以 overview.md 为审阅入口",[4774,4775,4777],{"id":3071,"depth":471,"text":3072},{"id":3181,"depth":471,"text":4776},"7.2 overview.md 包含什么",{"id":3255,"depth":471,"text":3256},{"id":3316,"depth":430,"text":4779,"children":4780},"8. 专项流程：ui-impl 如何完成视觉实现",[4781,4782,4783],{"id":3335,"depth":471,"text":3336},{"id":3365,"depth":471,"text":3366},{"id":3375,"depth":471,"text":3376},{"id":3407,"depth":430,"text":3408,"children":4785},[4786,4787,4788,4789,4790],{"id":3424,"depth":471,"text":3425},{"id":3467,"depth":471,"text":3468},{"id":3535,"depth":471,"text":3536},{"id":3595,"depth":471,"text":3596},{"id":3995,"depth":471,"text":3996},{"id":4027,"depth":430,"text":4028,"children":4792},[4793,4795,4796,4797],{"id":4034,"depth":471,"text":4794},"10.1 什么时候值得启动 \u002Fworkflow",{"id":4205,"depth":471,"text":4206},{"id":4263,"depth":471,"text":4264},{"id":4313,"depth":471,"text":4314},{"id":4463,"depth":430,"text":4464},{"id":4486,"depth":430,"text":4487},"2026-11-04","介绍一套基于 Claude Code、Pi Agent 和 Herdr 的多 Agent 协作开发工作流，涵盖任务分级、模型路由、Skills、独立审查与开发者验收。",false,"md","zh",{},"\u002Fposts\u002F2026\u002Fagent-workbench",{"title":5,"description":4801},{"loc":4806,"images":4809,"lastmod":4800},[4810,4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4822,4823,4824,4825,4826],{"loc":148},{"loc":370},{"loc":674},{"loc":1320},{"loc":1600},{"loc":1611},{"loc":1738},{"loc":1832},{"loc":1854},{"loc":2668},{"loc":2679},{"loc":3040},{"loc":3051},{"loc":3299},{"loc":3393},{"loc":3587},{"loc":3987},"posts\u002F2026\u002Fagent-workbench\u002Findex",[4829,4830,4831],"multi-agent","workflow","agent","8VPl9sOXoTRnFENKnOGceur5KUHMf_BttP3_zs7mjGQ",{"left":4834,"top":4834,"width":4835,"height":4835,"rotate":4834,"vFlip":4802,"hFlip":4802,"body":4836},0,24,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"4\"\u002F>\u003Cpath d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\u002F>\u003C\u002Fg>",{"left":4834,"top":4834,"width":4835,"height":4835,"rotate":4834,"vFlip":4802,"hFlip":4802,"body":4838},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":4834,"top":4834,"width":4835,"height":4835,"rotate":4834,"vFlip":4802,"hFlip":4802,"body":4840},"\u003Cpath fill=\"currentColor\" d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\u002F>",{"left":4834,"top":4834,"width":4835,"height":4835,"rotate":4834,"vFlip":4802,"hFlip":4802,"body":4842},"\u003Cpath fill=\"currentColor\" d=\"M14.234 10.162L22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299l-.929-1.329L3.076 1.56h3.182l5.965 8.532l.929 1.329l7.754 11.09h-3.182z\"\u002F>",{"left":4834,"top":4834,"width":4835,"height":4835,"rotate":4834,"vFlip":4802,"hFlip":4802,"body":4844},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"\u002F>\u003Crect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"\u002F>\u003C\u002Fg>",1793794925764]