跳转到内容

Skills Manager

头文件:claw_skill.hcomponents/claw_modules/claw_skill/include/claw_skill.h

claw_skill 负责在模型上下文中管理用户可见的「Skills」:

  • 文件系统中有一组 skills/<skill_id>/SKILL.md 文件,JSON frontmatter 描述 Skill ID、摘要、管理模式与关联 Capability Group。
  • 每个 Session 有一组「当前激活」的 Skill id,持久化在 Session 状态目录下。
  • 激活某个 Skill 后,cap_skill 通过工具返回值将完整 Skill 文档注入会话历史,模型即可获得该 Skill 的详细文档。
Skills 如何工作 Skills 的工作逻辑、手动或由 Agent 增删改 Skills 的流程

claw_skill_config_t 主要字段:

  • skills_root_dir:Skills 目录根路径(demo:/fatfs/skills)。
  • session_state_root_dir:每个 session 的激活状态文件存放目录(demo 与会话历史共用相同根路径)。
  • max_file_bytes:单个 Skill 文档文件的最大读取字节数(防止超大文档撑满上下文)。

claw_skill 以一个 context provider 的形式接入 claw_core

  • claw_skill_skills_list_provider:每次请求时,把所有 SKILL.md frontmatter 中的 namedescription 渲染成文本注入系统 Prompt,让模型知道「当前有哪些可用 Skills」。

已激活 Skill 的完整文档不再通过 context provider 注入系统提示词,而是由 cap_skillactivate_skill 工具在激活时作为工具返回值注入会话历史。这一设计使系统提示词保持稳定,优化了 LLM API 的 prompt cache 命中率。

激活状态是按 session 隔离的:

  • Session A 激活 weather,Session B 不受影响。
  • 状态以文件形式持久化在 session_state_dir,重启后恢复。
  • 可通过 cap_skill 提供的 activate_skill 工具由模型操作,也可用 Console skill 命令人工操作。

运行时读取的 /fatfs/skills 由构建流程在 build/fatfs_image/skills staging 目录中组装而来:

  1. skillsapplication/edge_agent/fatfs_image/skills/:demo 工程自带的出厂 Skills 目录,按 skills/<skill_id>/SKILL.md 组织,构建时复制到 staging 目录。
  2. 组件自带 Skills:各 cap_* / lua_module_* / lua_driver_* 组件可提供 skills/<skill_id>/SKILL.md,构建时由 skill_buildercomponents/common/skill_builder/ 同步到 build/fatfs_image/skills/,再一并打包。

注意:fatfs_imageapplication/edge_agent/fatfs_image/ 是源码输入;application/edge_agent/build/fatfs_image/ 是生成的 staging 输出,会在构建时重新创建。

Console 交互 Console 中使用 skill 命令管理 Skills
cap_skill activate_skill 工具与缓存友好的文档注入机制