Skill Cleaner 用于在需要裁剪技能提示预算、查找重复技能、审计启用/禁用技能根目录,或决定移除哪些技能/插件时使用。
用途
- 管理 Codex/OpenClaw 技能提示的预算占用。
- 发现重复技能(同名或描述/正文高度相似)。
- 审计技能来源根目录及配置中的禁用状态。
- 基于使用日志识别长期未使用的技能候选。
- 为删除或压缩技能描述提供依据。
主要能力
分析脚本按顺序输出以下报告:
- Skill Budget(技能预算):实时 Codex 清单、2% 预算、预算内使用量以及全描述压力。
- Description candidates(描述候选):过长的描述,可通过放松语法节省提示预算。
- Duplicates(重复项):在 Codex、插件缓存、仓库同级目录与个人技能根之间,存在相同技能名称,或描述/正文近乎相同的技能。
- Unused candidates(未使用候选):在近期 Codex/OpenClaw 日志中,没有用户提及或实际读取 SKILL.md 的技能。
- Root summary(根汇总):技能来源位置,以及配置是否将其标记为禁用。
使用方式
在该技能目录或仓库根目录运行分析器:
node --experimental-strip-types skills/skill-cleaner/scripts/skill-cleaner.ts --months 3
常用变体:
node --experimental-strip-types skills/skill-cleaner/scripts/skill-cleaner.ts --no-logs
node --experimental-strip-types skills/skill-cleaner/scripts/skill-cleaner.ts --no-live --no-logs
node --experimental-strip-types skills/skill-cleaner/scripts/skill-cleaner.ts --months 6 --max-log-mb 800 --deep-logs
node --experimental-strip-types skills/skill-cleaner/scripts/skill-cleaner.ts --context-tokens 272000 --budget-percent 2 --no-logs
node --experimental-strip-types skills/skill-cleaner/scripts/skill-cleaner.ts --root ~/Dropbox/boxd/skills --no-logs
node --experimental-strip-types skills/skill-cleaner/scripts/skill-cleaner.ts --root ~/.agents/skills --root-only --no-logs
删除或编辑前的检查
- 确认保留的副本存在且已被加载。
- 当 Codex 内置技能覆盖相关功能时,优先删除仓库本地或 agent-scripts 中的重复项。
- 当仓库本地 OpenClaw 维护者技能编码了仓库策略或实时运维时,应保留它们。
- 在描述中保留触发名词:产品、工具、动作、对象。
分析器说明
- 默认情况下,
codex debug prompt-input提供模型可见的精确技能列表、顺序、名称与别名路径。--no-live强制使用更宽泛的文件系统回退。 - 宽泛的文件系统扫描仍用于重复、禁用与归档缓存诊断,但不作为已加载清单。
- 脚本复刻 Codex 模型可见的行格式:
- name: description (file: path)。 - 应用类似 Codex 的 frontmatter 规则:仅 YAML frontmatter,默认名称取自父目录,单行清理后的名称与描述。
- 遵循 Codex
core-skills/src/render.rs:原始上下文的 2%,token 成本为ceil(utf8_bytes / 4),然后是完整描述 → 等量描述截断 → 省略最小行。包含别名表行成本。 - 读取
~/.codex/models_cache.json中的 GPT-5.5 上下文窗口;回退为 272,000 token 与 2%。 - 默认只扫描常规 Codex/插件/仓库技能根。额外文件夹(如 Dropbox 归档)仅在
--root <path>时包含。 --root-only需要至少一个--root <path>,跳过实时 Codex 清单,仅扫描提供的根。- 对根进行 realpath 去重,因此像
~/.codex/skills/agent-scripts -> ~/Projects/agent-scripts/skills这样的符号链接根不会产生误报重复。 - 对于重名项,报告描述/正文相似度,仅当正文接近副本时才建议删除候选。保留优先级默认为:直接 Codex 系统技能 → 直接 Codex 技能 → 插件技能 → 个人/仓库副本。
- 默认扫描
~/.codex/history.jsonl与近期~/.codex/sessions/**/*.jsonl。添加--deep-logs可扫描归档会话与常见 OpenClaw/Clawd 日志文件夹。 - 使用证据为启发式:用户
$skill/use skill提及,以及工具调用参数中观察到的路径。
输出策略
- 先建议;仅在用户要求时才编辑。
- 若被要求应用清理,做小规模分组提交:描述、删除、配置禁用。
- 在未指明目标位置或确认可丢弃前,不要删除被忽略或未跟踪的技能目录。
适用场景
- 技能提示预算紧张,需要压缩描述或移除低使用率技能。
- 多个技能根存在重复定义,需要确定保留优先级。
- 需要审计当前加载的技能清单与禁用状态。
- 需要基于历史日志判断技能是否仍被使用。
限制
- 使用证据为启发式,可能无法完全反映真实使用情况。
- 默认扫描范围有限,归档或非标准目录需显式通过
--root指定。 - 预算计算依赖
~/.codex/models_cache.json,缺失时使用回退值 272,000 token 与 2%。 - 其他收费、价格、平台或效果信息暂未提供。