Summary

首个把 Agent Skills 的 progressive disclosure 当作单一变量做受控测量的研究:在 InfiniteBench 上把书本 QA 改造成文件系统 agent 环境(LoongDoc),固定 chunk 集与任务指令,只改变 agent 触达段落的路由方式(raw / flat / hierarchical),跨 3 个 harness × 3 个模型比较。结论是 progressive disclosure 的收益完全条件于 harness 的原生导航能力——单本书上强 harness(Codex)三种方式在误差内打平,弱 harness(Pi、Claude-Code)则有可观提升;语料扩到 20 本书时 raw 崩塌而 flat 顶住。第二层路由(hierarchical)在单本书上从不带来收益、有时直接毁掉准确率。

Problem & Motivation

长文档 QA 传统上二选一:整篇塞进 context window,或外挂 retriever。Agentic AI 提供第三条路——把文档路径交给 agent,让它自己决定读什么。Agent Skills 标准把这条路机制化:以 SKILL.md 为根打包目录,只有 description 常驻 context,body 与 bundled files 按需加载,即 progressive disclosure。

问题在于这套 pattern 的采用完全建立在工程直觉上。Claude Code 弃用 retrieval index 改为让 agent 现场搜索代码库,其工程师的依据是使用体验而非受控对比;“把整本书打包成 skill” 的 book-to-skill 配方在博客与 GitHub 上广泛流传,也从未在标准 benchmark 上被测过。已有的 skill 度量工作(SkillsBench、138K SKILL.md 审计)测的是 “有 skill vs 无 skill” 在异构 agentic 任务上的提升,没人把它对齐到 raw-document baseline,也没人拆开 skill pack 内部的设计轴。

作者指出实践文献从不区分的两个设计选择:disclosure 递归多深,以及per-chunk index 物理上放在哪(常驻 description vs 激活后才付费的 body)。这两个轴被 Agent Skills 规范捆在一起,本文把它们拆开。

Method

三种触达同一本书的方式(共享同一套 chunk 集,只有”接线”不同):

  • raw:沙箱文件系统里只放原书,不给 skill pack,agent 的导航策略不受约束(可以整篇读、可以先 grep)。这是没有人为它准备结构时 agent 的退化行为,也是度量 disclosure 增量的参照点。
  • flat:单个 SKILL.md。description 常驻 context 且描述整本书(discovery);body 是一张把每个 chunk 按路径 + 描述索引起来的表(activation);agent 据表读 references/ 下的 chunk 文件(execution)。per-chunk 描述在 body 里,只有书被激活后才付 context。
  • hierarchical:每个 chunk 自己成为一个 skill(description 是该 chunk 的描述,body 就是 chunk 内容),顶上加一个 meta-router。meta-router 与所有 child description 全部常驻 context。读一个 chunk 比 flat 少一跳,代价是常驻上下文税。

book-to-skill pipeline(每本书跑一次,产物对两种 disclosure 是固定输入而非变量):按章节标题切分,无标题时退化为约 4000 词的段落边界定长切分;对每个 chunk 用 LLM 生成 “一到两句摘要 + 命名实体列表” 的两段式描述,再用 chunk 描述汇总出 book-level 描述。所有生成调用 temperature 0 + 固定 seed,每本书留 manifest 记录模型、seed 与 prompt hash。book-level prompt 明确禁止说出或推断书名作者,且只读章节摘要不读原文,防止 agent 认出经典小说走捷径。

LoongDoc 环境:基于 BenchFlow,把 InfiniteBench 每道题变成一个 BenchFlow task——只读挂载 /environment(book.txt + questions/),agent 把答案写到 /logs/artifacts/questions/<QID>/answer.txt,verifier 直接按官方 compute_scores.py 打分(MC 正则抽选项字母,开放题用 InfiniteBench normalized match + token-level F1)。中间不插入任何 answer-extraction 模型。任何实现 Agent Client Protocol(ACP)的 harness 都能驱动,且完整记录 trajectory(工具调用、打开的文件、每步 token)。library scale 只是把书写成 /environment/books/<label>/book.txt 并加一个 corpus-index.md,agent 看到的接口不变。

