乐于分享
好东西不私藏

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

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

技能与工具层为 AI Agent 提供可执行的能力。工具(Tools)是原子级操作(如文件读写、Shell 执行),技能(Skills)是 Markdown 格式的指令集,描述复杂任务的执行方式。两者共同构成 Agent 的行动能力。

这是 CoPaw 系统的能力延伸层。


核心职责

  1. 工具提供:原子级操作能力(文件、Shell、浏览器等)
  2. 技能扩展:复杂任务的指令集
  3. 技能管理:CRUD 操作和加载
  4. 技能市场:从远程 Marketplace 安装

核心组件

1. 内置工具

工具是 Agent 可以调用的原子级操作:

工具名
文件路径
功能
Shell 执行
agents/tools/shell.py
执行 Shell 命令
File I/O
agents/tools/file_io.py
文件读写操作
File Search
agents/tools/file_search.py
文件搜索(grep + glob)
Browser Control
agents/tools/browser_control.py
浏览器自动化控制
Browser Snapshot
agents/tools/browser_snapshot.py
浏览器页面截图
Desktop Screenshot
agents/tools/desktop_screenshot.py
桌面截图(mss)
Memory Search
agents/tools/memory_search.py
搜索记忆系统
Send File
agents/tools/send_file.py
通过渠道发送文件
Get Current Time
agents/tools/get_current_time.py
获取当前时间
Set User Timezone
agents/tools/get_current_time.py
设置用户时区
Get Token Usage
agents/tools/get_token_usage.py
获取 Token 统计
View Image
agents/tools/view_media.py
查看图片
View Video
agents/tools/view_media.py
查看视频

2. 内置技能

技能是 Markdown 格式的指令集,描述复杂任务流程:

技能名
目录路径
功能
Browser CDP
agents/skills/browser_cdp/
CDP 模式浏览器控制
Browser Visible
agents/skills/browser_visible/
可视化浏览器操作
Channel Message
agents/skills/channel_message/
渠道消息处理
Copaw Source Index
agents/skills/copaw_source_index/
源码索引查询
Cron
agents/skills/cron/
定时任务管理技能
DingTalk Channel
agents/skills/dingtalk_channel/
钉钉渠道交互技能
DOCX
agents/skills/docx/
Word 文档处理
File Reader
agents/skills/file_reader/
通用文件读取
Guidance
agents/skills/guidance/
安装与配置指导
Himalaya
agents/skills/himalaya/
邮件处理(Himalaya)
Multi Agent Collaboration
agents/skills/multi_agent_collaboration/
多 Agent 协作
News
agents/skills/news/
新闻摘要生成
PDF
agents/skills/pdf/
PDF 文件处理
PPTX
agents/skills/pptx/
PPT 文件处理
XLSX
agents/skills/xlsx/
Excel 文件处理

3. Skills Manager(技能管理器)

路径:src/copaw/agents/skills_manager.py

职责:技能的 CRUD 管理和加载

三级目录系统

  1. 内置技能 (copaw/agents/skills/):随 pip 包分发的技能(只读)
  2. 技能池 (~/.copaw/skill_pool/):本地共享技能池,从内置同步
  3. 工作区技能 (<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 工具查询记忆

重要设计细节

  1. 安全风险:工具执行有安全风险(Shell、文件操作),依赖用户本地环境的安全性

  2. 技能格式:技能文件使用 Markdown 格式,便于非开发者编写

  3. 加载优先级:技能加载顺序:内置 → 技能池 → 工作区(后者可覆盖前者)

  4. MCP 工具:运行时动态注册,支持热重载


总结

技能与工具层是 CoPaw 系统的能力延伸:

  • 14 个内置工具:覆盖文件、Shell、浏览器、截图、媒体查看等原子操作
  • 15 个内置技能:覆盖 PDF、Office、浏览器、邮件、定时任务、多 Agent 协作等复杂任务
  • 三级目录:内置 → 技能池 → 工作区,灵活扩展
  • 技能市场:一键安装社区共享技能
  • MCP 集成:外部工具动态接入

这套机制让 Agent 不仅能「思考」,还能「执行」——读文件、写代码、操作浏览器、生成新闻摘要。工具是 Agent 的手,技能是 Agent 的技能包。