Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

技能

创建可重复使用的 SKILL.md 指令,供智能体手动、自动或在每一轮对话中调用。

Skills 是 LibreChat Agent 可重用的指令包。一个 Skill 以 SKILL.md 文件为核心:Frontmatter 用于描述何时应使用该 Skill,而 Markdown 正文则为 Agent 提供需要遵循的流程、规则、示例或参考信息。

Skills 对于可重复的工作非常有用,例如:

  • 应用品牌或写作指南
  • 遵循内部审查清单
  • 运行标准研究工作流
  • 启动专门的工具工作流
  • 将可重用的脚本、引用和资源与指令文件打包在一起

启用 Skills

skills 代理功能默认处于启用状态。管理员可以将其从 agents 端点的功能列表中移除,以向用户隐藏 Skills。

endpoints:
  agents:
    capabilities:
      - 'deferred_tools'
      - 'execute_code'
      - 'file_search'
      - 'web_search'
      - 'artifacts'
      - 'subagents'
      - 'actions'
      - 'context'
      - 'skills'
      - 'tools'
      - 'chain'
      - 'ocr'

角色权限还控制着谁可以使用、创建、共享以及公开共享 Skills。

部署技巧

管理员可以通过 DEPLOYMENT_SKILLS_DIR 从文件系统发布只读的 Skills。

DEPLOYMENT_SKILLS_DIR=./skill

该目录默认为项目根目录下的 ./skill。LibreChat 在启动时会加载部署的 Skills,并将其提供给启用了 Skills 功能的用户。

部署技能:

  • 在 UI 中为只读
  • 使用 deployment 作为它们的来源
  • 优先于同名的持久化 Skills
  • 在添加、移除或更改文件后,需要重启 LibreChat

GitHub Skill Sync

管理员可以通过 librechat.yaml 中的 skillSync.github 从 GitHub 仓库镜像 Skills。

skillSync:
  github:
    enabled: true
    intervalMinutes: 60
    runOnStartup: true
    sources:
      - id: librechat-skills
        owner: your-org
        repo: your-skills-repo
        ref: main
        paths:
          - skills
        skillDiscoveryDepth: 2
        token: '${GITHUB_SKILLS_TOKEN}'

GitHub Skill Sync:

  • 扫描配置的仓库路径以查找 SKILL.md
  • 在每个技能旁边导入捆绑文件
  • 存储带有 source: "github" 的镜像 Skills
  • 当上游仓库发生变更时,同步更新镜像的 Skills
  • 移除在已配置的源中不再存在的镜像 Skills
  • 支持定时、启动时以及手动管理员触发的运行

使用具有所选存储库的只读 Contents 和 Metadata 权限的 GitHub 细粒度个人访问令牌。有关所有字段、凭据选项、租户范围和管理员同步端点的信息,请参阅 Skill Sync Object Structure

创建 Skill

从侧边栏打开 Skills。你可以直接在 LibreChat 中编写技能,或者上传包含 SKILL.md.md.zip.skill 文件。

最小的 SKILL.md

---
name: brand-guidelines
description: Use when writing public-facing content that must follow the company voice and terminology.
---
 
# Brand Guidelines
 
Write in a concise, practical tone.
Prefer active voice.
Use product terminology consistently.

Frontmatter

KeyTypeDescriptionExample
nameString稳定的 kebab-case 标识符。它必须以小写字母或数字开头,且只能包含小写字母、数字和连字符。name: brand-guidelines
descriptionString最重要的触发文本。描述模型应在何时使用该技能。description: Use when writing public-facing launch copy.
always-applyBoolean当该技能处于激活状态时,自动将其预置到每一轮对话中。always-apply: true
user-invocableBoolean设置为 false 以隐藏手动 `$` 调用的技能。默认值:true。user-invocable: false
disable-model-invocationBoolean设置为 true 以从模型调用的技能目录中排除该技能。除非 `user-invocable` 为 false,否则仍允许手动调用。disable-model-invocation: true
allowed-toolsArray/List of Strings当手动或始终应用该技能时,将这些工具临时合并到代理的有效工具集中。allowed-tools: ["execute_code"]

调用模式

Skills 可以通过以下三种方式到达 agent:

  • 手动: 用户在聊天中输入 $ 并从弹窗中选择一个技能。
  • Model-invoked:模型从注入的技能目录中选择一项技能并调用该技能工具。
  • Always apply:当启用时,该技能会在每一轮对话中被预加载。

手动调用是明确的用户意图。只要 user-invocable 不为 false,它就可以使用在模型调用中通过 disable-model-invocation: true 隐藏的技能。

Agent Scope

在 Agent 使用目录之前,必须先启用 Skills。

  • 如果持久化 Agent 上的 skills_enabled 为 false 或未设置,则该 Agent 的技能将处于非活动状态。
  • 如果 skills_enabled 为 true 且未设置任何技能白名单,则智能体可以使用用户可见的完整活跃目录。
  • 如果 skills_enabled 为 true 且 skills 包含特定的技能 ID,则该智能体将仅限于使用该列表中的技能。

这允许管理员全局启用 Skills 功能,同时保持每个智能体可用的技能集保持专注。

活跃和共享的 Skills

用户可以切换技能的启用或禁用状态。拥有的技能默认为启用。共享技能将使用管理员配置的默认设置,直到用户对其进行覆盖。

未激活的技能将从以下内容中排除:

  • $ 气泡框
  • 模型调用的技能目录
  • 始终应用预设 (Always-apply priming)

捆绑文件

上传的技能包可以包含除 SKILL.md 之外的文件,例如:

  • references/...
  • scripts/...
  • assets/...

后端会将这些文件与该技能一起存储。当技能处于激活状态且在作用域内时,智能体可以解析技能文件。

创作提示

保持 description 的具体性。它是模型调用技能时最强的信号。简短或模糊的描述会导致触发不足。

这篇指南怎么样?