对照基线 hybrid-rag:BM25 稀疏索引 + BGE-M3 稠密索引 → RRF 融合 → BGE cross-encoder 重排 → top-k chunk 进答案 prompt。agent 完全看不到全书。

Key Results

单本书(Table 1,mean ± std over 3 seeds)——收益是 harness 的函数,不是方法的函数

Harness / ModelMethodEn.MCEn.QAZh.QA
Codex / gpt-5.4-miniraw0.89430.74120.8652
flat0.89770.75160.8390
hierarchical0.88740.73770.8525
Pi / gpt-5.4-miniraw0.88510.71610.6856
flat0.91260.72590.7007
hierarchical0.63980.51200.6510
hybrid-rag0.76280.62140.7020
Pi / qwen3.6-27braw0.78650.68130.7563
flat0.80230.69130.7479
hierarchical0.64600.59330.3890
hybrid-rag0.74700.54390.5856
Claude-Code / claude-haiku-4.5raw0.7448 (±0.1166)0.68920.8142
flat0.86670.71730.8330
hierarchical0.86870.72550.8295
  • Codex 上 disclosure 归零:三种方式在三个子集上全部误差内打平(最大差 En.QA 0.7412→0.7516)。trajectory 显示 bare Codex 在 raw 下不线性读书,而是用问题里的实体名 grep 原文、只读命中段落——它现场重建了 skill pack 预先烤好的 locate-then-read 能力。作者由此判定:对这类 agent,预切的 skill 买到的是 retrieval path 的可控性,不是准确率。
  • 弱导航 harness 上 disclosure 有效:Pi 与 Claude-Code 上 flat 在每个 cell 都持平或超过 raw(唯一例外 qwen3.6-27b 的 Zh.QA,两者在一个标准差内)。Claude-Code En.MC 的 0.7448 → 0.8667 提升越过了 raw 本身很高的方差(±0.1166)。
  • 收益不是 retrieval 的马甲:hybrid-rag 在 qwen3.6-27b 上三个子集全面落后 raw 与 flat(开放 QA 差距最大,0.5439 vs raw 0.6813),gpt-5.4-mini 上 En.MC 也落后 flat。
  • 深度不划算,且会伤:hierarchical 无一 cell 优于 flat。Pi/gpt-5.4-mini 上 En.MC 从 0.9126 崩到 0.6398;Pi/qwen3.6-27b 上 Zh.QA 从 0.7479 崩到 0.3890。作者的机制解释是常驻的 child description 在 router 决定读哪个 chunk 之前就把它的 context 撑满了。

语料扩展(Table 2,Codex/gpt-5.4-mini 与 Claude-Code/claude-haiku-4.5,mean ± SE across bundles and seeds)——图景翻转

