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_core 的对接
Section titled “与 claw_core 的对接”claw_skill 以一个 context provider 的形式接入 claw_core:
claw_skill_skills_list_provider:每次请求时,把所有SKILL.mdfrontmatter 中的name、description渲染成文本注入系统 Prompt,让模型知道「当前有哪些可用 Skills」。
已激活 Skill 的完整文档不再通过 context provider 注入系统提示词,而是由 cap_skill 的 activate_skill 工具在激活时作为工具返回值注入会话历史。这一设计使系统提示词保持稳定,优化了 LLM API 的 prompt cache 命中率。
激活状态是按 session 隔离的:
- Session A 激活
weather,Session B 不受影响。 - 状态以文件形式持久化在
session_state_dir,重启后恢复。 - 可通过
cap_skill提供的activate_skill工具由模型操作,也可用 Consoleskill命令人工操作。
Skills 文件的来源与构建流程
Section titled “Skills 文件的来源与构建流程”运行时读取的 /fatfs/skills 由构建流程在 build/fatfs_image/skills staging 目录中组装而来:
- skillsapplication/edge_agent/fatfs_image/skills/:demo 工程自带的出厂 Skills 目录,按
skills/<skill_id>/SKILL.md组织,构建时复制到 staging 目录。 - 组件自带 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 工具与缓存友好的文档注入机制