Farm 仓库并行 Agent 排障方法论:Dispatching Parallel Agents 实战指南
发布时间:2026/10/12 4:27:49 锦皓数字建站

前端构建构建工具开发工具【免费下载链接】farmExtremely fast Vite-compatible web build tool written in Rust项目地址https://gitcode.com/gh_mirrors/fa/farm点击查看免费下载导读在 Farm 这样的大型 Rust TypeScript 混合 monorepo 中一次重构或一轮 CI 失败往往同时出现多个相互独立的问题——不同测试文件、不同子系统、不同根因。逐个串行排查既消耗大量上下文窗口也让整体修复周期被线性拉长。本篇文章基于仓库内.agents/skills/dispatching-parallel-agents/SKILL.md技能文档系统讲解按独立问题域并行分发 Agent的排障方法论如何识别独立域、如何构造自包含的聚焦任务、如何分发与整合并结合 Farm 仓库内真实的并行执行实现E2E 多进程调度、Rust 侧 rayon 线程池给出源码级佐证。读完本文你将掌握一套可复用的并行排障工作流能够在多故障场景下把3 个问题压缩到1 个问题的时间窗口内解决。核心原则每个独立问题域一个 Agent技能文档开篇即给出该工作流的基本盘你将任务委派给拥有隔离上下文的专职 Agent。通过精确构造它们的指令与上下文确保每个 Agent 都聚焦在自己的任务上并成功完成。要点有三隔离上下文Isolated Context子 Agent 绝不继承主会话的上下文与历史而是由调度者Controller精确构造它所需的全部信息。这不仅保证子 Agent 专注也保住了调度者自身的上下文用于协调工作。并发执行Concurrent Execution当存在多个互不相关的失败不同测试文件、不同子系统、不同 Bug时串行调查是纯浪费时间——每个调查彼此独立完全可以并行。一域一 AgentOne Agent per Problem Domain核心原则是按独立问题域各分发一个 Agent让它们并发工作。这一原则在 Farm 仓库中并非纸上谈兵。仓库的 E2E 编排器 scripts/test-e2e.mjs 正是一域一执行者、并发推进的工程化体现它把examples/下的全部示例按轮询方式round-robin分配到 N 个 worker 进程每个 worker 拥有独立的 Node.js 进程与浏览器实例见 scripts/test-e2e.mjs 的分组逻辑与 scripts/test-e2e-worker.mjs 的 fork 实现。这从侧面印证了并行分发 隔离执行在大型仓库工程流程中的现实价值。何时使用与何时不用技能文档用一张决策流程图界定了该模式的适用边界应该使用3 个及以上测试文件失败且各自根因不同多个子系统独立损坏彼此互不影响每个问题都能在不依赖其他问题上下文的情况下独立理解各调查之间不存在共享状态。不该使用失败彼此相关修复一个可能连带修复其他需要理解完整系统状态才能下手Agent 之间会相互干扰比如编辑同一文件、争用同一资源。四步工作模式从识别到整合1. 识别独立问题域按坏在哪里对失败进行分组。例如文档中的分组方式文件 A 的测试工具审批流程tool approval flow文件 B 的测试批量完成行为batch completion behavior文件 C 的测试中止功能abort functionality。每个域都相互独立——修复工具审批不会影响中止相关的测试。这一步是整个流程正确性的根基分组错了后续的并行就失去了意义。2. 创建聚焦的 Agent 任务每个 Agent 拿到四要素明确范围Specific scope一个测试文件或一个子系统清晰目标Clear goal让这些测试通过约束Constraints不要改动其他代码预期产出Expected output你所发现与修复内容的摘要。3. 并行分发文档给出了在 Claude Code / AI 环境下的分发示例// In Claude Code / AI environment Task(Fix agent-tool-abort.test.ts failures) Task(Fix batch-completion-behavior.test.ts failures) Task(Fix tool-approval-race-conditions.test.ts failures) // All three run concurrently三个任务同时发起、并发执行。调度者只负责分发不在中间等待某个任务完成才启动下一个。4. 审查与整合Agent 返回后调度者必须完成闭环阅读每份摘要验证各修复之间不冲突运行完整测试套件整合全部变更。Farm 仓库的 E2E 编排器在审查与整合环节同样有工程化对应物worker 通过 IPC 把结果回传后编排器在 scripts/test-e2e.mjs 用Promise.all汇总所有 worker 的结果再调用 e2e/runner.mjs 的printSummary输出passed / failed / skipped汇总并以失败数决定进程退出码——先验证、后判定与审查摘要 → 跑全量 → 整合的节奏一致。Agent 提示词结构聚焦、自包含、明确产出好的 Agent 提示词有三个特征聚焦Focused——只有一个清晰的问题域自包含Self-contained——理解问题所需的全部上下文都在提示词里产出明确Specific about output——明确说明 Agent 要返回什么。文档给出的完整示例提示词如下注意其中的约束与反约束Fix the 3 failing tests in src/agents/agent-tool-abort.test.ts: 1. should abort tool with partial output capture - expects interrupted at in message 2. should handle mixed completed and aborted tools - fast tool aborted instead of completed 3. should properly track pendingToolCount - expects 3 results but gets 0 These are timing/race condition issues. Your task: 1. Read the test file and understand what each test verifies 2. Identify root cause - timing issues or actual bugs? 3. Fix by: - Replacing arbitrary timeouts with event-based waiting - Fixing bugs in abort implementation if found - Adjusting test expectations if testing changed behavior Do NOT just increase timeouts - find the real issue. Return: Summary of what you found and what you fixed.拆解这份提示词可以提炼出可复用的模板要素列清单把 3 个失败测试的名称与预期行为逐一列出让 Agent 不靠猜给方向明确指出这是时序/竞态问题缩小排查范围给方法给出候选修复方向事件化等待、修中止实现、调整预期但保留判断空间设红线Do NOT just increase timeouts——防止 Agent 走加超时的偷懒路径要产出Return: Summary of what you found and what you fixed——保证调度者拿到可审查的结果。常见错误对照表技能文档用正反例对照的方式给出了四个最典型的错误模式错误❌问题正确做法✅Fix all the tests范围太宽Agent 会迷失Fix agent-tool-abort.test.ts——聚焦范围Fix the race condition没有上下文Agent 不知从何入手粘贴错误信息与测试名无约束Agent 可能顺手重构一切明确 Do NOT change production code 或 Fix tests onlyFix it产出含糊调度者不知改了什么Return summary of root cause and changes——明确产出这些反例共同指向同一结论并行分发的成败不取决于模型能力而取决于提示词把边界划得多清楚。何时不该用四个典型反例文档专门列出四种即使失败很多也不要并行的情形相关失败Related failures修复一个可能连带修复其他——应先合并调查需要完整上下文Need full context理解问题需要看到整个系统探索式调试Exploratory debugging你还不知道哪里坏了谈不上分组共享状态Shared stateAgent 会互相干扰编辑同一文件、使用同一资源。判断的标准始终是独立性只有当问题域之间的耦合度足够低时并行才是正解否则强行并行只会带来合并冲突与重复劳动。真实会话案例一次重构后的 6 个失败技能文档记录了一次真实的调试会话完整走了一遍这套流程场景重大重构后3 个文件共出现 6 个测试失败。失败清单agent-tool-abort.test.ts3 个失败时序问题batch-completion-behavior.test.ts2 个失败工具未执行tool-approval-race-conditions.test.ts1 个失败执行计数 0。决策三个域相互独立——中止逻辑、批量完成逻辑、竞态条件是三个互不关联的子系统因此并行分发Agent 1 → Fix agent-tool-abort.test.ts Agent 2 → Fix batch-completion-behavior.test.ts Agent 3 → Fix tool-approval-race-conditions.test.ts结果Agent 1用事件化等待替换了任意超时timeouts → event-based waitingAgent 2修复了事件结构缺陷threadId放错位置Agent 3补上了对异步工具执行完成的等待。整合三个修复互不冲突全量测试套件转绿。时间收益3 个问题并行解决 vs 串行解决——这正是该模式的直接价值。收益、验证与真实影响四大收益并行化Parallelization多个调查同时进行聚焦Focus每个 Agent 范围窄需要跟踪的上下文更少独立性IndependenceAgent 之间互不干扰速度Speed文档原话——3 problems solved in time of 13 个问题在一个问题的时间内解决。收尾验证四步Agent 返回后不可直接合并必须走验证闭环审查每份摘要——理解发生了什么变更检查冲突——Agent 是否编辑了同一段代码跑全量套件——验证所有修复协同工作抽查——Agent 也可能犯系统性错误不能盲信。真实影响据文档记录调试会话日期 2025-10-036 个分布在 3 个文件中的失败3 个 Agent 并行分发全部调查并发完成全部修复成功整合Agent 变更之间零冲突。仓库内并行执行的源码佐证该技能文档所倡导的并行 隔离心智模型在 Farm 仓库的多层实现中都有真实对应可以相互印证工程层E2E 多进程调度scripts/test-e2e.mjs 的runWorker通过child_process.fork()派生 worker并监听results/skip/error/done/fatal五种 IPC 消息类型每个 worker 通过FARM_E2E_WORKER_INDEX环境变量获得身份标识。并发度可调默认并发在 CI 下为min(2, cpus().length)本地为min(4, cpus().length)见 scripts/test-e2e.mjs也可用--concurrency/-j参数或FARM_E2E_CONCURRENCY环境变量覆盖scripts/test-e2e.mjs。worker 侧scripts/test-e2e-worker.mjs每个进程只启动一个浏览器实例chromium headless为每个示例创建全新 context并把Error序列化为errorMessage/errorStack后再走 IPC避免结构化克隆丢失错误信息。为防止僵尸进程污染并行调度e2e/process-cleanup.mjs 会在运行前/后清理陈旧 E2E 进程组通过ps采集进程树、识别 Farm E2E 相关进程、按进程组发送SIGTERM/SIGKILL——这与Agent 不得互相干扰的独立性要求异曲同工。编译核心层Rust 线程池并行构建Farm 编译器本身就是一个并行执行系统的实例。Rust 侧大量使用 rayon 线程池把模块构建并行化crates/compiler/src/build/mod.rs 中thread_pool.spawn(...)用于并行提交构建任务crates/core/src/cache/mod.rs 中rayon::ThreadPoolBuilder::new()构建缓存线程池并以rayon::join并行推进crates/core/src/cache/mod.rs模块图收尾与资源块渲染分别使用par_iter_mut()crates/compiler/src/build/finalize_module_graph.rs与into_par_iter()crates/compiler/src/generate/render_resource_pots.rs。这些实现说明把互不依赖的工作并行化、用调度层负责整合在 Farm 的工程文化中是一以贯之的原则——既体现在编译内核的 rayon 线程池也体现在 Agent 工作流的并行排障方法论还体现在 CI 脚本scripts/ready.mjs 中cargo test -j max(cpu/4, 1)的并行测试里。在 Farm 仓库中使用该技能该技能文档位于仓库的 Agent 工具链目录.agents/skills/dispatching-parallel-agents/属于工作区本地、随 Agent 工具链分发的技能。根据 AGENTS.md 的说明仓库中的技能分为三个层级顶层skills/项目知识库、.github/skills/团队共享工作流、.agents/skills/Agent 工具技能。所有技能均为 YAML frontmatter 正文的SKILL.md结构frontmatter 中的name必须与目录名一致description则是发现入口。与其他技能配套使用时效果最佳同目录下的 .agents/skills/subagent-driven-development/SKILL.md 提供了每任务全新子 Agent 规格审查与代码质量审查两阶段评审的串行执行变体而本技能专注于多独立域并行分发。当并行分发返回后可配合仓库内的全量验证通道pnpm run ready或pnpm run test-e2e完成第四步审查与整合的闭环。赞分享前端构建构建工具开发工具【免费下载链接】farmExtremely fast Vite-compatible web build tool written in Rust项目地址https://gitcode.com/gh_mirrors/fa/farm点击查看免费下载相关推荐superpowers-zh 并行分派智能体dispatching-parallel-agents多 Agent 并发排查独立故障的实战指南superpowers zh 并行分派智能体dispatching parallel agents多 Agent 并发排查独立故障的实战指南 导读 本文围AI 技能AI 插件人工智能开发工具LikeC4 智能体工作流技能并行 Agent 调度Dispatching Parallel Agents模式详解LikeC4 智能体工作流技能并行 Agent 调度Dispatching Parallel Agents模式详解 本篇技术文章以 LikeC4 仓库中的开发工具数据可视化CLI前端MCP 服务LiveKit 完整指南三步搞定 Safari 的 AV1 编解码兼容让跨浏览器实时音视频更稳LiveKit 完整指南三步搞定 Safari 的 AV1 编解码兼容让跨浏览器实时音视频更稳 LiveKit 是一个端到端实时通信栈专为连接人类与 AI后端音视频即时通讯AI Agent上一篇vue-chartjs v4 到 v5 迁移指南ESM 模块化与 API 破坏性变更全解析下一篇30分钟构建你的AI投资团队TradingAgents-CN量化交易实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。