HarnessTaskMethodK=5K=10K=20
CodexEn.MCraw / flat / hier0.818 / 0.752 / 0.7770.767 / 0.790 / 0.7910.720 / 0.760 / 0.746
CodexEn.QAraw / flat / hier0.657 / 0.708 / 0.6670.577 / 0.582 / 0.6060.257 / 0.462 / 0.267
CodexZh.QAraw / flat / hier0.698 / 0.738 / 0.7710.214 / 0.178 / 0.1370.043 / 0.095 / 0.097
Claude-CodeEn.MCraw / flat / hier0.745 / 0.781 / 0.7770.653 / 0.636 / 0.6550.459 / 0.482 / 0.521
Claude-CodeEn.QAraw / flat / hier0.582 / 0.642 / 0.5890.413 / 0.480 / 0.4530.301 / 0.354 / 0.302
Claude-CodeZh.QAraw / flat / hier0.730 / 0.696 / 0.6870.550 / 0.576 / 0.5330.499 / 0.401 / 0.389
  • 规模压垮 bare agent:单本书上跟 skill pack 打平的 Codex,En.QA 从 K=5 的 0.657 掉到 K=20 的 0.257(腰斩有余),Zh.QA 塌到 0.043。
  • flat 接管:K=20 时 flat 在三个子集全面领先;En.QA 的 0.462 vs 0.257 越过一个标准误,En.MC 差距是 borderline,Zh.QA 在此样本量下只是方向性。Claude-Code 上 flat 在三个 K 全部领先 raw(K=10 的 0.480 vs 0.413 越过两个标准误),即换 harness 换模型仍复现。
  • rescue 依赖路由深度,不是 disclosure 本身:K=20 En.QA 上 hierarchical(0.267)塌回 raw(0.257),flat(0.462)是它们的 1.7 倍以上。机制上一致:hierarchical 常驻所有 chunk 描述,二十本书直接把常驻预算撑爆,重造了 disclosure 本该缓解的 context 压力。
  • cost 同向:K=20 En.QA 上 raw 花 68.3M tokens/question(uncached 上界约 25)拿到近两倍准确率。Pareto 前沿的顶点从 K=5 的 Codex raw 移到 K≥10 的 Codex flat。

负结果与反例(Pi harness 多书,Table 3,n=30 for En.QA/Zh.QA):Zh.QA 上 flat 在每个 K 都低于 raw,K=20 塌到 0.137(raw 0.287,hierarchical 0.330);En.QA 上 hierarchical 在 K=10 反超(0.310 vs flat 0.221)。作者据此承认 depth 是 scale- 与 task-specific 效应而非一致成本。此外 Codex En.MC 在 K=5 上 flat(0.752)低于 raw(0.818),即小语料时路由 overhead 是净损失。

Evidence Ledger

