【论文精读】SkillZip:面向可扩展 Agent 技能库的契约保持图压缩框架

  • 论文标题: SkillZip: Contract-Preserving Graph Compression for Scalable Agent Skill Libraries
  • 作者: Xingyu Tan(UNSW & CSIRO)、Xiaoyang Wang(UNSW)、Qing Liu(CSIRO)、Xiwei Xu(CSIRO)、Xin Yuan(CSIRO & UNSW)、Liming Zhu(CSIRO)、Wenjie Zhang(UNSW)
  • arXiv: 2608.05604v1 [cs.CL],2026 年 8 月 6 日
  • 许可: CC BY 4.0

一、题目:一句话概括这篇论文在做什么

SkillZip 要解决的核心问题是:当 LLM Agent 的技能库越来越大时,如何在有限的上下文预算内,给模型暴露"最小但充分"的可执行上下文?

让我们用一个生活化的比喻来理解这个问题。想象一个经验丰富的项目经理,他的文件柜里存放着上千份标准操作流程(SOP)文档。每份文档可能包含意图说明、触发条件、输入格式要求、前置检查步骤、具体操作、所需工具、异常处理、结果验证、输出规范等内容。当他接到一个新任务时,不可能把所有相关文档都搬出来从头读到尾——他需要快速定位到"执行这个任务真正需要的那些片段",而且这些片段必须自洽、可执行、不遗漏关键的前置条件和验证步骤。

这正是大模型 Agent 在技能库规模膨胀时面临的困境。现有的做法存在一个根本性的"单元不匹配"问题:技能以"整个包"为单位被检索,以"纯文本"为单位被压缩,而真正的执行依赖关系只有在检索完成后构建执行图时才被显式表达。这三种操作单元的不一致,导致了四个具体挑战:

  1. 复用粒度不匹配:现有系统以整个技能包为检索单元,无法选择包内特定的共享流程。比如"清洗 CSV"和"数据透视表"两个技能都包含"模式推理、头部标准化、行计数验证"这些公共例程,技能级检索器会加载两个完整包,尽管任务只需要共享的那一小段。
  2. 压缩下的契约丢失:现有文本压缩方法优化的是 token 预算,保持的结构主要是文本层面的。文本接近性不等于契约等价性——压缩可能会模糊前置条件、守卫分支或验证器钩子这些对正确执行至关重要的信息。
  3. 压缩结果不可持久执行:任务时执行图系统在检索后才构建图,库本身不存储为持久压缩结构。重复例程在每次任务中被重新发现和重新验证,效率低下。
  4. 缺乏执行感知的维护:技能库不是静态的。一次性压缩器无法识别后来才可复用的例程,也无法识别那些反复触发扩展、验证失败的"问题宏"并加以修订。

SkillZip 的核心洞察是:可靠复用要求检索、压缩和执行图构建面向同一个对象——“承载契约的节级子图”。论文提出了一个完整的执行感知程序性抽象框架,包含四个核心组件:Sec2Graph(构建节级图)、MotifZip(契约保持压缩)、PathHydrate(预算内水合)、ReZip(增量维护)。在 ALFWorld 上比最强基线提升 12.2 分,同时实现 3.46× 压缩比、99.2% 依赖保持和 98.7% 验证器可达性。


二、背景:Agent 技能库为何会遇上"上下文预算危机"

要理解 SkillZip 的价值,我们需要先看清它所处的技术脉络。近两年来,LLM Agent 的能力边界持续扩张,从单轮问答进化到能够调用工具、规划多步操作、完成长时程任务的自主智能体。支撑这种能力的,是一套不断膨胀的"程序性记忆"基础设施。

程序性记忆的兴起。早期的工具增强 Agent(如 ReAct、Toolformer 系列)把工具描述直接塞进系统提示,但当工具数量超过几十个后,这种做法迅速触及上下文窗口的极限。社区很快转向"技能包"模式:每个技能是一份自包含的可执行文档,包含意图、触发条件、输入输出规范、操作步骤、验证逻辑。Agent 在推理时按需检索相关技能包并加载到上下文中。Voyager、 generative agents、AutoGPT 系列都沿用了这一思路的不同变体。

规模化的新痛点。当技能库从几十个增长到几千、几万甚至十万级时,一个尖锐的矛盾浮现出来:

  • 检索精度下降:相似技能之间的区分度降低,top-k 检索容易混淆。
  • 加载成本爆炸:即使只加载 top-5 技能包,每个包可能就有数千 token,总加载量轻易突破 2-3 万 token,挤占了留给推理和上下文学习的预算。
  • 冗余无处不在:不同技能之间大量共享"模式推理"“参数校验"“异常重试"等公共例程,但以技能包为粒度时这些冗余无法被消除。

压缩思路的三次演进。第一波是文本级压缩——直接对技能文本做摘要、抽取关键词,典型如 LLMLingua 系列。这种方法 token 节省明显,但会破坏契约结构:前置条件和验证器一旦被摘要掉,Agent 执行就会出错。第二波是图结构压缩——把技能建模为执行图,用频繁子图挖掘找重复模式,但这类方法大多把图当纯拓扑对象处理,忽略了节点上的契约语义(I/O 签名、守卫条件、验证器钩子)。第三波就是 SkillZip 代表的"契约感知图压缩”——在图压缩的每一步都显式检查"压缩前后契约是否等价”。

