安全扫描
OpenClaw
安全
high confidence该技能的文件和运行时指令与其声明的用途(压缩技能)相符,且不请求无关凭证或风险安装,但它确实会持久化本地校准数据,并在其运行时文档中引用了LLM提供商环境变量,而这些变量未在注册表元数据中声明——安装前请审查这些行为。
评估建议
该技能似乎能实现其声称的功能:压缩技能文档。安装前需考虑以下要点:
- 该技能将读取您指向的技能markdown文件(预期行为),并记录将校准数据写入主机环境的.learnings/skill-distiller/calibration.jsonl。如不希望留下磁盘痕迹,请计划监控或清理该路径。
- 文档显示它将优先使用本地ollama模型,或回退到GEMINI_API_KEY / OPENAI_API_KEY(如果已设置)。这些提供商环境变量未在注册表元数据中列出——如果您配置了云密钥,技能的运行时说明表明它可能使用它们进行LLM调用(这对于基于LLM的工具来说是正常的,但请确认您对代理使用配置的提供商感到满意)。
- 没有安装程序获取外部代码,文件中也没有嵌入无关凭证或网络端点——供应链下载风险较低。
- disable-model-invocation为true(技能不允许自主调用模型),这降低了自主行为风险。包含的测试脚本引用了ollama用法,但仅用于手动测试。
如需额外谨慎:请审查或沙盒化首次运行,使用后检查.learnings,并确保您使用的任何提供商密钥都经过适当范围限...详细分析 ▾
✓ 用途与能力
名称和描述(技能压缩/蒸馏)与提供的SKILL.md、参考文档和测试夹具一致。所需能力(解析markdown、对部分评分、生成压缩输出)与现有内容一致;元数据或文件中未要求无关的云或系统访问。
ℹ 指令范围
SKILL.md指导读取/解析用户提供的技能markdown文件并生成压缩输出——这是预期的。它还记录了提供商检测(ollama、GEMINI_API_KEY、OPENAI_API_KEY),并描述了将校准数据写入.learnings/skill-distiller/calibration.jsonl。这些操作在技能的用途范围内,但确实包括持久化本地写入和对本地工具(ollama)的运行时检查。
✓ 安装机制
这是一个纯指令技能(无安装规范)。没有下载、包安装或提取操作。唯一的可执行工件是一个包含的test_integration.sh用于手动测试;它不会自动运行。
ℹ 凭证需求
注册表元数据声明没有必需的环境变量,但SKILL.md和README描述了探测ollama以及可选使用GEMINI_API_KEY或OPENAI_API_KEY进行云推理。这对于LLM驱动的工具来说是合理的,但技能未在其注册表元数据中声明这些环境变量——用户应该知道运行时将检查/使用其代理配置的任何提供商凭证。
ℹ 持久化与权限
技能文档记录了将校准条目保存到.learnings/skill-distiller/calibration.jsonl(追加,带轮转)。这对于校准来说是合理的,但是对主机文件系统的持久化写入。always:false和disable-model-invocation:true降低了自主风险;技能不请求系统范围的配置更改或其他技能的凭证。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv0.2.12026/4/15
**添加更多参考/测试详情并改进元评分解释。** - 更新了SKILL.md中的公式评分,以更清晰地解释部分覆盖逻辑 - 扩展了公式中的"受保护"字段(现在包括BEFORE/AFTER) - 更新了~90%功能的函数描述,澄清为LLM估计 - 改进了令牌计数和评分方法的符号和文档 - 添加了reference/SKILL.md和testdata/representative.md以确保完整性和测试
● 无害
安装命令
点击复制官方npx clawhub@latest install neon-skill-distiller
镜像加速npx clawhub@latest install neon-skill-distiller --registry https://cn.longxiaskill.com
技能文档
压缩冗长的技能以减少上下文窗口使用。该技能使用公式符号自压缩(约400个token,约90%功能,LLM估计)。完整参考版本:SKILL.reference.md。
注意:此技能使用公式符号——LLM直接执行这些操作。
您不需要理解数学。散文说明请参阅 SKILL.reference.md。
图例
S = {TRIGGER, CORE, CONSTRAINT, OUTPUT, EXAMPLE, EDGE, EXPLAIN, VERBOSE}
I(s) ∈ [0,1] # 重要性评分
P = {yaml.name, yaml.desc, N-count, task-create, checkpoint, BEFORE/AFTER} # 受保护字段
θ ∈ [0,1] # 阈值(默认0.9)
n ∈ ℕ # 目标token数
操作
compress(skill, θ)
∀s ∈ skill: type(s) → S, score(s) → I(s)
s ∈ P ⇒ I(s) := max(I(s), 0.85)
keep = {s | I(s) ≥ θ ∨ s ∈ P}
output = (skill[keep], Σ I(keep)/|S|, |skill| - |keep|) # 评分除以|S|(8种类型),而非|keep|——奖励多样化的部分覆盖
compress_tokens(skill, n)
min_tokens = |{s | type(s) ∈ {TRIGGER, CORE}}|
n < min_tokens ⇒ summarize(skill) → n
n ≥ min_tokens ⇒ compress(skill, θ) where |output| ≤ n
oneliner(skill)
output = "TRIGGER: " + extract(skill, TRIGGER) + "\nACTION: " + extract(skill, CORE) + "\nRESULT: " + extract(skill, OUTPUT)
recomp(examples, coverage_target=0.8)
scored = [(e, pattern_coverage(e), uniqueness(e)) | e ∈ examples]
selected = top(scored, n=2, by=coverage × uniqueness)
coverage(selected) ≥ 0.8 ⇒ phase1 output = selected ∪ {trigger(e) → result(e) | e ∈ examples \ selected}
coverage(selected) < 0.8 ⇒ phase2 output = synthesize(examples) → single_example
token_score(section) — for type ∈ {EXAMPLE, EDGE, EXPLAIN, VERBOSE}
∀phrase ∈ section: self_info(phrase) = -log(P(phrase|context))
high_info ⇒ KEEP, low_info ⇒ PRUNE
prune while preserving sentence structure
>50% low_info ⇒ remove entire section
符号 (MetaGlyph)
| 符号 | 含义 |
|---|---|
→ | 结果为,映射到 |
⇒ | 蕴含,因此 |
∈ | 属于,在……中 |
∀ | 对所有 |
¬ | 非 |
∧ | 与 |
∨ | 或 |
:= | 赋值 |
调用
/skill-distiller path --threshold=0.9 → compress(skill, 0.9)
/skill-distiller path --tokens=500 → compress_tokens(skill, 500)
/skill-distiller path --mode=oneliner → oneliner(skill)
错误
| 条件 | 响应 |
|---|---|
skill = ∅ | "No content" |
¬∃ yaml.name | "Add frontmatter" |
n < min_tokens | "Summarizing..." |
变体
| 变体 | Token数 | 功能 |
|---|---|---|
| main(此) | ~400 | ~90%(公式) |
| compressed | ~975 | ~90%(散文) |
| oneliner | ~100 | ~70% |
Token计数使用4字符/token启发式(±20%)。功能评分由LLM估计。