🧩 Skills 技能
通过纯文本指令,教导您的 AI 如何完成一项任务。
技能(Skills)是可重用的、基于 Markdown 的指令集,您可以将其绑定到模型上,也可以在聊天对话中即时进行调用。不同于需要编写 Python 可执行脚本的工具(Tools),技能(Skills)是纯文本形式的指令库:例如代码审查指南、特定写作风格规范、故障排除排查手册以及数据分析工作流。模型在收到后便会遵循它们开展工作。
在聊天中通过键入 $ 提及某项技能,即可在当前消息中即时注入其完整内容。或者,您可以将多项技能直接绑定到某个模型 preset 上,从而使其随时处于就绪状态,并通过按需加载的方式来保证上下文窗口的最佳能效。
为什么选择 Skills?
无需编写代码的指令
仅需在 Markdown 中编写您的业务指南即可。不需要编写 Python、不需要进行 API 调用、也不需要执行任何复杂的部署。只要您能撰写文档,您就拥有创建技能的能力。
按需加载上下文
绑定到模型的技能采用延迟加载(lazy loading)机制。默认情况下,只会在系统提示词中注入一份轻量级的清单(包含技能名称与描述)。只有当模型分析确定需要使用这些指令时,它才会通过调用内置的 view_skill 工具来实时加载其完整指令。
可跨模型复用
只需创建一份“代码审查指南”技能,便能直接将其附加到所有相关的编程模型上。未来仅需在这一个地方更新技能,所有的模型都将自动应用最新版的审查标准。
可与工具随心组合
可以将技能与 Open Terminal 或任何外部工具服务器完美结合。技能负责教导模型如何使用这些工具(例如如何检查退出状态码、如何处理报错、针对长耗时命令如何启用流式输出等),而工具则负责提供真实的操作能力。
核心功能
| 📝 Markdown 内容格式 | 使用纯 Markdown 语法撰写指令 |
| ⚡ 聊天中通过 $ 提及 | 键入 $ 在聊天输入框中,即可即时将技能的完整内容注入到当前会话中 |
| 🤖 绑定到模型 | 将技能绑定到模型上,使其随时随地开箱可用 |
| 📦 延迟加载 (Lazy Loading) | 绑定到模型的技能默认仅注入清单;只有在确有需要时才按需加载完整内容 |
| 📥 导入/导出 | 支持导入带有 YAML Frontmatter 的 .md 文件;支持导出为 JSON |
| 🔒 访问控制 | 默认私有,支持精细共享给特定的个人用户或用户组 |
| 🔀 激活/未激活开关 | 无需删除即可快速将某个技能暂时搁置停用 |
技能的工作原理
用户选择的技能 ($ 提及触发)
在聊天输入栏中键入 $,便会弹出技能选择器。选中某项技能后,其完整指令内容会直接被注入到当前的系统提示词中。模型将拥有对整篇业务规范的即时且完全的阅读能力。
绑定到模型的技能
绑定到 模型的技能采用延迟加载机制:
- 注入清单:仅将技能名称与描述追加到系统提示词中。
- 按需加载:模型会同时获得一个内置的
view_skill工具。当模型在交互过程中研判自己需要参考某项技能的完整内容时,它将自主调用view_skill(skill_name)来将其读取出来。
这就意味着,您可以将十几种技能同时绑定到一个模型上,而不需要担心它们会在平时吞噬和挤占宝贵的上下文窗口空间。
创建技能
导航至 Workspace > Skills,然后点击 + New Skill(新建技能)。
| 字段 | 描述 |
|---|---|
| Name | 易于阅读的友好显示名称(例如 “代码审查指南”) |
| Skill ID | 唯一的短路径(Slug),基于名称自动生成。可在创建时自定义修改,创建完成后只读 |
| Description | 展示在轻量级清单中的简短摘要。对于绑定模型的技能,模型会基于它来决定是否调用 view_skill 工具 |
| Content | 使用 Markdown 编写的完整技能指令库 |
从 Markdown 文件导入
点击 Import 并选择一个 .md 文件。如果该文件最开始包含了带有 name 和/或 description 字段的 YAML Frontmatter,这些值会被自动识别并填充到表单中:
---
name: code-review-guidelines
description: 详尽的代码审查指南步骤
---
# 代码审查指南
1. 检查代码正确性...将技能绑定到模型
- 转到 Workspace > Models。
- 编辑需要绑定的模型,向下滑动到 Skills 章节。
- 勾选您希望该模型在运行时随时能够参考 的所有技能。
- 点击 Save(保存)。
所选技能的清单会自动与模型结合,模型将在交互中根据需要调用 view_skill 延迟加载其完整文本。
技能管理
在技能工作区列表中,点击任何项右侧的省略号菜单(...):
| 操作 | 描述 |
|---|---|
| Edit | 修改内容、名称或描述 |
| Clone | 克隆该技能(副本的 ID 会自动加上 -clone 后缀) |
| Export | 下载为 JSON 格式配置文件 |
| Delete | 永久删除该技能(配合 Shift + 点击可以跳过二次确认直接快速删除) |
批量导出:点击技能页面顶部的 Export 按钮,可以一键将您有权访问的所有技能打包导出为一个 JSON 文件。
激活/未激活开关:被设置为未激活的技能会被完全排除在清单之外,即使之前已被绑定或在聊天中输入 $ 也将无法被模型加载参考。
访问控制
技能与平台上的其他工作区资源一样,均遵循统一的 角色访问控制(RBAC) 系统:
- 默认私有:新创建的技能默认仅对创建者本人可见、可用和可编辑。
- 共享给个人或用户组:通过点击 Access 按钮,可以对特定的用户或用户组授予
read(读取)或write(写入)权限。 - 只读访问:获得只读访问权限的用户只能参考该技能,但无权编辑,其编辑器界面会显示 “Read Only” 徽章。
将某项技能绑定到模型上并不能绕过系统的访问控制机制。当用户与模型对话时,Open WebUI 会严格检查该用户是否拥有该模型下每一项绑定技能的 read(读取)权限。如果用户无权访问某项绑定的技能,系统会将其静默排除。
例如:管理员创建了一个只有自己可见的私有技能,并将其绑定到了全员共享的模型上。普通用户在使用该模型聊天时,将无法享受该技能的好处,因为他们在权限校验中被默默排除在外了。
解决方案:确保需要使用该模型技能的所有用户,同时也已被授予了对各单项技能的 read 权限(可以通过精细授权、赋予用户组权限、或将技能设为公开可 见来解决)。
必需的权限配置
| 权限 | 控制的内容 |
|---|---|
| Workspace > Skills Access | 访问技能工作区以及创建/管理技能的权限 |
| Sharing > Share Skills | 与特定的个人或用户组共享技能的权限 |
| Sharing > Public Skills | 将技能发布并设为全员公开可见/可用的权限 |
关于详细的配置说明,请参阅 Permissions 文档。
使用场景
代码审查标准
将您团队的审查 Checklist 写成一个技能:例如命名规范、常见错误处理模式、测试覆盖率底线等。将其绑定到研发模型上,确保每一次生成的审查建议都对标相同的严格质量水平。