OpenClaw 对skill 使用次数的统计,核心逻辑可以简单概括为:
不是靠模型自述统计
- 模型说“我要使用某个 skill”本身不一定会计数。
- OpenClaw 统计的是运行时可识别到的实际 skill 使用行为。
主要识别两类使用行为
- Agent 通过
read工具读取了某个 skill 的SKILL.md。 - 用户/系统通过 skill 暴露的 command 调用了该 skill。
- Agent 通过
识别到后会发出内部事件
- OpenClaw 会生成一个内部诊断事件:
skill.used - 事件里会带上 skill 名称、来源、触发方式、agent id、run id、tool call id 等信息。
- OpenClaw 会生成一个内部诊断事件:
由 Skill Curator 负责记录
- Skill Curator 监听
skill.used事件。 - 只处理可信的内部事件。
- 然后把统计结果写入本地 SQLite 数据库。
- Skill Curator 监听
统计数据保存在
skill_usage表- 一般路径是:
~/.openclaw/state/openclaw.sqlite - 表名:
skill_usage
- 一般路径是:
计数方式
- 以
skill_file,也就是具体的SKILL.md文件路径作为主键。 - 第一次使用时插入记录,
use_count = 1。 - 后续再次使用同一个 skill 文件时:
use_count = use_count + 1 - 同时更新:
- 首次使用时间
first_used_at_ms - 最近使用时间
last_used_at_ms - 最近使用的 agent
last_agent_id
- 首次使用时间
- 以
一句话总结:
OpenClaw 是通过运行时检测 Agent 是否读取了某个 skill 的
SKILL.md,或是否执行了 skill command,触发skill.used内部事件,再由 Skill Curator 将次数累加到本地 SQLite 的skill_usage表中。