跳转到内容

Skills 与 Capability

Capability(能力)是 ESP-Claw 中可供大语言模型调用的工具集合。每个 cap_* 模块实现一类功能(如 Lua 脚本执行、IM 发送、文件操作等),并向 claw_cap 注册一个带 ID 的 Capability Group

每次向 LLM 发送请求时,claw_cap_tools_provider 只会将当前 session 可见(visible) 的 Group 所含工具注入上下文——Group 不可见时,其工具对 LLM 不存在。这一设计避免将大量不相关工具堆入上下文。

Skill 是存储在文件系统中的一个 Markdown 文档,描述某项功能的使用方式、工作流程或行为约定。claw_skill 通过两个 context provider 将 Skills 信息注入 claw_core

Provider注入内容始终生效
claw_skill_skills_list_provider所有 Skill 的 id、summary
claw_skill_active_skill_docs_provider当前 session 中已激活 Skill 的完整 .md 文档仅激活时

LLM 在未激活时只能看到摘要——激活后才能读取完整文档。激活状态按 session 隔离,持久化在文件系统中,重启后恢复。

单独的 Capability 只向 LLM 暴露工具签名,没有使用指南;单独的 Skill 只提供文档,没有可调用的工具。两者在角色上互补:

CapabilitySkill
本质工具(Functions / Tools)知识文档(Context)
载体C 代码(cap_* 模块)Markdown 文件
作用让 LLM 能执行动作让 LLM 知道怎么
生命周期启动时注册,按 Group 管理可见性按需激活/停用,状态持久化

两者通过 skills_list.json 中的 cap_groups 字段形成绑定:

{
  "id": "cap_lua_run",
  "cap_groups": ["cap_lua"]   // 激活此 Skill 时,同步开放 cap_lua 工具组
}

激活一个 Skill 等价于同时完成两件事

  1. 将其 .md 文档内容注入下次请求的上下文(LLM 获得知识);
  2. cap_groups 中列出的 Capability Group 设为 session 可见(LLM 获得工具)。

停用 Skill 后,两者同步撤销,保持上下文精简。