乐于分享
好东西不私藏

我用 AI Coding 两个月后,发现真正难的不是写代码

我用 AI Coding 两个月后,发现真正难的不是写代码

蜡笔大新的 AI 生存手册 · AI Coding 工作流

我用 AI Coding 两个月后,发现真正难的不是写代码

我最早用 AI 写代码的时候,其实很原始。

大概是前年那会儿,就是打开网页端,复制一段代码,再复制一段需求,丢给 Claude 或者 GPT。

它帮我写一段增删改查。

我再复制回来,跑一下,改一下报错。

那个阶段,我对 AI Coding 的理解很简单:

它就是一个更聪明的代码补全工具。

能省一点写样板代码的时间。

后来到了去年,我开始比较重度地用 Cursor。

工作方式确实变了。

不用再一段一段复制代码,而是直接打开工作空间,在项目里对话。

AI 能看到更多上下文,也能直接修改文件。

这比网页端舒服很多。

但用了一年以后,我发现一个问题:

AI 变强了,但整个开发流程,还是靠人拽着往前走。

需求文档要我整理。

上下文要我补充。

哪些接口要改,哪些逻辑不能动,哪里要兼容老数据,还是要我一遍遍说清楚。

代码写完以后,自测、发布、通知、文档,也还是要我一步一步盯着。

直到今年 4 月以后,需求节奏变快,这个问题变得更明显。

我才慢慢意识到:

AI Coding 真正卡住我的,不是代码生成,而是整个需求到发布的流程。

01|真正消耗人的,不只是写代码

一个需求从开始到上线,里面有很多不起眼的环节。

需求要拆清楚。

影响范围要确认。

技术方案要落下来。

代码改完要自测。

发布步骤要跟上。

飞书通知要发。

文档和记录要补。

中间状态还不能丢。

这些事情单独看都不难。

但叠在一起,就很容易乱。

尤其是多个需求并行的时候,人的脑子会一直在切换上下文。

一个需求还在澄清。

一个需求已经开始写方案。

另一个需求又到了自测和发布。

如果只是打开 Cursor,让 AI 帮我改某一段代码,当然有用。

但它解决的是局部问题。

真正消耗人的地方,往往不是“这一段代码怎么写”,而是:

这个需求从哪里来,现在走到哪一步,下一步要交付什么,哪些信息不能丢。

所以我后来觉得,如果只是让 AI 帮我写代码,上限其实不高。

真正需要改造的,是工作流。

02|一开始我也想得太简单

中间有过一个小插曲。

我试过用 OpenClaw 加一堆子 Agent,让不同角色用不同提示词约束。

想法听起来挺美好:

让它自动读取飞书需求文档,自动拆解,自动写代码,最好一路跑到交付。

但实际试下来,并不理想。

任务经常跑到一半卡住。

上下文会丢。

某个子 Agent 理解错了,后面就一路偏。

有时候看起来它一直在执行,但你不知道它执行到了哪一步,也不知道它为什么停住。

那段时间我挺受挫的。

因为我原来以为,给 AI 多分几个角色,再写清楚提示词,就能把流程自动化起来。

后来发现没那么简单。

提示词可以约束表达。

但一个稳定的工程流程,不能只靠提示词撑起来。

03|我开始重新理解 AI 工作流

后来我看了一些文章和工具。

比如 OpenAI 的 harness 思路,也看过 OpenSpec、Superpowers、gstack 这类工具。

它们给我的启发,不是某个工具多神。

而是背后有一个共同点:

AI 不能只是孤零零地跑在聊天框里。

它需要被放进一套可以追踪、可以恢复、可以校验的流程里。

换句话说,AI Coding 不只是“让模型写代码”。

它更像是把一次开发过程拆成很多个可控节点。

每个节点知道自己要输入什么。

知道自己要产出什么。

知道完成后进入哪个状态。

失败了,也知道卡在哪里。

这件事听起来有点工程味。

但对后端程序员来说,其实并不陌生。

我们平时做业务系统,也是这样。

状态要落库。

流程要有状态机。

结果要有约定。

脚本要能校验。

关键节点要有 hook。

执行过程最好留下记录,方便回放和排查。

我后来才意识到:

AI 工作流落地,本质上不是写更多 Prompt,而是把 AI 当成流程里的执行单元,再用工程系统把它管起来。

04|我给自己搭了一个很小的版本

后来我开始在自己的工作里慢慢试。

这不是一天搭好的。

中间改了很多次,也废掉过不少想法。

差不多两个月下来,才慢慢有了一个能跑起来的小版本。

现在它大概能做这些事:

从飞书需求文档里拆解需求。

把关键信息落到本地流程。

推进需求澄清。