执行图系统的局限。另一条相关脉络是"任务时执行图"系统(如 GoS、SkillDAG),它们在检索到技能后构建执行图来组织任务流程。但这些系统的图是临时构建的,库本身并不以持久压缩结构存储,因此每次任务都要从头发现重复例程;而且它们的检索单元仍然是整包,无法在加载阶段就实现节级复用。

SkillZip 正是站在这些工作的肩膀上,把"节级程序性单元"“契约保持压缩"“持久化压缩结构"“执行感知维护"四件事统一到一个框架里。


三、定位:SkillZip 在研究地图上的坐标

把 SkillZip 放到当前 Agent 记忆与技能管理的研究版图中,可以清晰看到它的独特位置。

与"技能检索"线的关系。传统的向量检索(Vector Skills)把技能包文本编码为向量,用相似度匹配——简单但粒度粗,且完全忽略契约。GoS 在检索后构建任务时执行图,改善了执行组织但仍是整包加载。SkillDAG 用 DAG 结构组织技能间依赖,提升了检索精度但同样不触及包内复用。SkillZip 的差异化在于:它把检索单元从"整包"下沉到"节级子图”,并且压缩后的图本身就是持久化的可检索单元。

与"文本压缩"线的关系。LLMLingua 等方法是"结构盲"的——它们不知道哪些 token 承载契约语义,因此压缩比例越高,契约损伤越大。论文表 2 的数据显示,文本压缩方法在 3.46× 压缩比下,依赖保持率(DPR)暴跌到 65.0%,验证器可达性(VR)跌到 60.0%,恢复率(Recover,即需要回源展开的比例)高达 45.0%。而 SkillZip 在相同压缩比下,DPR 保持 99.2%,VR 保持 98.7%,Recover 仅 14.8%——这就是"契约感知"带来的质变。

与"图压缩与语法挖掘"线的关系。经典的频繁子图挖掘(gSpan、SUBDUE)和图语法方法确实能发现重复模式并压缩图,但它们优化的是描述长度(MDL),不关心节点上的契约语义。论文表 2 显示,通用图语法方法在 2.91× 压缩比下 DPR 为 93.4%、VR 为 90.8%,看起来不差,但 Recover 高达 22.7%,且任务奖励 R 只有 29.4(SkillZip 为 33.3)——说明纯拓扑压缩会留下"看起来压缩了但实际执行时频繁回源"的隐患。SkillZip 的 MotifZip 在压缩前对每个候选 motif 做三重契约验证,确保压缩后的宏节点在边界签名、依赖闭包、验证器可达性上都等价于原始子图。

与"Agent 生命周期维护"线的关系。绝大多数压缩方法是一次性的:库构建好就不再更新。但真实场景中技能库会持续增长,新技能可能引入新的可复用例程,老宏可能在执行中暴露问题。ReZip 组件是少数把"执行证据"反馈到压缩结构维护的方案——它用残基 motif 提升机制识别跨技能新复用,用风险评分识别需要修订或退役的问题宏。

即插即用的工程价值。SkillZip 不依赖任何骨干特定微调,在 MiniMax-M2.7、gpt-5.2-codex 等 6 种骨干上都有效,这意味着它可以作为一层"记忆压缩中间件"叠加到现有 Agent 框架上,而不需要重新训练底层模型。


四、问题定义:如何为压缩建立严格的形式化语言

SkillZip 的一个突出特点是它对"程序性契约"给出了严格的形式化定义,这让"压缩是否安全"变成了可判定的问题。这一节我们详细拆解论文的定义体系。

4.1 节节点:承载契约的最小单元

论文把一个技能包拆解为若干"节节点”(Section Node),每个节节点是程序性记忆中具有内聚语义的最小单元。形式化定义为:

$$v = \langle \tau_v, c_v, X_v, Y_v, R_v, G_v, \text{src}_v \rangle$$

其中各字段的含义是:

  • $\tau_v$:执行角色,取自九种操作角色之一(见下文)。
  • $c_v$:节内容,即这一节的原始文本/代码。
  • $X_v, Y_v$:输入签名和输出签名,类型化的接口契约。
  • $R_v$:本节依赖的资源或工具。
  • $G_v$:守卫或验证器条件。
  • $\text{src}_v$:原始技能源指针,用于可追溯性和源级展开。

九种操作角色是整个形式化体系的语义骨架,论文定义了:

  1. Intent(意图):技能要达成的目标。
  2. Trigger(触发器):什么条件下应当激活本技能。
  3. Input(输入):要求的输入数据格式与类型。
  4. Precondition(前置条件):执行前必须成立的状态约束。
  5. Operation(操作):具体执行的动作序列。
  6. Resource(资源):本节绑定的外部工具或数据源。
  7. Failure(故障):异常处理与修复逻辑。
  8. Verifier(验证器):执行成功与否的判定钩子。
  9. Output(输出):产出的数据与格式。

这九种角色的设计很有讲究——它们既覆盖了一个完整程序性流程的所有关键阶段(从意图到验证输出),又足够通用,能映射到绝大多数技能包文档的自然节结构上(标题、参数表、代码块、警告框、测试用例等)。

4.2 程序性技能图:把节点组织成有意义的结构

单个节节点没有意义,关键在于它们之间如何连接。论文定义程序性技能图:

