跳到主要内容

🧩 技能

用纯文本指令教会您的 AI 如何处理任务。

技能是可复用的、基于 Markdown 的指令集,您可以附加到模型或在对话中即时调用。与工具(可执行的 Python 脚本)不同,技能是纯文本指令:代码审查准则、写作风格规范、故障排查手册、数据分析工作流。模型读取它们并遵照执行。

在对话中使用 $ 提及技能,可立即注入其全部内容。或将技能绑定到模型,使其始终可用,并按需加载以保持上下文窗口高效。


为什么使用技能?

无需代码的指令

用 Markdown 编写准则。无需 Python、无需 API 调用、无需部署。只要您能写文档,就能创建技能。

按需上下文加载

绑定到模型的技能采用懒加载。默认情况下,只注入轻量级清单(名称 + 描述)。模型仅在需要时通过 view_skill 工具加载完整指令。

跨模型复用

创建一个"代码审查准则"技能,并将其附加到每个编程模型。更新一次技能,每个模型都能获得新版本。

与工具组合使用

将技能与开放终端或任何工具服务器配合使用。技能教会模型如何使用工具(检查退出码、处理错误、对长时间运行的命令使用流式输出),而工具提供能力


主要功能

📝 Markdown 内容用纯 Markdown 编写指令
对话中 $ 提及输入 $ 将技能的完整内容注入当前消息
🧩 每对话切换+ 集成菜单中为单个对话启用技能,无需编辑模型
🤖 模型绑定将技能附加到模型,使其始终可用
📦 懒加载绑定到模型的技能只注入清单;完整内容按需加载
📥 导入/导出导入带 YAML frontmatter 的 .md 文件;导出为 JSON
🔒 访问控制默认私有,可与用户或用户组共享
🔀 启用/禁用切换无需删除即可停用技能

技能的工作原理

用户选择的技能($ 提及)

在对话输入框中输入 $ 打开技能选择器。选择一个技能,其完整内容将直接注入系统提示词中。模型可以立即访问完整指令。

每对话技能(集成菜单)

在对话输入框中打开 + 菜单,选择技能,即可为当前对话切换启用单个技能——与启用工具的位置相同。会有一个徽标显示已启用的数量。所选对该对话持续有效,并在每条消息中发送;和 $ 提及一样,被切换启用的技能的完整内容会被注入到系统提示词中。区别在于 $ 提及只对单条消息生效,而切换会在整段对话中保持开启。它不需要模型编辑权限,因此是把技能加入某段对话的最简单方式。

绑定到模型的技能

绑定到模型的技能采用懒加载:

  1. 清单注入 - 只将技能的名称和描述添加到系统提示词中。
  2. 按需加载 - 模型收到 view_skill 内置工具。当它判断需要技能的完整指令时,会调用 view_skill(skill_name) 加载它们。

这意味着可以将多个技能附加到一个模型,而不会占用上下文窗口空间,直到实际需要时才消耗。


创建技能

导航到工作区 > 技能,点击 + 新建技能

字段说明
名称人类可读的显示名称(例如"代码审查准则")
技能 ID唯一的 slug,从名称自动生成。创建时可编辑,之后只读
描述清单中显示的简短摘要。对于绑定到模型的技能,模型用此决定是否加载完整指令
内容Markdown 格式的完整技能指令

从 Markdown 导入

点击导入并选择 .md 文件。如果文件包含带有 name 和/或 description 字段的 YAML frontmatter,这些值会自动填充:

---
name: code-review-guidelines
description: 全面代码审查的分步指令
---

# 代码审查准则

1. 检查正确性...

将技能绑定到模型

  1. 进入工作区 > 模型
  2. 编辑一个模型,滚动到技能部分。
  3. 勾选您希望该模型始终可访问的技能。
  4. 点击保存

所选技能的清单会自动注入,模型可以通过 view_skill 按需加载完整内容。


技能管理

在技能工作区列表中,使用省略号菜单(...):

操作说明
编辑修改内容、名称或描述
克隆创建一个副本,ID 末尾添加 -clone
导出下载为 JSON
删除永久删除(Shift+点击 可快速删除)

批量导出:点击技能页面顶部的导出按钮,将所有可访问的技能导出为单个 JSON 文件。

启用/禁用切换:非活跃的技能从清单中排除,即使绑定到模型或在对话中提及,模型也无法加载。


访问控制

技能使用与其他工作区资源相同的访问控制系统:

  • 默认私有:只有创建者可以查看和编辑新技能。
  • 与用户或用户组共享:通过访问按钮授予 read(读取)或 write(写入)访问权限。
  • 只读访问:拥有读取权限的用户可以查看但不能编辑。编辑器显示"只读"标识。
已附加的技能仍需要用户访问权限

将技能附加到模型不会绕过访问控制。当用户与模型对话时,Open WebUI 会检查该用户是否对每个已附加技能有读取权限。用户无法访问的技能会被静默排除。

示例:管理员创建一个私有技能并附加到共享模型。与此模型对话的普通用户将无法获得该技能,因为他们没有读取权限。

解决方案:确保需要使用模型技能的用户也对每个技能有读取权限(通过访问授权、用户组权限或将技能设为公开)。

所需权限

权限控制内容
工作区 > 技能访问访问技能工作区并创建/管理技能
共享 > 共享技能与单个用户或用户组共享技能
共享 > 公开技能使技能公开可访问

有关配置详情,请参阅权限


使用场景

代码审查标准

将团队的审查清单写为技能:命名规范、错误处理模式、测试覆盖要求。附加到您的编程模型,每次审查都遵循同样的标准。

写作风格指南

在技能中记录语气、格式规则和术语。附加到内容写作模型。每份草稿都遵循您的品牌风格。

故障排查手册

将常见问题的操作手册编码为技能:"先检查日志,验证配置,测试连接,如果 X 则上报。"模型遵循与您的高级工程师相同的诊断步骤。

工具使用指南

将技能与开放终端配合使用,教模型如何更好地使用它。"始终检查退出码。在脚本中使用 set -e。对需要超过 10 秒的命令使用流式输出。"


局限性

纯文本

技能是指令,不是可执行代码。对于需要计算、API 调用或系统访问的操作,请使用工具

$ 提及时的上下文窗口

通过 $ 提及注入时,完整技能内容进入系统提示词。将很长的技能附加到上下文窗口较小的模型可能会占用对话历史空间。

懒加载需要函数调用

绑定到模型的技能依赖 view_skill 内置工具,该工具需要启用原生函数调用。没有它,模型只能收到清单,无法加载完整指令。

本内容仅供参考,不构成任何保证、担保或合同承诺。Open WebUI 按“现状”提供。请参阅您的许可协议 以了解适用条款。