跳到主要内容

多 Agent 架构

让一个 AI Agent 连续执行 50 次工具调用,还要记得你最初想要什么——这并不现实。

Helix 的答案是:别让一个 Agent 包办所有事。 用三层角色分工,让每一层各司其职。


单 Agent 系统的两个致命问题

在真实的工程任务里,单 Agent 系统几乎不可避免地会遇到两种失败模式:

1. 目标漂移

Agent 需要读文件、查符号、执行命令、分析结果……每一步都在消耗上下文。30 步之后,它已经完全沉浸在细节里,丢失了用户真正的意图。你让它“重构鉴权模块”,结果它去改了一个完全不相关的配置文件。

2. 上下文污染

每次工具调用的输出——文件内容、命令结果、搜索匹配项——都堆积在对话历史里。重要的推理与决策被淹没在中间数据的海洋中。模型的注意力被分散,输出质量陡降。


三层执行结构

Helix 用三种执行角色来同时解决这两个问题:

第一层:Manager Agent(治理层)

Manager Agent 唯一的职责是确保最终结果与用户意图一致。

它不做实施工作,而是:

  • 保留用户的原始目标
  • 判断 Execution Agent 的输出是否“达成”
  • 在最终交付前执行质量验收

可以把它想象成“项目经理”——它不写代码,但它知道任务什么时候才算真正完成。

第二层:Execution Agent(交付层)

这是主力。Execution Agent 负责:

  • 驱动主要的编码与工具流程
  • 调用 MCP 工具:读写文件、执行命令、搜索代码、调用 LSP
  • 在需要时把任务拆成子任务并委派给 SubAgent
  • 持续迭代直到任务完成

它在主会话里串行运行,每一步对用户都是可见的。

第三层:SubAgent(并行深度工作层)

SubAgent 是 Helix 最具特色的设计。当任务存在可独立执行的分支时,Execution Agent 会启动一个或多个 SubAgent,在完全隔离的上下文中并行工作。

Execution Agent
├─ SubAgent A: "搜索所有鉴权相关文件" ──→ 返回摘要
├─ SubAgent B: "分析数据库迁移的影响" ──→ 返回摘要
└─ SubAgent C: "检查前端路由的改动点" ──→ 返回摘要
↑ 并行执行,互不干扰,总耗时 = max(A, B, C)

SubAgent 实现细节

SubAgent 不是“被简化”的 Agent——它是功能完整、独立执行、上下文完全隔离的实体。 以下细节来源于后端源码:

独立子会话

每个 SubAgent 创建一个独立的子会话,ID 格式为 sub_{parentSessionID}_{timestamp}。子会话拥有自己的对话历史,与主会话完全隔离。主会话的上下文不会被子任务的中间步骤污染。

递归保护

SubAgent 自动过滤三个危险工具:

  • run_subagent —— 防止 SubAgent 无限嵌套创建更多 SubAgent
  • create_worktree_binding —— 避免子任务内部产生分支操作冲突
  • start_code_review —— 审查流程应由主会话控制

此外,整个 builtin_subagent MCP server 都会从 SubAgent 的工具列表中排除。

智能结果摘要

当 SubAgent 完成时,结果需要返回主会话。但原始对话可能很长,直接返回会污染主会话上下文。

Helix 的处理策略:

  • 若结果 ≤ 2,000 字符,直接返回
  • 若超过 2,000 字符,由 AI 生成 ≤ 500 字符的提炼摘要
  • 若摘要失败,结果会被截断

这样主会话始终拿到的是干净、提炼后的子任务结果,而不是原始数据倾倒。

完整的工具能力

尽管上下文隔离,SubAgent 依然几乎可以使用所有工具——文件读写、shell 命令、LSP 代码分析、搜索等。SubAgent 不是“弱化版”Agent,而是聚焦于特定任务的全功能专家。


Dual Agent 模式:双模型协作

除了 Manager / Execution / SubAgent 三层架构外,Helix 还提供独特的 Dual Agent 模式——让两个不同的模型(通常是 Claude 与 DeepSeek)就同一个问题进行结构化协作。

四阶段流程

阶段描述执行方式
ThinkingClaude 与 DeepSeek 各自独立思考同一个问题并行
Discussion交叉评审——每个模型评论对方的答案多轮
SynthesisClaude 综合两方优点形成最终方案单次
Execution按最终方案执行(保留阶段)可选

为什么用两个模型?

不同模型有不同的盲点。Claude 在结构化推理与安全分析上更强;DeepSeek 在代码理解与性价比上有优势。让它们各自独立思考再交叉评审,盲点会被对方捕捉,最终方案更全面。

UI 中的分阶段呈现

在 helix 中,Dual Agent 模式的执行通过清晰的阶段分隔展示:

  • 每个阶段以 --- 阶段名 --- 分隔符开始
  • 不同模型的回复会带上各自的角色标签(Claude / DeepSeek)
  • Synthesis 阶段标注为 🎯 Final Solution
  • 工具调用显示为 🔧 AgentName calls tool

并行调度的真正价值

时间效率

传统串行方式:
任务 A (30s) → 任务 B (25s) → 任务 C (20s) = 总计 75s

Helix 并行方式:
任务 A (30s) ─┐
任务 B (25s) ─┼─→ 总计 30s
任务 C (20s) ─┘

上下文质量

在串行执行中,每个任务的中间输出都堆积在主对话里,持续降低后续任务的输入质量。并行执行下,主会话只接收提炼后的摘要,上下文始终保持干净。

用户可观测性

在 helix 中,SubAgent 状态实时更新:

  • 创建时:显示子任务描述与父会话链接
  • 执行中:用户可以打开独立窗口实时观察 SubAgent 的对话
  • 完成时:摘要结果自动回传主会话

何时使用 SubAgent

适合 SubAgent 的场景:

  • “并行搜索多个模块的安全风险与迁移阻塞点”
  • “分别分析后端和前端的改动影响”
  • “在动手前调研多个仓库中的引用关系”
  • 任何具有独立分支的调研或分析任务

不适合 SubAgent 的场景:

  • 单文件的简单编辑
  • 步骤之间存在严格顺序依赖的任务
  • SubAgent 启动开销大于收益的轻量任务

相关文档