$$\mathcal{G} = (\mathcal{V}, \mathcal{E}_{dep}, \mathcal{E}_{skill}, \mathcal{E}_{res}, \mathcal{E}_{eq})$$

其中:

  • $\mathcal{V} = \mathcal{V}_{occ} \cup \mathcal{V}_{proto}$:节点集合包含"出现特定节节点”(occurrence-specific)和"辅助原型"(prototype)两类。原型节点用于跨技能复用——当多个技能里有角色、签名、资源、验证器行为都一致的节时,它们链接到同一个共享原型。
  • $\mathcal{E}_{dep}$:类型化程序性依赖边,这是最核心的边类型。每条依赖边 $e = (u, v, \rho_e)$ 携带关系类型 $\rho_e$,取自五种:Requires(要求某输入/前置条件)、Binds(绑定到某操作)、UsesResource(使用某资源)、Verifies(验证某操作)、Repairs(修复某故障)。
  • $\mathcal{E}_{skill}$:技能成员边,记录节点属于哪个技能包。
  • $\mathcal{E}_{res}$:资源链接边。
  • $\mathcal{E}_{eq}$:等价原型链接,把出现节点连到共享原型。

技能程序性子图是对一个具体技能 $s$ 的局部视图:

$$h_s = (V_s, E_s, r_s, t_s)$$

其中 $r_s$ 是意图/触发器根节点,$t_s$ 是验证输出节。一个完整的技能子图必须从根到验证输出,途经所有必需的程序性角色——这个"根到验证输出"的约束是"可执行性"的形式化保证。

4.3 宏节点与验证器可达性

宏节点是压缩的基本单元。一个宏 $M_g: I_g \Rightarrow O_g$ 压缩了一个连通的节子图 $g = (V_g, E_g)$,具有:

  • 边界输入 $I_g$ 和边界输出 $O_g$(端口)
  • 扩展规则 $M_g \Rightarrow (V_g, E_g, \chi_g)$,其中 $\chi_g$ 是程序性契约
  • 验证器可达性:对操作/宏节点 $u$ 和验证器 $z$,若存在有向路径 $u \leadsto z$,则 $z$ 可从 $u$ 到达。这是"压缩后仍可验证"的关键约束。

4.4 程序性契约的三个方面

论文把"契约"明确为三个层面,这构成了 MotifZip 压缩时必须保持的等价性目标:

  1. 接口契约:类型化的输入输出和资源绑定。
  2. 执行契约:前置条件、依赖关系、守卫、效果、故障处理。
  3. 验证契约:成功条件和验证器钩子。

4.5 问题陈述

给定技能库 $\mathcal{S}$,SkillZip 要构建原始节图 $\mathcal{G}$ 和宏字典 $\mathcal{M}$,产生压缩图 $\mathcal{G}_{zip} = \mathcal{G}/\mathcal{M}$。在推理时,给定任务查询 $q$、执行器配置 $p$ 和上下文预算 $B$,要返回渲染后的上下文 $C_q$,使得 $C_q$ 在预算内、依赖闭合、验证器可达,并且与原始图在契约上等价。

这个形式化定义的精妙之处在于:它把"压缩是否安全"从模糊的工程判断变成了可判定的形式化条件——只要三重契约验证通过,压缩就是安全的。这为后面 MotifZip 的算法设计提供了坚实的理论基础。


五、解法:SkillZip 的四大组件深度拆解

SkillZip 由四个组件构成:Sec2Graph(构建节级图)、MotifZip(契约保持压缩)、PathHydrate(预算内水合)、ReZip(增量维护)。我们逐一深入。

5.1 Sec2Graph:从技能包到程序性子图

Sec2Graph 负责把人类可读的技能包文档转换为机器可推理的程序性子图,分四步:

步骤 1:节节点构建与源接地。 对技能 $s$,先用 SegmentSkill(s) 把文档切分为节单元 $\mathcal{B}_s$,再为每个节 $b$ 用 InferRole(b) 推断其操作角色 $\tau_b$。切分利用的边界线索包括:标题、列表、代码块、警告框、参数描述、工具引用、测试用例等。这一步的关键是"源接地"——每个节节点都保留指向原始文档位置的 src_v 指针,确保后续可以无损展开。

步骤 2:契约提取。 为每个节节点提取:类型化 I/O $(X_v, Y_v)$ 和资源 $R_v$(接口层面)、守卫和验证器条件 $G_v$(执行验证层面)、源指针 $\text{src}_v$(可追溯性)。这一步把"自然语言描述的契约"转换为"结构化的契约字段",是后续压缩验证的前提。

步骤 3:程序性子图构建。 在节节点之间建立四类边:

  • 弱序边:保持技能内的局部阅读顺序。
  • 依赖边:按类型化关系(Requires/Binds/UsesResource/Verifies/Repairs)连接操作到输入、前置条件、资源。
  • 验证器边:连接操作到可达的验证器。
  • 修复边:连接故障处理器到触发的守卫。
  • 技能成员边:记录所属包。

步骤 4:跨技能复用。 兼容的节节点保持为"出现特定节点",仅当角色、边界签名、资源和验证器行为都一致时,才链接到共享规范原型。这一步是 MotifZip 能发现跨技能重复的前提——原型节点为"同一个例程在不同技能中的出现"提供了统一的锚点。

