# Jarvis Agents 2.0 升级方案 日期:2026-04-03 状态:草案 范围:`backend/app/agents/*`、相关测试,以及后续运行时/UI 扩展 --- ## 1. 文档目标 本文档用于明确 Jarvis Agents 2.0 的升级方向。方案基于以下三个 demo 项目的分析结果整理而成: - `demo/swarm-ide-chore-specs-mvp` - `demo/claude-code-cli-master` - `demo/claw-code-main` 本方案的目标不是照搬任意一个项目,而是结合它们各自的优点,让 Jarvis 从当前的: - 静态分层路由型 agent 系统 逐步升级为: - 可控的动态协作型 agent 运行时 同时保留 Jarvis 现在已经具备的优势: - 业务导向明确 - 提醒 / 任务 / 搜索类连续性较强 - 支持多 provider 和 fallback 策略 - 运行边界清晰,容易测试和验证 --- ## 2. 当前 Jarvis 的现状 当前核心代码主要集中在: - `backend/app/agents/graph.py` - `backend/app/agents/state.py` - `backend/app/agents/prompts.py` - `backend/app/agents/registry/*` - `backend/app/agents/tools/*` - `backend/tests/backend/app/agents/test_graph.py` ### 2.1 当前优势 Jarvis 目前已经不是简单的“单 prompt + 工具调用”系统,而是一个结构化的业务 agent 运行时,主要优势包括: 1. **有主控层级** - 存在类似 `master` 的顶层入口 - 已按业务领域拆分出不同 agent / sub-commander 2. **有明确的工具调用策略** - 支持 native tool calling - 也支持 JSON fallback 3. **有连续性和澄清机制** - 支持 clarification - 支持 pending action / continuity - 对 reminder / task 这类业务很重要 4. **状态模型较完整** - 不是纯临时 prompt 拼接 - 已有显式 state 管理 5. **测试基础较好** - 当前 agent runtime 已有可观测试覆盖 ### 2.2 当前短板 虽然 Jarvis 已经具备结构化 agent 系统的雏形,但依旧存在几个明显上限: 1. **本质上仍是静态路由系统** - 单轮请求通常只会选一条主路径执行 - agent 关系是预先设计好的,不是运行时动态演化的 2. **没有真正的 agent-to-agent 通信原语** - 现在更多是系统内部调度 - 不是 agent 之间显式发消息、协作、转交任务 3. **没有显式 task/team 运行时** - 缺少任务对象、所有权、依赖关系、完成状态 4. **缺少独立 verifier 角色** - 当前执行者通常也是完成判断者 - 缺少“执行”和“验收”分离 5. **可观察性还不够强** - 系统内部做了很多判断,但外部很难完整看到 agent 协作过程 --- ## 3. 三个 demo 项目的借鉴重点 --- ## 3.1 Swarm-IDE:最值得借鉴的协作形态 关键参考文件: - `demo/swarm-ide-chore-specs-mvp/README.md` - `demo/swarm-ide-chore-specs-mvp/backend/src/runtime/agent-runtime.ts` - `demo/swarm-ide-chore-specs-mvp/backend/src/runtime/event-bus.ts` - `demo/swarm-ide-chore-specs-mvp/backend/src/runtime/skill-loader.ts` ### 值得借鉴的点 #### 1)协作原语非常简单,但表达力非常强 Swarm 的核心原语很少,主要就是: - 创建 agent - 发送消息 - 建群 / 群聊 - 列出 agent / 群组 / 消息 这种设计的好处是: - 不需要先写死很多工作流 - 复杂拓扑可以由运行时自然演化 - agent 行为更像“协作中的人”,而不是固定流程节点 #### 2)agent 间通信是一等能力 Swarm 不是让系统替 agent 决定所有事情,而是让 agent 自己拥有: - 创建子 agent 的能力 - 和任意 agent 通信的能力 - 组群协作的能力 这比固定的 master -> domain 路由更灵活。 #### 3)人类可以直接介入任意子 agent 这点很关键。多 agent 系统最怕黑箱。一旦用户只能看到最终结果,而看不到中间代理,就很难调试和控制。 #### 4)事件流和可观察性很强 Swarm 有清晰的 runtime 事件模型,例如: - `agent.wakeup` - `agent.unread` - `agent.stream` - `agent.done` - `agent.error` 这对后续做: - 调试 - 可视化 - 事件回放 - 协作审计 都非常有帮助。 ### 不能直接照搬的点 Swarm 的自由度也意味着风险: - agent 无限制增殖 - 消息风暴 - token 成本失控 - 系统行为难收敛 所以 Jarvis 应该借鉴它的“机制”,而不是直接复制它的“无限自由”。 --- ## 3.2 Claude Code CLI:最值得借鉴的平台级编排 关键参考文件: - `demo/claude-code-cli-master/coordinator/coordinatorMode.ts` - `demo/claude-code-cli-master/bootstrap/state.ts` - `demo/claude-code-cli-master/skills/bundled/batch.ts` ### 值得借鉴的点 #### 1)coordinator-worker 分层非常清晰 这个项目不是简单地把多个 agent 拼在一起,而是明确区分: - 协调者 coordinator - 执行 worker - 任务生命周期 - 结果汇总 - 后续消息和回收 这正是 Jarvis 从“路由”升级到“编排”时最需要补的能力。 #### 2)有明确的 task / team 概念 成熟的多 agent 系统不是只有“谁去做”,而是还需要: - task id - owner - blocked / depends_on - 完成状态 - worker 生命周期 #### 3)验证是独立通道 真正成熟的系统会把: - 计划 - 执行 - 验证 分开,而不是让执行者自己宣布“我完成了”。 #### 4)并行执行强调隔离 对于复杂任务,这种平台会强调: - 并行 worker - 各自隔离的工作空间 - 输出清晰归属到某个 worker 这对未来 Jarvis 如果处理更复杂的编码或多步骤任务,价值很高。 --- ## 3.3 Claw Code:最值得借鉴的 runtime 工程化能力 关键参考文件: - `demo/claw-code-main/rust/crates/runtime/src/conversation.rs` - `demo/claw-code-main/rust/crates/tools/src/lib.rs` - `demo/claw-code-main/rust/crates/plugins/src/lib.rs` - `demo/claw-code-main/PARITY.md` ### 值得借鉴的点 #### 1)运行时分层清晰 Claw 的优势不是协作花样最多,而是运行时拆分很自然: - runtime loop - tools - commands - plugins - permission Jarvis 后续也应该逐步减少 graph 与具体业务工具的强耦合。 #### 2)工具注册表可以更强 Jarvis 现在已有 registry 方向,但还不够深入。Claw 的启发是: 每个工具不只是名字和描述,还应该有: - 权限等级 - 副作用范围 - 是否幂等 - 是否可重试 - 是否适合并行 - 是否需要确认 #### 3)权限模型显式化 一旦系统支持动态协作,就不能默认所有 worker 都能做所有事。 #### 4)插件 / Hook 扩展点应该尽早预留 即使暂时不做插件生态,也应该尽早定义扩展点,否则以后核心 runtime 会越来越难改。 --- ## 4. Jarvis 2.0 的总体目标架构 Jarvis 2.0 的目标不是做成“完全自由的蜂群系统”,而是做成: - **受控的动态协作系统** ### 4.1 核心原则 1. 简单请求继续走当前稳定路径。 2. 复杂请求才进入协作模式。 3. agent 通信必须显式、可观察、可约束。 4. 执行与验证必须分离。 5. 所有危险能力都必须被预算和权限控制。 ### 4.2 总体分层 #### 第一层:请求模式选择层 每个请求先判定: - **直接模式**:继续使用现有 `master -> domain -> sub-commander` - **协作模式**:进入 coordinator -> task -> delegate -> verify 流程 #### 第二层:协调层 新增 coordinator,负责: - 理解请求 - 判断是否需要拆任务 - 生成任务列表 - 分配任务给不同角色 - 回收结构化结果 - 触发 verifier #### 第三层:工作层 worker agent 负责具体执行,例如: - schedule 执行 - task 执行 - 检索 / 搜索 - forum 操作 - 分析 / 汇总 - 验证 / 审核 #### 第四层:协作底座 底座层应该提供: - agent 注册 - agent identity - task 对象 - message channel - event stream - budget / interrupt / recovery --- ## 5. Jarvis 2.0 需要新增的核心概念 --- ## 5.1 一等的 agent 通信原语 建议在 Jarvis 内部先引入以下运行时能力: - `create_agent(role, guidance, parent_id?)` - `send_agent_message(to_agent_id, content, task_id?)` - `list_agents()` - `list_agent_threads(agent_id?)` - `interrupt_agent(agent_id)` ### 作用 这一步完成后,Jarvis 就不再只是“从主图里选路径”,而是具备“让 agent 协作”的基础能力。 ### 注意 这些能力可以先作为内部能力,不一定立刻暴露给最终用户。 --- ## 5.2 结构化 task 运行时 建议引入任务对象,至少包含: - `task_id` - `title` - `owner_agent_id` - `status`:`pending` / `in_progress` / `blocked` / `completed` / `failed` - `depends_on` - `evidence` - `result_summary` - `created_by` ### 作用 一旦 task 成为系统对象,Jarvis 才能真正实现: - 并行 - 重试 - 显式完成判断 - 进度展示 --- ## 5.3 事件总线 Event Bus 建议新增统一事件流,至少包含: - `agent.created` - `agent.wakeup` - `agent.message.sent` - `agent.message.received` - `agent.tool.start` - `agent.tool.result` - `agent.task.assigned` - `agent.task.completed` - `agent.verify.started` - `agent.verify.completed` - `agent.error` ### 作用 后续可以用于: - 调试 - 日志回放 - 可视化 - agent 行为审计 --- ## 5.4 verifier 角色 建议新增独立 verifier / reviewer 角色。 ### 职责 - 判断是否真的满足用户请求 - 检查是否缺少工具证据 - 识别不完整执行 - 要求重新执行或补充 ### 意义 这一步是 Jarvis 从“会调用工具的 assistant”升级为“可靠 agent 系统”的关键一步。 --- ## 5.5 工具权限模型 每个工具建议新增如下元数据: - `permission_class`:`read` / `write` / `external` / `dangerous` - `side_effect_scope`:`none` / `local_state` / `remote_state` - `safe_for_worker_roles` - `requires_confirmation` - `supports_retry` - `idempotent` ### 意义 动态协作系统必须比静态路由系统有更强的治理能力。 --- ## 6. 按代码区域的演进建议 --- ## 6.1 `backend/app/agents/state.py` ### 目标 在现有 state 基础上扩展协作信息,而不是推翻重来。 ### 建议新增字段 - `agent_id` - `parent_agent_id` - `task_id` - `active_tasks` - `task_results` - `message_queue` - `event_log_refs` - `verification_status` - `execution_mode`:`direct` / `collaboration` - budget 字段: - `max_spawn_depth` - `max_child_agents` - `max_messages_per_turn` - `max_parallel_tasks` ### 重点 不要删除当前 continuity / clarification 相关状态,而是在它之上扩展。 --- ## 6.2 `backend/app/agents/graph.py` ### 目标 从“纯路由图”升级为“路由 + 编排混合图”。 ### 建议新增节点 - `request_mode_selector` - `coordinator` - `task_decomposer` - `delegation_router` - `worker_runner` - `verifier` - `result_synthesizer` ### 推荐行为 #### 简单请求 继续走当前路径,避免影响当前稳定业务。 #### 复杂请求 走以下流程: 1. coordinator 理解请求 2. task_decomposer 产出小任务列表 3. delegation_router 为每个任务分配角色 4. worker_runner 执行任务 5. verifier 检查产出 6. result_synthesizer 汇总最终结果 ### 重点 不是替换当前 graph,而是在复杂请求上增加新的执行分支。 --- ## 6.3 `backend/app/agents/prompts.py` ### 目标 新增更明确的角色 prompt,减少职责混乱。 ### 需要新增的角色 prompt - coordinator - verifier - critic / reviewer(可后续再加) ### 协调者 prompt 应强调 - 只有复杂任务才拆分 - 任务拆分要小而清晰 - 不要过度创建 agent - 输出必须带证据 ### verifier prompt 应强调 - 不接受模糊完成 - 检查证据是否充分 - 检查用户意图是否真正满足 --- ## 6.4 `backend/app/agents/registry/*` ### 目标 让 registry 不只是描述性的,而是逐渐成为 runtime 驱动的一部分。 ### 建议补充 - agent role metadata - role capability - role spawn permission - tool access policy - task suitability tags ### 建议角色分类 - coordinator - executor - scheduler - retriever - analyst - verifier --- ## 6.5 `backend/app/agents/tools/*` ### 目标 保留现有业务工具,但为它们补全运行时治理信息。 ### 每个工具建议具备的元数据 - `name` - `description` - `permission_class` - `supports_retry` - `idempotent` - `safe_for_parallel_use` - `returns_structured_evidence` ### 建议新增模块 可以新增: - `backend/app/agents/tools/collaboration.py` 用于承载协作原语,例如: - 创建 agent - 发送内部消息 - claim task - complete task - request verification --- # 7. 升级阶段设计 下面按阶段详细说明,每个阶段都包含: - 目标 - 解决的问题 - 范围 - 核心改动 - 风险 - 验收标准 - 推荐实施顺序 --- ## 阶段一:基础设施加固阶段(Safe Foundation) ### 7.1.1 阶段目标 在不破坏当前稳定业务路径的前提下,为后续多 agent 协作打底。 ### 7.1.2 这一阶段要解决的问题 当前 Jarvis 的主要问题不是“不会做业务”,而是: - 缺 verifier - 缺 task 对象 - 缺事件流 - 缺工具权限元数据 - graph 不区分直接模式和协作模式 所以第一阶段不是追求炫技,而是先把基础设施补齐。 ### 7.1.3 范围 主要涉及: - `backend/app/agents/state.py` - `backend/app/agents/graph.py` - `backend/app/agents/prompts.py` - `backend/app/agents/registry/models.py` - `backend/app/agents/registry/builtins.py` - `backend/app/agents/tools/__init__.py` - `backend/tests/backend/app/agents/*` ### 7.1.4 核心改动 #### 改动 1:新增 `execution_mode` 让系统能区分: - `direct` - `collaboration` #### 改动 2:新增 verifier 角色 在不改变主流程的基础上,先插入一个独立 verifier 角色。 #### 改动 3:新增事件总线抽象 哪怕先不做 UI,也要先定义事件结构和写入方式。 #### 改动 4:补工具元数据 给现有工具补权限、幂等、是否适合并行等信息。 #### 改动 5:引入 task 数据结构 哪怕暂时只在内部使用,也要先把任务结构定义出来。 ### 7.1.5 风险点 1. **改 state 容易影响现有测试** 2. **verifier 插入点选错会影响现有行为** 3. **事件系统如果写得太重,会影响性能和复杂度** 4. **工具元数据定义过度,会让现有实现变复杂** ### 7.1.6 验收标准 满足以下条件才算第一阶段完成: - 当前 reminder / task / search 主要流程测试仍通过 - 系统可以独立运行 verifier 角色 - 系统可以产生基本事件记录 - 工具权限元数据已存在并有测试 - 不引入动态 agent 创建能力 ### 7.1.7 推荐实施顺序 1. 定义 task schema 2. 定义 event schema 3. 扩展 state 4. 扩展 tool metadata 5. 加 verifier prompt 6. 在 graph 中插 verifier 分支 7. 补测试 --- ## 阶段二:受控协作阶段(Controlled Collaboration) ### 7.2.1 阶段目标 让 Jarvis 开始具备“拆任务、分配任务、回收结果”的能力,但仍然保持强约束。 ### 7.2.2 这一阶段要解决的问题 当前系统的主要限制是: - 复杂请求只能在一条路径里硬做 - 没法显式表达子任务 - 没法让不同角色协作完成复杂目标 第二阶段的重点,就是把“复杂请求”从“路由”升级为“编排”。 ### 7.2.3 范围 主要涉及: - `backend/app/agents/graph.py` - `backend/app/agents/prompts.py` - `backend/app/agents/state.py` - `backend/app/agents/registry/*` - 新增协作工具模块 - 新增对应测试 ### 7.2.4 核心改动 #### 改动 1:新增 coordinator 节点 由 coordinator 判断是否需要拆分请求。 #### 改动 2:新增 task decomposition 复杂请求要能拆出 2~4 个清晰的子任务。 #### 改动 3:新增 worker assignment 不同子任务按角色分配给不同 worker 逻辑。 #### 改动 4:新增内部消息传递 先做最小版本的 agent-to-agent 通信,不必一开始就做复杂群聊。 #### 改动 5:完成后必须走 verifier worker 的产出不直接作为最终结论,必须先过 verifier。 ### 7.2.5 风险点 1. **任务拆得太细会增加系统复杂度** 2. **任务拆得太粗又达不到协作收益** 3. **内部通信如果没有预算,会引发回路** 4. **worker 边界不清会导致职责重叠** ### 7.2.6 验收标准 - 复杂请求可以被拆成 2~4 个子任务 - 每个子任务有明确 owner - worker 输出带结构化 evidence - verifier 可以拒绝不完整结果 - final result 基于任务结果汇总,而不是某个单一 worker 的主观结论 ### 7.2.7 推荐实施顺序 1. 增加 coordinator prompt 2. 增加 task decomposition schema 3. 增加 delegation router 4. 增加最小通信原语 5. 增加 verifier 回收 6. 补整套协作测试 --- ## 阶段三:动态协作阶段(Dynamic Collaboration) ### 7.3.1 阶段目标 在受控前提下,让 Jarvis 具备更接近 Swarm 的动态协作能力,但不是完全放飞。 ### 7.3.2 这一阶段要解决的问题 第二阶段虽然已经能做任务拆分,但仍然偏“平台帮你分好工”。 第三阶段要解决的问题是: - worker 能否在必要时请求新的协作 - 是否支持 parent / child agent 关系 - 是否支持更完整的消息通路 - 是否支持更强的中间态可观察性 ### 7.3.3 范围 主要涉及: - `backend/app/agents/state.py` - `backend/app/agents/graph.py` - 新增 collaboration runtime 模块 - 新增 message / thread / event 相关抽象 - 未来可能涉及前端可视化接口 ### 7.3.4 核心改动 #### 改动 1:支持 parent / child agent tracking 让系统知道哪个 agent 是谁创建的。 #### 改动 2:支持有限动态创建 agent 注意:必须有限制,不允许无限递归创建。 #### 改动 3:支持有限的 agent 消息线程 先支持最小内部线程即可,不一定马上做群聊 UI。 #### 改动 4:增强事件流 把协作链路完整记录下来。 #### 改动 5:支持 interrupt / recovery 多 agent 系统没有中断与恢复,后面会很难维护。 ### 7.3.5 风险点 1. **agent 增殖风险** 2. **消息风暴风险** 3. **token 成本和延迟上升** 4. **调试复杂度上升** 5. **过度动态化破坏当前稳定路径** ### 7.3.6 验收标准 - parent / child agent 关系可追踪 - 系统支持受限动态创建 agent - agent 间通信链路可记录 - 可中断运行中的协作 - 所有动态协作都受预算限制 ### 7.3.7 推荐实施顺序 1. 建 parent / child state 2. 建 spawn budget / message budget 3. 实现受限 `create_agent` 4. 实现内部消息线程 5. 实现 interrupt / recovery 6. 加事件回放和调试日志 --- ## 阶段四:可视化与隔离执行阶段(Visibility + Isolation) ### 7.4.1 阶段目标 把多 agent 系统从“后台能跑”升级为“可看、可控、可调试、可隔离”。 ### 7.4.2 这一阶段要解决的问题 多 agent 系统发展到一定程度后,纯日志已经不够。你会需要: - 谁创建了谁 - 谁在做什么 - 谁给谁发了什么 - 哪个任务卡住了 - 某个 agent 为啥没完成 ### 7.4.3 范围 这个阶段可能跨: - backend runtime - event stream API - frontend 调试面板 / graph 面板 - 编码任务场景下的隔离执行策略 ### 7.4.4 核心改动 #### 改动 1:协作链路可视化 至少包括: - 当前 agent 列表 - parent / child 关系 - task 状态 - message 流向 #### 改动 2:agent 历史和工具证据可见 支持查看某个 agent: - 历史消息 - 工具调用 - 工具结果 - verifier 结论 #### 改动 3:隔离执行能力 如果以后 Jarvis 要处理更复杂的 coding 任务,可以考虑: - worker 级隔离目录 - worktree - 独立 session state ### 7.4.5 风险点 1. **UI 一旦做太早,会分散后端核心升级精力** 2. **事件量上升后,展示层会有性能压力** 3. **隔离执行会提升工程复杂度** ### 7.4.6 验收标准 - 可以看到基本 agent 拓扑 - 可以看到任务流转和关键事件 - 可以查看某个 agent 的执行证据 - 隔离执行至少有设计方案,最好有最小实现 ### 7.4.7 推荐实施顺序 1. 先把 event schema 固化 2. 再做 event stream API 3. 再做最小调试页面 4. 最后做隔离执行策略 --- ## 8. 必须长期坚持的治理规则 Jarvis 不应该变成“无限自由蜂群”,而应该是“带预算的动态协作系统”。 因此必须长期保留这些约束: 1. **spawn budget**:每次请求最多允许创建多少 agent 2. **message budget**:每个任务 / 每轮最多允许多少消息 3. **max depth**:代理树最大深度 4. **verifier gate**:复杂任务必须经 verifier 才能宣布完成 5. **tool permission policy**:不同角色拥有不同工具权限 6. **interrupt / cancel 路径**:长任务必须可中断 7. **structured evidence**:没有证据就不算完成 --- ## 9. 推荐优先级 如果近期只能做少量升级,推荐优先级如下: 1. verifier 角色 2. event bus / 可观察性 3. 结构化 task runtime 4. coordinator for complex requests 5. 内部 agent 通信原语 6. registry 元数据增强 7. 隔离执行能力 --- ## 10. 最现实的近期落地顺序 建议按下面顺序推进,而不是同时铺开: ### 第一步 先做 verifier 的 state、prompt、graph 插入点设计。 ### 第二步 定义 task schema 和 event schema。 ### 第三步 给工具补元数据和权限标签。 ### 第四步 在 graph 中加入 coordinator 只处理复杂请求。 ### 第五步 引入最小可用的内部协作原语。 ### 第六步 补一轮完整测试,确保旧路径不坏、新路径可控。 --- ## 11. 最终建议 Jarvis 2.0 不应该单独模仿某一个 demo,而应该做这样的融合: - 从 **Swarm-IDE** 学:动态通信原语、可观察性、协作拓扑 - 从 **Claude Code CLI** 学:coordinator / task / verifier 的平台化编排 - 从 **Claw Code** 学:runtime 分层、工具注册表、权限模型 一句话总结升级方向: > 让 Jarvis 从“静态层级路由系统”升级为“受控的动态协作运行时”。 并且必须坚持一个原则: > 简单请求保持当前稳定路径,复杂请求才启用协作编排能力。 --- ## 12. 建议后续继续拆分的文档 建议在这份总方案之后,再继续补这些中文文档: 1. `development-doc/jarvis-agents-phase-a-design.md` 2. `development-doc/jarvis-agent-event-schema.md` 3. `development-doc/jarvis-agent-task-schema.md` 4. `development-doc/jarvis-agent-role-permissions.md` 5. `development-doc/jarvis-verifier-integration-plan.md` 如果继续往下做,最建议先写的是: - **Phase A 详细设计文档** 因为它最贴近当前代码,也最容易直接转成开发任务。