AgentHarness 课程
CodeBuddy 专题/12

Subagents 子代理

agentic模式manual模式专业化分工独立上下文

引言:专业化分工的力量

在复杂项目中,一个通用的 AI Agent 往往难以胜任所有任务。CodeBuddy 的 Subagents 系统允许你创建专门的 AI 助手,每个助手专注于特定领域(如代码审查、调试、数据分析),配合自定义的 System Prompt 和 Tools,比通用 Agent 更精准高效。

本章将深入讲解 Subagents 的核心概念、两种模式、配置方法和最佳实践。


1. Subagents 核心概念

1.1 什么是 Subagents

官方定义:Subagents 是专门的 AI 助手,可以用来处理特定类型的任务。

与通用 Agent 的区别

维度通用 Agent (Craft)Subagents
能力范围通用,什么都能做专注特定领域
配置固定配置自定义 System Prompt、Tools、MCP
上下文共享主会话独立上下文窗口(agentic模式)
适用场景日常开发特定任务(审查、调试、数据分析)

1.2 Subagents 的核心优势

  1. 专业化分工:每个 Subagent 专注于特定领域,配合自定义配置,比通用 Agent 更精准高效
  2. 灵活的权限控制:仅授予必要的 Tools,避免权限滥用
  3. 跨项目复用:user 级别的 Subagent 在所有项目中生效
  4. 独立上下文:agentic 模式下,Subagent 有独立的上下文窗口,不会污染主会话

2. 两种模式详解

2.1 agentic 模式(自动调用)

特点

  • 由主 Agent(Craft Agent)自动判断调用时机
  • 拥有独立上下文窗口,执行时不会污染主会话
  • 调用时不能中途干预,只能等待完成或手动中断

适用场景

  • 代码审查(自动触发)
  • 安全扫描(自动触发)
  • 文档生成(自动触发)

配置示例

---
name: code-reviewer
description: Use this agent when you need to review code changes, check for bugs, or validate code quality.
model: glm-4.6
tools: WebFetch, WebSearch
agentMode: agentic
enabled: true
enabledAutoRun: true
---
You are a code review expert. When reviewing code:
1. Check for potential bugs and security issues
2. Verify coding standards compliance
3. Suggest improvements for readability and performance
4. Provide actionable feedback

2.2 manual 模式(手动替代)

特点

  • 允许用户手动选择并完全替代主 Agent
  • 适用于需要深度定制交互流程的专业场景
  • 创建完成后,可在 Agent 选择框中选中使用

适用场景

  • 特定领域的深度对话
  • 自定义工作流程
  • 专业任务(如数据分析、报告生成)

配置示例

---
name: data-analyst
enabled: true
agentMode: manual
tools: WebFetch, WebSearch
enabledAutoRun: true
---
You are a data analysis expert. When analyzing data:
1. Clean and validate the data
2. Perform statistical analysis
3. Generate visualizations
4. Provide insights and recommendations

3. 作用范围与存储

3.1 两个级别

级别存储位置作用范围适用场景
project.codebuddy/agents/当前工作区项目特定的 Subagent
user~/.codebuddy/agents/所有项目个人通用的 Subagent

3.2 跨项目复用

user 级别的 Subagent 在所有项目中生效,一次配置即可在多个项目中使用并与团队共享。


4. 创建 Subagents

4.1 通过 IDE 创建(推荐)

  1. 打开 CodeBuddy IDE 设置页
  2. 切换到 Agent 标签页
  3. 点击「Create Agent」按钮
  4. 选择模式(agentic 或 manual)
  5. 填写配置信息

注意

  • 选中 User Agent Tab 会创建 user 级别的 Subagent
  • 选中 Project Agent Tab 会创建 project 级别的 Subagent

4.2 通过文件创建

Subagents 在本地存储为 Markdown 文件,也可以直接在对应路径下创建文件:

# project 级别
mkdir -p .codebuddy/agents
cat > .codebuddy/agents/my-agent.md << 'EOF'
---
name: my-agent
description: My custom agent
agentMode: agentic
enabled: true
---
Your system prompt here...
EOF

# user 级别
mkdir -p ~/.codebuddy/agents
cat > ~/.codebuddy/agents/my-agent.md << 'EOF'
---
name: my-agent
description: My custom agent
agentMode: manual
enabled: true
---
Your system prompt here...
EOF

5. 配置字段详解

5.1 YAML Frontmatter 字段

字段说明agenticmanual
name唯一标识RequiredRequired
description用途描述RequiredOptional
agentMode模式选择agenticmanual
enabled是否启用OptionalOptional
enabledAutoRun自动运行OptionalOptional
model使用的模型OptionalOptional
tools内置工具列表OptionalOptional

5.2 Markdown Body

Markdown body 是 Subagent 的 System Prompt,定义了它的行为规范。

编写建议

  1. 角色定义:明确 Subagent 的专业领域
  2. 工作流程:定义处理任务的步骤
  3. 约束条件:设置行为边界

6. 最佳实践

6.1 Description 编写建议

  • 指定专长:明确 Subagent 擅长什么
  • 定义范围:说明适用场景
  • 触发条件:描述何时应该被调用

示例

description: Use this agent when you need to review code changes, check for bugs, or validate code quality. Examples:
- User: 'Review this PR' → Use code-reviewer
- User: 'Check for security issues' → Use code-reviewer

6.2 System Prompt 编写建议

  • 角色定义:You are a [专业领域] expert
  • 工作流程:When [场景], you should: 1. ... 2. ... 3. ...
  • 约束条件:Always/Never ...

6.3 Tools 选择建议

  • 仅添加必要的 Tools
  • 避免授予过多权限
  • 根据任务需求选择内置工具和 MCP Server

7. 常见问题

7.1 agentic 模式下如何干预?

agentic 模式下,Subagent 的调用是不能中途干预的。只有两种情况:

  1. 等待 Subagent 完成任务后将结果返回给主 Agent
  2. 直接手动中断当前的对话

7.2 如何选择 agentic 还是 manual?

  • agentic:适合自动化任务,如代码审查、安全扫描
  • manual:适合需要深度交互的任务,如数据分析、报告生成

7.3 project 和 user 级别如何选择?

  • project:项目特定的 Subagent,如项目特定的代码规范检查
  • user:个人通用的 Subagent,如通用的代码审查

总结

Subagents 是 CodeBuddy 的专业化分工机制,通过创建专门的 AI 助手来提升任务处理效果。掌握两种模式(agentic/manual)和两个级别(project/user),能让你的开发效率大幅提升。

金句:Subagents 的核心价值是专业化分工——让每个 AI 助手专注于自己擅长的领域。