Skills 系统
Skills 是 Markdown 格式的可扩展技能,告诉 Agent 在特定场景下如何使用工具完成任务。
架构
/data/agent/skills/
├── weather.md ← 内置(首次启动自动安装)
├── daily-briefing.md
├── reminder.md
├── ... ← 多个内置 Skill
└── my-custom.md ← 用户自定义
启动流程:
skill_loader_init()
│
├─ 安装内置 Skill(如不存在)
│
▼
skill_loader_build_summary()
│
├─ 扫描 /data/agent/skills/*.md
├─ 提取每个文件的 # 标题 + 描述段落
│
▼
context_builder → 注入系统提示词
│
▼
agent_loop → 根据用户请求匹配 Skill → 按指引调用工具
关键点:Skill 不是代码,是给 Agent 的"操作手册"。Agent 读取后自主决定调用哪些工具。
工作原理
- Agent 启动时扫描
/data/agent/skills/目录下所有.md文件 - 提取每个 Skill 的标题和描述,构建摘要注入系统提示词
- Agent 根据用户请求自动匹配合适的 Skill 并按其指引执行
内置 Skills(示例)
| Skill | 说明 |
|---|---|
weather |
天气查询和预报 |
daily-briefing |
个性化每日简报 |
skill-creator |
教 Agent 创建新 Skill |
reminder |
定时提醒(基于 cron) |
note-taker |
快速笔记(每日日记) |
translate |
文本翻译 |
news-digest |
新闻摘要 |
task-manager |
TODO 任务管理 |
system-health |
系统状态检查 |
feishu-test |
飞书集成测试 |
创建自定义 Skill
方式一:对话创建
vela> ask 帮我创建一个翻译技能
方式二:手动创建
adb push my-skill.md /data/agent/skills/
文件格式
# 技能名称
一句话描述。
## When to use
触发条件(关键词越具体越好)。
## How to use
1. 调用 tool_a 获取数据
2. 处理结果
3. 回复用户
## Example
User: "示例输入"
→ web_search "query"
→ "示例回复"
最佳实践
- 保持简洁(占用 context 窗口)
- 指定具体工具名(
web_search而非"搜索") - When to use 要精确,避免误触发
- 一个 Skill 一个职责
- 用 Example 降低歧义
可用工具
Skill 中可引用 35+ 种内置工具和 MCP 注册的外部工具。完整列表见 tools.md。