解决方案设计
技术研究 人工智能 AI Agent
CodeBuddy CLI 的子代理采用 Markdown 文件格式,结合 YAML frontmatter 进行配置: ```markdown
结论:CodeBuddy CLI 原生支持类似 OMO 的功能
基于第二章的核心能力验证,CodeBuddy CLI 已经原生支持类似 “Oh My OpenCode” 的子代理功能,用户无需自行实现。本章将详细介绍如何使用 CodeBuddy CLI 的 Sub-Agents 功能来实现与 OMO 相同的工作流程。
Plan A:使用 CodeBuddy CLI 原生 Sub-Agents(推荐方案)
1. 子代理配置架构
CodeBuddy CLI 的子代理采用 Markdown 文件格式,结合 YAML frontmatter 进行配置:
---
name: your-sub-agent-name
description: 描述何时应该调用此子代理
tools: tool1, tool2, tool3 # 可选 - 省略则继承所有工具
model: gpt-5.1-codex # 可选 - 指定模型或 'inherit'
permissionMode: default # 可选 - 权限模式
skills: skill1, skill2 # 可选 - 自动加载的技能
---
子代理的系统提示词内容...
2. 创建子代理的三种方式
方式一:使用 /agents 命令(推荐)
CodeBuddy CLI 提供了交互式的子代理管理界面:
/agents
通过此命令可以:
- 查看所有可用子代理(内置、用户、项目、插件)
- 创建新的子代理(引导式设置)
- 编辑现有自定义子代理
- 删除自定义子代理
- 管理工具权限(显示所有可用工具的完整列表)
方式二:直接创建 Markdown 文件
项目级子代理:
mkdir -p .codebuddy/agents
cat > .codebuddy/agents/code-reviewer.md << 'EOF'
---
name: code-reviewer
description: 专家代码审查员。主动审查代码质量、安全性和可维护性。在编写或修改代码后立即使用。
tools: Read, Grep, Glob, Bash
model: inherit
---
你是一位高级代码审查员,确保高标准的代码质量和安全性。
被调用时:
1. 运行 git diff 查看最近的变更
2. 聚焦修改的文件
3. 立即开始审查
审查清单:
- 代码简单且可读
- 函数和变量命名良好
- 没有重复代码
- 适当的错误处理
- 没有暴露的密钥或 API 密钥
- 实现了输入验证
- 良好的测试覆盖率
- 考虑了性能问题
按优先级组织反馈:
- 关键问题(必须修复)
- 警告(应该修复)
- 建议(考虑改进)
包含如何修复问题的具体示例。
EOF
用户级子代理:
mkdir -p ~/.codebuddy/agents
# 创建方式与项目级相同,只是目录位置不同
方式三:CLI 动态定义
通过 --agents 参数动态定义子代理:
codebuddy --agents '{
"code-reviewer": {
"description": "专家代码审查员。在代码变更后主动使用。",
"prompt": "你是一位高级代码审查员。专注于代码质量、安全性和最佳实践。",
"tools": ["Read", "Grep", "Glob", "Bash"],
"model": "gemini-3.0-flash"
}
}'
3. 使用子代理
自动委托
CodeBuddy Code 会根据以下因素主动委托任务:
- 用户请求中的任务描述
- 子代理配置中的
description字段 - 当前上下文和可用工具
技巧:在 description 字段中包含 “主动使用(use PROACTIVELY)” 或 “必须使用(MUST BE USED)” 等短语,可以鼓励更主动的子代理使用。
显式调用
用户可以通过自然语言指令显式调用特定子代理:
> 使用 code-reviewer 子代理检查我最近的变更
> 让 debugger 子代理调查这个错误
> 让 architecture-agent 分析这个模块的设计
4. 高级功能
背景代理
对于长时间运行的任务,可以在后台运行子代理:
> 在后台运行 code-analyzer 代理来审查整个代码库
背景代理立即返回任务 ID,不阻塞主对话。可以使用 TaskOutput 工具查询状态:
> 检查后台任务 task-abc123 的状态
恢复代理会话
子代理可以被恢复以继续之前的对话:
# 初始调用
> 使用 code-analyzer 代理开始审查认证模块
[代理返回 agentId: "abc123"]
# 恢复会话
> 恢复代理 abc123,现在分析授权逻辑
代理链式调用
可以串联多个子代理处理复杂工作流:
> 首先使用 code-analyzer 子代理查找性能问题,然后使用 optimizer 子代理修复它们
5. 架构图
graph TB
User[用户] -->|输入请求| MainAgent[主代理<br/>CodeBuddy Code]
MainAgent -->|自动/显式委托| SubAgent1[项目级子代理<br/>.codebuddy/agents/]
MainAgent -->|自动/显式委托| SubAgent2[用户级子代理<br/>~/.codebuddy/agents/]
MainAgent -->|自动/显式委托| SubAgent3[插件代理<br/>插件 agents/ 目录]
MainAgent -->|自动/显式委托| BuiltIn[内置代理<br/>General-Purpose/Plan/Explore]
SubAgent1 -->|返回结果| MainAgent
SubAgent2 -->|返回结果| MainAgent
SubAgent3 -->|返回结果| MainAgent
BuiltIn -->|返回结果| MainAgent
MainAgent -->|响应| User
style MainAgent fill:#f9f,stroke:#333,stroke-width:2px
style User fill:#bbf,stroke:#333,stroke-width:2px
Plan B:自行实现简化版代理系统(不推荐)
如果用户有特殊需求需要自行实现,理论上可以通过以下方式:
实现思路
- 基于 CodeBuddy SDK:使用 CodeBuddy 提供的 Python/TypeScript SDK 创建自定义工具
- 包装器脚本:创建 shell 脚本包装 CodeBuddy 命令,添加自定义代理逻辑
- MCP 服务器:实现自定义 MCP(Model Context Protocol)服务器来扩展功能
为什么不推荐 Plan B
- 功能重复:CodeBuddy CLI 已经提供了完善的子代理系统,重新实现会造成功能重复
- 维护成本:自行实现需要持续维护,而 CodeBuddy 官方会不断更新 Sub-Agents 功能
- 生态隔离:自行实现的方案无法与 CodeBuddy 的插件生态、内置代理等集成
- 官方支持:使用原生功能可以获得官方文档、社区支持和持续更新
推荐结论
强烈建议使用 CodeBuddy CLI 的原生 Sub-Agents 功能,而不是自行实现。原生功能已经完全满足甚至超越了 OMO 的能力,且具有更好的稳定性、可维护性和生态支持。
参考资料
- CodeBuddy CLI Sub-Agents 文档 - 官方详细文档
- CodeBuddy CLI SDK 文档 - SDK 快速入门
- CodeBuddy CLI 插件文档 - 插件和插件代理