---
title: "8 天 + 16 天 + 1 天：我不打算把 AI 编程跑成马拉松 | 行开心的颠倒世界"
description: "AI 让你随时都能写代码，但这恰恰是新的危险——你永远离自己的代码太近。用人为的停顿替代以前的被动等待：8 天写代码，16 天只当使用者，1 天带着新眼睛回来审查。"
canonical: "https://xingkaixin.me/posts/rhythm-in-ai-coding/"
language: "zh-CN"
---

# 8 天 + 16 天 + 1 天：我不打算把 AI 编程跑成马拉松

AI 让你随时都能写代码，但这恰恰是新的危险——你永远离自己的代码太近。用人为的停顿替代以前的被动等待：8 天写代码，16 天只当使用者，1 天带着新眼睛回来审查。

2026年4月30日·2,617 字·7 分钟

[AI编程](https://xingkaixin.me/tags/AI%E7%BC%96%E7%A8%8B/)工程节奏[独立开发](https://xingkaixin.me/tags/%E7%8B%AC%E7%AB%8B%E5%BC%80%E5%8F%91/)[工程实践](https://xingkaixin.me/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/)

![8 天 + 16 天 + 1 天：我不打算把 AI 编程跑成马拉松](https://xingkaixin.me/cover/rhythm-in-ai-coding.webp)

3 月 12 日凌晨，我提交了项目主体的最后一个 commit。代码不算多，大约 4000 行，从 3 月 5 日开工算起，跨度 8 天。

按一般 AI 编程文章的写法，我接下来应该立刻进入”持续优化”状态 —— 重构、补测试、加文档、再迭代几个新功能。这是我用了大半年 AI 编程之后，看到的几乎所有人推荐的姿势：**项目一旦跑起来，就别让它停**。

但接下来 16 天，我什么都没改。

更诚实地说，**前一周左右是我没空管它，被别的工作打断了**。但等到第二周中段，我心里其实已经有空了 —— 那一刻我做了一个决定：**继续不要碰它**。

为什么？这就是这篇文章想讲的事。

* * *

## 8 天：写得很猛，但所有动作都是有计划的

![8 天写代码 — 开发者视角](https://xingkaixin.me/posts/images/rhythm-in-ai-coding/rhythm-01.webp)

先把”快”这件事说清楚，免得读者以为我在反对效率。

3 月 5 号的第一句话，我没有跟 Codex 说”帮我写个 CLI”。我贴了一段 30 多行的设计稿过去，包含了完整的命令结构、配置文件 schema、目录约定，甚至明确写出了我对开发包的偏好（`pyright`、`pytest`、`ruff`、`ty`）。

```
一个使用 python 实现的数据查询命令行工具，需要做登录鉴权和 token 的管理。
命令行的基本流程，首先需要用户登录，没有登录情况下，其他命令都提示用户登录。
...
## 登录与账号
ds status, ds login, ds whoami, ds logout
## 数据源
## ds obj {objId/ObjName}
   - 条件查询 --where {field} {op} {value}
   ...
```

这是我跟 AI 协作的第一个原则：**我先想清楚我要什么，再开口**。如果我没想清楚，我至少要让 AI 知道**我不知道什么**。

接下来 8 天，我跟 Codex 进行了 39 个会话，121 条用户消息。从工具调用次数看，平均每天会触发 280+ 次 `exec_command`，80+ 次 `patch`。强度不小。

但关键是：**这 39 个会话之间，大部分是连贯的**。今天写完登录，明天写数据查询；今天发现一个边界 case，明天专门去补它。每一步都建立在前一步的基础上。

到 3 月 12 日凌晨，主体功能完成 —— 登录、三种数据查询（对象/专题/指标）、缓存、日志、配置体系、测试覆盖率 92%、PyPI 发布脚本。

我以为接下来一个月会是”持续打磨”。实际不是。

* * *

## 16 天：被打断，然后我决定继续不动它

3 月 13 日开始，我被工作上别的事情拽住了。这种事很常见，做技术的人都懂 —— 你以为接下来一周可以专注做某件事，结果周一晚上就有个 P0 issue 砸过来。

那一周我停止了迭代这个工具。

但我**在用它**。

这是这篇文章里真正想跟你聊的事：**当你只是”使用者”而不是”开发者”的时候，你看代码的眼睛是不一样的**。

举几个具体的例子。我那 16 天里在用这个工具查公司内部的金融数据，踩到的几个问题：

第一个别扭是 `--where` 的语法。我在设计的时候定的是 `--where {field} {op} {value}`，比如 `--where amount gt 1000`。但我自己用的时候，十次有六次会先写成 `--where amount > 1000`，然后被报错。错误提示是 `invalid operator`，我愣了一下才想起来要去查文档。问题是，我自己写的工具，我自己都记不住这个约定。

第二个别扭是表格输出。review 测试数据的时候，所有列都对得很齐，看起来很舒服。但当我查一个真实的基金持仓表，其中一个 `portfolio_id` 是 32 位的哈希字符串，结果那一列把后面的 `nav` 和 `yield` 挤到屏幕外面去了。我本能地去缩终端窗口，后来才意识到是工具的列宽算法没有考虑极端值。

第三个别扭是错误提示的层级。有一天晚上我在调一个查询超时的问题，工具返回了一个 `RequestError: upstream timeout`，但我看了五分钟日志才发现，这个错误其实来自缓存层，不是来自数据源。日志里两个模块都打印了几乎一样的错误信息，我在错误堆栈里来回翻了三四遍才定位到真正的问题。那一刻我非常清楚，这个错误提示在我写的时候觉得”够用了”，但在真实场景里就是废纸。

这些问题，**都是我作为开发者在 review 阶段永远发现不了的**。因为开发者看代码，看的是”我有没有写对”；使用者用工具，看的是”我用着有没有别扭”。

![16 天停下来 — 使用者视角的洞察](https://xingkaixin.me/posts/images/rhythm-in-ai-coding/rhythm-02.webp)

到 3 月 20 日左右，我手头的别的事情终于告一段落。我打开这个项目的目录，本来打算继续写那些一直想加的优化功能。

但坐在屏幕前，我突然停下来了。

我意识到一件事：**我作为使用者积累的这些”别扭”，是这个项目接下来最有价值的输入**。如果我现在立刻进入”开发者模式”开始写新代码，我会用开发者的视角覆盖掉使用者的视角。这些别扭被我自己消化掉，变成”我写的时候觉得理所当然的事”，然后我就再也看不见它们了。

所以我做了一个反直觉的决定：**继续不动它**。让自己再多用几天，把那些”别扭”沉淀成具体的问题清单，而不是模糊的不爽感。

接下来一周，我每次用这个工具的时候，如果遇到不顺手的地方，就在脑子里打一个标记。有时候打标记之后我会写到笔记本里。但更多时候，我让它自己留在那里 —— 因为我相信，**真正重要的问题，会反复出现**。出现得多了，我自然会记住；只出现一次的，可能本来就不重要。

* * *

## 1 天：回到现场，但带着新的眼睛

![1 天回来 — 带着新的眼睛审查](https://xingkaixin.me/posts/images/rhythm-in-ai-coding/rhythm-03.webp)

3 月 28 日上午 7:49，我打开了那个项目目录。

距离我上一次写代码，过去了 15 天 14 小时。

那一天我做的事情，你可能在我上一篇文章里看过 —— 用同一句 prompt，让 Codex 进行了 10 轮代码 review，从早上 7:49 到中午 10:18，大约 2.5 小时。

但那篇文章我没说的是：**我能在那 2.5 小时里高效推进，完全是因为前面的 16 天**。

具体说，16 天的”使用者视角”给了我两件东西：

**第一，我有了一份非常具体的”哪里别扭”清单**。当 Codex 在第 3 轮指出日志层职责混杂的时候，我立刻就知道要不要修 —— 因为我自己用的时候，日志里那个混乱的输出格式让我看错过两次错误来源。它说的不是抽象问题，是我作为使用者已经付出过代价的具体痛点。

**第二，也是更重要的，我有了”什么时候停”的判断**。AI 永远能在你的代码里再找到下一个问题 —— 我后面会在另一篇文章里讲这件事。但如果你心里没有”作为用户什么是够用的”这把尺子，你会被 AI 拖着无限重构下去。我那天能在第 10 轮干净利落地停下来，是因为我心里清楚：**剩下的问题，没有一个是我作为使用者真的会被绊到的**。

如果我不停下来那 16 天，我那 2.5 小时大概会变成 5 小时，而且产出可能更糟 —— 因为我会按”代码视角”修一堆我从来不会被它困扰的问题。

* * *

## 我现在怎么看 AI 编程的”节奏”

**AI 编程最容易让人陷入的陷阱，不是 AI 写不好代码，而是 AI 让你随时都能写代码。**

人类工程师以前的”节奏”是被外部条件强加的：你需要查文档、等同事 review、跑长时间的测试、等 CI、等部署。这些”等”看起来是低效，但**它们里面藏着一个隐形的生产力机制 —— 让你脱离开发者视角的时间**。

AI 把这些”等”全部消除掉了。文档随时可以问，review 随时可以做，测试秒级跑完。你可以从早上 9 点写到晚上 9 点，中间不需要离开开发者视角一秒钟。

这是一种新的危险。它让你**永远离自己的代码太近**。

我这次的解决办法，是用”人为的停顿”替代以前的”被动的等”。具体怎么做，坦白说我自己也是边走边摸：

**1\. 项目主体完成后，强制让自己进入”使用者”角色。** 不再用 IDE 打开它，只用命令行调用它。如果你做的是别的类型的项目，等价物可能是：不再看代码，只用产品。

**2\. 不要立刻把”使用中遇到的别扭”翻译成”代码任务”。** 让它停留在”我用着不爽”这个层面一段时间。多用几次，让真正重要的问题反复出现。

**3\. 等你重新打开 IDE 的那一刻，先用一句话写下”我作为使用者最难受的三件事”。** 这一句话，会成为你接下来所有重构的”用户视角”标尺。没有它，AI 会给你建议无穷无尽的”代码视角”问题，你会被淹没。

这个方法适不适合所有人？我不知道。但**这个项目它适合**。8 + 16 + 1 这个节奏，跟我以前任何一个项目都不一样，而且它的产出比我预期的好。

* * *

## 最后

那 16 天里，我有过几次差点忍不住打开 IDE 的瞬间。AI 编程的诱惑很真实 —— 它让你觉得”反正动一下就能改”，于是每一个小别扭都想立刻动手。

但我后来发现，**克制住那个”立刻动手”的冲动，比真的动手更难，也更值钱**。

8 天写代码，16 天用代码，1 天审代码。**这不是 AI 让我能写的最快的姿势，但可能是 AI 让我能写得最对的姿势。**

下一个项目我还会用这个节奏吗？不一定。每个项目有自己的体量和压力。但 AI 编程让我多出了一个以前没有的选项：**我现在可以自己决定我什么时候在场，什么时候不在场**。

这件事比”AI 让我写代码更快”重要得多。

* * *

*这是这个项目的第二篇。第一篇讲的是 3 月 28 日那天 10 轮 review 的细节。*

## 版权声明

作者

XingKaiXin

标题

8 天 + 16 天 + 1 天：我不打算把 AI 编程跑成马拉松

发布时间

2026年4月30日

文章链接

[https://xingkaixin.me/posts/rhythm-in-ai-coding/](https://xingkaixin.me/posts/rhythm-in-ai-coding/)

本作品采用[CC BY-NC-ND 4.0 DEED](https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh-hans)许可。

导览

展开导览
