最新资讯
computerworld.com Box 发布 Architect:用自然语言构建业务流程工作流 the-decoder.com METR 称 Anthropic 或已在 7 月越过自身 AI 加速预警阈值 towardsdatascience.com 用 Ollama 和 Python 构建你的第一个多工具 AI Agent the-decoder.com Thinking Machines 的 Inkling 2 Small 称霸西方开放权重模型 dev.to 为 CI/CD 构建 AI 质量门禁 dev.to Kakao 发布面向 AI Agent 的决策模型 Kanana-2-v-decide computerworld.com Microsoft 对 Copilot Chat 企业用户扩大未公开的使用限制 pub.towardsai.net Google 发布 Gemini 4 Carbon:主打网络安全能力的前沿模型 gradientflow.com METR 研究:AI 正在加速构建 AI 的团队本身 www.infoq.com GitLab 19.5 将 Agentic 开发纳入 DevOps 平台的治理体系 aiacceleratorinstitute.com 研究:AI Agent 的复杂流程编排可能反而是问题所在 pub.towardsai.net MongoDB 推出 Vercel AI SDK 集成:为 AI 应用提供持久记忆
多元动态
登录 注册
智能体 dev.to · @Nick Woodhead

Agent 编排器与 Agent 协调器不是同一层

原文 我的收藏

作者指出Agent编排器与协调器常被混用,但二者处于技术栈不同层级,权限和失效模式各异。文章提出一个判别测试:杀掉编排器会导致整个Agent集群停止、会话中断、排队任务无法启动;而协调器无法启动或停止Agent,也不感知其运行状态。作者以其维护的Foremerge项目为例说明这一区分。

AI推荐理由 文章区分Agent编排器(orchestrator)与Agent协调器(coordinator)两个不同层级,提出以“杀掉它会怎样”作为判别测试:杀掉编排器则整个Agent集群停止,而协调器不具备启停Agent的权限。对多Agent系统架构设计有概念澄清价值,但为个人项目Foremerge作者的观点性文章,缺乏实证或行业共识支撑。

60

正文

