mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-11-01 13:25:18 +08:00
git-subtree-dir: docs git-subtree-mainline:0582d1b3d4git-subtree-split:51dddcb3f8
102 lines
4.0 KiB
Plaintext
102 lines
4.0 KiB
Plaintext
---
|
||
title: "技能 (Skills)"
|
||
description: "在 LangBot 中使用技能(Skills),按需加载专业知识,扩展 AI Agent 而不撑爆上下文。"
|
||
---
|
||
|
||
Skill 是一个**按需激活**的指令包:用户描述匹配时,Agent 调用 `activate` 工具把这个技能的指令拉进上下文,然后按指令完成任务。未激活的技能不占用上下文。
|
||
|
||
适合给 Agent 加一段**专业流程、模板或脚本**——比如"分析 Python 项目"、"PDF 表单填充"、"代码评审"——而不必每个对话都把指令塞进 System Prompt。
|
||
|
||
## 与插件、MCP 的区别
|
||
|
||
| 你想做的事 | 用这个 |
|
||
|------------|--------|
|
||
| 按需触发的一段工作流(可带脚本、模板) | Skill |
|
||
| 接入已有的 MCP 工具服务 | MCP Server |
|
||
| 长期能力,需要配置页、事件、知识库 | 插件 |
|
||
|
||
详见[运行时与扩展关系](../sandbox/runtime-relationships)。
|
||
|
||
## 安装技能
|
||
|
||
<Note>
|
||
技能依赖沙箱:`box.enabled` 为 `true` 且 Docker / Nsjail / E2B 至少一个可用时,才能安装、激活和编辑技能。详见[沙箱配置](../sandbox/config)。
|
||
</Note>
|
||
|
||
### 从 LangBot Space(首选)
|
||
|
||
[LangBot Space](https://space.langbot.app) 是 LangBot 的官方市场,已上架多种技能。在 WebUI 的 Skills 页面浏览并一键安装,无需自己编写 `SKILL.md` 或准备资源文件。
|
||
|
||
适合大多数场景。需要自定义流程再走下面的方式。
|
||
|
||
### 自己创建技能
|
||
|
||
**WebUI** — Skills 页面新建、上传 zip 包、从 GitHub 导入。
|
||
|
||
**沙箱 + `register_skill`**:
|
||
1. 在沙箱 `/workspace` 下准备好目录和 `SKILL.md`
|
||
2. 让 Agent 调用 `register_skill(path="/workspace/my-skill")`
|
||
|
||
两种方式都会写入 Box Runtime 管理的 skill store。
|
||
|
||
## 在流水线启用
|
||
|
||
技能装好之后,还要在流水线扩展配置里决定 Agent 能看到哪些:
|
||
|
||
- 开启"启用所有技能",或
|
||
- 只绑定指定技能
|
||
|
||
绑定只影响 `<available_skills>` 列表(即 Agent 能从哪些技能里挑),完整指令永远等 `activate` 被调用后才注入。
|
||
|
||
## 编写 SKILL.md
|
||
|
||
技能就是一个目录加一个 `SKILL.md`。frontmatter 写元数据,正文是 Agent 激活后会收到的指令:
|
||
|
||
```markdown
|
||
---
|
||
name: code-reviewer
|
||
display_name: 代码评审助手
|
||
description: 审查代码并给出改进建议;用户提到 review、评审、代码改进时触发
|
||
---
|
||
|
||
## 执行步骤
|
||
|
||
1. 用 `read` 浏览相关文件
|
||
2. 检查可读性、潜在 bug、安全问题
|
||
3. 给出按优先级排序的改进建议
|
||
```
|
||
|
||
LangBot 当前读取以下三个字段:
|
||
|
||
| 字段 | 必需 | 说明 |
|
||
|------|------|------|
|
||
| `name` | 创建/注册时 | 唯一标识,1–64 字符 |
|
||
| `description` | 强烈建议 | Agent 用它判断何时激活——越具体越能选中 |
|
||
| `display_name` | 否 | UI 显示名 |
|
||
|
||
`description` 是 Agent 挑技能的唯一依据,要写清楚**功能、适用场景、可能的触发关键词**。
|
||
|
||
完整规范见 [agentskills.io](https://agentskills.io/home)。其它字段(`license`、`metadata` 等)可保留供未来兼容,当前不会被读取。
|
||
|
||
**带资源的技能**在 `SKILL.md` 同级放 `scripts/`、`templates/` 等目录,激活后 Agent 通过 `/workspace/.skills/{skill-name}/` 访问。
|
||
|
||
### Agent 可用的工具
|
||
|
||
| 工具 | 用途 |
|
||
|------|------|
|
||
| `activate` | Agent 判断匹配时自动调用,把 SKILL.md 拉进上下文 |
|
||
| `register_skill` | 把沙箱里准备好的目录注册为新技能 |
|
||
|
||
## 常见问题
|
||
|
||
| 现象 | 检查项 |
|
||
|------|--------|
|
||
| 技能列表为空 | `box.enabled`、Box Runtime 状态、`box.local.skills_root` |
|
||
| Agent 不激活技能 | `description` 是否具体、流水线是否绑定、模型是否支持函数调用 |
|
||
| 激活后找不到文件 | 文件需在 Skill 包内,路径是 `/workspace/.skills/{skill-name}/` |
|
||
| `register_skill` 报错 | 路径必须在 `/workspace` 下,目录或两层内子目录需含 `SKILL.md` |
|
||
|
||
<Note>
|
||
Skills 当前面向内置 Agent,依赖函数调用和沙箱后端。外部运行器(Dify、n8n、Langflow、Coze 等)请使用各自平台的等价机制。
|
||
</Note>
|