大多数开发者都在犯同一个致命错误。

他们把AI当成只会吐代码的自动贩卖机:输入Prompt,生成代码,报错,修正,再报错,再修正。

如果你也是这么用的,恭喜你,你正在制造一堆“技术上正确,但系统上崩坏”的垃圾。

image

一位名叫Boris Tane的程序员,用了整整9个月Claude Code,摸索出了一套完全反直觉的工作流。

他的核心原则简单粗暴,却极其有效:

在审核通过书面计划之前,绝不让Claude写哪怕一行代码。

AI不缺智商,缺的是“上下文”

说实话,AI写代码最大的问题从来不是语法错误。

它写的函数能跑,逻辑也能通,但它会悄无声息地摧毁你的系统。

它忽略了你现有的缓存层,它不知道你的ORM约定,它重复造了一个早已存在的轮子。

这就是Boris所说的“最昂贵的失败模式”。

当你让AI直接动手时,它就像一个没看过图纸就拿着锤子进场装修的工人。

墙是砌平了,但水管爆了。

所以,Boris的第一步永远是:按住AI的手,逼它先做阅读理解。

他会给Claude下达类似这样的指令:

深入阅读这个文件夹,彻底理解它是如何工作的,以及所有的细节。完成后,把你的发现写进 research.md。

注意这里的用词。“深入”、“彻底”、“所有细节”。

这不是废话文学。如果你不这么强调,Claude只会像翻杂志一样扫一眼函数签名,然后告诉你“我懂了”。

“懂了”是个陷阱。

Boris要求必须生成一个Markdown文件。这不是给AI布置作业,而是给自己留个审查界面。

如果研究报告是错的,那接下来的计划就是错的,最后的代码就是灾难。

垃圾进,垃圾出。这一步没得商量。

别信它“懂了”,白纸黑字才算数

研究做完了,该写代码了吧?

停。

这时候大多数人会打开Claude自带的Plan Mode(规划模式)。Boris对此嗤之以鼻:“那玩意儿太烂了。”他坚持让Claude生成一个独立的 plan.md 文件。

为什么?因为聊天窗口是流水的,而Markdown文件是实体的。你可以把它放在编辑器里,像改作业一样在上面圈圈画画。

更有意思的是他的一个小技巧:找参考答案。

如果他要做一个“可排序ID”的功能,他会先找一个开源项目里现成的实现代码,扔给Claude:“看,人家是这么干的,写个计划,告诉我们怎么借鉴。”

哪怕是最聪明的学生,有参考答案时表现总是更好的。

人类该干的活:给AI“改卷子”

这是整个工作流里最精彩、也最被低估的一步。

当Claude洋洋洒洒写好计划后,Boris并不急着下达“执行”指令。他打开 plan.md,开始疯狂加批注。

image

这就像是在改卷子,只不过改的是AI的思路。

他在文档里写下各种“刺耳”的反馈:

  • “不对,这应该是PATCH,不是PUT。”——纠正假设。
  • “删掉这部分,这里不需要缓存。”——拒绝方案。
  • “这个visibility字段必须在List上,而不是Item上,重写Schema部分。”——推倒重来。

然后,他把文档扔回给Claude:

我在文档里加了点笔记,处理所有问题并更新文档。不要实现。

注意最后这句“不要实现”。这是保命符。没有这句,Claude一旦觉得计划“差不多了”,就会立刻开始写代码。

这个循环要重复1到6次。

每一次,人类都在把自己的业务逻辑、产品痛点、工程取舍,强行注入到AI的大脑里。

经过三轮“改卷子”,那个原本泛泛而谈的计划,已经变成了一个完美贴合系统的实施方案。

创意留给规划,枯燥留给机器

终于,计划完美了。这时候,Boris才会发出那句神圣的指令:

实现这一切。完成一个任务就在文档里标记一个。不停下来,不写废话注释,不用any类型。持续跑typecheck。

image

这一刻,写代码变成了“体力活”。

因为所有的创意、纠结、架构决策,都在之前的批注循环里完成了。现在只需要Claude这台机器无脑执行。

Boris甚至要求把任务拆解成Todo List。他在屏幕这头看着文档里的任务一个个被打钩,就像看进度条跑满一样爽。

这时候他的角色从“架构师”变成了“监工”。

如果前端样式不对,他发去的指令短得惊人:

  • “宽一点。”
  • “还是裁剪了。”
  • “有个2px的缝隙。”

甚至不需要解释,截图一扔,或者指着现有的代码说:“做成跟那个表格一样的。”

人类负责判断“美不美”,AI负责填像素。

有人觉得是玄学,有人觉得是真理

这篇文章在圈子里引发了不小的争议。

有个开发者在评论区直言不讳:

“让模型‘读深一点’就能读深一点?这违背了我对LLM工作原理的直觉。”

这确实是个有意思的点。我们在对着一个统计学模型讲“态度”。

但Boris的回应很实际:管它原理是什么,反正这样跑得通。

还有人对“一次性写完几千行代码”表示担忧。万一中间错了怎么办?岂不是要全部回滚?

Boris对此倒是很淡定。如果方向错了,他会直接 git revert,然后重新缩小范围。

“与其试图修补一个烂摊子,不如推倒重来。” 这不仅是代码哲学,也是人生哲学。

更有意思的是,有人指出这不就是亚马逊的Kiro、谷歌的Antigravity在做的事吗?把Spec(规范)和Code(代码)分离。

大厂们正在把这种“高手的直觉”产品化。

结语

看完Boris的这套操作,我个人觉得,他点破了一个很多人不愿承认的事实:

AI并没有让编程变简单,它只是把难度从“怎么写”转移到了“怎么想”。

以前我们花时间调bug,现在我们花时间调Prompt、调Plan。

那个在Markdown文件里写批注的过程,才是程序员真正的护城河。因为只有你才知道,那些代码背后,到底藏着多少不可言说的业务秘密。

下次打开Claude时,试着忍住那个“给我写个功能”的冲动。

先让它交一份“深度阅读报告”上来,如果不合格?打回去重写。

毕竟,你是老板,它是实习生。

参考链接:
https://boristane.com/blog/how-i-use-claude-code/