If you only ever run one coding agent, you do not need either of these. Close the tab, you are fine. For everyone else: I maintain Foremerge, and a couple of weeks ago I submitted it to a list called awesome-agent-orchestrators. That was the closest existing list, and it is still the wrong noun. Foremerge is not an orchestrator. It cannot start an agent, cannot stop one, and does not know when one is running. I submitted anyway, because there is no list for the other thing yet. The two words get used interchangeably, and reasonably so. Both mean something like "make several agents work together." But they describe different layers of the stack, with different authority, different failure modes, and different reasons to exist. Here is the difference, and a one-question test for telling them apart. The test What happens if you kill it? Kill your orchestrator and the fleet stops. Sessions die, queued work never starts, nothing is spawned or resumed until you bring it back. An orchestrator sits in the control path. Kill your coordinator and every agent keeps typing. You lose the shared picture, not the work. A coordinator sits beside the control path, not in it. That single structural fact drives everything else about how the two behave. What an orchestrator does It owns the run loop. Concretely: spawning sessions, placing each one somewhere isolated (a worktree, a container, a cloud sandbox), deciding what runs next and in what order, restarting what died, routing prompts and results, and giving you one screen showing which of your fourteen sessions are alive and which are waiting on you. This is real work and it becomes its own job the moment you pass two or three agents. The ecosystem here is growing fast and includes both standalone session managers, claude-squad, dmux, amux, agent-deck and their neighbors, and in-session fan-out inside a single agent, like Claude Code's subagents or a workflow script that runs a dozen tasks in parallel. An orchestrator's authority is imperative. It can start things and stop things. Its input is tasks. Its state is sessions and processes. Its question is who is running what right now? What a coordinator does It never starts or stops anything. Its input is not tasks but declarations: before an agent edits, it states what it is about to change, in a form precise enough to check. foremerge intent publish \ --agent "$AGENT" \ --task modernize-payments \ --summary "Replace PaymentService with StripePaymentService" \ --scope 'symbol:PaymentService=replace' Enter fullscreen mode Exit fullscreen mode A scope is not a file path, because file paths miss API, schema, configuration and cross-language collisions. The operation (replace, extend, and the rest) is declared rather than parsed out of the summary. When a second agent declares symbol:PaymentService=extend, deterministic rules compare the two declarations and return a finding in the same call that published the second intent. This is real 0.4.0 output, captured while writing this piece: { "kind": "destructive_vs_additive", "severity": "HIGH", "scope": { "kind": "symbol", "key": "PaymentService" }, "explanation": "One intent will replace `PaymentService` while the other will extend it; both declare the same semantic scope.", "evidence": { "rule": "FM-C001", "source_operation": "extend", "target_operation": "replace", "source_operation_inferred": false, "target_operation_inferred": false, "detected_before_code": true } } Enter fullscreen mode Exit fullscreen mode Note what is absent. No process id, no session, no queue position, no instruction to either agent. The coordinator does not know whether either agent is currently running, and does not need to. Its question is can the work in flight all be true at once? Its authority is evidentiary rather than imperative. It cannot stop a keyboard. What it can do is withhold its blessing at the end and say exactly why: BLOCKING_CONFLICT: 1 unresolved HIGH intent conflict(s); coordinate and resolve them before acceptance Enter fullscreen mode Exit fullscreen mode CHECK_FAILED: this ChangeSet is UNVERIFIED (no verification check was run against this ChangeSet) Enter fullscreen mode Exit fullscreen mode Both are overridable, by a human, with a recorded reason. That is the shape of evidentiary authority: it can make you look, it cannot make you stop. The split, in a table Orchestrator Coordinator Owns the run loop Yes No Authority Imperative: start, stop, schedule Evidentiary: findings, gates, audit Input Tasks Declared intents and scopes State Sessions, processes, queues Intents, claims, findings, changesets, validation Question answered Who is running what? Can these plans coexist? If it dies The fleet stalls Agents keep working, you lose visibility Visibility scope Its own sessions The repository, across sessions and vendors Three consequences worth caring about One: an orchestrator can only see its own fleet. It knows about the sessions it spawned. Your actual working day is Claude Code in one window, Codex in another, Cursor open on the same repository, plus a colleague, plus something you started on Tuesday and came back to on Thursday. Claude Code coordinates its own subagents inside one session, and does it well, because there is one root and one plan. Between roots, nothing does. A coordinator earns its keep by being neutral about who spawned the agent, which is also why one built into a single runner would see less. Two: an orchestrator's only lever is scheduling. If the only tool you have is control over execution order, then your only conflict resolution is serialization: run them one at a time and the collision cannot happen. That is correct and expensive, because most concurrent work on a repository is compatible and did not need serializing. A coordinator can let both agents run and raise a finding, precisely because it is not responsible for the run loop. Three: being outside the control path forces a design choice. A coordinator must never lock, because a single crashed agent holding a lock would stall the fleet, which is the exact failure it was supposed to help you avoid causing. So claims are leased and advisory: overlap produces a warning and shared context, never a lock. What makes advisory claims survivable is that the last step is not advisory. No acceptance while an unresolved HIGH finding stands, and no acceptance on an agent's own report that tests passed. Soft claims, hard gate. Could one tool be both? Structurally, yes, and nothing stops it. An orchestrator could grow declared scopes and deterministic comparison rules and cover both layers in one process. As far as I can tell, none of the ones on that list do today; they manage sessions and worktrees, which is what they set out to do. The interesting part is what such a tool would have to add, because it is not just a feature. An orchestrator holds prompts. A prompt is prose, and inferring an operation from prose produces confident false alarms: we tried it, and "delete the flaky ThumbnailCache benchmark test" got read as destroying ThumbnailCache itself. Widening the verb list only moved the boundary. Asserting HIGH severity on a guess is how a coordination tool gets ignored in a week. A declared operation is a fact, and facts are what a rule can be strict about. In 0.4.0 only declared operations can assert HIGH; prose-inferred matches cap below it. So the question is not whether one process can hold both layers. It is whether it holds declarations or just prompts. Which one do you need? One agent: neither. Two or three in parallel: orchestration first. Its absence hurts today, in ways you notice within an afternoon. Lost sessions, stomped files, no idea what is still running. The coordination layer's absence hurts on a delay. Both agents finish, both look right, Git merges both without a conflict because nothing textually overlaps, and three days later you are asking when that class stopped existing. That is the failure that made us build this one. Foremerge is the coordination layer we extracted from the monorepo of internal tools we use building GPTree, and open-sourced in late August 2026. One Rust binary, Apache-2.0, local-first, a CLI plus a local JSON API plus an MCP server over one SQLite store inside your repository's Git common directory. It sits above Git rather than inside it, and it composes with whatever orchestrator you already run. Stated plainly, per the honesty its own docs demand: detection is deterministic but heuristic, so it can warn on compatible work and can miss incompatible plans when agents name the same concept differently. Claims never lock anything. Agent identity is self-asserted, so the ownership guards raise the bar against confusion, not against a caller that deliberately presents another agent's id. It is local-only today, with no multi-machine mode. There are no published benchmarks yet, so there are no performance claims here. The layer matters regardless of whose implementation you run, including one you write yourself. So here is the noun test one more time. If it can start and stop your agents, it is an orchestrator. If it can only tell you whether their plans can coexist, and refuse to bless the result at the end, it is a coordinator. Most fleets run the first. Almost nobody runs the second.

来源报道 · 1 篇 · 以下链接均前往原始媒体

Nick Woodhead Agent 编排器与 Agent 协调器不是同一层 09-14 · 原文发布
← 返回精选动态 原文

更多内容