AI Agent平台CoPaw源码学习——系统层级概览:05 技能与工具层

技能与工具层为 AI Agent 提供可执行的能力。工具(Tools)是原子级操作(如文件读写、Shell 执行),技能(Skills)是 Markdown 格式的指令集,描述复杂任务的执行方式。两者共同构成 Agent 的行动能力。
这是 CoPaw 系统的能力延伸层。
核心职责
-
工具提供:原子级操作能力(文件、Shell、浏览器等) -
技能扩展:复杂任务的指令集 -
技能管理:CRUD 操作和加载 -
技能市场:从远程 Marketplace 安装
核心组件
1. 内置工具
工具是 Agent 可以调用的原子级操作:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. 内置技能
技能是 Markdown 格式的指令集,描述复杂任务流程:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. Skills Manager(技能管理器)
路径:src/copaw/agents/skills_manager.py
职责:技能的 CRUD 管理和加载
三级目录系统:
-
内置技能 ( copaw/agents/skills/):随 pip 包分发的技能(只读) -
技能池 ( ~/.copaw/skill_pool/):本地共享技能池,从内置同步 -
工作区技能 ( <workspace>/skills/):各工作区自定义技能
技能加载流程:
内置技能 (package) ↓ ensure_skills_initialized() 同步技能池 (skill_pool) ↓ reconcile_workspace_manifest() 协调工作区 manifest (skill.json) ↓ resolve_effective_skills() 按渠道解析启用的技能列表 ↓ _register_skills() 注册到 AgentCoPawAgent.toolkit
关键函数说明:
-
ensure_skills_initialized():将内置技能同步到 skill_pool -
reconcile_workspace_manifest():管理工作区 skill.json 清单 -
resolve_effective_skills():根据渠道配置解析启用的技能
4. Skills Hub(技能市场)
路径:src/copaw/agents/skills_hub.py
职责:从在线 Marketplace 搜索和安装技能
5. Toolkit(工具包)
构建位置:CoPawAgent.__init__() 中
职责:注册所有可用工具(内置 + MCP),供 Agent ReAct 循环调用
关键代码路径
src/copaw/agents/├─ skills_manager.py # 技能管理器├─ skills_hub.py # 技能市场├─ tools/│ ├─ __init__.py # 工具导出│ ├─ shell.py # Shell 工具│ ├─ file_io.py # 文件 I/O│ ├─ file_search.py # 文件搜索(grep + glob)│ ├─ browser_control.py # 浏览器控制│ ├─ browser_snapshot.py # 浏览器截图│ ├─ desktop_screenshot.py # 桌面截图│ ├─ memory_search.py # 记忆搜索│ ├─ send_file.py # 发送文件│ ├─ get_current_time.py # 获取时间│ ├─ get_token_usage.py # Token 统计│ └─ view_media.py # 媒体查看(图片/视频)└─ skills/ ├─ __init__.py # 技能模块 ├─ browser_cdp/ # CDP 浏览器 ├─ browser_visible/ # 浏览器可视化 ├─ channel_message/ # 渠道消息 ├─ copaw_source_index/ # 源码索引 ├─ cron/ # 定时任务技能 ├─ dingtalk_channel/ # 钉钉技能 ├─ docx/ # Word 处理 ├─ file_reader/ # 文件读取 ├─ guidance/ # 安装配置指导 ├─ himalaya/ # 邮件处理 ├─ multi_agent_collaboration/ # 多 Agent 协作 ├─ news/ # 新闻摘要 ├─ pdf/ # PDF 处理 ├─ pptx/ # PPT 处理 └─ xlsx/ # Excel 处理
技术实现
工具实现:
-
每个工具是一个 Python 函数/类,注册到 AgentScope Toolkit -
工具定义包括名称、描述、参数说明 -
Agent 通过 function calling 调用工具
技能实现:
-
技能以 Markdown 文件形式存在(.md) -
描述任务流程和步骤指引 -
Agent 将技能内容注入系统提示词 -
支持多语言版本(en.md、zh.md)
扩展机制:
-
自定义技能:在工作区 skills/目录创建技能(如~/workspaces/<agent-id>/skills/) -
市场安装:通过 Skills Hub 从 Marketplace 安装到 skill_pool -
自动加载:Agent 初始化时通过 resolve_effective_skills()自动解析并加载启用的技能
与其他层的交互
上层依赖(被调用):
-
Agent 运行层:Agent 在 ReAct 循环中调用工具 -
API 路由层:Skills Router 管理技能
下层调用:
-
文件系统:工具直接操作本地文件 -
浏览器:Playwright 进行浏览器自动化 -
Shell:执行系统命令 -
记忆系统:Memory Search 工具查询记忆
重要设计细节
-
安全风险:工具执行有安全风险(Shell、文件操作),依赖用户本地环境的安全性
-
技能格式:技能文件使用 Markdown 格式,便于非开发者编写
-
加载优先级:技能加载顺序:内置 → 技能池 → 工作区(后者可覆盖前者)
-
MCP 工具:运行时动态注册,支持热重载
总结
技能与工具层是 CoPaw 系统的能力延伸:
-
14 个内置工具:覆盖文件、Shell、浏览器、截图、媒体查看等原子操作 -
15 个内置技能:覆盖 PDF、Office、浏览器、邮件、定时任务、多 Agent 协作等复杂任务 -
三级目录:内置 → 技能池 → 工作区,灵活扩展 -
技能市场:一键安装社区共享技能 -
MCP 集成:外部工具动态接入
这套机制让 Agent 不仅能「思考」,还能「执行」——读文件、写代码、操作浏览器、生成新闻摘要。工具是 Agent 的手,技能是 Agent 的技能包。
夜雨聆风