5.2 MotifZip:契约保持的压缩器(核心组件)

MotifZip 是 SkillZip 的核心创新,它把循环出现的"契约有效 motif"重写为可逆的端口宏。整个流程分四步,每一步都内嵌契约检查。

第 1 步:接口感知的 Motif 挖掘

候选 motif 的生成遵循公式 1:

$$\mathcal{C} = \textsf{GrowMotifs}(\textsf{BucketBySignature}(\mathcal{G}), \mathcal{G})$$

具体做法是:先把图中的节节点按"角色签名 + 资源族 + I/O 形状"分桶,然后沿依赖边和弱序边在每个桶内增长候选 motif。每个候选表示为类型化属性子图 $g = (V_g, E_g, \ell_g)$,其中 $\ell_g$ 记录角色标签、I/O 签名、资源族和验证器标签。

出现支持计数有两条冲突判定规则:两个出现不能共享内部源节节点(否则是同一个出现),且两个出现不能需要不兼容的端口重连。这两条规则保证了计数的准确性,避免把"实际上是一个出现"误判为"两个独立出现"。

第 2 步:契约验证(三个条件)

对每个支持的 motif,构建宏边界和契约 $(I_g, O_g, \chi_g) = \textsf{BuildContract}(g, \Omega_g)$,然后必须同时满足三个接受条件:

条件 1 - 接口稳定性:输入/输出端口、角色签名和资源要求在所有出现中必须一致。这保证了宏是一个"行为等价"的抽象——无论在哪个技能里出现,它的接口契约都相同。

条件 2 - 执行闭包性:motif 内部的依赖要么完全在 motif 内部,要么通过宏端口显式暴露。这防止了"把依赖切断"的压缩——如果一个操作依赖的前置条件被压缩到宏内部但端口没有暴露,那这个宏在被加载时就会因为缺少前置条件而无法正确执行。

条件 3 - 验证器可达性:每个状态改变操作必须在宏契约内保持验证器,或者可从宏输出到达。这是"压缩后仍可验证"的保证——论文反复强调,不可验证的操作是危险的,因为 Agent 无法判断执行是否成功。

通过这三个条件的 motif 被接受为宏,对应的图语法规则(公式 2)为:

$$M_g[I_g, O_g] \Rightarrow (V_g, E_g, \pi_g, \chi_g)$$

这条规则同时定义了"如何压缩"(把子图替换为宏节点)和"如何展开"(把宏节点替换回子图),保证了可逆性。

第 3 步:宏选择与压缩增益公式

这是 MotifZip 最精巧的设计——不是所有通过契约验证的 motif 都值得压缩,需要用压缩增益公式(公式 3)来权衡:

$$\Delta(g) = \text{freq}(g) L(g) - L(M_g) - L(\text{rule}_g) + \alpha \cdot \text{Reuse}(g) - \lambda \cdot \text{Cut}(g) - \mu \cdot \text{Risk}(g)$$

各项含义:

  • $\text{freq}(g) L(g)$:把所有出现都替换掉节省的描述长度(收益项)。
  • $L(M_g)$:宏本身的描述长度(成本项)。
  • $L(\text{rule}_g)$:语法规则的描述长度(成本项)。
  • $\alpha \cdot \text{Reuse}(g)$:跨技能/任务族复用奖励(正则项,鼓励跨场景复用)。
  • $\lambda \cdot \text{Cut}(g)$:边界损失惩罚(正则项,惩罚压缩带来的信息损失)。
  • $\mu \cdot \text{Risk}(g)$:弱验证器支持或模糊契约的惩罚(正则项,惩罚有风险的压缩)。

$\alpha, \lambda, \mu$ 是非负权重。这个公式的设计哲学是:压缩不仅要省 token,还要鼓励真正的跨场景复用、控制信息损失、规避有风险的压缩。这正是 SkillZip 区别于纯 MDL 图压缩的地方——后者只优化前三项(描述长度),而后三项的引入让压缩决策与执行可靠性挂钩。

第 4 步:冲突感知的宏重写

候选 motif 按 $\Delta(g)$ 降序贪心处理:从增益最高的开始,跳过任何与已接受 motif 重叠的候选,为每个接受的 motif 创建端口宏。贪心策略虽然不保证全局最优,但在实践中效率高且效果接近最优。

四种渲染级别

每个宏可以在推理时渲染为四个级别之一:

  1. Name(名称):仅宏名称,最省 token。
  2. Contract(契约):宏契约信息(I/O 端口、前置条件、验证器),让 Agent 知道"这个宏做什么、需要什么、如何验证"。
  3. Outline(大纲):宏内部步骤的大纲,提供中等粒度。
  4. Full Source(完整源码):完整展开,等价于未压缩。

这种多级别渲染是 PathHydrate 实现"按需展开"的基础——默认用低级别省 token,执行需要时再升级到高级别。

组合结构提升定理(命题 1)

这是 MotifZip 正确性的理论保证。设 $\Omega$ 为 MotifZip 接受的成对非冲突 motif 出现集,$\kappa_\Omega$ 和 $\xi_\Omega$ 分别为同时宏重写和源扩展。若原始程序性子图 $P$ 对 $\Omega$ 中每个出现要么包含其所有内部节点、要么不包含任何节点(即"出现不跨子图边界"),则:

