# 技能系统

技能是写给 Tinybot 的工作说明。它告诉 AI：遇到某类任务时，应该按什么步骤做、注意什么、输出成什么格式。

## 技能适合解决什么问题

如果你发现自己经常重复提醒 Tinybot 同一件事，就适合写成技能。

重复提醒 | 可以做成技能
--- | ---
“总结会议时按负责人、截止日期输出” | 会议总结技能
“代码审查先列风险，不要先夸代码” | 代码审查技能
“写周报时按本周进展、风险、下周计划” | 周报技能
“处理客服问题时先判断分类再给话术” | 客服处理技能

技能不会替代模型能力，它只是把你的偏好和流程固定下来。

## 默认技能

Tinybot 内置了一些技能，例如总结、定时任务、记忆管理、浏览器操作、OpenCLI 相关流程等。网页界面的技能面板可以查看当前可用技能，并启用或禁用。

## 技能如何触发

Tinybot 会根据技能描述自动判断是否使用。你不需要记住技能名称，但描述要写清楚。

例如技能描述是：

    当用户要求总结会议记录、整理行动项、提取负责人和截止时间时使用。

用户这样说时就更容易触发：

    请把这段会议记录整理成行动项。

## 创建自定义技能

技能通常是一个目录里的 `SKILL.md` 文件。基本格式：

    ---
    name: meeting-summary
    description: 当用户要求总结会议记录、整理行动项和风险时使用。
    ---

    # 会议总结

    ## 工作步骤
    1. 先识别会议主题和背景。
    2. 提取明确的行动项。
    3. 如果有负责人和截止时间，单独列出。
    4. 标记没有明确负责人的事项。

    ## 输出格式
    使用 Markdown 表格：

    | 行动项 | 负责人 | 截止时间 | 风险 |

写技能时优先写清楚三件事：

内容 | 说明
--- | ---
什么时候使用 | 写在 `description` 中
怎么做 | 写步骤
输出什么 | 给格式或示例

## 好技能和差技能

好的技能：

    当用户要求审查 Python 代码时，先列出明确 bug、风险和缺失测试，再给简短总结。每个问题要包含文件位置、原因和建议。

差的技能：

    帮我把代码做好。

技能越具体，Tinybot 越容易稳定执行。

## 管理技能

### 网页界面

在技能面板中可以：

- 查看技能列表
- 启用或禁用技能
- 查看技能详情
- 创建或编辑工作区技能

### 配置文件

可以通过 `skills.enabled` 控制启用范围：

    {
      "skills": {
        "enabled": ["*"]
      }
    }

`["*"]` 表示启用所有可用技能。也可以只填写指定技能名称。

## 技能和知识库的区别

能力 | 作用
--- | ---
技能 | 告诉 Tinybot 怎么工作
知识库 | 给 Tinybot 提供可检索资料

例如“客服处理流程”适合做成技能，“产品价格表和政策文本”适合放入知识库。

## 常见问题

### 技能没有触发

检查：

1. 技能是否启用
2. `description` 是否写清楚触发场景
3. 用户请求是否真的符合该场景
4. 是否有其他技能描述过于相似

### 技能写得越长越好吗

不是。技能应该短而明确。把稳定规则写进去，把临时资料放进知识库或直接在对话中提供。

### 修改技能后需要重启吗

通常重新开始会话或刷新网页即可。如果技能列表没有更新，重启 gateway。

## 下一步

- 知识库：管理长期资料
- 任务系统：理解多步骤任务执行
- 网页界面：通过浏览器管理技能