跳转到内容

Skills 系统

凌霄的 Skill 系统是 Agent 的执行知识面。Skill 是结构化的 Markdown 文档(YAML frontmatter + body),运行时注入到 Worker 的任务提示词中作为 <skill> 块,为 LLM 提供上下文流程、领域约束和质量门。

Skill 不是运行时工具,也不是插件清单。它们是声明式知识包,按来源分级和版本化。

Skill 按来源优先级加载(高优先级覆盖低优先级):

优先级来源目录
1(最高)项目级.lingxiao/skills/
2插件贡献插件目录
3用户级~/.lingxiao/skills/
4(最低)内置包内 bundled

磁盘格式为 YAML frontmatter + Markdown body

---
name: my-skill
description: 一行简短描述
---
<markdown body 流程、质量门、参考>
字段规则说明
namekebab-case,由 validateSkillName 校验技能名称
description非空,单行技能描述
字段说明
triggers触发条件(保留扩展点)
content内容引用(保留扩展点)
  • descriptionbody 在写入时均为必填
  • validateSkillName 强制 kebab-case;无效名称写入时抛出,读取时跳过
  • 缺少 description 且 body 为空的文件在读取时被静默丢弃

Skill 目录可包含 phases/ 子目录,每个 *.md 文件成为一个 SkillPhase

interface SkillPhase { name: string; path: string; content: string; }
interface QualityGate { checks: string[]; skipConditions: string[]; }

loadSkillPhases(skillDir) 返回有序的阶段列表,每个阶段可包含质量门检查和跳过条件。

注入点场景预算
Worker 任务提示词BaseAgentRuntime.buildTaskPrompt总计 18,000 字符,单技能 7,500 字符
TUI 消息SessionManagerRuntime按需注入

三个来源合并去重后注入:

来源起源应用时机
skillNames角色能力(RoleCapabilityModel基于角色,始终生效
explicitSkills任务描述和系统提示词中的 $skill 引用用户/角色通过语法选择
officeSkillOFFICE_MODE_ACTIVE 会话状态会话级 office 模式

在任务描述或系统提示词中使用 $skill-name 引用技能:

$debug-frontend-backend-contract
$office_suite
$explore_implement_verify

正则匹配:/ \$([a-zA-Z0-9_][a-zA-Z0-9_-]*) /g,去重后注入。

限制超限效果
maxTotalChars18,000后续技能按到达顺序丢弃
maxPerSkillChars7,500每个技能 body 截断到此长度
可见性truncated: true调用方可读取 descriptor.path 获取完整内容

凌霄内置 14 个技能包:

技能说明
code-quality代码质量检查
commit-messageGit 提交信息规范
doc-coauthoring文档协同
docxWord 文档生成
frontend-design前端设计
office-suiteOffice 套件
pdfPDF 生成
pptxPPT 生成
skill-creator技能创建器
slidevSlidev 演示
theme-factory主题工厂
web-artifacts-builderWeb 产物构建
xlsxExcel 生成
design-market设计素材市场

使用 skill-creator 技能包自动创建自定义技能。

在项目级或用户级目录中编写:

Terminal window
# 项目级
mkdir -p .lingxiao/skills/my-skill
cat > .lingxiao/skills/my-skill/SKILL.md << 'EOF'
---
name: my-skill
description: 我的自定义技能
---
# 我的技能
## 流程
1. 步骤一
2. 步骤二
## 质量门
- 检查项一
- 检查项二
EOF

通过 /api/v1/skills 路由管理技能:

端点方法说明
/api/v1/skillsGET列出技能
/api/v1/skillsPOST创建技能
/api/v1/skills/:namePUT更新技能
/api/v1/skills/:nameDELETE删除技能

SkillSelectionPolicy.digestGuidance 定义了 5 条选择规则,这些规则会出现在 Leader 的摘要提示词中,指导技能的自动选择和禁用。