技能系统
CountBot 的技能系统是一套可热加载的能力目录。技能既可以是内置能力,也可以是工作空间里的自定义能力。
目录结构
技能统一从工作空间加载:
workspace/
├── .skills_config.json
└── skills/
├── agent-browser/
├── agent-team-manager/
├── baidu-search/
├── cron-manager/
├── email/
├── find-skills/
├── image-analysis/
├── image-gen/
├── map/
├── news/
├── skill-creator/
├── terminal-session/
├── weather/
└── web-design/
每个技能目录包含:
SKILL.md— 技能说明与操作规范(必需)scripts/— 辅助脚本(可选)assets/— 模板、静态资源(可选)references/— 参考资料(可选)
技能生效方式
1. 启动时加载索引
SkillsLoader 扫描 workspace/skills/,读取每个技能的 SKILL.md 和 frontmatter,建立索引,同时结合 .skills_config.json 判断哪些技能被禁用。
2. 系统提示词注入
- 自动加载技能(
always=true): 完整内容注入系统提示词 - 普通技能: 只放摘要,需要时再读取
SKILL.md
3. 运行时按需读取
模型决定使用某个技能时,通过文件工具读取该技能目录下的说明文档、脚本或参考资料。
SKILL.md 结构
---
name: my-skill
description: 这个技能解决什么问题
metadata:
CountBot:
always: false
requires:
bins: []
---
# 技能标题
## 适用场景
说明什么时候使用该技能。
## 操作步骤
写清楚模型应该读哪些文件、执行哪些脚本、怎样解释结果。
常用字段:
| 字段 | 说明 |
|---|---|
name | 技能唯一名称 |
description | 技能简介 |
metadata.CountBot.always | 是否自动注入系统提示词 |
metadata.CountBot.requires.bins | 依赖的命令行程序 |
技能管理 API
基础管理
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/skills | 获取技能列表 |
POST | /api/skills | 创建技能 |
POST | /api/skills/reload | 重载技能目录 |
GET | /api/skills/{name} | 获取技能详情 |
PUT | /api/skills/{name} | 更新技能 |
DELETE | /api/skills/{name} | 删除技能 |
POST | /api/skills/{name}/toggle | 启用或禁用 |
配置管理
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/skills/{name}/config/schema | 获取配置 schema |
GET | /api/skills/{name}/config | 获取当前配置 |
PUT | /api/skills/{name}/config | 保存配置 |
GET | /api/skills/{name}/config/status | 获取配置状态 |
POST | /api/skills/{name}/config/fix | 自动修复缺失字段 |
GET | /api/skills/{name}/config/help | 获取配置帮助 |
启用状态
保存在 workspace/.skills_config.json:
{
"disabled_skills": ["news", "map"]
}
内置技能
| 技能 | 作用 | 常见依赖 |
|---|---|---|
agent-browser | 浏览器自动化 | 需要 agent-browser CLI |
agent-team-manager | 管理团队配置 | 无额外配置 |
baidu-search | 百度搜索 | scripts/config.json |
cron-manager | 定时任务管理 | 无额外配置 |
email | QQ/163 邮箱收发 | scripts/config.json |
find-skills | 腾讯 SkillHub 搜索安装 | 无额外配置 |
image-analysis | OCR、图片分析 | scripts/config.json |
image-gen | 文生图 | scripts/config.json |
map | 地图、路线检索 | scripts/config.json |
news | 新闻聚合 | 无额外配置 |
skill-creator | 生成、评估技能 | 无额外配置 |
terminal-session | 终端会话辅助 | 无额外配置 |
weather | 天气查询 | 无额外配置 |
web-design | 页面生成与部署 | scripts/config.json |
自定义技能
最小可用技能
workspace/skills/my-skill/
└── SKILL.md
带脚本的技能
workspace/skills/my-skill/
├── SKILL.md
└── scripts/
└── main.py
带配置的技能
workspace/skills/my-skill/
├── SKILL.md
└── scripts/
├── config.json
└── config.json.example
常见问题
技能目录已创建但页面看不到
- 目录名是否合法
- 是否存在
SKILL.md - frontmatter 是否可解析
- 调用
POST /api/skills/reload刷新
技能列表有但模型不使用
description是否写清触发场景- 是否被禁用
- 是否需要让模型按需读取脚本