Logo
热心市民王先生

解决方案设计

技术研究 人工智能 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:自行实现简化版代理系统(不推荐)

如果用户有特殊需求需要自行实现,理论上可以通过以下方式:

实现思路

  1. 基于 CodeBuddy SDK:使用 CodeBuddy 提供的 Python/TypeScript SDK 创建自定义工具
  2. 包装器脚本:创建 shell 脚本包装 CodeBuddy 命令,添加自定义代理逻辑
  3. MCP 服务器:实现自定义 MCP(Model Context Protocol)服务器来扩展功能

为什么不推荐 Plan B

  1. 功能重复:CodeBuddy CLI 已经提供了完善的子代理系统,重新实现会造成功能重复
  2. 维护成本:自行实现需要持续维护,而 CodeBuddy 官方会不断更新 Sub-Agents 功能
  3. 生态隔离:自行实现的方案无法与 CodeBuddy 的插件生态、内置代理等集成
  4. 官方支持:使用原生功能可以获得官方文档、社区支持和持续更新

推荐结论

强烈建议使用 CodeBuddy CLI 的原生 Sub-Agents 功能,而不是自行实现。原生功能已经完全满足甚至超越了 OMO 的能力,且具有更好的稳定性、可维护性和生态支持。

参考资料