Skip to content

plugin-skills — AI 技能库系统 ​

包名: @aalis/plugin-skills
源码: packages/plugin-skills/src/index.ts

概述 ​

Agent Skills 技能系统,兼容 Anthropic Agent Skills 标准。每个技能是一个文件夹,含必需的 SKILL.md(YAML frontmatter 加 Markdown 正文)与可选的 scripts/、references/、assets/ 目录。技能按渐进披露分三阶段进入上下文:Discovery、Activation、Execution。启用哪些技能是可按会话覆盖的字段 enabledSkills(api-session-settings),三个阶段都按调用所在的会话取。

插件声明 ​

typescript
export default definePlugin({
  name: '@aalis/plugin-skills',
  provides: [skills],
  apply(caps) { /* 见源码 */ },
  uses: {
    tools: optional(tools),
    webui: optional(webuiServer),
    storage: optional(storage),
    sessionFields: optional(sessionFields),
    document: optional(ownHostConfig),
    contributions,
    hooks,
    events,
    logger,
    config,
    provide,
  },
});

配置 ​

字段类型默认值说明
maxSkillBytesnumber200000单 skill 最大字节数:SKILL.md 单文件最大字节数,避免一次加载过大内容污染上下文。
maxSkillsnumber200技能数量上限:扫描时最多加载的 skill 数量。
enabledSkillsmultiselect['*']启用的技能:* 即全部技能,空列表一个都不启用;可选项是现有的技能。可按会话设(平台档、平台类型档、群与会话),只有 owner 能改
discoveryEnabledbooleantrue启用 Discovery 注入:往 system prompt 注入一行技能库路标,提示 agent 用 list_skills 检索、load_skill 加载技能;关闭时激活正文注入也一并停用。
triggersEnabledbooleantrue启用 triggers 自动激活:匹配 SKILL.md frontmatter 中的 triggers regex 时自动加载该 skill。

注册工具 ​

工具说明
list_skills列出可用技能(只列这个会话启用的),可按关键词模糊匹配 name/description,支持 offset 翻页
load_skill激活指定技能(这个会话没启用的拒绝):从下一次模型调用起,向该会话注入其 SKILL.md 正文(不含 frontmatter)与附属资源清单(需 discoveryEnabled 开启);无会话上下文时直接在工具结果中返回正文与资源清单
skill_create创建技能(在技能目录下生成 <name>/SKILL.md,目录名经字符清洗;可一次性写入附属文件)
skill_update更新已有技能的 description / body / triggers / license / frontmatter / files。frontmatter 里传的 name 会被忽略:技能名在创建时钉死(技能目录名就是由它清洗而来),改名请重建技能
skill_delete删除技能(连同整个文件夹)
skill_add_file为指定技能写入一个附属文件,同名覆盖
skill_remove_file删除技能下的一个附属文件(不能是 SKILL.md)
skill_list_files列出技能目录下所有附属文件的相对路径
skill_read_file读取技能下某附属文件的文本内容
skill_rescan重新扫描技能目录

工作方式 ​

  1. Discovery:discoveryEnabled 开启时,通过 agent:prompt 贡献点向 system prompt 注入一行静态路标,提示 agent 用 list_skills 检索、load_skill 加载;不注入技能清单本身。这个会话一个技能都没启用时不注入
  2. Activation:调用 load_skill(name),或在 triggersEnabled 开启时由 agent:input:before 中间件以 frontmatter triggers 正则匹配用户消息自动激活(只在这个会话启用的技能里找)
  3. Execution:discoveryEnabled 开启时,已激活技能的 SKILL.md 正文与附属资源清单经 agent:prompt 贡献注入该会话后续的模型调用,agent 按指令使用 scripts/references;关闭时不注入激活正文

技能的设置页 ​

WebUI 设置里的「技能」一节(key: 'skills',位置 settings):一张技能表(名称、描述、自动触发、附属文件数),选中一个在详情里看它的属性(名称、描述、自动触发、许可证、位置与附属文件,空的不列)与 SKILL.md 正文。行动作「删除」(确认框)删掉整个技能目录;技能不存在或目录删不掉时回错误,原因显示给 owner。经工具或服务增删改技能、重扫目录后页面重取;手改技能目录靠打开时取一次与手动刷新。

配置校验 ​

数字字符串上限按数值解析,其余错误类型回落默认值并告警。

文档对应 dev@c4e046e41,core 0.21.0,构建于 2026-11-02
基于 MIT 许可发布