-
Notifications
You must be signed in to change notification settings - Fork 41
Open
0 / 10 of 1 issue completedDescription
Claude Code 多 Agent 架构和上下文工程的特点:
- 多 Agent 架构的关键词:主从两层架构,子 Agent 按需动态创建,Agent 生命周期管理,Agent 事件通信机制,无状态隔离架构,静态工具过滤机制、子 Agent 可并发执行,用户可自定义子 Agent。
- 上下文工程关键词:上下文隔离机制,最小必要信息,单向最终报告机制,三层存储架构,上下文窗口分层,Token 预算管理,自动压缩机制,8 段式结构化压缩 Prompt,智能文件(上下文)恢复机制,Token 缓存机制。
开源项目 OpenCode:https://github.com/sst/opencode ,简直就是 Claude Code 的开源实现版。
上面的那些关键词,比如:子 Agent 按需动态创建、无状态隔离架构、子 Agent 并发执行、用户自定义子 Agent、上下文隔离机制、单向最终报告机制等等等,它全部都实现且开源了。
多 Agent 架构核心设计
1. Agent 类型定义
系统定义了三种不同模式的 agent:
- primary: 主要 agent(如
build
、plan
) - subagent: 子 agent(如
general
) - all: 可以在任何模式下使用的 agent
2. 内置 Agent 类型
系统预定义了几个核心 agent:
- general: 通用 agent,用于复杂问题研究、代码搜索和多步骤任务执行
- build: 构建相关的主要 agent
- plan: 规划相关的主要 agent,权限相对受限(编辑和 bash 权限为 "ask")
3. Task Tool 实现机制
核心流程:
- Agent 发现: 通过 Agent.list() 获取所有非主要模式的 agent
- 动态描述生成: 将可用的 agent 列表动态插入到工具描述中
- 会话创建: 为每个子任务创建独立的会话(Session)
- 消息传递: 通过 Bus 系统进行实时消息传递和状态更新
- 工具配置: 每个 agent 都有自己的工具权限配置
关键实现细节:
// 获取指定类型的 agent
const agent = await Agent.get(params.subagent_type)
// 创建独立会话
const session = await Session.create(ctx.sessionID, params.description + ` (@${agent.name} subagent)`)
// 配置 agent 特定的工具权限
tools: {
todowrite: false,
todoread: false,
task: false, // 防止递归调用
...agent.tools, // agent 特定工具
}
4. 权限管理系统
每个 agent 都有细粒度的权限控制:
- edit: 文件编辑权限
- bash: 命令执行权限(可按命令模式配置)
- webfetch: 网络请求权限
5. 消息和状态管理
- 使用 Bus 系统 进行 agent 间的消息传递
- 通过 MessageV2.Event.PartUpdated 事件实时更新任务状态
- 支持任务中止机制
6. 配置化扩展
系统支持通过配置文件动态添加自定义 agent,包括:
- 自定义模型配置
- 专用系统提示词
- 特定工具权限
- 温度和 top_p 参数调整
架构优势
- 模块化: 每个 agent 专注于特定领域的任务
- 隔离性: 独立的会话确保任务间不互相干扰
- 可扩展性: 支持配置化添加新的 agent 类型
- 权限控制: 细粒度的权限管理确保安全性
- 实时通信: Bus 系统支持 agent 间的实时状态同步
这种架构实现了一个灵活、安全且可扩展的多 agent 系统,能够根据不同任务类型自动选择和调度合适的专业化 agent。
Sub-issues
Metadata
Metadata
Assignees
Labels
No labels