生成技术方案。

辅助开发和自测。

衔接发布、通知和文档记录。

这里我先不展开具体实现。

一方面是因为细节太多,一篇文章讲不完。

另一方面,我也不想把它写成工具教程。

我更想先讲清楚一个思路:

普通程序员用 AI Coding,不要只盯着某个工具会不会写代码,而要看自己的开发流程里,哪些地方一直在重复消耗。

比如需求拆解。

比如上下文整理。

比如方案确认。

比如自测清单。

比如发布记录。

比如每次都要重新写一遍的通知和文档。

这些地方不一定难。

但很耗注意力。

AI 真正适合帮我们做的,可能就是把这些重复消耗降下来。

05|多个需求并行时,最怕的是续不上

还有一个变化,是我以前没怎么想过的。

当你只有一个需求时,很多事情靠脑子记一记,还能撑住。

但多个需求同时跑起来以后,问题就变了。

一个需求在 A 分支。

一个需求在 B worktree。

一个需求用 Cursor 改了一半。

另一个需求可能又想让 Codex 或 Claude Code 接着处理。

这时候真正麻烦的,不是“能不能再开一个 AI”。

而是:

多个需求、多个 AI、多个 worktree,怎么并行,又怎么随时续上。

如果每个 AI 都只活在自己的聊天窗口里,很快就会乱。

你不知道它改了什么。

不知道它为什么这么改。

不知道它跑过哪些检查。

也不知道换一个工具以后,对方能不能接上前面的上下文。

所以我后来给自己定了一个原则:

不要把上下文只放在聊天里。

要把关键状态、关键产出、关键证据,尽量落到流程里。

比如一个需求现在走到哪一步。

当前 worktree 对应哪个需求。

这一步的输入是什么。

产出是什么。

哪些地方需要人确认。

哪些检查已经跑过。

哪些结论只是 AI 的建议,不能当成最终事实。

这些信息一旦沉淀下来,就不再绑定某一个聊天窗口。

今天用 Cursor。

明天换 Codex。

后天让 Claude Code 帮忙 Review。

只要它们能读到同一套流程状态和产出约定,就有机会接着往下做。

这也是我现在觉得“兼容不同 Agent 工具”很重要的地方。

不是去赌某一个工具永远最好用。

而是把自己的工作流做成一个相对稳定的底座。

工具只是执行者。

流程负责记忆。

记录负责审计。

人负责判断。

这样多个需求并行时,才不至于每次切回来都要重新想:

我上次做到哪了?

这个 AI 到底改了什么?

这一步能不能继续?

我觉得这是 AI Coding 进入真实工作后,绕不开的一步。

06|普通程序员可以先从流程开始

如果你现在也想用 AI Coding,我不太建议一上来就追 Agent、MCP、自动化平台。

这些东西当然有价值。

但如果流程本身没想清楚,很容易越折腾越乱。

可以先问几个简单的问题:

一个需求从开始到上线,中间到底有哪些步骤?

哪些步骤每次都要重复做?

哪些信息经常丢?

哪些地方最容易靠脑子硬记?

哪些产出其实可以固定格式?

哪些节点必须人来确认,不能完全交给 AI?

先把这些问题想清楚,再去选工具。

这比一开始就问“Cursor、Codex、Claude Code 哪个更强”更有用。

因为工具会变。

模型也会变。

但你的工作流程一旦沉淀下来,是可以不断复用和升级的。

这也是我现在对 AI Coding 最大的变化。

以前我关心的是:

这段代码能不能让 AI 写?

现在我更关心的是:

这次开发过程,能不能沉淀成下一次可复用的流程?

写在最后

这篇先不展开具体实现。

比如怎么拆飞书需求文档,怎么设计流程状态,怎么约定每个节点的产出,怎么做自测和发布衔接,后面我会慢慢写。

我自己也还在迭代。

很多地方谈不上成熟。

只能说,我已经从“复制代码让 AI 写”,慢慢走到了“用流程把 AI 管起来”。

对普通程序员来说,这可能是一个更现实的开始。

不要一上来就追求全自动。

先让 AI 进入你的真实工作流程。

先帮你少做一点重复劳动。

先把一次需求拆解、一次方案确认、一次自测、一次复盘沉淀下来。

这些东西看起来不炫。

但它们会慢慢变成自己的工作资产。

后面我会继续写这套 AI Coding 工作流的拆解过程。

如果你也在试着把 AI 用进真实开发里,可以先关注一下。

我们一起慢慢把这件事讲清楚。

记录一个普通 Java 程序员,如何在 AI 时代寻找职业、副业和收入的第二曲线。

不装专家,不贩卖焦虑,只分享真实、可执行的尝试。