CoPaw 支持多智能体,允许您在同一个 CoPaw 实例中运行多个独立的 AI 智能体。
本功能在 v0.1.0 中引入。
本文档包含两部分内容:
- 多智能体工作区 - 如何创建和管理多个智能体,每个智能体拥有独立的配置、记忆、技能和对话历史
- 智能体间协作 - 如何启用协作技能,让智能体之间可以互相通信,共同完成复杂任务
简单来说,多智能体就是让您可以在一个 CoPaw 中运行多个"分身",每个分身:
- 有自己的性格和专长(通过不同的人设文件配置)
- 记住各自的对话(互不干扰)
- 使用不同的技能(一个擅长代码,一个擅长写作)
- 连接不同的频道(一个负责钉钉,一个负责 Discord)
就像您有多个助手,每个助手各司其职。
您可能需要:
- 一个日常助手 - 闲聊、查资料、记待办
- 一个代码助手 - 专注代码审查和开发
- 一个写作助手 - 专注文档撰写和润色
每个智能体专注自己的领域,互不干扰。
您可能在多个平台使用 CoPaw:
- 钉钉 - 工作相关对话
- Discord - 社区讨论
- 控制台 - 私人使用
不同平台的对话和配置完全隔离,不会混在一起。
您可能需要:
- 生产智能体 - 稳定配置,用于日常工作
- 测试智能体 - 实验新功能,不影响生产环境
这是最简单的方式,无需任何命令行操作。
启动 CoPaw 后,在控制台右上角可以看到智能体切换器:
┌───────────────────────────────────┐
│ 当前智能体 [默认智能体 ▼] (1) │
└───────────────────────────────────┘
点击下拉框可以:
- 查看所有智能体的名称和描述
- 切换到其他智能体
- 看到当前智能体的 ID
切换后,页面会自动刷新,显示新智能体的配置和数据。
进入设置 → 智能体管理页面:
- 点击"创建智能体"按钮
- 填写信息:
- 名称:给智能体起个名字(如"代码助手")
- 描述:说明这个智能体的专长和用途(重要)
- ID:留空自动生成,或自定义(如"coder")
- 点击"确定"
创建后,新智能体会出现在列表中,您可以立即切换过去使用。
重要提示:描述字段非常重要!如果您计划使用多智能体协作功能,请在描述中清晰说明这个智能体的专长领域和擅长的任务类型。例如:"专注于 Python/JavaScript 代码审查和重构优化"。智能体间协作时会读取这个描述来判断应该调用哪个智能体。
切换到某个智能体后,您可以为它单独配置:
- 频道 - 去"控制 → 频道"页面,启用/配置频道
- 技能 - 去"智能体 → 技能"页面,启用/禁用技能
- 工具 - 去"智能体 → 工具"页面,开关内置工具
- 人设 - 去"智能体 → 工作区"页面,编辑 AGENTS.md 和 SOUL.md
这些配置只影响当前智能体,不会影响其他智能体。
在设置 → 智能体管理页面:
- 点击"编辑"按钮修改智能体的名称和描述(修改描述后,系统会自动更新 PROFILE.md)
- 点击"删除"按钮移除智能体(默认智能体不能删除)
场景:您希望工作对话和私人对话分开。
配置:
-
在控制台创建两个智能体:
work- 工作助手personal- 私人助手
-
为
work智能体:- 启用钉钉频道
- 启用代码、文档相关技能
- 配置正式的人设(AGENTS.md)
-
为
personal智能体:- 启用 Discord 或控制台
- 启用娱乐、新闻相关技能
- 配置轻松的人设
使用:在钉钉聊天时自动使用 work 智能体,在 Discord 聊天时使用 personal 智能体。
场景:您希望有多个专业领域的助手。
配置:
-
创建三个智能体:
coder- 代码助手(启用代码审查、文件操作技能)writer- 写作助手(启用文档处理、新闻摘要技能)planner- 任务助手(启用定时任务、邮件技能)
-
根据需要切换到对应的智能体使用。
优点:每个智能体专注自己的领域,人设更精准,对话历史不会混淆。
场景:您需要中英文两个助手。
配置:
-
创建两个智能体:
zh-assistant- 中文助手(language: "zh")en-assistant- 英文助手(language: "en")
-
分别编辑它们的 AGENTS.md 和 SOUL.md 为对应语言。
使用:需要中文对话时切换到 zh-assistant,需要英文时切换到 en-assistant。
不一定。如果您的使用场景简单,只用默认智能体完全足够。
建议创建多个智能体的情况:
- 需要明确的功能分离(工作/生活、开发/写作等)
- 连接多个平台,希望每个平台有独立的对话历史
- 需要测试新配置,不想影响日常使用的智能体
不会。每个智能体的对话历史都是独立保存的,切换只是改变当前查看的智能体。
不会。智能体只在使用时才调用 LLM,闲置的智能体不会产生费用。
可以。如果您在钉钉和 Discord 都配置了不同的智能体,它们可以同时响应各自频道的消息。
在控制台的"设置 → 智能体管理"页面点击删除按钮。
注意:删除后工作区目录会保留(防止误删数据),如需彻底清理,请手动删除 ~/.copaw/workspaces/{agent_id} 目录。
不建议删除。default 智能体是系统的默认后备,删除可能导致兼容性问题。
全局共享:
- 模型提供商配置(API Key、模型选择)
- 环境变量(TAVILY_API_KEY 等)
独立配置:
- 频道配置
- 技能启用状态
- 对话历史
- 定时任务
- 人设文件
如果您之前使用 CoPaw v0.0.x,升级到 v0.1.0 时会自动迁移:
-
首次启动时自动迁移
- 旧的配置和数据会自动移动到
default智能体工作区 - 您无需手动操作任何文件
- 旧的配置和数据会自动移动到
-
验证迁移
- 启动 CoPaw 后,在控制台查看智能体列表
- 应该能看到一个名为"默认智能体"的智能体
- 您的旧对话和配置都应该还在
-
备份建议 升级前备份工作目录:
cp -r ~/.copaw ~/.copaw.backup
智能体之间可以互相通信和协作,完成单个智能体难以完成的复杂任务。
多智能体协作(Multi-Agent Collaboration) 是一个内置技能,启用后,您的智能体可以:
- 请求其他智能体的专业能力(如让代码智能体审查代码,让写作智能体润色文档)
- 访问其他智能体的工作区数据(如读取另一个智能体的配置或文件)
- 寻求第二意见或专业复核
- 在用户明确要求时调用指定的智能体
- 切换到需要启用协作的智能体
- 进入智能体 → 技能页面
- 找到 Multi-Agent Collaboration(多智能体协作) 技能
- 勾选启用
- 点击"保存"
# 为默认智能体启用
copaw skills config
# 为特定智能体启用
copaw skills config --agent-id abc123
# 在交互界面中:
# - 使用 ↑/↓ 键找到 "multi_agent_collaboration"
# - 按空格键勾选
# - 按回车键确认保存启用协作技能后,智能体会在以下情况自动发起协作:
用户在对话中直接要求调用其他智能体:
示例:
用户:请让代码助手帮我审查这段代码
当前智能体会:
- 识别到用户要求调用"代码助手"
- 查询可用智能体列表
- 向"代码助手"发送审查请求
- 等待"代码助手"返回结果
- 将结果整合后回复用户
智能体在处理任务时,如果判断需要其他智能体的专业能力,会主动发起协作:
示例:
用户:帮我生成一份技术文档并用专业语言润色
当前智能体的处理流程:
1. [生成技术文档初稿]
2. [判断:润色需要写作专长,调用写作助手]
3. [将初稿发送给写作助手]
4. [接收写作助手返回的润色版本]
5. [返回最终文档给用户]
用户:请分析我的项目结构并生成架构文档
流程:
1. 代码智能体分析项目结构
2. 代码智能体调用写作智能体
3. 写作智能体生成专业文档
4. 代码智能体返回最终结果
用户:这段代码有什么问题?让资深助手也看看
流程:
1. 当前智能体先分析代码
2. 识别用户要求"资深助手"参与
3. 调用"资深助手"进行复核
4. 综合两方意见返回给用户
用户:把财务智能体的月度报告发给我
流程:
1. 当前智能体识别需要"财务智能体"的数据
2. 向财务智能体请求月度报告
3. 接收报告数据
4. 格式化后发送给用户
- 专业分工:每个智能体专注自己的领域,协作时发挥各自优势
- 上下文隔离:不同智能体的对话历史互不干扰,避免混淆
- 灵活组合:根据任务需要动态组合不同智能体的能力
- 可扩展性:添加新智能体即可扩展整个系统的能力
为了让智能体间协作更有效,需要为每个智能体提供清晰的描述信息。
当智能体 A 需要与智能体 B 协作时,会先查询可用智能体列表。系统会读取并展示每个智能体的:
- 名称(name)- 智能体的显示名称
- ID(agent_id)- 唯一标识符
- 描述(description)- 用户在创建智能体时填写的专长和用途说明
- PROFILE.md(自动生成)- 系统根据智能体的配置自动生成的详细能力描述
在创建智能体时,描述字段应清晰说明:
✅ 好的描述示例:
专注于 Python/JavaScript 代码审查、重构和性能优化
负责文档撰写、内容润色和技术写作,擅长中英文双语
处理财务数据分析、报表生成和预算管理
❌ 不好的描述示例:
我的助手
测试用
(留空)
描述的关键要素:
- 明确的专长领域(如"代码审查"、"文档撰写")
- 具体的技能范围(如"Python/JavaScript"、"中英文双语")
- 擅长的任务类型(如"重构优化"、"数据分析")
系统会根据智能体的配置(包括名称、描述、技能、人设文件等)自动生成 PROFILE.md 文件,存放在工作区目录:
~/.copaw/workspaces/{agent_id}/PROFILE.md
您可以在智能体 → 工作区页面查看自动生成的 PROFILE.md。
使用 CLI 查看所有智能体的信息:
copaw agents list
# 输出示例:
# Agent ID: code_reviewer
# Name: 代码审查助手
# Description: 专注于 Python/JavaScript 代码审查、重构和性能优化
# Workspace: ~/.copaw/workspaces/code_reviewer
# Profile: [自动生成的详细能力描述]智能体在协作时会综合参考 Description 和 PROFILE.md 来做出决策。
- 需要先启用 skill:协作功能需要显式启用"多智能体协作"技能
- 填写清晰的描述:创建智能体时,在描述字段清晰说明其专长和擅长的任务类型
- 系统自动生成 Profile:PROFILE.md 由系统自动生成,无需手动编写
- 自动化处理:启用后,智能体会根据需要自动发起协作,用户无需手动操作
- 性能考虑:协作涉及多个智能体,可能需要更多时间和 API 调用
- 合理规划:建议根据实际需求创建 3-5 个智能体,避免过度复杂化
如果您不熟悉命令行或 API,可以跳过这部分。所有功能都可以在控制台中完成。
智能体在启用协作技能后,会在后台自动使用以下 CLI 命令:
copaw agents list此命令会列出所有已配置的智能体,包括:
- Agent ID:智能体的唯一标识
- Name:智能体名称
- Description:用户创建智能体时填写的专长和用途说明
- Workspace:工作区路径
- Profile:系统自动生成的
PROFILE.md文件内容(如果存在)
示例输出:
Agent ID: code_reviewer
Name: 代码审查助手
Description: 专注于 Python/JavaScript 代码审查、重构和性能优化
Workspace: ~/.copaw/workspaces/code_reviewer
Profile: [自动生成的详细能力描述,基于配置和人设文件]
Agent ID: writer_bot
Name: 写作助手
Description: 负责文档撰写、内容润色和技术写作,擅长中英文双语
Workspace: ~/.copaw/workspaces/writer_bot
Profile: [自动生成的详细能力描述]
智能体在决定调用哪个智能体时,会综合参考 Description 和 Profile 来做出最佳选择。
# 发起新对话
copaw agents chat \
--from-agent <current_agent> \
--to-agent <target_agent> \
--text "请求内容"
# 多轮对话(保持上下文)
copaw agents chat \
--from-agent <current_agent> \
--to-agent <target_agent> \
--session-id "<session_id>" \
--text "继续请求"说明:这些命令由智能体自动执行,通常无需用户手动调用。详见 CLI - 智能体。
所有支持多智能体的 CLI 命令都接受 --agent-id 参数(默认为 default):
# 查看特定智能体的配置
copaw channels list --agent-id abc123
copaw cron list --agent-id abc123
copaw skills list --agent-id abc123
# 为特定智能体创建定时任务
copaw cron create \
--agent-id abc123 \
--type agent \
--name "检查待办" \
--cron "0 9 * * *" \
--channel console \
--target-user "user1" \
--target-session "session1" \
--text "我有什么待办事项?"支持 --agent-id 的命令:
copaw channels- 频道管理copaw cron- 定时任务copaw daemon- 运行状态copaw chats- 对话管理copaw skills- 技能管理
不支持 --agent-id 的命令(全局操作):
copaw init- 初始化copaw providers- 模型提供商copaw models- 模型配置copaw env- 环境变量
| 端点 | 方法 | 说明 |
|---|---|---|
/api/agents |
GET | 列出所有智能体 |
/api/agents |
POST | 创建新智能体 |
/api/agents/{agent_id} |
GET | 获取智能体详情 |
/api/agents/{agent_id} |
PUT | 更新智能体配置 |
/api/agents/{agent_id} |
DELETE | 删除智能体 |
/api/agents/{agent_id}/active |
POST | 激活智能体 |
所有智能体专属的 API 都支持 X-Agent-Id HTTP 头:
# 获取特定智能体的对话列表
curl -H "X-Agent-Id: abc123" http://localhost:7860/api/chats
# 为特定智能体创建定时任务
curl -X POST http://localhost:7860/api/cron/jobs \
-H "X-Agent-Id: abc123" \
-H "Content-Type: application/json" \
-d '{ ... }'支持 X-Agent-Id 的 API 端点:
/api/chats/*- 对话管理/api/cron/*- 定时任务/api/config/*- 频道和心跳配置/api/skills/*- 技能管理/api/tools/*- 工具管理/api/mcp/*- MCP 客户端管理/api/agent/*- 工作区文件和记忆
如果您需要直接编辑配置文件:
~/.copaw/
├── config.json # 包含所有配置
├── chats.json
├── jobs.json
├── AGENTS.md
└── ...
~/.copaw/
├── config.json # 全局配置(providers, agents.profiles)
└── workspaces/
├── default/ # 默认智能体工作区
│ ├── agent.json # 智能体专属配置
│ ├── chats.json
│ ├── jobs.json
│ ├── AGENTS.md
│ └── ...
└── abc123/ # 其他智能体
└── ...
✅ 推荐:3-5 个智能体,按主要功能或平台分类 ❌ 不推荐:为每个小功能都创建智能体
过多智能体会增加管理复杂度,得不偿失。
✅ 好的命名:
default- 默认智能体work-assistant- 工作助手code-reviewer- 代码审查助手
❌ 不好的命名:
abc123- 无意义的随机字符test1,test2- 不清楚用途
重要智能体的工作区建议定期备份:
# 备份特定智能体
cp -r ~/.copaw/workspaces/abc123 ~/backups/agent-abc123-$(date +%Y%m%d)
# 备份所有智能体
cp -r ~/.copaw/workspaces ~/backups/workspaces-$(date +%Y%m%d)