渐进式披露:AI Agent上下文工程的核心模式


引言:被忽视的上下文瓶颈

在AI Agent的研究与工程实践中,我们花费大量精力优化推理策略(ReAct、Plan-and-Execute)和行动工具(Tool Use),却常常忽视一个根本性的约束:上下文窗口是有限的注意力资源

想象一下:你正在阅读一份100页的技术文档,但只能同时看到其中5页。如果这5页充满了无关细节,你的决策质量必然下降。这不是因为你不够聪明,而是因为信息过载稀释了关键信号的感知

这正是**渐进式披露(Progressive Disclosure)**要解决的问题。它不是让模型更聪明,而是让有限的注意力用在更重要的地方。


一、本质区别:上下文工程,而非推理模式

渐进式披露首先是一个上下文工程模式,而不是推理—行动模式。

维度 ReAct / Plan-and-Execute 渐进式披露
核心问题 Agent下一步做什么? 上下文窗口里应有哪些信息、粒度多粗、何时展开?
关注对象 推理与行动的循环 信息的编排与加载策略
本质属性 决策逻辑 上下文工程(Context Engineering)

关键洞察:上下文准备的质量,直接影响后续推理的效果。即使拥有最先进的推理算法,如果输入的上下文充满了噪声,输出质量也会大打折扣。


二、理论基础:HCI领域的认知原则

渐进式披露并非AI领域的独创概念,它深植于人机交互(HCI) 的研究传统。

2.1 认知过载与决策质量

根据 Springer & Whittaker 2018 的研究(arXiv:1811.02164):

“系统初始若暴露所有细节,用户反而无法做出准确判断——信息过载干扰认知。”

这一发现揭示了人类认知的一个基本特征:

  • 工作记忆容量有限:人类短期记忆通常只能同时处理4±1个信息组块
  • 信号稀释效应:无关细节会稀释关键信息的显著性
  • 决策疲劳:过多的初始选择会降低决策质量和速度

2.2 渐进式披露的认知优势

研究对比了两种信息呈现策略:

策略A:一次性全量披露
├─ 初始状态:展示所有功能、参数、选项
├─ 用户认知负荷:高(需要筛选和过滤)
└─ 决策质量:低(信息过载导致关键信号被淹没)

策略B:渐进式披露  
├─ 初始状态:仅呈现简化摘要和核心选项
├─ 按需展开:用户表达意图后,动态加载相关细节
└─ 决策质量:高(注意力聚焦于当前任务相关上下文)

核心原则先给摘要,后续按需展开——这一原则从HCI领域迁移到AI Agent系统,构成了渐进式披露的理论基础。


三、工程约束:上下文腐化(Context Rot)

如果说HCI原则提供了"为什么需要渐进式披露"的理论支撑,那么Anthropic的Context Engineering研究则提供了"为什么必须这样做"的工程约束。

3.1 有限注意力资源

根据Anthropic《Effective Context Engineering for AI Agents》(2025):

“上下文窗口是有限的注意力资源,token越多,模型提取关键信息的能力越弱。”

这与人类的认知限制形成了有趣的平行:

  • 人类有工作记忆容量限制(Miller’s Law: 7±2)
  • LLM有上下文窗口限制(尽管不断扩大,但有效利用效率随长度递减)

3.2 Context Rot:上下文腐化

Anthropic提出了一个关键概念——Context Rot(上下文腐化)

“信息并未消失,而是被稀释至模型无法有效感知的程度。”

现象描述

  • 上下文窗口中塞入了5000 tokens的背景信息
  • 关键指令 buried in the middle("Lost in the Middle"现象)
  • 模型表现如同这些信息不存在——不是因为被截断,而是因为被稀释
Context Rot 示意图:

[上下文窗口 - 100K tokens]
├─ 系统提示(500 tokens)✓ 高显著性
├─ 历史对话(3000 tokens)✓ 中等显著性  
├─ 技能文档A(5000 tokens)✗ 被稀释,难以提取
├─ 技能文档B(5000 tokens)✗ 被稀释,难以提取
├─ 当前任务指令(200 tokens)✓ 高显著性
└─ 输出空间

问题:技能文档A/B虽然存在,但模型难以有效利用

3.3 对抗Context Rot的工程策略

解法:Agent只维护轻量级摘要,按需动态加载详细内容,而非预先填满上下文。

这正是渐进式披露的工程化落地:用信息编排对抗注意力稀释


四、工程实践:Claude Code Skills 四步闭环

理论需要落地。Claude Code的Skills机制是渐进式披露在工程层面的典范实现。

4.1 设计背景

Skills是Claude Code的插件机制:

  • 数量:最多数百个
  • 单个体积:完整内容最多5000 tokens
  • 矛盾:全量预加载 → 上下文爆炸;完全不加载 → 技能不可用

渐进式披露以四步闭环解决这一矛盾

4.2 四步闭环详解

┌─────────────────────────────────────────────────────────────┐
│                    渐进式披露四步闭环                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Step 1: 注入摘要 (~100 tokens)                              │
│  ┌──────────────┐                                          │
│  │ 会话开始时仅  │  YAML frontmatter                         │
│  │ 注入元数据    │  - 技能名称                                │
│  │              │  - 功能摘要                                │
│  │              │  - 触发条件                                │
│  └──────────────┘  模型感知技能列表,正文不可见              │
│           ↓                                                 │
│  Step 2: 按需展开 (≤5000 tokens)                            │
│  ┌──────────────┐                                          │
│  │ 模型匹配任务  │  调用 SkillTool                           │
│  │ 后动态加载    │  → 完整正文注入上下文                     │
│  │              │  不调用则不进入上下文(零成本)             │
│  └──────────────┘                                           │
│           ↓                                                 │
│  Step 3: 用完压缩 (~200 tokens)                              │
│  ┌──────────────┐                                          │
│  │ 执行完成后    │  正文被剥离                                │
│  │ 上下文清理    │  → 仅保留约200 tokens的结果摘要           │
│  │              │  上下文零污染                              │
│  └──────────────┘                                           │
│           ↓                                                 │
│  Step 4: 压缩后只取回用过的                                   │
│  ┌──────────────┐                                          │
│  │ autocompact  │  触发后仅重新注入                          │
│  │ 智能召回     │  → 本轮实际使用过的技能摘要                 │
│  │              │  避免重复加载未使用技能                     │
│  └──────────────┘                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4.3 Token流量分析