Claim IDClaimTypeSource locatorEvidence excerptStatus
C13 harness(Codex/Pi/Claude-Code)× 3 模型(gpt-5.4-mini/qwen3.6-27b/claude-haiku-4.5),InfiniteBench En.MC/En.QA/Zh.QA,外加 hybrid-rag baselinebenchmark-settingAppendix B.1 + Table 1”Three agent harnesses (Codex, Pi, and Claude-Code) drive three models: gpt-5.4-mini, qwen3.6-27b, and claude-haiku-4.5.”source-verified
C2Codex/gpt-5.4-mini 单本书三方法误差内打平(En.MC .8943/.8977/.8874;En.QA .7412/.7516/.7377;Zh.QA .8652/.8390/.8525)numberTable 1, Codex block; §5.1 Px2”on gpt-5.4-mini the three approaches tie within error on all three subsets, so the skill pack that wins under Pi adds nothing here”source-verified
C3Pi/gpt-5.4-mini 上 flat En.MC 0.9126 > raw 0.8851,hierarchical 崩到 0.6398numberTable 1, Pi block; §5.1 Px4”collapsing En.MC from 0.9126 under flat to 0.6398 on gpt-5.4-mini”source-verified
C4Claude-Code/claude-haiku-4.5 上 flat En.MC 0.8667 > raw 0.7448,raw 标准差 0.1166numberTable 1, Claude-Code block”raw 0.7448±0.1166 … flat 0.8667±0.0170”source-verified
C5Codex 零增益的机制解释来自 trajectory:bare agent 用问题实体 grep 原文、只读命中段落causal-mechanism§5.1 Px2”under raw the bare Codex agent does not read the book linearly but builds its own retrieval, grepping the raw text for the entities named in each question”source-verified
C6Codex 多书 En.QA K=20:raw 0.257 / flat 0.462 / hierarchical 0.267,flat-raw 差距越过一个标准误numberTable 2; §5.2 Px2”The En.QA K=20 gap clears one standard error (0.462 vs. 0.257)“source-verified
C7Codex 多书 Zh.QA raw 在 K=20 塌到 0.043numberTable 2, Codex Zh.QA raw K=20”0.043±0.022”source-verified
C8Claude-Code 多书 En.QA flat 三个 K 全面领先 raw(.642/.480/.354 vs .582/.413/.301),K=10 越过两个标准误comparisonTable 2; §5.2 Px4”flat leads raw across all three K, with the K=10 gap clearing two standard errors”source-verified
C9K=20 En.QA 成本:raw 68.3M tokens/question(uncached 上界约 25);该成本为无 prompt caching 的上界numberAppendix C.2 + C.4”raw reads the most tokens (68.3M/question, an uncached upper bound of 25)“source-verified
C10任务指令在 raw/flat/hierarchical 间固定,两种 pack 共享同一 chunk 集,只有文件系统 artifact 变化benchmark-setting§3.3 + Appendix A.1”Holding the instruction fixed across raw, flat, and hierarchical leaves the file system beside the text as the only variable”source-verified
C11单本书 cell 为 3 seed 的 mean±std;多书 cell 为 bundles×seeds 的 mean±SE,Pi 的 En.QA/Zh.QA 为 n=30benchmark-settingTable 1/2/3 captions”mean accuracy ± standard error across bundles and seeds (n=30 for En.QA and Zh.QA)“source-verified
C12hybrid-rag 在 qwen3.6-27b 上三子集全面落后 raw 与 flat(.7470/.5439/.5856)comparisonTable 1, Pi qwen3.6-27b; §5.1 Px3”On qwen3.6-27b it trails both raw and flat across all three subsets, with the open-QA gap the widest”source-verified
C13hybrid-rag 只在 Pi harness 的两个模型块出现,未跑 Codex 与 Claude-Codebenchmark-settingTable 1 row structure; Appendix B.1 Px1”We collect hybrid-rag on both qwen3.6-27b and gpt-5.4-mini across all three subsets as a second-model check.”source-verified
C14Pi 多书 Zh.QA 上 flat 每个 K 都低于 raw,K=20 塌到 0.137(raw 0.287,hierarchical 0.330)numberTable 3; Appendix C.1”On Zh.QA, flat drags below raw at every K and collapses to 0.137 at K=20, while hierarchical holds the best cell there at 0.330”source-verified
C15Codex 多书 En.MC K=5 上 flat 0.752 低于 raw 0.818;skill pack 只在大语料时接管前沿numberTable 2; §5.2 Figure 4 讨论”shifts from Codex raw at K=5 to Codex flat at K≥10, so the skill pack takes over the frontier only once the corpus is large”source-verified
C16chunking 与 description 配方固定为单一 book-to-skill 流程,未做 chunk 粒度 / 描述模型的 ablation(作者列为 limitation)benchmark-settingLimitations, “Fixed recipe""We hold the chunking and description recipe fixed at one widely adopted book-to-skill procedure, so a different chunk granularity or description-writing model might shift the balance”source-verified
C17LoongDoc 基于 BenchFlow,通过 ACP 驱动任意 harness,把 InfiniteBench 变成沙箱文件系统任务 + 确定性 verifierbenchmark-setting§4 + Appendix A.1”Built on BenchFlow … LoongDoc runs any harness that implements the Agent Client Protocol (ACP) against a sandboxed task and records what it does.”source-verified
C18qwen3.6-27b 用 vLLM 在 2×RTX 8000 上以 TP=2、131,072 token 窗口本地服务;agent 包锁定 pi-coding-agent 0.66.1 / pi-acp 0.0.25benchmark-settingAppendix B “Compute environment""we serve it with vLLM on two NVIDIA RTX 8000 GPUs … (—tensor-parallel-size 2) and a 131,072-token context window … pi-coding-agent 0.66.1 and pi-acp 0.0.25”source-verified
C19多书 En.MC 上三种配置在两个 grid 的每个 K 都在一个标准误内(Codex K=20:.720/.760/.746)numberAppendix C.3 + Table 2”On En.MC the three configurations stay within a standard error at every K under both the Codex and Claude-Code grids”source-verified
C20Pi/qwen3.6-27b 单本书 flat En.MC 0.8023 > raw 0.7865;hierarchical 把 Zh.QA 从 0.7479 拉到 0.3890numberTable 1, Pi qwen3.6-27b; §5.1 Px4”falling below flat across all three subsets on qwen3.6-27b, steepest on Zh.QA (0.7479 to 0.3890)“source-verified
C21论文未做 token/compute-matched control:三种方式的 token 与工具调用预算不被拉平,成本是事后按真实用量在 cost-accuracy 平面上报告的 uncached 上界benchmark-setting§3.3 + Appendix C.4(预算固定只出现在 hybrid-rag 内部,A.3)“The per-question cost … is an uncached upper bound: it sums real per-call token usage with no prompt caching.”source-verified
C22En.MC 存在 pre-training 混淆:MC 用书是模型很可能记住的英文经典小说;K=20 时 raw agent 用寥寥几次工具调用就答对causal-mechanismLimitations, “Pre-training confound on En.MC""the multiple-choice books are canonical English novels the models have likely memorized … even at K=20 the raw agent answers En.MC correctly in a handful of tool calls”source-verified

