一句话摘要
智能体卡在直线流程的洞察
你的 Claude Agent 不蠢。它只是被困在一条直线上 August 17, 2026 · 阅读时长11分钟 · 查看原文 ↗ Claude MCP
一个实用的工程模式,用于把自我纠正的 agent 循环和依赖感知的图编排结合起来——并明确划出一条线:哪些是 Anthropic 记录的、哪些是推测的、哪些是本文自己的框架。
先说术语,然后再谈其他。「Claude Loop + Graph Engineering」不是一个官方 Anthropic 术语。不是产品名。不是已发布的方法论。
它是一个标签。本文用它来指一个真实的、反复出现的模式——正确性在循环内处理,协调由一个显式的图来处理——这个模式在 Anthropic 自己的文档、以及更广泛的 agent 工程社区里,以不同的名字出现。把它当作一种思考问题的方式,而不是一个你会在更新日志里找到的名字。
那个直到它让你损失一周才被注意的问题
一个开发者构建了一个审阅 pull request 的 Claude agent。它读一个 diff,写一段批评,然后停下。
批评很肤浅,所以他们加了第二遍:把输出对照一份评分标准检查,重写薄弱的部分。质量提高了。他们加第三遍。然后第四遍。
现在它成了一个循环——检查、修改、验证、重复——直到它越过一个门槛,或耗尽它的重试次数。
> 那个循环是一个 loop。它解决深度。
然后同一个开发者让它一次处理十二个文件,或把同一份评分标准套到四十个仓库上。循环就不再管用了。
一个循环一次只跑一条路径。喂给它四十个任务,它就一个接一个地处理,拖着同一份上下文,直到窗口被填满,或运行超时。
模型从来不是瓶颈。工作的形状才是。
> 不是深度。是宽度。
不是「这个答案好不好」,而是「一百件工作如何在互不踩踏的情况下推进」。这才是图工程(graph engineering)的用途:图里的循环,每个节点内的正确性,整个系统层面上的协调。
为什么一条直线会停止工作
大多数多步 agent 工作都以列表的形式开始:
检查定价
检查客户评价
检查产品文档
写一份市场简报
它按顺序运行,因为它是按顺序写出来的。但仔细看:第一步到第三步从来不读彼此的输出。它们只需要在第四步开始之前完成。
真正的形状不是一条线。它是三条分支汇入一条:
pricing ─┐
reviews ├──> brief
docs ─┘
那张图携带的工程信息,比那个列表多得多。
> 一个问题能瞬间杀死虚假依赖:到底什么数据跨过这条箭头?
「下一步应该知道上一步完成了」——那是状态,不是依赖。「审阅者拿到声明、来源和证据摘录」——现在有真实的东西跨过了那条线。
一个 Claude 循环到底是什么
在图之前,循环得先撑住。一个由不稳固节点构成的图,只是同时在更多地方失败。
一个循环是一个单位的 Claude 驱动工作,它不会在单次遍历后就停下。生成。检查。接受或修改。重复。
Anthropic 自己的工程博客给这个确切形状命了名:generator-verifier(生成器-验证器)。生成器产出输出,验证器对照明确标准检查它,循环重复,直到验证器签字,或重试次数耗尽。
def run_loop(task, max_attempts=4):
attempt = generate(task)
for i in range(max_attempts):
result = verify(attempt, task.criteria)
if result.passed:
return attempt
attempt = revise(attempt, result.feedback)
return escalate(task, attempt)
verify
是人们跳过的部分。而它正是循环漂移的原因。
Anthropic 说得很直白:「一个只被告知检查输出好不好、而没有进一步标准的验证器,会给生成器的输出盖橡皮图章。」
> 一个循环只能看到给它的数字。它无法问这个数字是否还有意义。
那就是带 Claude API key 的古德哈特定律(Goodhart's law)。一个支持团队把一个循环绑定到 ticket 解决率上。这个数字爬了好几个月,而它本应衡量的东西悄悄烂掉。
修复不是更聪明的循环。是把循环放进一个结构里,让别的东西在看着它。
图增加了什么
一个图把一堆循环变成一个具有形状的系统。节点、依赖、互不等待的分支、结果汇聚的点、阻挡直到检查通过的门。
四样东西几乎干了所有活:
节点(Nodes)。常常本身就是一个循环——验证并重试,自包含。
带真实载荷的边(Edges)。不是「B 在 A 之后运行」。一条边携带某样东西:一个声明、一个文件路径、提取出来的值。
归约器(Reducers)。那个用代码而不是另一次模型调用来合并、去重、排序或过滤并行输出的节点。
门(Gates)。阻挡这条边,直到某样东西通过——一个验证器、一次预算检查、一次人类点击。
在一个真实图上跑上面那个依赖测试,在你写下任何一条提示词之前,它产出这个:
GOAL: produce a market brief comparing three companies
nodes:
research_a: task="research company A pricing, features, sentiment"
research_b: task="research company B pricing, features, sentiment"
research_c: task="research company C pricing, features, sentiment"
checker: task="flag anything incomplete or off-topic"
depends_on=[research_a, research_b, research_c]
synthesize: task="write the comparison"
depends_on=[checker]
> 提示词优化一个节点。规格(spec)优化系统。
一个完整的实操例子,从任务到门
理论是廉价的。这里是一次构建。
一个 pull request 需要一个安全检查、一个覆盖率检查、一个风格检查,然后一个裁决:
六块东西让它成真。
1. 每个节点一个 schema。一份有类型的契约,而不是一个希望:
class CheckResult(TypedDict):
check_type: str # "security" | "coverage" | "style"
findings: list[dict] # [{ "file": str, "line": int, "issue": str, "severity": str }]
passed: bool
confidence: float
2. 一张依赖图,作为数据:
graph = {
"security_check": {"depends_on": [], "loop_fn": run_security_loop},
"coverage_check": {"depends_on": [], "loop_fn": run_coverage_loop},
"style_check": {"depends_on": [], "loop_fn": run_style_loop},
"checker": {"depends_on": ["security_check", "coverage_check", "style_check"],
"loop_fn": run_checker},
"synthesizer": {"depends_on": ["checker"], "loop_fn": run_synthesizer},
}
3. 每个节点一个重试策略——一个安全检查和一个风格检查不配得到同样的耐心:
retry_policy = {
"security_check": {"max_attempts": 5, "backoff": "escalate_to_opus"},
"style_check": {"max_attempts": 2, "backoff": "accept_best_effort"},
}
4. 一扇门,写为代码——无论哪个节点争辩什么,它都阻挡:
def merge_gate(checker_output, synthesizer_output):
if checker_output["unresolved_high_severity"] > 0:
return {"status": "blocked", "reason": "unresolved high-severity finding"}
return {"status": "requires_human_approval", "payload": synthesizer_output}
5. 一个归约器。上面的 checker 拿到三个并行的 CheckResult 对象,去做一件不该只交给单次模型调用的活:去重重叠的发现、标记矛盾、把一个干净的对象交给 synthesizer。
6. 不拖垮整次运行的失败路由。如果 coverage_check 失败退出了,就把一个标志路由进 checker,而不是丢弃已经成功的安全和风格结果。
什么实际有记录,什么没有
这是这类文章通常会过度推销自己的部分。所以:三档,刻意分开。
有记录且当前。Anthropic 的 Claude Platform 提供了 Managed Agents 多 agent 编排。一个协调器声明一个 multiagent.agents 名册;每个被委派的 agent 在自己的会话线程上运行——「一个上下文隔离的事件流,有自己的对话历史」——有自己的模型、提示词、工具和 MCP 服务器,默认都不共享。Anthropic 的博客命名了五种带真实权衡的协调模式:generator-verifier、orchestrator-subagent、agent teams、message bus、shared state。而且他们自己的数字并不好看:在他们的测试里,多 agent 设置在等价任务上烧掉了单 agent 的 3 到 10 倍 token。
有记录,描述内部使用。Anthropic 直接表示,Claude Code 在内部运行 orchestrator-subagent 模式——主 agent 自己编辑并运行命令,为大搜索派发子 agent,拿回提炼过的发现而不是原始上下文。那是具体且真实的。它不是某个有固定协调模式数量的通用「AgentTool」存在的证据。
有报道,未验证,非承诺。2026 年初的科技报道描述了一个叫「Coordinator Mode」的内部系统,据说通过来源泄露浮出水面,跑并行 worker 经过研究、规格、实现和验证阶段。这是一个关于第三方认为工具在朝哪个方向走的数据点。它不是一个已确认的功能。
> 把这一切串起来的那个断言——嵌套在图里的循环正在成为认真 agent 工作的默认形状——是本文自己的解读。不是 Anthropic 的公告。
这在哪里连到真实的 Claude 生态
上面的模式刻意做到框架无关。这里才是它真正接入 Claude 的地方:
会话线程 = 节点隔离,内置。每个被委派的 agent 在自己的线程上流式运行;协调器看到的是浓缩摘要,而不是完整转写。
MCP 服务器 = 范围化的工具访问,内置。按 agent 声明,而不是按会话。一个研究节点可以持有 GitHub 访问权,而一个合成节点一个都不持有。
工具权限事件 = 人类门,内置。一个 always_ask 工具触发一次到主线程的交叉发布;你的客户端用平台自动路由回来的 user.tool_confirmation 事件回答。
验证子 agent 模式 = 宽容度修复,内置。Anthropic 自己的例子把一个编码 agent 和一个重跑完整测试套件的独立验证器配对。
以上下文为中心的分解,而非以职位头衔为中心的分解。Anthropic 自己做的 planner/implementer/tester/reviewer 拆分实验发现,子 agent 在协调上花的 token 比生产还多。
图实际在哪里坏掉
两个失败比任何框架选择都重要。
图认同它自己。一个给自己的输出打分的模型会对它自己放水。Anthropic 称这是 generator-verifier 模式里最常见的一个错误。验证器拒绝率 0%?那不是一张干净的图。那是一个什么都不做的检查。
假并行。如果每一步都真的需要上一步的输出,那在它周围画框只是徒增开销,零加速。它从头到尾就是一个循环。判断标志:如果你找不到两个彼此没有依赖的节点,那就还没有图可构建。
实际描述一张图的指标
一份聊天转写,对一个不止一条活跃路径的系统来说,是一个糟糕的仪表盘。
指标 它告诉你什么 关键路径延迟 最长依赖链的长度——等待实际发生的地方 扇出效率 多少并行 worker 产出了真正不同的信息 节点失败率 哪些 worker 最常失败,暴露脆弱的提示词或工具 重试率 每个节点四次重试后才通过是不健康的,即使它通过了 验证器拒绝率 接近 0% 是无牙的检查;非常高是糟糕的上游范围划分 Token 成本 vs 单 agent 基线 Anthropic 自己的 3-10x 数字是一个真实的理智检查
永不该被优化掉的规则
Agent 系统是优化机器。优化的系统会找捷径。
如果指标是「关闭的 ticket」,系统就对「已解决」变得大方。修复:把一小撮规则完全冻结在循环之外——不是提示词建议,而是无论节点怎么争辩、协调器都执行的硬约束。哪些动作需要一扇没有代码路径绕过的人类门。图从不触碰哪些凭证。每个节点必须返回什么 schema,用结构化方式检查,而不是问一个模型「看起来对不对」。
什么时候彻底跳过图
图强大到人们默认就伸手去拿。那是个错误。
Anthropic 自己的指导很直白:团队花了几个月搞精心设计的多 agent 架构,结果发现单 agent 上更好的提示词就搞定了。
当任务很小、步骤真的严格顺序、你仍在探索问题、或你需要自己批准每一个中间步骤时,留在一个单循环里。
真正的硬技能是什么的一次转变
起先是提示词工程。然后是工具使用。然后是循环——检查并纠正自己输出的 agent,而不是一遍之后就停下。
> 这是下一层:困难的问题不再是「我如何让一次调用更聪明」,而是「工作本身该如何流动」。
哪些部分同时运行。哪些部分真的彼此依赖。什么数据跨过每条边。哪里人类仍然握着钥匙。
更多 agent,本身不是答案——Anthropic 给那个假设放了一个真实数字:很多不需要它的任务,3 到 10 倍的成本。
更好的拓扑才是答案。在写提示词之前,先画图。 标签: # X # Claude # MCP # 串 相关文章 Grok 刚刚变得危险了:18 个证明这一点的仓库。 大多数人还以为 Grok 是一个挂在 X 上的聊天机器人。 AI Claude MCP
原文参考:https://maxed.wiki/posts/your-claude-agent-isn-t-dumb-it-s-just-stuck-in-a-straight-line/ (Maxed.wiki,本页为站内中文整理)