Skills Manager
头文件:claw_skill.h
claw_skill 负责在模型上下文中管理用户可见的「Skills」:
- 文件系统中有一组 Skills 文件(若干
.md)和一份 Skills 清单(skills_list.json),描述有哪些 Skills、摘要是什么、文档文件是谁。 - 每个 Session 有一组「当前激活」的 Skill id,持久化在 Session 状态目录下。
- 激活某个 Skill 后,模型侧可以看到更完整的 Skill 文档,并可通过
cap_skill提供的工具继续激活/关闭 Skill。
Skills 如何工作 Skills 的工作逻辑、手动或由 Agent 增删改 Skills 的流程
claw_skill_config_t 主要字段:
skills_root_dir:Skills 文件与skills_list.json的根目录(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:每次请求时,把skills_list.json中所有 Skills 的 id、summary 渲染成文本注入系统 Prompt,让模型知道「当前有哪些可用 Skills」。claw_skill_active_skill_docs_provider:把当前 session 中已激活的 Skills 的.md文件内容拼入上下文,提供完整的 Skill 文档。
因此,激活某个 Skill 等价于把它的 .md 内容加入下一次请求的上下文,模型看到的工具说明、行为约定都由这份文档决定。
激活状态是按 session 隔离的:
- Session A 激活
weather,Session B 不受影响。 - 状态以文件形式持久化在
session_state_dir,重启后恢复。 - 可通过
cap_skill提供的activate_skill/deactivate_skill工具由模型操作,也可用 Consoleskill命令人工操作。
Skills 文件的来源与构建流程
Section titled “Skills 文件的来源与构建流程”运行时读取的 /fatfs/skills/skills_list.json 由两个来源合并而来:
application/basic_demo/fatfs_image/skills/:demo 工程自带的 Skills 文件,通过 FATFS 镜像直接打包进固件。- 组件自带 Skills:各
cap_*/lua_module_*组件目录下的skills/子目录,由tools/sync_component_skills.py在构建阶段自动同步合并到fatfs_image/skills/,再一并打包。
注意:application/basic_demo/main/skills/ 目录下的文件不参与上述同步流程,不会出现在运行时 FATFS 上,请勿将 Skill 文件放在此处。
Console 交互 Console 中使用 skill 命令管理 Skills
cap_skill activate_skill / deactivate_skill 与模型可见 Skills 的关系