AI 写代码老是忘掉你的项目?原因和解决办法
为什么 AI 写代码老是忘掉项目?(以及怎么解决)
很多人都有过这种经历:和 AI 一起做一个项目,第一天进展不错,API 搭好了,测试也写完了,文档也更新了。结果第二天开个新对话,AI 完全懵了,你又得从头把项目结构讲一遍。到了第三四天,你可能已经在翻几万字的聊天记录,试图找回前几次对话里定下的方案。
问题看起来像是上下文窗口不够用,其实根源更简单:我们把项目状态存在了错误的地方。
聊天记录不适合存项目状态
聊天对话适合人和 AI 交流,但拿来当项目数据库就很别扭。
原因很简单:
- 聊天是「写一次、读很多次」。决定一旦滑过去,要再找回来就得翻好几千字。
- 没有唯一的真相来源。API 规格是第三次还是第五次改的?到底该按哪个版本来做?
- 新开的对话完全没上下文。每次新会话,AI 都得从零开始。
- 状态容易跑偏。一个 AI 定下测试策略,另一个又改了实现方式,第三个还把文档标记成「已完成」。没人能追踪这些矛盾。
AI 写代码的能力已经很强了,真正的瓶颈在于它能不能理解你在做什么、为什么要这么做。
一个简单但有效的办法
把项目状态当成代码一样存在仓库里,用 Markdown 文件记录就行。
不要用 wiki,也不要用专门的项目管理工具,就用带一点元数据的 Markdown 文件。
举个例子:
# 项目架构决策
Lifecycle: active
Role: spec
Project: payment-service
Updated: 2024-01-15
Related:
- implements: charter-payment-api
- pairs-with: implementation-log-payment-core
## 概述
我们直接用 Stripe 的 API,而不是封装库,因为……
## 关键决定
- 所有操作都用幂等键
- Webhook 用异步处理,带指数退避
- PII 数据不存本地
## 待解决问题
- 要不要缓存速率限制状态?
格式很简单:一个标题、一组元数据(状态、角色、项目名、更新时间)、关联关系,再加上内容本身。
重点不在于格式,而在于你能用它做什么。一个命令行工具可以:
- 创建带统一结构的新记录
- 把完成的任务归档而不是删除
- 移动记录时自动更新所有关联关系
- 按条件列出项目里的所有记录
- 检查关联关系是否指向真实存在的记录
- 自动生成索引,不用手动维护
这对 AI 工作流意味着什么
关键变化在于:不用再让新开的 AI 去「翻聊天记录理解项目」,而是直接给它一条命令。
docs list --project=payment-service --role=spec
docs list --lifecycle=active
docs check # 检查所有关联关系
AI 可以直接查询项目状态,而不是从聊天历史里挖信息。它能看到:
- 已经做了哪些决定
- 现在在做什么
- 哪里卡住了
- 哪些文档是权威的,哪些只是历史记录
更重要的是,AI 可以通过结构化的命令来修改状态,而不是直接编辑文件。
你不用指望 AI 能把元数据改对,而是给它明确的指令:
docs create --role=log "实现了速率限制"
docs archive --record=spec-v2-deprecated
docs touch --record=spec-payment-api # 更新时间戳
这些命令把规则写死了。生命周期、文件位置、关联关系和生成的索引都会一起更新。AI 不会搞乱系统,因为工具本身就不允许它这么做。
新会话也能快速上手
这就引出了「新会话模式」:
- AI 启动新对话
- 首先运行
docs list,看看哪些任务是活跃的 - 看到三个已完成里程碑和一个进行中的
- 读实现日志,了解昨天尝试了什么
- 查看规格文档,确认当前要做什么
不用翻聊天记录,也不用从零拼凑决定。直接就能看到:现在在做什么,接下来该做什么。
之前的聊天记录已经没用了,可以关掉。状态存在仓库里,这才叫该待的地方。
什么时候需要这个
如果你经常遇到以下情况,可能就用得着:
- 用 AI 配对编程,项目跨好几天
- 管理 AI 工作流,需要在不同会话间恢复进度
- 跑 CI/CD,需要验证项目的一致性
- 团队协作,需要明确哪些决定了、哪些还在讨论
- 迭代很快,容易搞不清当前规格到底是什么
这不是要替代 Git、测试或代码审查,而是给 AI 辅助开发加一层「跨时间的一致性」。
最实用的地方在于它很无聊
这个方法最好的地方就是它不花哨。你没有发明新数据库,也没有做专门的 IDE。你只是用开发者本来就熟悉的工具(Markdown、Git、命令行),让它们做自己擅长的事。
边缘情况也能说明问题。AI 不小心改坏了关联关系?验证功能会抓住。漏掉了已归档的记录?列表命令会显示出来。两个会话冲突导致状态漂移?索引就是契约,要么有效,要么无效。
这种基础设施听起来很普通,但它能把「AI 勉强能用」变成「AI 真正理解项目并完成了交付」。