问题

知识库有 10 万文档、代码库有 5000 个文件,全塞上下文不可能,RAG 一次检索又经常漏掉关键信息——你怎么保证 Agent 找得全、又不被信息淹没?

核心模式

渐进发现(Progressive Disclosure):信息分层组织,Agent 从"目录"开始,按需逐层展开。类比人类查资料:先看目录 → 翻章节 → 读段落,而不是把整本书摊在桌上。

tools = [
    list_collections(),      # L0: 有哪些知识库/目录(几十个 token)
    list_docs(collection),   # L1: 库内文档标题清单
    get_outline(doc_id),     # L2: 文档大纲
    read_section(doc_id, section),  # L3: 具体段落全文
    grep(pattern),           # 补充: 关键词直达
]

每一层只暴露"导航所需的元信息",全文只在最终需要时加载。Claude Code 的 ls → grep → read 工具组合就是这个模式的经典实现——它从不预读整个代码库。

实战要点

  • 导航层要提供足够决策的信息:文档标题之外加上一句话摘要,能大幅减少"点进去发现不对"的无效往返
  • 给 Agent 全局搜索工具(grep 式)做捷径,避免它在大目录里逐层翻找已知关键词
  • 层数不宜超过 4 层,每深一层就是一次工具往返的延迟
  • 与 RAG 互补而非替代:RAG 适合"我知道大概问什么",渐进发现适合"我需要先摸清结构"