10.5 Opencode 多智能体协作实践
本节介绍如何在 Opencode 中配置和使用多智能体系统。
10.5.1 智能体路由实现
在 Opencode 中,路由通常通过系统提示词实现。主智能体根据用户输入判断应该调用哪个子智能体。
路由提示模板示例
你是金融服务协调智能体。根据用户请求,决定调用哪个专业子智能体。
可用子智能体:
1. fundamental-analyst:财务数据分析,适用于财报解读、财务指标计算
2. technical-analyst:技术面分析,适用于价格走势、交易信号
3. sentiment-analyst:市场情绪分析,适用于新闻舆情、社交媒体
用户请求:{user_query}
请分析用户意图,选择最合适的子智能体,并说明理由。基于意图的路由逻辑
当用户说”帮我分析茅台的财报”,主智能体识别出财报分析意图,调用 fundamental-analyst。
当用户说”茅台股价最近走势如何”,主智能体识别出技术分析意图,调用 technical-analyst。
10.5.2 子智能体配置
子智能体是带有 YAML frontmatter 的 Markdown 文件。
存储位置
项目级子智能体(推荐用于团队协作):
.opencode/agents/fundamental-analyst.md
.opencode/agents/technical-analyst.md用户级子智能体(适合个人跨项目使用):
~/.config/opencode/agents/debugging-specialist.md配置文件结构
# .opencode/agents/fundamental-analyst.md
---
name: fundamental-analyst
description: 当需要分析公司财务数据、解读财报时使用
tools: Read, Grep, Bash
model: sonnet
---
你是一位资深财务分析专家。
# 核心职责
1. 提取财务报表关键指标
2. 计算财务比率(ROE、资产负债率等)
3. 进行同比/环比分析
4. 评估财务健康状况
# 输出格式
## 财务健康度评分(1-10 分)
- 盈利能力:X 分
- 成长性:Y 分
- 财务安全:Z 分
## 关键发现
- [列举 2-3 个核心洞察]
## 估值判断
[低估/合理/高估]配置字段说明
| 字段 | 必需 | 说明 | 示例 |
|---|---|---|---|
| name | 是 | 唯一标识符,使用小写字母和连字符 | fundamental-analyst |
| description | 是 | 描述何时应该调用此子智能体 | 当需要分析财务数据时使用 |
| tools | 否 | 逗号分隔的工具列表 | Read, Grep, Bash |
| model | 否 | 指定使用的模型 | sonnet/haiku/opus |
description 字段是主智能体判断是否调用子智能体的关键。好的描述要清晰、具体、触发式。
好的示例:“当代码发生变更后,立即进行代码审查”
模糊的示例:“处理安全相关任务”
10.5.3 并行化实践
使用 Task 工具调用子智能体
Task 工具是 Opencode 多智能体架构的核心入口点。
Task 工具参数: - description:任务的简短描述(3-5 个词) - prompt:子智能体需要执行的具体任务内容
执行流程: 1. 主智能体识别任务需要委派 2. 调用 Task 工具,传入任务描述和提示词 3. 系统创建子智能体实例(在独立上下文中运行) 4. 子智能体执行任务,返回结果给主智能体 5. 主智能体整合结果,继续主线对话
示例:多分析师协作选股
用户:请分析贵州茅台是否值得投资
Opencode(主智能体):
我将组织分析师团队进行全方位评估。
[Task 1] fundamental-analyst 分析茅台财务数据
[Task 2] technical-analyst 分析茅台技术走势
[Task 3] sentiment-analyst 分析市场情绪
[等待三个子智能体完成]
[汇总分析结果]
基于三位分析师的报告,综合评估如下...真正的并行方案:Git Worktree
由于 Opencode 的 Task 工具是顺序执行的,如果需要真正的并行,可以使用 Git Worktree:
# 创建两个独立的工作树
git worktree add ../project-analysis-A -b task/analysis-A
git worktree add ../project-analysis-B -b task/analysis-B
# 在第一个终端
cd ../project-analysis-A
opencode
# 执行 A 股分析任务
# 在第二个终端
cd ../project-analysis-B
opencode
# 执行港股分析任务两个 Opencode 实例在完全隔离的环境中工作,不会相互干扰。
10.5.4 智能体间协作配置
基于文件的通信模式
在多智能体协作中,智能体之间不能直接对话,但可以通过文件传递信息。
任务状态文件
# tasks.md
## 待办任务
- [ ] 分析茅台财务数据(分配给:fundamental-analyst)
- [ ] 分析茅台技术走势(分配给:technical-analyst)
## 进行中
- [x] 收集基础数据(data-collector 完成)
## 已完成
- [x] 数据库表设计接口契约文件
# api-contract.md
## 子智能体输出格式
### fundamental-analyst 输出
{
"financial_score": 8.5,
"growth_rate": 12.3,
"recommendation": "buy/hold/sell"
}
### technical-analyst 输出
{
"trend": "up/down/sideways",
"signal": "buy/hold/sell",
"support_level": 1750,
"resistance_level": 2000
}审查反馈文件
# review-feedback.md
## 分析报告审查结果(2026-01-22)
### 需要修正
1. 财务数据缺少 2025 Q4 季报数据
2. 技术分析缺少成交量分析
### 建议改进
1. 增加同行业对比分析通过 AGENTS.md 共享持久化信息。项目级的关键信息应该写入 AGENTS.md,而不是依赖对话历史。所有 Opencode 实例都会读取 AGENTS.md,获得项目的全局知识。
上下文管理最佳实践
主对话保持高层次:主对话应该聚焦在高层次的规划和决策,把具体执行委派给子智能体
使用 /clear 和 /compact 管理上下文:当主对话上下文积累过多时,/clear 清空所有上下文重新开始,/compact 让 AI 总结当前会话压缩上下文
通过 /session 恢复会话:使用
/session命令可以恢复之前的对话会话