Cursor 用了一年半。从 2025 年年初 Composer 还叫 Composer 的时候就在用,见证它一路涨价、一路加功能、一路把内存吃到 4G。
半个月前,因为一件很小的事,我把 Cursor 关了,开始试 Codex CLI。
原本以为顶多用一周就滚回来。结果这半个月,Cursor 图标躺在 Dock 里一次没点过。今天写这篇不是要黑 Cursor,也不是要吹 Codex,我想说的是一件更本质的事:AI 写代码这件事,可能压根不需要 IDE。
让我关掉 Cursor 的那件小事
那天在改一个 monorepo 里的 pnpm 依赖冲突。三个包互相 peer,Cursor 的 Composer 咔咔改了半天,改完跑不起来。
我说:回滚,重新看一下 packages/core 的 package.json。
Composer 回:好的,我来查看...
然后就没有然后了。三十秒后我看到那个熟悉的转圈,右下角 token 消耗 2,847 → 3,142 → 3,505。它在继续消耗上下文,但没在做事。
那一刻我意识到一件事:Cursor 的 UI 太热闹了。侧边栏对话、编辑器里的 diff、底部 status bar、右下角通知、Composer 里的多轮对话 —— 我根本分不清 AI 现在在思考、还是在编辑、还是在卡住。
我关掉 Cursor,cd 进项目根目录,敲了一句:codex "回滚 pnpm 依赖冲突相关的改动,先给我看 packages/core 的 package.json"。
八秒后,终端里干干净净地列出了 diff 和文件内容。没有转圈,没有侧边栏,没有 25 个 tab。
那个下午,我把 Cursor 从 Dock 拖走了。
前三天:全是不适
真话说在前面。刚切过来的头三天很难受。
难受一:找不到文件
Cursor 里我习惯 Cmd+P 秒开文件,眼睛盯着编辑器读代码。到了 Codex,我不看代码,我问代码。这个转变的心理成本比想象中高。
有次我想读 src/services/auth.ts,手指下意识去按 Cmd+P。手指按到一半,脑子说:不对,你现在没有 IDE。
我 cat src/services/auth.ts 出来看,看完还是不舒服。后来我发现自己是被 IDE 惯坏了 —— 我需要看着代码才有安全感,不是我真的在读它。
改法:改用 codex "auth.ts 里的登录流程讲一下,重点是 token 存哪、失效怎么处理"。让 Codex 读,我看它的总结。头两天觉得这是偷懒,第三天开始发现效率高十倍。
难受二:多轮对话的记忆感没了
Cursor 的 Composer 有一个"对话"的形态,你能看到自己前 20 轮说了什么,AI 前 20 轮改了什么。Codex CLI 每次呼出感觉像一次性的。
其实不是。Codex CLI 是有 session 概念的,codex resume 就能接上一次。但是 UI 上没有那种"我们在对话"的心理暗示。
这也不是缺点,是我原本就没那么依赖多轮。切过来才发现,Cursor Composer 里多轮的一大半,是 AI 前几轮没听懂、我在纠错。真正上下文相关的多轮,可能三四轮就够。
难受三:diff 看得眼睛疼
Cursor 的 diff 是彩色的,绿绿红红一目了然。Codex 输出的 diff 是文本,我一开始眼睛跟不上。
装了 delta(brew install git-delta),然后 git 配置里加上:
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
side-by-side = true
Codex 让我 git diff 看变化的时候,直接分屏对照,比 Cursor 的还好看。
第一周:真香时刻是一个报错
真正让我"回不去了"的,是第一周末尾一个具体的报错。
我在给一个 Fastify 项目加 GraphQL layer,用的是 mercurius。跑起来报了个 TypeError,栈里全是 mercurius 内部代码,看不出来是我哪里写错。
Cursor 时代我会怎么做?把报错粘进 Composer,说"帮我看看"。它会开始猜,然后改我的代码。运气好第一次就对,运气不好改三次改到我崩溃。
Codex 我这样说的:
codex "跑起来报这个错:[粘报错]。别改我的代码。先告诉我这个错是 mercurius 内部触发还是用户代码触发。如果是内部,去 node_modules/mercurius 里翻源码,定位到哪一行。"
它老老实实去 node_modules/mercurius/lib/gateway.js 翻,定位到一个 schema stitching 的分支,然后告诉我:“这是 mercurius 在你没提供 federationMetadata 但用了 @key 时的边界处理,你的 schema 里 User 类型用了 @key 指令但没标 federation。”
一句话点透。我改了两行 schema,问题解决。
那一刻我意识到 Cursor 那种"AI 帮你写代码"的姿态有多误导人。我不需要 AI 帮我写代码,我需要 AI 帮我读别人的代码。
这两件事的区别,用 IDE 派工具很难分清,用 CLI 派工具反而清晰。
第二周:工作流固化下来
半个月过去,我的工作流长这样:
主战场:iTerm2 + tmux
左边一个 tmux 窗格跑 dev server,中间一个跑 codex,右边一个跑测试。没有 IDE。
编辑器:VSCode / vim 二选一
看代码用 VSCode,就是纯看。要改的时候 codex 让 Codex 改,然后 VSCode 里 review。小改直接 vim。
关键:AI 不进编辑器
这是我从 Cursor 学到的最大教训 —— AI 一进编辑器,人就会依赖它。而依赖的成本,你在月底看账单的时候才知道。
现在的分工是:
- 编辑器:给我读、给我改小东西
- CLI 里的 AI:给我查、给我 review、给我批量改
- 人(我):定方向、拍板、review AI 的输出
界限清晰,责任明确。
具体好处,量化一下
半个月,我记了几个数字:
Token 消耗降 40%
Cursor 一天大概 200k 输入 token(Sonnet 计价)。切 Codex 后,一天 110k 到 130k 之间。原因是 IDE 会自动带上打开的 tab、光标附近的代码、最近编辑的文件当上下文。而 CLI 里,我给它多少它才看多少。
一开始我以为上下文少了 AI 会变笨。实际反而是信噪比变高了。Cursor 那些自动带的上下文,八成是噪音。
每天完整专注时长 +2 小时
以前 Cursor 开着,编辑器里各种通知、Composer 里的 typing 动画、右下角 Cursor Tab 的补全提示,我平均每 3 分钟被打断一次。
CLI 里的 Codex 是你主动召唤才出现的。它不主动 typing,不主动通知,不主动补全。安静得像个真正的同事,你叫他他才应。
心理疲劳降低
这个没法量化,但我明显感觉一天下来没那么累了。IDE 派工具让你处于一种持续微交互的状态,Codex 让你回到批量任务 → 深度思考 → 拍板的节奏。前者更像刷短视频,后者更像看长文。
讲讲 Codex 的缺点,不吹不黑
缺点一:没有 Cursor Tab 那种爽感
Cursor 的行内补全 (Cursor Tab) 是真的爽,尤其是重构名字、写重复模式、改函数签名的时候。Codex CLI 没有这个能力。
对策:VSCode 装 Copilot 或 Continue 拿来做补全,Codex 拿来做重活。分工,不是替代。
缺点二:新手上手陡
如果你连 grep、sed、awk 都不熟,Codex 会让你很痛苦。因为它经常会说"我 grep 一下发现…"、“我用 sed 批量改了…",你如果看不懂它在干嘛,会心慌。
Cursor 的 UI 屏蔽了这一切,Codex 把这一切摊开给你看。你会看到 AI 是怎么写代码的,这既是它的透明,也是它的门槛。
缺点三:session 恢复偶尔抽风
codex resume 偶尔会拿不到完整上下文,尤其是超过 100 轮的 session。我的应对是重要 session 结束前手动 codex export 存一份,出问题的时候手动喂回去。
缺点四:图形化任务弱
要看 UI 截图、要标注设计稿、要 debug 前端渲染问题,Cursor 那种能塞图进对话的形态还是方便。Codex 的答复是:codex "看下这张图 [路径],帮我看这个按钮的对齐" —— 能用,但心智成本高一点。
什么样的人适合切
适合切:
- 已经用惯了
tmux/zellij这类终端复用 - 大部分时间在改后端 / 脚本 / infra,前端占比小
- 觉得 Cursor 用一天下来疲惫感重
- 每月账单让你肉疼
- 相信"AI 是助手,不是队友"的老派开发者
别切:
- 前端为主,尤其是要频繁调整视觉细节的
- 团队协作强依赖 IDE 内的 Live Share 功能
- 打心底喜欢那种"AI 帮我一起写代码"的沉浸感
- 命令行的操作不熟
中间派:
- 前后端都碰的人,可以像我现在这样,CLI 打主力,IDE 打配合
一个关于工具的元观察
半个月这段旅程让我想通一件我一年前想不通的事:IDE 派 AI 编码工具的天花板,就是"AI 帮人写代码"这个隐喻本身。
只要工具还长得像 IDE,人的心智模型就还是"这是我的编辑器,AI 在里面辅助我”。这种模型下,AI 永远是二等公民,人永远盯着它,怕它写错。人不会真的把复杂任务交给 AI。
**CLI 派的隐喻不一样,是"AI 是我的同事,我把活派给他,我 review 他的产出"。**这种模型下,人和 AI 是平等的合作方。你会真的信任它去做批量的、脏的、需要在文件系统里翻来翻去的活。
Cursor 和 Codex 的差别,不是 UI 差别,是这两种隐喻的差别。谁赢,取决于未来两三年,开发者到底想要一个"辅助工具"还是一个"数字同事"。
我押数字同事那边。
半个月的一句话总结
Cursor 让我觉得自己在写代码,Codex 让我觉得自己在管理一个会写代码的实习生。
第一种感觉更爽,第二种感觉更值钱。