DSH Plugin Store
Back to home

TT432

dsh-skillzip

No description

Stars
0
Language
JavaScript
Created
Aug 14, 2026
Updated
Aug 14, 2026
Skills
GitHub repo

Introduction

dsh-skillzip

SkillZip(arXiv:2608.11079)——免评估技能压缩(Evaluation-Free Skill Compression for Self-Evolving Agents by Discovering Reusable Structure)的 dsh 插件。

自进化智能体把成功流程与失败修复不断追加进技能文档,技能会以远超"新程序性知识"的速度膨胀:同一规则在多处重复、同一动作序列被复制、异常层层累积。SkillZip 把技能当作类型化契约(接口 / 工作流 / 工具协议 / 作用域规则 / 输出契约 / 证据),用"最短忠实解释"(typed MDL)原则合并共享结构、提升规则作用域、复用重复工作流、编码守卫异常——不读取任务、轨迹、奖励或验证器,并保证每个被提取的规范性需求都被覆盖(稀有规则不被删除)。

论文要点与本实现对照

论文本实现
契约 C(S)=⟨I,G,T,C,O,E⟩(Eq.1)lib/core/extract.js 确定性提取 + lib/llm/extract.js LLM 增强
最小描述长度目标(Eq.4)与长度模型(Eq.12)lib/core/optimize.js + lib/core/length.js
等价单元聚类 / 作用域提升 DP(Eq.7/8)clusterEquivalentRules / liftRuleScopes
工作流复用 + 加权集合打包(Eq.9)lib/core/workflow.js(Re-Pair 式挖掘 + 贪心 + pairwise exchange)
公共规则 + 显式异常(Eq.10)encodeExceptions
硬覆盖约束(Def. III.1, Prop. IV.1)assertAllCovered + 每步后覆盖断言
One-shot 压缩(Algorithm 1)lib/core/pipeline.js(scan→extract→optimize→render→audit)
Zip-on-Write(Algorithm 2, ABSORB/REFINE/EXTEND/REFACTOR)lib/core/online.js + WAL 事务日志 + repack 策略
结构审计与保守恢复(Appendix B.F)lib/core/audit.js(独立解析 + 最短 span 恢复 + locked)
frozen relation checker(Appendix B.C)lib/core/relations.js 确定性 + lib/llm/relations.js LLM 裁决
sidecar schema(Appendix C.A)lib/core/contract.js + validateContract

提供的工具

工具说明
skillzip_compressOne-shot 压缩:输入 SKILL.md 全文 → 压缩后技能 + 统计 + 候选日志 + 契约
skillzip_updateZip-on-Write:输入现有 skillzip.json + 补丁 → 更新后契约/技能/操作日志(WAL)
skillzip_audit独立结构审计:对比契约与渲染文本,缺失元素恢复并锁定
skillzip_inspect检视 sidecar:单元统计、采纳/拒绝的抽象候选、事务日志

LLM 能力(结构化提取、语义关系裁决)默认启用,失败自动回退到确定性实现;可用 useLlm: false 关闭。

目录结构

lib/
  index.js            # 插件入口(inject: tools, llm)
  core/
    scanner.js        # Markdown 扫描:front matter/标题/嵌套列表/代码块/表格 → 稳定 id 块 + 作用域树
    extract.js        # 确定性契约提取(interface/workflow/rules/tool/output/evidence/residual)
    contract.js       # 契约数据结构 + 校验 + 覆盖率断言 + 作用域工具
    relations.js      # 类型化关系判定(等价/蕴含/冲突/无关)+ 缓存 + 候选生成
    workflow.js       # 工作流序列收集 + 重复片段挖掘 + 加权集合打包
    optimize.js       # 最小代价覆盖:聚类/提升/异常/工作流复用/输出字段去重
    render.js         # 确定性模板渲染(Name→Description→When to use→Rules→Workflow→Output)
    audit.js          # 独立结构审计 + 最短 span 保守恢复(locked)
    online.js         # Zip-on-Write:四种操作 + WAL + repack 触发
    pipeline.js       # One-shot 编排(含 LLM 增强与回退)
    length.js         # 长度模型 Eq.(12) 与候选日志
    tokens.js         # token 估算(英文≈4字符/token,CJK≈1)
  llm/
    prompts.js        # extract/patch/audit/relation 提示词(论文 Appendix C.B-D)
    extract.js        # schema 约束的 LLM 契约提取 + JSON 容错解析
    relations.js      # LLM 语义关系裁决(高相似但置信不足的单元对)
  tools/
    compress.js       # skillzip_compress
    update.js         # skillzip_update
    audit.js          # skillzip_audit
    inspect.js        # skillzip_inspect
test/
  run-tests.mjs       # 测试运行器(node test/run-tests.mjs)
  fixtures/livemath-skill.md  # 论文附录 C.E 的 LiveMath 未压缩技能

安装与启用

# 1) 安装依赖(peerDeps 需同时在 devDependencies 镜像)
cd <path/to/skillzip-plugin>
npm install

# 2) 安装到 web profile(转发 pnpm 到 profile;报 ERR_PNPM_ADDING_TO_ROOT 时加 -w)
dsh plugin --profile web add -w <path/to/skillzip-plugin>

# 3) 挂载 patch(~\.dsh\profiles\web\cordis.patch.yml 追加)
# - insert:
#     - id: dsh-skillzip
#       name: 'dsh-skillzip'

改 patch 会热重载;新安装的 npm 依赖需要重启 web 服务。

测试

node test/run-tests.mjs

覆盖:扫描器稳定 id、契约提取、MDL 优化(重复规则/输出字段合并)、渲染确定性、结构审计、Zip-on-Write 四种操作与 repack、幂等性(Zip(Zip(S))≈Zip(S))。

与论文示例的对照(附录 C.E)

test/fixtures/livemath-skill.md 即论文附录 C.E 的未压缩 LiveMath 技能。确定性模式压缩 870→752 tokens(13.6%);论文 936→638(32%)需 LLM 语义裁决合并措辞不同但语义等价的近义约束(本插件 useLlm: true 时自动启用)。

验证

  • 覆盖断言:每个源单元(触发/工作流边/工具需求/规则/输出字段)必须被压缩表示覆盖,否则优化器标记失败并保守保留原文。
  • 结构审计:独立解析压缩文本(不看原技能),diff 触发极性/guard/modality/工作流可达性/工具参数/输出字段;缺失元素恢复最短源 span 并 locked
  • 幂等:Zip(Zip(S)) = Zip(S) 在稳定解析下成立(测试覆盖)。