Skip to content
//0x
0x1e//工具设计

把文档库改造成 AI Agent 的项目地图:让上下文探索成本降 80%

起点:Agent 在文档里”迷路”

我用 AI Agent 在一个多项目工作区里做开发和迭代。工作区里有一个积累了半年的本地文档库——几十个项目目录、上百篇文档:需求、方案、报告、计划、手册,还混着已下线和被取代的版本。

问题很快显现:每次开新会话,Agent 都要花大量 token 去”找路”。

典型的浪费:

我意识到:这套文档库是为人类整理的,不是为 Agent 检索设计的。它对人友好,对 Agent 昂贵。

诊断:文档库到底服务谁

把问题拆开,核心是三件事:

  1. 没有”任务 → 上下文”的路由。 Agent 拿到一个任务,得靠猜和搜。缺一张”改 X 先读 Y”的映射表。
  2. 活跃面被历史稀释。 几十篇计划里,真正在做的是个位数,其余是已完成/废弃/被取代的,但都平铺在同一层。
  3. 指令层太重。 AGENTS.md 里塞了大量运维细节、端点表、E2E 步骤——这些是参考,不是约束,却每次会话都自动加载。

设计:三层地图 + 状态驱动

我把它重构成一套面向 Agent 的上下文系统,原则是:地图优先、状态驱动、人机分离、指令瘦身。

1. 地图层:根地图 + 项目地图

新增一个 MAP.md 作为唯一入口:

Agent 的路径变成:根 MAP → 项目 MAP → 只读被点名的权威文档。禁止整库遍历写成硬规则。

2. 状态驱动:frontmatter 与计划生命周期

给所有内容文档统一 frontmatter(title/project/type/status/language + 可选)。其中最关键的是 status:

draft | review | approved | active | on-hold | completed | superseded | abandoned

3. 人机分离:人类产物移出工作源

把面向用户的产物——操作手册、指南、FAQ、报告——集中到 output/。它们是 Agent 写的东西,不是读的东西。工作源只保留:设计、需求、制度、活跃计划。

4. AGENTS 瘦身:只留硬约束与指针

AGENTS.md 是自动加载的固定成本。我把它压缩到只留:角色一句话、硬约束(安全/部署边界)、指向地图的指针。运维细节、端点表、长流程全部下沉到按需读取的参考文档。

量化:省了多少

同一个”改某功能”的任务,改造前后:

指标改造前改造后
每任务固定路由成本400–870 行80–130 行
全部 AGENTS 合计~2500 行~800 行
计划噪声(活跃/总量)26 篇平铺活跃 5 篇,21 篇归档
文档定位上百篇中探索地图查表直达

固定上下文成本下降约 80%,AGENTS 体积下降约 68%。定点文档(计划/参考)本身是完成任务必需的,不算额外开销。

过程经验

重构本身也踩了几个坑,值得记下:

用源码核验文档状态,别信文档自己写的。 一批”待实施”的计划,状态行是写下时的快照,之后没更新。我逐条对照源码:有的功能其实已实现(计划该标”完成”),有的方案已被数据否证(该废弃)。文档状态是声明,源码是事实。

人机产物的边界要显式。 二进制交付物、品牌源文件、市场资料、备份……各有归属;把它们混进”文档库”会同时污染人和 Agent 的检索。

脱敏与历史清理。 迁移/下沉文档时,生产口令、服务器地址、内部标识必须替换为占位符。已经进入 git 历史的敏感内容,需要重写历史(filter-branch)再强制推送——这是一次性、不可逆的操作,要单独授权。

给 Agent 写检索协议,而不是让它自由发挥。 明确”先读地图、只读被点名文档、禁止整库遍历”,比任何优化都有效。

边界与反思

一句话:文档库的目标不该是”给人看得舒服”,而是”让 Agent 用最小上下文找对地方”。 当地图、状态、边界、指针都就位,Agent 的探索成本会断崖式下降。


说明:本文已对项目名、域名、主机、凭据、绝对路径做匿名化处理,仅保留方法与量化结论。


Share this post on:

Previous Post
六个角色,不是六个窗口:一套长期项目的多 Agent 协作架构
Next Post
从 Token 注入到自管理执行器:设计一个跨 Agent 的 Todoist Skill