$$\xi_\Omega(\kappa_\Omega(P)) \cong P$$

即"先压缩再展开"的结果与原图同构,且保持类型化外部依赖和操作到验证器的可达性。

证明草图分三步归纳:

  • (i) 识别:出现映射 $\pi_g$ 识别源节点,$\phi_\omega$ 把每条跨界边映射到类型化宏端口。
  • (ii) 扩展:$\xi$ 恢复原始内部节点和边,通过记录的端口重连每条外部边。
  • (iii) 组合:MotifZip 拒绝冲突出现,所以一个出现的重写不会影响其他出现的内部节点或端口映射。

这个定理保证了:只要遵循 MotifZip 的接受条件和冲突感知重写规则,压缩就是"可逆且契约保持"的——这是 SkillZip 安全性的理论基石。

5.3 PathHydrate:预算内的可执行上下文水合

压缩后的图是持久化的,但在推理时需要把与当前任务相关的子图"水合"(hydrate)出来。PathHydrate 的目标是在预算 $B$ 内,构建一个依赖闭合、验证器可达、且与任务高度相关的可执行上下文。它分三个阶段。

阶段 1:查询引导的种子构建

先用任务分析(公式 4)把查询 $q$ 和执行器配置 $p$ 解析为结构化任务描述:

$$z_q = (g_q, O_q, \Gamma_q, I_q, D_q, \{d_i\}) = \textsf{AnalyzeTask}(q, p)$$

然后做双级种子融合。节评分(公式 5):

$$s(v, d_i, q) = \max\{\cos(\mathbf{e}(d_i), \mathbf{e}(v)), \cos(\mathbf{e}(q), \mathbf{e}(v))\}$$

取任务描述 $d_i$ 和原始查询 $q$ 与节节点嵌入相似度的最大值——这样既匹配显式任务分解,也匹配原始意图。

技能级用倒数排名融合(公式 6):

$$\text{RRF}(\sigma) = \sum_{r \in \mathcal{R}_{rank}} \frac{1}{k + \text{rank}_r(\sigma)}$$

其中 $\mathcal{R}_{rank} = \{R_{\text{doc}}, R_{\text{node}}\}$,即文档级和节点级两个排名器融合。这种双级融合是 SkillZip 在大规模库(100K 技能)上仍保持高检索精度的关键。

阶段 2:拓扑感知的上下文编译

这是 PathHydrate 的核心优化。在压缩图 $\mathcal{G}_{zip}$ 上搜索最优子图 $P_q^\star$(公式 7):

$$P_q^\star = \operatorname*{arg\,min}_{P \subseteq \mathcal{G}_{zip}} \eta T(P) + \beta|P| + \gamma E(P) - \delta \cdot \text{Match}(P, q)$$

约束条件:

  • 锚点覆盖:任务锚点必须被覆盖。
  • 依赖闭包:被选中的操作所需的输入、前置条件、资源都必须包含。
  • 验证器可达性:被选中的操作必须能到达验证器。
  • 预算约束:$T(P) \leq B$,其中 $T(P)$ 是当前水合级别下的估计 token 成本。

目标函数各项含义:

  • $\eta T(P)$:当前 token 成本。
  • $\beta|P|$:选中节/宏数量(控制冗余)。
  • $\gamma E(P)$:未来扩展成本估计(鼓励选低维护成本的子图)。
  • $\delta \cdot \text{Match}(P, q)$:任务匹配度(负号表示最大化匹配)。

$\eta, \beta, \gamma, \delta$ 是非负权重。这个目标函数的精妙之处在于它同时优化"当前成本"“规模"“未来成本"“任务匹配"四个维度,而不是简单贪心选最相关的节点。

脚手架修复:

$$(P, \xi_q) = \textsf{RepairClosure}(P, \mathcal{G}_{zip}, B)$$

这一步向前向后恢复缺失的节点:

  • 向后恢复 Input、Precondition、Resource 节点。
  • 向前恢复 Failure、Verifier、Output 节点。

上下文填充是"充分性门控"的——一旦锚点覆盖、依赖闭合、验证器可达三个条件满足就立即终止,不再添加任何冗余节点。这保证了水合结果是最小充分集。

阶段 3:渐进水合与渲染

最终上下文渲染为:

$$C_q = \textsf{RenderContract}(U, p, B)$$

渲染内容包括:意图、绑定输入、必需前置条件、水合操作、资源、守卫、故障处理器、验证器和源扩展指针。

渐进水合的含义是:宏默认以低级别(Name 或 Contract)渲染,只有当执行器在运行时发现需要展开(比如验证器失败、需要看具体操作步骤)时,才升级到 Outline 或 Full Source。这种"按需展开"是 SkillZip 在低预算下仍能支持复杂任务的关键——它不会一次性把所有可能需要的细节都加载进来,而是动态按需加载。

5.4 ReZip:增量维护与执行感知修订

技能库不是静态的。ReZip 把压缩图作为状态机维护,状态转换模型(公式 8)为:

$$\mathcal{Z}_t = (\mathcal{G}_{zip}^t, \mathcal{M}_t, \mathcal{B}_{res}^t, \Sigma_t), \quad \mathcal{Z}_{t+1} = \text{ReZip}(\mathcal{Z}_t, u_t)$$