阶段 Token数量 说明
初始注入 ~100 tokens × N个技能 仅YAML frontmatter,可忽略成本
按需展开 ≤5000 tokens 仅当技能被调用时发生
执行中 5000 tokens 完整技能内容参与推理
用完压缩 ~200 tokens 仅保留执行结果摘要
长期维护 ~200 tokens × 实际使用技能数 智能召回机制

关键指标

  • 峰值上下文占用:仅活跃技能完整内容
  • 平均上下文占用:大部分时间为摘要级token
  • 上下文污染度:趋近于零(用完即清理)

4.4 设计哲学

Claude Code Skills的四步闭环体现了渐进式披露的精髓:

  1. 延迟加载(Lazy Loading):非必要不展开,降低初始认知负荷
  2. 即用即走(Use and Release):避免上下文累积导致的Rot
  3. 智能召回(Smart Recall):基于实际使用历史优化后续加载

五、三层总结:从理论到工程

渐进式披露在AI Agent系统中的落地,是三层知识叠加的结果:

┌─────────────────────────────────────────────────────────────┐
│  第三层:工程实现层                                          │
│  Claude Code Skills 机制                                    │
│  • 100→5000→200 tokens 四步闭环                             │
│  • 按需加载、用完清理、智能召回                              │
│  • 上下文零污染设计                                          │
├─────────────────────────────────────────────────────────────┤
│  第二层:工程研究层                                          │
│  Anthropic Context Engineering                               │
│  • 上下文窗口 = 有限注意力资源                                │
│  • Context Rot:信息稀释而非消失                             │
│  • 对抗策略:轻量摘要 + 动态加载                             │
├─────────────────────────────────────────────────────────────┤
│  第一层:理论基础层                                          │
│  HCI认知原则(Springer & Whittaker, 2018)                   │
│  • 初始全量披露 → 认知过载 → 决策质量下降                    │
│  • 初始摘要披露 → 按需展开 → 决策质量提升                    │
│  • 核心原则:先给摘要,后续按需展开                          │
└─────────────────────────────────────────────────────────────┘

一条HCI认知原则提供理论基础,一个工程约束使其成为必须——两层叠加,构成渐进式披露进入Agent系统的根本原因。


六、扩展思考:渐进式披露的通用模式

Claude Code Skills的实现可以抽象为更通用的设计模式:

6.1 通用四步模型

class ProgressiveDisclosure:
    """
    渐进式披露通用模式
    """
    
    def inject_summary(self, items: List[Item]) -> Context:
        """
        Step 1: 注入摘要
        - 输入:全量技能/工具/文档列表
        - 输出:轻量级摘要上下文
        - 成本:O(N) × 摘要token数,其中N为项目数
        """
        return [item.to_summary() for item in items]
    
    def expand_on_demand(self, context: Context, task: Task) -> Context:
        """
        Step 2: 按需展开
        - 输入:当前任务 + 摘要上下文
        - 输出:匹配任务的完整内容注入
        - 触发条件:模型判断需要详细内容
        """
        matched = self.matcher.match(task, context)
        return [item.expand() for item in matched]
    
    def compress_after_use(self, context: Context, result: Result) -> Context:
        """
        Step 3: 用完压缩
        - 输入:执行完成后的完整内容
        - 输出:压缩后的结果摘要
        - 目标:上下文零污染
        """
        return result.to_summary()
    
    def recall_used_only(self, history: History) -> Context:
        """
        Step 4: 智能召回
        - 输入:会话历史中使用过的项目
        - 输出:仅重新注入实际使用过的摘要
        - 优化:避免重复加载未使用项目
        """
        return [item.summary for item in history.used_items]

6.2 应用场景扩展

场景 摘要形式 完整内容 触发条件
工具调用 工具名称+功能描述 工具参数Schema+示例 模型选择工具时
RAG检索 文档标题+片段摘要 完整文档段落 检索匹配时
多Agent协作 Agent角色描述 Agent完整Prompt+技能 需要协作时
知识库查询 实体摘要卡片 实体完整属性+关系 实体被提及时
代码库理解 文件树+函数签名 完整函数实现 需要修改/调试时

七、核心理念回顾

渐进式披露不是一项复杂的技术,而是一种信息编排的智慧

“渐进式披露不使模型更聪明,它只是让有限的注意力,用在更重要的地方。”

在AI Agent系统设计中,我们常常追求更强大的模型、更复杂的推理链、更丰富的工具集。但渐进式披露提醒我们:在资源约束下,如何组织信息往往比拥有多少信息更重要

从HCI的认知原则,到Anthropic的Context Engineering,再到Claude Code Skills的工程实践,渐进式披露展现了跨学科知识迁移的力量。它不仅是技术方案,更是一种设计哲学——尊重认知限制,优化注意力分配


参考文献

: Springer, A., & Whittaker, S. (2018). Progressive Disclosure: Empirical Evidence and Design Guidelines. arXiv preprint arXiv:1811.02164.

Anthropic. (2025). Effective Context Engineering for AI Agents. Technical Report.

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