该设计采用了Hub-and-Spoke (星型/中枢型) 多智能体模式,强调中央管控与专业分工,并引入了“反思(Thinking)”机制以增强系统的鲁棒性。
本系统采用 Hub-and-Spoke (中枢-辐条) 多智能体架构。系统由一个核心的 Conductor Agent (指挥家) 负责全局调度,协调多个功能单一的 Sub-Agents (子智能体) 完成具体的代码分析与编写任务。
- 集中决策,分布执行:Conductor 掌握上下文全貌,Sub-Agents 专注具体领域的执行。
- 规划-执行-评估循环:Conductor 动态维护任务列表,根据 Sub-Agent 的反馈调整后续计划。
- 自我修正机制:通过 Thinking 工具,在执行受阻时强制进入反思模式,避免死循环。
定位:项目经理 + 技术主管 (Tech Lead)。它是唯一直接与用户交互的 Agent。
核心职责:
- 任务分析 (Task Analysis):解析用户模糊的需求,拆解为一系列具体的、可执行的 TODO 列表。
- 上下文管理 (Context Management):维护全局状态(哪些文件被修改了,当前任务进度,环境依赖等)。
- 任务委派 (Delegation):根据 TODO 类型,唤起
Repo-Agent或Coding-Agent。 - 结果评审 (Review & React):
- 接收 Sub-Agent 的返回结果。
- Accept:标记当前 TODO 完成,推进下一个。
- Reject/Refine:如果结果不符合预期或引入新 Bug,生成新的修正任务重新委派。
定位:资深架构师/代码审计员。只读模式,不修改代码。
核心职责:
- 代码检索:根据自然语言描述找到相关的代码文件、函数或类定义。
- 依赖分析:分析改动可能影响的依赖链。
- 上下文提供:为 Coding-Agent 准备必要的背景知识(如:找出定义了
User类的文件路径)。
定位:高级开发工程师。拥有文件系统的读写权限。
核心职责:
- 代码编写:执行具体的增删改操作。
- 验证与测试:编写并运行测试用例,验证改动有效性。
- 错误修复:遇到报错时,利用 Thinking 工具进行自我修正。
工具分为三类:基础工具 (Shared)、反思工具 (Cognitive) 和 专用工具 (Specialized)。
所有 Agent (Conductor 可见只读部分) 均可调用的基础能力。
read_file(file_path): 读取文件内容。list_dir(dir_path): 查看目录结构。code_search(query): 语义或关键词搜索代码库 (基于 grep 或 向量数据库)。
名称:thinking
适用场景:当 Sub-Agent 执行出错(如编译失败、测试不通过、找不到文件)时,强制优先调用此工具。
输入:
error_message: 错误信息。current_action: 导致错误的操作。observation: 当前的观察结果。 行为: 并不直接执行外部操作,而是生成一段“思维链 (Chain of Thought)”日志,分析错误原因,提出 2-3 种解决方案,并选择最优解。 作用:打破 Agent 遇到报错盲目重试的死循环。
get_file_tree(depth):以此生成项目的整体结构树。find_references(symbol): 查找某个类或函数的引用位置。
你提到的 Coding Agent 需要更多工具来完成闭环开发:
-
文件修改类:
write_file(file_path, content): 创建或全量覆盖文件。apply_patch(file_path, diff_content): (推荐) 使用 unified diff 格式修改文件,比全量覆盖更节省 Token 且精准。- 或者
search_replace_in_file(file_path, search_block, replace_block): 精确查找替换代码块。
-
环境执行类 (Execution Tools):
run_shell_command(command): (核心) 执行 shell 命令。用于安装依赖 (pip install), 运行测试 (pytest), 运行 Linter (eslint)。- 安全限制:需设置白名单或沙箱环境,禁止
rm -rf /等高危命令。
-
代码质量与调试类:
run_linter(file_path): 静态代码分析,提前发现语法错误。syntax_check(code_snippet, language): 检查代码片段语法是否正确(在写入文件前预检)。
- User: "请把项目中的登录验证从 Session 改为 JWT。"
- Conductor:
- 调用
Repo-Agent获取仓库信息、项目结构、依赖列表、目录树等。 - 生成 Plan/Todo:
- [Coding] 修改 auth.py 实现 JWT 生成。
- [Coding] 修改 middleware.py 验证 JWT。
- [Coding] 运行测试验证。
- 调用
- Conductor: 委派任务 "找到处理登录逻辑的代码"。
- Repo-Agent:
- 调用
code_search("login auth session")。 - 发现
src/auth.py和src/routes/login.py。 - 返回分析结果给 Conductor。
- 调用
- Conductor: 委派任务 "修改 src/auth.py 实现 JWT 生成"。
- Coding-Agent:
- 调用
read_file("src/auth.py")。 - 生成修改后的代码。
- 调用
apply_patch修改文件。 - Self-Correction Loop:
- Agent 主动调用
run_shell_command("pytest tests/test_auth.py")。 - 结果: Failed.
ImportError: No module named 'jwt'. - Action: Agent 调用
thinking。- Think: "我修改了代码但忘记安装依赖。我需要先安装库。"
- Action: 调用
run_shell_command("pip install pyjwt")。 - Action: 再次运行测试 -> Passed。
- Agent 主动调用
- 返回结果 "Success" 给 Conductor。
- 调用
- Conductor: 检查 Coding-Agent 的输出。
- Decision: 既然测试通过,标记 Todo 完成。继续下一项。
为了保证 Conductor 能够有效指挥,Prompt 中需要维护以下结构化信息:
{
"project_summary": "简短的项目描述",
"task_list": [
{"id": 1, "desc": "定位登录代码", "status": "done", "result": "位于 src/auth.py"},
{"id": 2, "desc": "实现 JWT 逻辑", "status": "in_progress", "assigned_to": "Coding-Agent"}
],
"knowledge_graph": {
"modified_files": ["src/auth.py"],
"new_dependencies": ["pyjwt"]
},
"last_error": null
}该设计通过 Conductor 保证了任务的逻辑连贯性,通过 Repo-Agent 提高了信息检索的准确度,通过 Coding-Agent 配合 Thinking Tool 和 Execution Tools 实现了具备自我纠错能力的自动化编码。这种架构极大地降低了单一 Agent 因上下文过长而“迷失”的风险。