C21 是一条关于”论文中不存在某控制”的否定性 claim,verifier 在通读全文后确认了其正面部分(成本为事后 uncached 上界);否定部分的强度受限于”全文已读”这一前提。

Strengths & Weaknesses

Strengths

把捆在一起的设计轴真正拆开了。这篇的核心价值不在 accuracy 数字,而在 factorization:Agent Skills 规范同时规定了”递归深度”和”per-chunk index 放在常驻 description 还是激活后的 body”,实践文献从不区分,本文用共享 chunk 集 + 固定任务指令 + 同一确定性 verifier 把两者隔离成 flat vs hierarchical 的单一对比。这是 component attribution 应有的做法。

交互效应被当成主结果,而不是被平均掉。绝大多数 harness 论文报告的是跨设置的平均提升,本文直接把 “在 Codex 上收益为零、在 Pi 上收益显著” 当成论文的中心发现,并用 trajectory 给出机制解释(bare Codex 自己 grep 实体重建了 locate-then-read)。这把一个 “方法有效性” 问题正确地重述成了 “方法与 harness 能力的交互” 问题。

负结果保留完整。hierarchical 在 Pi 上把 En.MC 打到 0.6398、flat 在 Pi 多书 Zh.QA 上一路低于 raw、Codex En.MC K=5 上 flat 反而更差——这些反例都留在正文和附录里,没有被”平均后仍然更好”掩盖。Limitations 一节自曝 En.MC 的记忆混淆,并用两条 trajectory 证据(K=20 时几次工具调用就答对、单本书时 agent 认出被改名的经典作品)自我攻击,态度诚实。

Weaknesses

没有 budget-matched control,这是最大的方法论缺口。三种方式的 token 与工具调用预算不被拉平(C21)。因此 “flat 更准” 与 “flat 花得更少” 是两条被同时观察到的事实,而非一个受控结论:无法排除给 raw 同等或更多预算(例如强制 grep-first 提示、或允许更多轮次)就能补上大部分差距。作者在 C.4 里承认成本是 uncached 上界,还指出 caching 会更利于 disclosure——这说明成本轴本身是可被实现细节大幅移动的,不适合承载因果论断。

harness 质量与模型选择部分混淆。Codex 只跑 gpt-5.4-mini,Claude-Code 只跑 claude-haiku-4.5,只有 Pi 跑了两个模型。所以 “Codex 是 strong navigator” 与 “gpt-5.4-mini 更强” 在单本书主表里无法完全分离——唯一的部分解耦来自 Pi 也跑 gpt-5.4-mini(同模型不同 harness:raw En.MC 0.8943 vs 0.8851 接近,但 hierarchical 0.8874 vs 0.6398 差异巨大),这条对照很有价值但只覆盖一个模型。hybrid-rag 更是只在 Pi 下测(C13),所以 “disclosure 打败经典 retrieval” 这个结论是在弱 harness 上得到的,没有在 Codex 上验证。

