前两天清自己的仓库列表,翻到二十几个就不太想往下翻了。一大半是 agent 陪着搭起来的,能跑,README 只有一个标题,然后就没再打开过。
开坑这事我戒不掉,也不太想戒——AI 进来之后,很多原来不敢碰的东西现在真的敢动手了,这部分收获是实打实的。这篇要记的是另一件事:这些项目真正花掉我的成本,早就不在「开」的时候了。
这个月初看到 dev.to 上 Jessica Doering 写的一篇同题的文章,说她自己有八十几个公开仓库,AI 不是她爱开坑的原因,只是把她原来那些拦着开坑的障碍一条条挪走了。这个我认。以前想开个终端小工具,光是「要不要上 Rust」就够我纠结一晚上,纠结完了大概率也没下文;现在这层犹豫没了,十分钟能起一个跑得起来的东西。
评论区里有人讲的那句话我更认:真正的成本不在启动,在回归。
这句我拿自己的仓库验证过。上个月回去看一个三周前搭的小服务,盯着自己写的那段路由中间件看了十几分钟,完全想不起来为什么鉴权要放在这一层。不是不记得代码在干什么——代码挺简单的,一看就懂——是不知道当时为什么做这个选择。选 A 不选 B 的那一步推理,当时没留下来。
拆开看看为什么会这样。自己一个字一个字敲出来的代码,写的过程本身就是记录:犹豫过什么、在哪儿改过主意、哪个方案试了发现不行,这些东西不用写下来也在脑子里存着。代理十分钟搭出来的那堆文件不一样,你拿到的只有结果,中间几十次判断全丢了。以前项目少、坑浅,这个问题不明显;现在停在 30% 的项目一下子多起来,0% 到 30% 实在太快,快到还没觉得烦就已经到那儿了,回归成本才第一次变成一笔看得见的账。
所以我给自己加了一条规矩,简单到有点土:离开一个半成品之前,留四行笔记。
第一步,在项目根目录放一个 NOTES.md,四行,别多写:
停在哪:
下一步:
为什么这么做:
别碰的地方:
为什么这么做 这一行是关键。前面说了,代码本身能看懂,断掉的是推理链。这一行只写一句话,下面是一个真实的版本:
停在哪:/search 接口能返回数据了,前端还没接
下一步:把 /search 接到搜索框上,先不处理空结果
为什么这么做:搜索走服务端,是因为本地过滤在 2000 条以上会卡
别碰的地方:auth.ts 里的 token 刷新,代理写的,我还没读懂
第二步,这份笔记和代码一起提交,不要单独 commit:
git add NOTES.md src/
git commit -m "feat: 加个搜索接口 + 记一下停在哪"
单独给笔记开一个 commit 的做法我试过,做着做着就懒得写了,因为它看起来像一件「额外的事」。和代码混在一起提交之后,它就是这次改动的一部分,顺手就带上了。
💡 小技巧:如果某段代码是代理生成的、你还没完全读明白,先别急着写「下一步」。让它把关键那几行解释一遍,自己核对完,再把你核对后的理解写进 NOTES.md。写的是你自己的话,不是它输出的话。这个动作看着多余,但这一步偷懒的结果,就是下一次回来照样看不懂。
第三步,也是我觉得最反直觉的一步:别急着给项目起名字。
我的重灾区就是这个。起个好名字、想个图标、把 README 开头那句话写漂亮——做完这几件事,那个东西在我心里就从「一个想法」变成「一个项目」了,然后我开始对它负责,然后舍不得放手,然后就一直挂在那儿。看到有人用 test-1、test-2 这种名字命名仓库,刻意让它在心理上保持「随便」的状态,我觉得这招有效。现在没想清楚之前,我一律用 tmp- 开头。
第四步,实在舍不得的,就用三天做判断:过三天再打开这个仓库,如果还是很想接着做,那是真的想做;如果三天后自己都觉得「哎算了吧」,那它第一天就没那么重要,只是当时的兴奋骗了你一下。
这套东西我用了大概三周。仓库数量没变少,我还是会开新坑。但有个变化挺明显:以前回去接一个项目,光把上下文捞回来就要花掉一晚上,捞完了那股劲也过去了;现在打开 NOTES.md 读四行,五分钟能重新进状态。省下来的不是写代码的时间,是「重新决定要不要继续」的时间。
踩过的坑也记几条:
- 笔记越写越长,最后就不写了。四行是上限,写不下通常说明你自己也没想清楚到底停在哪。
- 只写「下一步」不写「为什么」,下次回来照样断链。「下一步」是最容易写、也最没用的一行。
- 用代理帮你写这份笔记。它写出来的是「这段代码做了什么」,不是「你当时为什么这么选」。前者 README 里就有,后者只有你知道。
- 把它当项目管理工具。它不是。它只有一个用途:让三天后、或者三个月后打开这个文件夹的人,五秒知道自己站在哪儿——那个人通常就是你自己。
划重点:第一,AI 砍掉的是启动成本,回归成本一点没动,停在 30% 的项目越多,这笔账越明显;第二,断掉的不是代码,是当时那一步选择的理由,笔记只需要记这一件事;第三,四行封顶,和代码一起提交,起名字这件事往后拖。你可以挑手上一个半成品试一遍,写一次四行的 NOTES.md,过一周再打开看看接不接得上——接不上,多半就是那四行没写对。