技能库压缩 3.46 倍却守住 99% 执行契约,SkillZip 把 agent 技能拆成图来压

SkillZip: Contract-Preserving Graph Compression for Scalable Agent Skill Libraries

Xingyu Tan, Xiaoyang Wang, Qing Liu, Xiwei Xu, Xin Yuan, Liming Zhu, Wenjie Zhang

cs.CL, cs.AI

2026-08-06

SkillZip 把 agent 技能拆成带契约的段落图、用可逆宏压缩重复结构,3.46 倍压缩下守住 99% 执行契约,ALFWorld 成功率比最强基线高 12.2 个点。

这篇在解决什么

当 LLM 被当作 agent 用,它的「会做什么」越来越多地以外挂的技能包形式存放,推理时按需取用。技能库一大,问题就来了:塞进上下文的内容要么太多(整包加载,context 爆掉),要么被当成普通文本压缩(压完技能就坏了)。

作者把矛盾点提炼成一个「单元错配」:技能是按整包检索的,被当成文本压缩,而真正能可靠复用的单元是带执行契约的过程片段。这三种粒度对不上,导致四个具体痛点:没法在技能内部按段落复用、压缩时丢了前置条件和校验钩子、压完的结构没法持久化也没法展开执行、新技能进来没法增量更新。大家都在压文本,没人保证压完的东西还能正确跑。

方法

SkillZip 的核心动作是把「技能」从文本升级成一张带契约的图,然后在这张图上做能保住契约的压缩。它有三个组件加上一个增量维护模块。

Sec2Graph 把技能包解析成段落级的有类型节点。每个节点除了内容,还带着自己的执行角色(Intent 意图、Precondition 前置条件、Operation 操作、Verifier 校验、Output 输出等)、输入输出签名、依赖的资源、守卫条件,以及指向原文的指针。节点之间用有类型的边连起来:依赖边、同技能边、资源边、等价边。这一步把「这段文字在执行里扮演什么」显式化,后面所有压缩和检索都建立在角色之上。

MotifZip 是压缩主体。它在图里挖反复出现、契约合法的子图,只当替换后能同时满足三条时,才把它收进一个可逆宏:边界签名稳定、依赖闭包(内部依赖要么在宏里要么从端口暴露)、校验可达(每个改状态的操作其校验步骤依然够得着)。一个子图变成一个 Ig ⇒ Og 的宏节点,带着展开规则,需要时能还原回原结构。打分函数综合了压缩收益(出现频率乘省下的长度)、复用价值,以及对切断依赖和风险的惩罚。它不是见到重复就压,是压了还不亏契约才压。

PathHydrate 负责推理时的取用。它把查询和讨论里的锚点一起拿来给段落打分(双层融合:讨论锚点的 embedding 和查询本身的 embedding 取大),然后搜一个紧凑、依赖闭合的子图。宏是渐进展开的:先给名字,不够给契约,再不够给骨架,真要执行才吐完整源码。平均每个任务只 hydrate 1941 个 token,比直接塞 top-5 整包少了 72.1%。

ReZip 让库能长大:它从新技能和执行轨迹里发现新的可复用 motif 加以提升,也根据执行证据(失败率、修复成本)修正或降级有风险的宏。

结果

两个 benchmark、两个骨干模型。SkillsBench 偏技术/过程化任务,ALFWorld 是文本式的具身 agent。

主表(MiniMax-M2.7):

方法SkillsBench 任务奖励ALFWorld 成功率
整包加载17.247.1
向量检索整包10.450.7
GoS18.754.3
SkillDAG(最强基线)27.367.1
SkillZip33.3(+6.0)79.3(+12.2)

换 gpt-5.2-codex,SkillsBench 到 43.0、ALFWorld 到 96.4,比 SkillDAG 分别高 6.2 和 2.8 个点。

最说明问题的不是终点数字,而是压缩保真对照表:纯文本压缩也能做到 3.46 倍,但依赖保持率从 99.2 掉到 65.0、校验可达率从 98.7 掉到 60.0,任务奖励直接跌回 25.5。SkillZip 在同样的压缩比下把这两个契约指标稳在 99.2 和 98.7,奖励反而最高。这篇的贡献落在「压完还能跑」,不在压缩倍率本身。

系统开销上,相比 SkillDAG,累计 prompt 处理量降 47.0%、平均工具调用少 21.7%、端到端时间少 21.1%。规模测试里,技能库从 200 涨到 10 万,Ret@1 优势从 +6.2 拉大到 +23.3,在线检索加 hydration 延迟最坏 248.3 毫秒,10 万规模的图(477 万段落节点)离线 178 秒建好。

为什么重要

对做 agent 的人来说,这篇直击一个真实的工程痛点:技能/工具库一大,要么上下文塞不下,要么压一压就压坏了。它给的解法是把「过程性知识」当成带契约的结构来管,文本式摘要这条路它不走。这个思路可以迁移,任何「压缩后会丢执行语义」的场景(工具调用链、工作流、SOP)都适用同一套契约保持的框架。

渐进 hydration 那部分尤其实用:按需展开,不一次性灌全文,这跟现在 agent 框架里「按需加载工具说明」的方向一致,只是它做得更细,细到段落级。

也要诚实:这是一篇结构化、benchmark 驱动的系统论文,它在两个相对规整的测试集上证明了增益,离真实生产环境里成千上万个杂乱技能还有距离。

局限与存疑

论文没有单列局限小节,以下是读下来值得商榷的地方。

只测了两个 benchmark。SkillsBench 是较新的过程化任务集,ALFWorld 是经典文本具身环境,两者都偏结构化,没有在真实、噪声大的生产 agent 任务上验证。

骨干模型越强,增益越小。ALFWorld 换 gpt-5.2-codex 后,GoS 和 SkillDAG 都已经到 93.6%,SkillZip 只再添 2.8 个点,作者自己也说提升空间有限。这暗示压缩加结构化检索的收益,在强模型配简单任务时会被推理能力本身吃掉。

压缩收益高度依赖重复度。当技能间的过程重叠低时,压缩比只有 1.18 倍。这套方法的前提是库里真有大量可复用的套路,重复不多时帮助有限。

保的是结构性契约,不是语义等价。它保证校验够得着、依赖闭合,但 Recovery 仍有 14.8% 的情况需要回退到源码展开。也就是说结构上看着契约没破,每一次压缩在语义上是否都等价于原技能,论文没有给出语义层面的等价证明,只拿端到端奖励当间接证据。

10 万规模的数字只覆盖检索指标(Ret@1、延迟),没有在那个规模跑端到端任务奖励。

术语

原文与代码

相关论文

全部论文解读