
前面几篇我们已经把几件事说清楚了先从小任务开始用prompt就能做的先做任务变复杂后再加Harness任务继续推进后引入状态状态机负责描述转移SIADOS负责把一轮任务推进串起来控制层要能按风险逐步加深也要能在任务稳定后适当降级这一篇开始进入本书的第三部分文件系统与记忆。这里要回答的是一个很现实的问题如果 AI 不能只靠当前对话记住项目那它到底应该先看什么答案是先看项目地图。1. 为什么不能只靠对话上下文对话窗口很适合承载当前一轮输入但它不适合保存长期可复用的项目事实。因为对话上下文有几个天然问题它会不断增长它会混入很多临时讨论它会被新的任务覆盖它不适合长期维护稳定认知也就是说对话更像“当前工作台”不是“项目记忆库”。如果一个 AI 编程系统总是靠当前对话去猜项目状态它就会越来越容易忘记之前的边界误读当前目标重复处理已经解决过的问题在无关信息里浪费上下文所以本书的思路不是把所有内容都塞进上下文而是把长期应该记住的东西放到文件里。2. 什么是项目地图project_map.md的作用可以先理解成一张“导航图”。它不是完整文档也不是详细日志而是一份经过维护的、足够短的项目认知摘要。它负责告诉 AI这个项目的目标是什么关键文件有哪些哪些约束不能破坏现在大概处于哪个阶段下一轮应该先读什么换句话说project_map.md不是用来记录所有细节的而是用来让 AI先知道往哪走再决定怎么走。3. 项目地图和对话历史有什么区别这两者的职责不一样。对话历史对话历史按照时间保存消息。它的特点是量会越来越大内容会越来越杂容易混入旧计划适合回看过程不适合做长期认知项目地图项目地图按照决策价值保存事实。它的特点是短稳可维护优先读取适合决定下一步动作所以它们不是替代关系而是分工关系对话历史负责“发生过什么”项目地图负责“现在该怎么继续”4. 项目地图应该保留什么项目地图不是越多越好。它只保留会影响下一轮决策的内容。4.1 项目目标目标要明确不然 AI 不知道局部修改和整体方向是不是一致。例如这本书是在讲 AI 渐进编程不是在讲纯 prompt 技巧也不是在讲单点工具炫技4.2 关键文件与入口AI 不应该每轮都重新扫描整个项目。它应该知道先看哪些文件。例如哪个是主文档哪个是当前任务哪个记录问题哪个记录修改原因4.3 稳定不变量有些规则不能随便改。这些规则就应该出现在项目地图里。例如某些术语不能乱换某些范围不能越界某些结构要保持一致4.4 当前阶段项目现在处于哪个阶段也要写清楚。因为阶段不同允许动作不同。例如现在是在概念讲解阶段还是在论文修改阶段还是在代码项目阶段5. 项目地图为什么能减少上下文膨胀因为它让 AI 不用每轮都从头猜。如果没有项目地图AI 往往要重新读很多历史对话重新猜项目目标重新判断边界重新找相关文件这就会把上下文越拖越大。而项目地图的作用就是把这些稳定事实压缩成一份短文本。所以本书把它看成一种索引压缩导航入口控制它位于“易失上下文”和“完整历史”之间承担的是中间层记忆的作用。6. 一个论文项目地图长什么样以论文修改场景为例paper_map.md可以很短但要足够清楚。它至少要告诉 AI论文的核心目标是什么主文档是哪一个哪些 claim 是边界内的哪些表述不能越界下一轮应该先读什么比如# Paper Map ## Goal 提出一种基于 NFT 的 WiFi 访问控制机制 网关验证钱包签名与访问 NFT 的当前持有状态 据此决定网络会话的建立。 ## Main file - paper.md ## Claim boundary - 可以描述为条件性的访问控制机制 - 不能把 NFT ownership 写成现实身份的证明 - 不能声称它单独防止共享、私钥泄露或终端入侵 ## Read order 1. current_task.md 2. terms_and_symbols.md 3. 任务涉及的论文段落 ## Current stage 引言主张强度校准这个地图很短但它已经足够让下一轮知道目标是什么主文件是什么边界在哪里先读什么当前处在什么阶段7. 为什么读顺序也要写进地图因为 AI 并不总知道应该先看什么。如果没有读顺序它可能先读错文件先看无关章节先进入细节而忽略总目标在缺少前提的情况下就开始动作所以读顺序不是形式要求而是为了让 AI 先建立正确的上下文层级。本书里推荐的顺序通常是current_task.mdproject_map.md任务相关的正文或代码片段再进入修改、验证和记录这样AI 先知道这轮做什么再知道为什么这么做最后才进入具体动作。8. 项目地图和其他状态文件的关系这一点也很重要。project_map.md放长期稳定的项目认知。current_task.md放本轮具体任务。revision_log.md放为什么这么改、改了什么、验证如何。open_issues.md放暂时不能解决但不能忘掉的问题。它们不是重复而是分层project_map.md管“项目认知”current_task.md管“当前任务”revision_log.md管“修改原因”open_issues.md管“未决问题”项目地图是入口其他文件是围绕入口展开的具体状态。9. 什么时候项目地图会变得太重如果项目地图写得太长它就会失去“地图”的作用。常见问题有三个9.1 目标写得太多项目目标如果变成了长篇讨论它就不再是目标而是文档堆积。9.2 细节写得太满地图里不该塞完整历史。历史应该进日志和 Git。9.3 长期不更新如果项目已经变了地图还停留在旧版本那它会误导下一轮。所以项目地图要控制长度只保留会改变下一轮动作的内容。10. 本章小结这一章想讲清楚的核心是AI 编程不能只靠对话窗口记忆必须有一份稳定的项目地图让 AI 先读认知再决定动作。它的作用不是记录所有事而是压缩出一份短、稳、可维护的项目导航模型。有了项目地图AI 才能在每一轮任务里先知道目标是什么关键文件有哪些边界在哪里现在处于哪个阶段下一步应该先读什么下一章我会继续讲当前任务current_task.md怎么把自然语言要求编译成一份可执行、可验收的任务契约。