过去几个月,Coding Agent 基本成了我每天都会用的工具,我自己已经很少直接写代码了。
去年差不多这个时候,我还在问:Claude Code 真的能在一个维护了 6 年的 repo 里完成实际的开发工作吗?现在看来,这个问题的答案已经很清楚了。
但很长一段时间内,让我头疼的不是 Coding Agent 能不能写出合格的代码,而是我怎么和它一起工作。
之前有一段时间,我同时开了太多 thread。每个 agent 都在疯狂输出,看起来所有的事情都在推进,但最后交付的结果没有一个真正令我满意。也是从那时候开始,我尝试做 Human Context Engineering ,限制同时进行的事情,把自己的注意力留给设计和判断。
这样工作了两个月之后,这个适合我的工作流慢慢清晰了起来。
它其实很简单:Shift Left。
软件工程从来不只是写代码。粗略一点,可以把它分成两部分:左边是理解问题,右边是代码实现。
刚工作那几年,我的大部分时间都花在右边。随着经验越来越丰富,花在左边的时间也越来越多。在 Coding Agent 出现之前,两边大概是 50/50。

我以前会有意识地给写代码留出至少一半时间。因为不管前面想得多清楚,只要代码还没跑起来,接下来会遇到什么其实是个未知数。
可能是兼容性问题导致服务挂了,也可能是刚升级的包改了接口。很多问题必须真的跑一次才会出现。出现以后,还要看 changelog、搜 Stack Overflow,再一个个试可能的解法。
这些事情很花时间。所以我的习惯一直是:不要让计划占据大部分的时间,至少留一半时间给实现。
这个方法以前一直有效,我也很相信它。
Coding Agent 出现之后,这套方法开始不太适用了。
我不可能比 Pi 或 Claude Code 写得更快,也不可能比它更快读完一堆 changelog。到了睡觉时间,我要去睡觉,它还可以继续跑。
但快不代表结果一定可靠。对我来说,最难受的情况并不是 agent 跑得慢,而是它跑了很久之后,交回来一个我不敢用的结果。时间花了,token 也花了,最后还得重新来一遍。
Agent 有点像一辆开到 300 km/h 的赛车。方向对了,很快就能到;方向错了一点,也会很快撞上去。
所以我开始改变分工:把大部分时间放到左边,想清楚之后再交给 agent。

现在我会反复校订 spec,直到它能清楚回答这几个问题:
- 这一轮改动符合长期的架构方向吗?
- 做完之后,具体应该看到什么结果?
- 准备怎么验证它?
简单的问题可能半小时就够了,复杂一点的问题有时会花掉半天,甚至一两天。
以前我会觉得,半天还没有开始写代码,是不是太慢了。现在反而觉得没关系。只要 spec 足够清楚,后面的执行就可以放心交给 agent。我也不用一直盯着它,可以开始想下一项工作。
这的确没有社交媒体上那些“全自动 agent team”看起来那么花哨,但它确实让我在单位时间内完成了更多事情,也没有让工作量增长到自己无法处理的程度。
为了让这个思考过程更高效,我单独建了一个 secondBrain repo。

我所有的 AI session 都从这里开始。spec、plan、learning 和 todo 也都放在这里,并做好版本管理。
所有规则都写进 AGENTS.md,再用 Pi 的 hook 自动补充一些过程记录。在每次开始探索之前,agent 会先读相关材料。这样,之前做过的取舍和已经聊好的决定,就不会在下一份 spec 里莫名其妙地丢失或被推翻。
Superpowers 是我在 secondBrain 里面主要使用的 skill。它确实很费 token,执行也不算快,但它能很好地帮我探索陌生领域,找到不同代码库里的边边角角,再把相关内容连接起来。更重要的是,它会把一个大问题拆成很多小问题,逼着我逐个回答,也逼着我进行结构化思考。回答到后面,我通常才会真正知道这一轮想做什么。
为了更方便地校订 spec,我还写了一个 Pi plugin,可以直接在文档里批注,有点像 Codex 或 Claude Code 里的 annotation,但更符合我自己的使用习惯。
说到这里,如果现有工具总有一个地方让你用得不舒服,我很推荐自己做一个。毕竟现在写这种小工具的成本已经很低了。
验证这部分,我还是沿用传统的测试金字塔结构,只是在最上面加了一层很薄的 agent testing。
以前功能做完以后,我会自己打开浏览器或者 app,到处点一点,看看结果对不对。现在这一步主要交给 agent-browser。它负责操作,并留下截图或者录屏;另一个 reasoning agent 再拿这些素材,对照 spec 里的预期做验证。
这不能代替测试,也不能代替我最后的判断。它只是取代了原来重复的手工验证部分。
这套 shift left 的工作方式,我用到现在差不多两个月了,目前是我多次尝试下来最适合自己的工作流。
不过,世界上没有银弹。我并不推荐盲目照搬这里分享的做法。每个人的工作内容不同,和 AI 配合的方式也一定不同。
但如果其中某一点恰好能解决你的问题,或者让你得到一些 idea,进而优化自己的 agent workflow,那这篇文章的目的就达到了。