其中:

  • $\mathcal{B}_{res}^t$:未匹配"残基子图"存储。
  • $\Sigma_t$:宏级执行证据。
  • $u_t$:新技能或执行轨迹。

ReZip 做两件事:新技能同化和宏修订。

新技能同化:残基 motif 提升

当新技能加入时,它的节节点会尝试匹配已有宏。匹配不上的部分成为"残基"存入 $\mathcal{B}_{res}^t$。当一个残基 motif $r$ 满足以下条件时(公式 9),被提升为新宏:

$$\text{supp}_t(r) \geq m, \quad \Delta(r) > 0, \quad \text{Valid}_\chi(r) = 1$$

即:跨技能支持数达到阈值 $m$、压缩增益为正、契约验证通过。这三个条件保证了只有"真正可复用且压缩安全"的残基才会被提升。

执行感知宏修订:风险评分

这是 ReZip 最有工程价值的部分。每个宏 $M$ 有一个风险评分(公式 10):

$$\rho_t(M) = \lambda_e \frac{n_{\text{exp}}(M)}{n_{\text{use}}(M)} + \lambda_v \frac{n_{\text{fail}}(M)}{n_{\text{use}}(M)} + \lambda_d \frac{c_{\text{repair}}(M)}{n_{\text{use}}(M)}$$

各项含义:

  • $n_{\text{exp}}(M)$:源扩展次数(Agent 在执行时需要展开看源码的次数)。
  • $n_{\text{use}}(M)$:总使用次数。
  • $n_{\text{fail}}(M)$:验证器失败次数。
  • $c_{\text{repair}}(M)$:下游修复成本(因这个宏执行失败导致的额外修复工作量)。
  • $\lambda_e, \lambda_v, \lambda_d$:平衡权重,分别对应"扩展不足"“验证失败"“下游恢复努力"三种风险信号。

风险评分 $\rho_t(M)$ 越高,说明这个宏在实际执行中越不可靠。修订策略分三级:

  1. 轻度风险:提高受影响任务配置的水合级别(比如从 Name 升到 Contract)。
  2. 持续风险:把宏拆分为更窄的契约兼容规则(让每个小宏承担更单一的契约)。
  3. 严重风险:退役宏,恢复源节。

这种基于执行证据的闭环维护是 SkillZip 区别于一次性压缩方法的重要特征——它让压缩结构随着实际使用不断自我优化,而不是构建好就固化。


六、知识反推:从实验数据看 SkillZip 的真实表现

论文的实验非常扎实,我们通过完整的数据表来反推 SkillZip 各组件的实际贡献。

6.1 主要基准结果:全面超越基线

SkillsBench(MiniMax-M2.7 骨干):

方法R(%)↑Ret@1↑Ret@5↑MRR↑
Vanilla Skills17.2–––
Vector Skills10.43.610.85.8
GoS18.750.665.557.3
SkillDAG27.366.778.271.3
SkillZip33.373.692.081.3

ALFWorld(MiniMax-M2.7 骨干):

方法R(%)↑Ret@1↑Ret@5↑MRR↑
Vanilla Skills47.1–––
Vector Skills50.737.968.649.2
GoS54.356.486.467.9
SkillDAG67.157.992.171.1
SkillZip79.385.798.691.2

SkillsBench(gpt-5.2-codex 骨干):

方法R(%)↑Ret@1↑Ret@5↑MRR↑
Vanilla Skills27.4–––
Vector Skills21.53.610.85.8
GoS34.450.665.557.3
SkillDAG36.870.175.973.0
SkillZip43.074.788.581.0

ALFWorld(gpt-5.2-codex 骨干):

方法R(%)↑Ret@1↑Ret@5↑MRR↑
Vanilla Skills89.3–––
Vector Skills92.937.968.649.2
GoS93.656.486.467.9
SkillDAG93.660.485.169.6
SkillZip96.490.799.395.0

关键提升幅度:

  • ALFWorld 最大提升 12.2 分(MiniMax-M2.7 骨干,79.3 vs SkillDAG 的 67.1)。
  • SkillsBench 最大提升 6.2 分(gpt-5.2-codex 骨干,43.0 vs SkillDAG 的 36.8)。
  • 系统效率:累积提示处理减少 47.0%,平均工具调用减少 21.7%,端到端任务时间减少 21.1%。

数据反推:注意到 Vector Skills 在 R(%) 上反而比 Vanilla Skills 差(SkillsBench 上 10.4 vs 17.2),这是因为纯向量检索会引入大量无关技能包干扰 Agent 执行。而 SkillZip 不仅 R(%) 最高,Ret@1 和 Ret@5 也全面领先——说明节级检索显著提升了检索精度。更重要的是,在 gpt-5.2-codex 这种强骨干上,SkillZip 的提升仍然显著(ALFWorld 96.4 vs SkillDAG 93.6),说明它不是靠"弥补弱骨干的不足"生效的,而是真正提供了更好的程序性上下文。

6.2 压缩与结构保真度:契约保持的硬证据

表示方法CR↑Tok↓DPR↑VR↑Recover↓R↑
Raw section graph1.00×6,716100.0100.00.031.0
Exact-text dedup.1.43×4,69798.698.15.231.2
Text compression3.46×1,94165.060.045.025.5
Generic graph grammar2.91×2,30893.490.822.729.4
SkillZip w/o checks3.78×1,77788.984.631.527.8
SkillZip3.46×1,94199.298.714.833.3

