项目管理就是上下文管理
Agent 找到了一条从计划里漏掉的需求,文件之间的连接还指出了它是在哪一步丢的。
为了给首页拍截图,我们编了一个小项目:Trailhead,一个和朋友约徒步的应用,里面有访谈笔记、一份决策、一份发布计划和一点代码。项目是编的。下面的回答是真的,来自在这个文件夹里运行的 Claude Code。
访谈笔记的最后一条是:
Nobody wants another account just to see the plan.(没人想为了看一眼计划再开一个账号。)
我们选中发布计划,问它:“what did people ask for that this leaves out? no tables”(大家提过的需求里,这份计划漏了什么?不要用表格)。最后那半句只是为了让回答放得进截图。回答的一部分是这样的:
I took "this" to mean
release-plan.md, the card you have selected, and compared it withinterviews.md.The plan leaves out one thing: "Nobody wants another account just to see the plan." (
interviews.md:8). None of its four steps covers how a friend opens the plan or whether they need to sign in. It matters for step 4 too, because the beta goes to the same eight people who said this.The plan doesn't draw on the interviews directly, only through
offline-maps.mdandmap-screen.png, and neither of those carries this point.
意思是:它把“这”理解为选中的卡片,也就是发布计划。计划漏了一条:不用账号也能看。四个步骤都没提朋友怎么打开计划、要不要登录;第 4 步的内测对象正是说这话的八个人,所以这一点很要紧。计划并不直接依据访谈,只经过 offline-maps.md 和 map-screen.png,而这两份都没有带上这一条。

它怎么知道去哪儿找
每篇笔记都在文件开头的一个短列表里写明自己是从什么写来的。发布计划当时的开头是这样:
---
upstream:
- offline-maps.md
- map-screen.png
---决策的列表里写着访谈。所以 Agent 可以顺着文件一篇篇往回走,不用做任何设置,也不用查什么索引,还能看出计划本身从没读过访谈。一条发现就是这样被漏掉的,从头到尾没有人决定要漏掉它。
丢掉的是什么
任务清单本身没问题:四个清楚的步骤,每一步都对。出错的地方在上一份文档,八场访谈被浓缩成一份决策时,有一句话没被留下。没有人反对过它。一个没人做过的决定,不会出现在任何任务工具里。
项目跑偏,通常就是这么回事。任务很少丢,丢的是理由:为什么选这个,听到了什么,这一步依赖什么。它们散落在聊天、会议和某个人的脑子里,计划看起来却依然整整齐齐。
三个习惯有用:
- 每个决策单独写一篇笔记。 把理由写进去,也写上什么情况下你会改主意。
- 一篇笔记是从另一篇写来的,就拉一条线。 只要一秒钟,而这是计划怎么来的唯一记录。
- 顺着这条链提问。 “这一步丢了什么?”“这个依赖什么?”让人来查很烦,让一路读完每篇笔记的 Agent 来查却很容易。
修好它只用了两行
我们从访谈到计划补上了那条线,git diff 显示文件里多了一行。首页的录屏拍的就是这一步。然后我们让 Agent 把这一步加上。它写下第 4 步 “Shared plan opens without an account”(共享计划不用账号也能打开),还注意到了另一件事:
interviews.mdis now listed as an upstream of the plan, which wasn't there when I first read it, so what I said about the plan not drawing on the interviews directly no longer holds.
意思是:interviews.md 现在列在计划的上游里了,它第一次读的时候还没有,所以它之前说的“计划不直接依据访谈”已经不成立了。
那条线我们一个字都没提。它就写在文件里。