问题
知识库有 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 适合"我知道大概问什么",渐进发现适合"我需要先摸清结构"