关键指标:

  • 压缩比(CR):3.46×,活跃存储减少 71.0%。
  • 依赖保持率(DPR):99.2%。
  • 验证器可达性(VR):98.7%。
  • 恢复率(Recover):仅 14.8%(vs 文本压缩的 45.0%)。
  • 契约提取质量:macro-F1 = 91.6,精确匹配 = 84.6。

数据反推:这张表是契约保持效果的硬证据。

  1. 对比"Text compression"和"SkillZip”——两者压缩比相同(3.46×),但文本压缩的 DPR 暴跌到 65.0%、VR 暴跌到 60.0%、Recover 飙升到 45.0%、R 反而下降到 25.5。这证明"结构盲"的文本压缩在高压缩比下会严重破坏可执行性。
  2. 对比"SkillZip w/o checks"和"SkillZip”——去掉契约检查后压缩比能到 3.78×(更高),但 DPR 降到 88.9%、VR 降到 84.6%、Recover 升到 31.5%、R 降到 27.8。这说明契约检查虽然牺牲了一点压缩比(3.46 vs 3.78),但换来的是显著的执行可靠性提升(R 从 27.8 升到 33.3)——这笔交易非常划算。
  3. “Generic graph grammar"的 Recover 高达 22.7%,说明纯拓扑图压缩虽然 DPR/VR 看起来还行,但实际执行时频繁需要回源展开——契约检查的缺失让"看起来压缩了"和"真正可执行"之间出现了鸿沟。

论文还测试了抗 corruption 能力:在 10% 契约腐败下,SkillZip 仍保持高 DPR 和 VR——说明契约检查机制对噪声有鲁棒性。

6.3 消融研究:每个组件都不可或缺

组件变体R↑Ret@1↑Tok↓DPR↑VR↑
Full SkillZip完整33.373.61,94199.298.7
Unitw/o section-level nodes27.966.73,103––
Compressionw/o MotifZip31.071.82,967100.0100.0
Compressionw/o dependency closure28.672.11,65382.392.6
Compressionw/o verifier constraint29.172.81,66894.976.4
Hydrationw/o global section rescue30.468.21,81296.596.8
Hydrationw/o adaptive hydration31.573.22,58799.298.7

消融关键发现:

  • 移除节级节点:Ret@1 下降 6.9,奖励下降 5.4,上下文增加 59.9%。这是影响最大的消融——证明"节级单元"是 SkillZip 的根基。
  • 移除 MotifZip:上下文增加 52.9%,奖励降至 31.0。压缩的贡献主要在效率而非精度。
  • 移除依赖闭包:DPR 降至 82.3——依赖闭包是契约保持的核心。
  • 移除验证器约束:VR 降至 76.4——验证器可达性约束确保了可验证性。
  • 禁用自适应水合:token 增加 33.3%——按需展开显著节省预算。

数据反推:注意"移除 MotifZip"后 DPR 和 VR 反而是 100.0——因为根本没压缩,当然 100% 保持。但 token 暴增 52.9%,奖励反而下降——说明不压缩时虽然结构完整但上下文太长,模型反而执行不好。这印证了"最小充分上下文"的重要性:不是上下文越多越好,而是要精准。

而"移除依赖闭包"和"移除验证器约束"虽然 token 更少(1,653 和 1,668),但 DPR 和 VR 大幅下降,奖励也下降——说明牺牲契约换来的 token 节省得不偿失。

6.4 大规模检索:100K 技能库的可扩展性

规模Ret@1 优势(vs SkillDAG)延迟
200 技能+6.2–
100K 技能+23.3248.3ms(在线检索 + 水合)

100K 技能库规格:

  • 4.77M 节节点。
  • 本地图构建 + MotifZip:178 秒完成。
  • Ret@1 保持:65.1。
  • PathHydrate 渲染:1,941 tokens/任务(比 top-5 全技能加载少 72.1%)。

数据反推:这是 SkillZip 最有说服力的可扩展性证据。在 100K 技能这种工业级规模下,SkillZip 相对 SkillDAG 的 Ret@1 优势从 200 技能时的 +6.2 扩大到 +23.3——说明库越大,节级检索和契约保持压缩的优势越明显。248.3ms 的在线延迟(检索 + 水合)完全在可接受范围内,而 178 秒完成 4.77M 节点的图构建和压缩,证明 MotifZip 的工程实现是高效的(平均每百万节点约 37 秒)。


七、通用灵感:SkillZip 给 Agent 系统设计带来的启发

跳出论文本身,SkillZip 的设计哲学对更广泛的 Agent 系统设计有深刻启发。

启发 1:把"单元对齐"作为系统设计的第一原则。

SkillZip 的核心洞察是"单元不匹配”——检索用整包、压缩用文本、执行用图,三种操作单元不一致导致了一系列问题。这个洞察可以推广到很多系统设计场景:当你发现一个系统在不同阶段用不同"单元"操作同一对象时,往往就是问题根源。比如 RAG 系统中,检索用 chunk、重排用句子、生成用文档——单元不一致会导致信息损失和幻觉。SkillZip 的解法是"统一到承载契约的最小语义单元”,这个思路在 RAG、工具调用、多 Agent 协作中都有借鉴价值。

启发 2:压缩不是目的,“可执行的压缩"才是。

