插件与技能概览
云雀 Agent 采用 插件 + 技能 双层架构。插件捆绑相关技能和领域提示词。
三种技能来源
| 来源 | 位置 | 加载方式 |
|---|---|---|
| Go 内置插件 | plugins/general/, plugins/education/ | 编译时注册 |
| 脚本插件 | data/plugins/ | 文件扫描 + 热重载 |
| 文件技能 | data/skills/ | SkillFileLoader 扫描 + 热重载 |
内置插件
通用 (plugins/general/)
| 技能 | 说明 |
|---|---|
| 网络搜索 | Brave/Tavily/SearXNG/DuckDuckGo 搜索 |
| 代码生成 | 生成和执行代码(E2B 云端优先,本地沙箱回退) |
| 图像生成 | DALL-E/SD 生成图像 |
| 翻译 | 多语言翻译 |
| 文档解析 | PDF、CSV、JSON、HTML 解析 |
| 浏览器 | 无头 Chrome 自动化 |
| 文件搜索 | 知识库文件搜索 |
| 桌面沙箱 | E2B Desktop 云端桌面 (VNC 流式访问,按租户隔离) |
教育 (plugins/education/)
| 技能 | 说明 |
|---|---|
| 课程规划 | 生成教案和学习路径 |
| 测验 | 创建测验和评估 |
| 评分 | 评估学生作业 |
脚本插件 (data/plugins/)
使用 Python/Node.js/Shell 编写的可执行插件:
data/plugins/
my-plugin/
plugin.json # 名称、描述、语言、技能列表
handler.py # Python 处理脚本- 自动扫描 + 5 秒间隔热重载
- 支持通过 Web UI 创建、编辑、删除
/v1/plugins/reload— 手动触发重载
文件技能 (data/skills/)
使用 SKILL.md 定义的 LLM 指令技能:
data/skills/
my-skill/
SKILL.md # (必须) LLM 指令文档
meta.json # (可选) 名称、描述、参数、标签
scripts/ # (可选) 辅助脚本
helper.py- SkillFileLoader 自动扫描 + 热重载
/v1/skills/scan— 手动触发扫描- 前端技能页面有扫描按钮
技能市场
通过 Web UI 从在线市场安装技能:
| 市场 | 说明 |
|---|---|
| ClawHub | 社区技能市场 |
| ToriHub | 官方精选技能 |
| GitHub | 从任意 owner/repo 安装 |
动态技能
Agent 在对话中可自动发现和创建新技能(SkillGrow),需用户审批后启用。
插件架构
go
type Plugin interface {
Name() string
Description() string
Skills() []Skill
SystemPrompt() string
}每个插件可以提供多个技能,以及一个 SystemPrompt() 作为领域上下文注入到 LLM 对话中。