progressive disclosure 只被拆成”路由深度 + index 位置”两个轴,未拆到子机制。chunking 粒度、描述生成模型、描述内容格式(摘要 vs 实体列表)全部固定(C16)。所以论文说的 “disclosure” 实际上等价于 “按章节切 + LLM 写描述 + 描述门控加载” 这一整包,无法回答 “增益来自 chunk 边界质量还是来自描述的实体列表” 这类问题。考虑到作者自己引用的 Zhang et al. (2026) 138K SKILL.md 审计结论是”路由元数据是承重墙”,这个不拆是遗憾。

外部效度窄。语料只在 K∈{1,5,10,20} 四点上采样、只在 InfiniteBench 一个 benchmark family 内、只有叙事性小说;作者自己承认无法说明效应是否迁移到代码或技术手册。En.MC 因记忆混淆基本不可用,真正干净的信号只剩 En.QA(Zh.QA 上结论直接反向,作者归因于 base model 而非 skill pack,但这个归因本身没有被独立检验)。样本量受 InfiniteBench 限制,多处比较停在一个标准误内。

对领域的意义:对 harness component attribution 这个问题,这篇提供了一个可复用的实验骨架——固定其余组件、把单一组件的接线方式作为唯一变量、并用 trajectory 解释而非仅报告分数。它给出的经验规律(context management 的收益与 agent 原生导航能力互补,因此在强 harness 上归零、在语料超出原生导航能力时变得决定性)如果在其他组件(externalized state、fresh-context execution、independent verification)上也成立,那么 “harness 组件的收益是条件性的、且条件是 baseline 能力” 就是比任何单个组件的平均提升更重要的结论。

Mind Map

mindmap
  root((Progressive Disclosure))
    Problem
      Agent Skills 靠工程直觉传播
      从未对齐 raw-document baseline
      规范捆绑路由深度与 index 位置
    Method
      raw 无 skill pack
      flat 单层 SKILL.md 索引 chunk
      hierarchical 每 chunk 成 skill 加 meta-router
      共享 chunk 集 固定任务指令
      LoongDoc 基于 BenchFlow 与 ACP
      hybrid-rag 对照 BM25 加 BGE
    Results
      单本书 Codex 三法打平
      单本书 Pi 与 Claude-Code flat 领先
      hierarchical 单本书从不获益 有时崩塌
      K=20 En.QA raw 0.257 flat 0.462
      flat 准确率近两倍 token 约半
      Zh.QA 与 Pi 多书出现反例
    Caveats
      无 budget-matched control
      harness 与模型部分混淆
      En.MC 记忆混淆
      配方固定 未拆子机制

Notes

  • 对 survey 的直接用途:这是少数把 “context management” 单独隔离出来、并明确报告交互效应而非平均效应的工作。它的 factorization 手法(共享底层 artifact,只改接线)可以直接借用到 externalized state / fresh-context execution / independent verification 的归因设计上。
  • 最值得追问的一点:作者把 Codex 的零增益解释为 “bare agent 自己重建了 locate-then-read”。如果这个解释成立,那么 progressive disclosure 的真正作用变量不是 “context 有没有被管理”,而是 “agent 能否自己产生一个有效的 retrieval 策略”。这意味着正确的自变量应该是 agent 的检索能力而非 harness 组件的存在与否——但论文没有把这个变量直接操纵(例如在同一 harness 内屏蔽 grep 工具),只能通过跨 harness 观察间接推断。
  • 与 vault 中已有笔记的呼应待查:2607-HarnessHandbook(harness 可编辑性)、2607-ContextFailsFirst(context 是首个失效点)、2510-ContextFolding(长时程 context 压缩)都在相邻问题上,值得做一次横向比较,看它们对 “context 管理的收益是否条件于 baseline 能力” 是否给出一致或矛盾的证据。
  • 论文未给出代码仓库链接;LoongDoc 建在 BenchFlow 上,若后续开源可作为 repo-digest 候选。