很多压缩方法优化的是 token 数或描述长度,但 SkillZip 用 Recover 指标揭示了一个被忽视的真相:如果压缩后经常需要回源展开,那这种压缩就是伪压缩。文本压缩方法的 Recover 高达 45.0%,意味着近一半情况下 Agent 还得去看原始技能——压缩带来的 token 节省被回源成本完全抵消。真正的压缩应该是"压缩后基本不需要展开”,SkillZip 的 14.8% Recover 才是可执行压缩应有的样子。这个"Recover 指标"值得成为评估所有 Agent 记忆压缩方法的标配。

启发 3:用形式化契约让"压缩安全性"可判定。

SkillZip 最漂亮的设计是把"契约"形式化为三个层面(接口、执行、验证),并给出三个可判定的接受条件(接口稳定性、执行闭包性、验证器可达性)。这让"这个压缩安全吗"从模糊的工程判断变成了明确的形式化检查。这种思路在任何需要"保证压缩/抽象不破坏语义"的场景都适用:比如知识图谱的层次抽象、API 的版本兼容、数据库的模式演进。核心思想是:先定义清楚"什么不能丢”,再设计压缩算法,而不是先压缩再看丢了什么。

启发 4:多级别渲染让"按需加载"真正落地。

四种渲染级别(Name/Contract/Outline/Full Source)是一个优雅的设计。它承认了"不同任务需要不同粒度的信息"这一现实,并用渐进式加载来适应。这种思路在 Agent 系统中极其重要——绝大多数任务只需要知道"这个技能做什么、需要什么”,只有少数情况才需要看完整源码。默认低级别、按需升级,是token预算压力下的必然选择。这与软件工程中的"懒加载"、数据库中的"延迟求值"是同一种智慧。

启发 5:执行证据闭环让压缩结构"自我进化"。

ReZip 的风险评分是一个工程上极其实用的设计。它不假设"压缩一次就永远正确",而是持续监控每个宏在实际执行中的表现,用扩展次数、验证失败、下游修复成本三个信号来量化风险,并触发分级修订。这种"执行证据闭环"让压缩结构随着使用不断优化——真正可复用的宏被强化,有问题的宏被修订或退役。这与在线学习、A/B 测试、灰度发布的哲学一脉相承:让数据驱动结构的演化,而不是靠人工调参。

启发 6:可逆性是安全压缩的底线。

命题 1(组合结构提升定理)保证了"先压缩再展开"与原图同构。这个可逆性保证是 SkillZip 安全性的理论基石——即使某个宏在实践中发现有问题,也可以无损回退到原始节。在任何压缩/抽象系统的设计中,“可逆"都应该是底线要求,因为它给了系统"试错空间”——压缩错了可以改,不会造成不可逆的信息损失。

启发 7:跨骨干即插即用是工业落地的关键。

SkillZip 在 6 种 LLM 骨干上都有效,且无需骨干特定微调。这个特性对工业落地至关重要——它意味着 SkillZip 可以作为一层"记忆压缩中间件"叠加到任何现有 Agent 框架上,而不需要重新训练模型。这种"模型无关"的设计大大降低了落地门槛,也让它更容易被社区采纳。在当前 LLM 骨干快速迭代的背景下,“与骨干解耦"的系统能力比"绑定特定骨干"的优化更有长期价值。


八、总结:SkillZip 的贡献与展望

SkillZip 是对"Agent 技能库规模化"这一核心挑战的系统性回答。它的贡献可以归结为五点:

  1. 节级程序性记忆:把技能组织为源基础、契约保持的节级单元,统一了检索、压缩、执行三种操作的单元。
  2. 契约保持的宏压缩:用 MotifZip 把循环程序性 motif 替换为端口宏节点,通过三重契约验证(接口稳定性、执行闭包性、验证器可达性)保证压缩安全,并有组合结构提升定理提供可逆性保证。
  3. 预算内可执行上下文水合:PathHydrate 用拓扑感知搜索构建依赖闭合、验证器可达的最小充分上下文,支持渐进式按需展开。
  4. 执行感知增量维护:ReZip 通过残基 motif 提升识别新复用,通过风险评分识别问题宏并分级修订,让压缩结构自我进化。
  5. 即插即用的工程价值:跨六种 LLM 骨干有效,无需微调,可作为记忆压缩中间件叠加到现有框架。

从更宏观的视角看,SkillZip 代表了 Agent 记忆管理从"文本中心"向"结构中心"的范式转移。当技能库规模较小时,文本检索 + 整包加载或许够用;但当规模达到 10 万级甚至更大时,必须有节级单元、契约保持压缩和执行感知维护才能支撑可靠的技能复用。SkillZip 为这一方向奠定了坚实的形式化基础和工程范式。

论文也留下了一些开放问题:如何处理跨语言技能包(当前假设是单一语言)?如何与持续学习的技能版本演化(同一技能的多版本)协同?如何在多 Agent 协作场景下共享压缩结构?这些都是值得未来探索的方向。

对于构建大规模 Agent 系统的实践者,SkillZip 提供了一套可直接借鉴的设计蓝图:把契约作为一等公民,把压缩做成可判定的安全操作,把维护变成执行证据驱动的闭环。这三条原则不仅适用于技能库,也适用于任何需要"在规模增长下保持可执行可靠性"的程序性记忆系统。


论文链接: