那是一个再普通不过的下午。我手上有一个半成品营销页,功能都已经能跑了,样式也不算难看,但整个页面有种“哪里都差一口气”的感觉——间距不成体系、阴影不统一、字体层级含糊。我决定分别用 Claude Code 和 Codex 来处理这轮改稿,看看谁能在“把设计约束吃进去”这件事上做得更好。
测试结束之后,我可以负责任地说一句:标题里的“天壤之别”不算夸张。但不是你想的那种差距。两个工具在第一轮生成上都合格,真正的裂缝从第二轮开始。当我开始提那些模棱两可的视觉意见——“阴影太重了”“标题行距再透气一点”“三个卡片要像从一个系统里长出来的”——两个工具的表现就完全不在一个维度上了。
这篇文章不打算只写“谁赢了”。我会把测试任务、判断标准、背后的工程原因、安装配置避坑,以及最后怎么选,一起讲清楚。尤其是那套“两轮迭代验证法”,无论你最后用哪个工具,都应该先把它跑一遍。
1. 先说清楚:我测的“设计”不是画图,而是带约束的改稿
1.1 任务是什么:从“能看”改到“有秩序”
我准备的项目是一个单页营销站:顶部导航、Hero 区块、三个特性卡片、一个 CTA 区域、页脚。功能完整,样式简陋。所谓“设计任务”,不是从零画一张效果图,而是按照一套设计约定把它打磨成有秩序感的成品。
约定包括:8px 的间距系统、三个层级的阴影、一套色彩 token、明确的字号阶梯、卡片在桌面端和移动端的排列规则。听起来不多,但真正改起来会牵扯到七八个文件——全局样式、组件样式、页面结构、响应式断点。任何单点修改都可能破坏另一个区域的一致性。
为什么选这种任务?因为“从零生成”其实很难看出工具的真实水平。现在的主流编程工具都能在干净目录里给你搭一个漂亮样板。真正考验一个 agent 的,是你把一个已经存在、已经混乱、已经有一堆历史决策的项目丢给它,要求它在现有约束里做局部修改,并且不破坏其他地方。
1.2 为什么“反复改稿”比“一次生成”更能检验工具
一次生成只能检验一件事:这个模型能不能写代码。而设计类任务的核心不是写代码,是在“保持整体约束”的前提下持续微调。你给工具一个模糊的视觉感受,它要把它翻译成具体的 CSS 改动,还要让这个改动和整站的风格自洽。
我记录四个指标:初稿完成度、修改后的约束保持率、人工介入次数、最终代码的可维护性。前两个衡量结果,后两个衡量过程。为什么在意人工介入次数?因为在真实工作中,工具最值钱的能力就是“少让我重复解释同一件事”。如果一个工具每次都让你重述设计规范,那它的生成速度再快,也抵消不了沟通成本。
1.3 结论先行:差距不在“能不能做”,而在“能不能收敛”
单看第一轮输出,两个工具都能给出像样的代码。但设计工作不是一轮就结束的。它是十几轮、几十轮的小改动叠加。差距在第三轮、第四轮、第五轮开始指数级放大。Claude Code 的修改更像是“在一个系统内生长出来的”。Codex 的修改则更像是“你指哪里它就改哪里”,指令之外的系统性影响它不会主动处理。这就是我说的天壤之别。
2. 第一轮输出:两个工具都及格,但及格的方式不一样
2.1 Claude Code 的第一版:骨架干净,思路有迹可循
我在项目根目录放了一份说明文件,写清楚设计 token、间距规则和想要达到的视觉方向,然后让 Claude Code 开始改。它输出的第一版比我预期保守,没有大刀阔斧地重写整个页面,而是先梳理了已有的变量,把散落各处的魔法数字归拢到设计 token 上。每个改动都附带一句话解释,比如“这里阴影用了三等中的第二级,保持卡片层级更低”。
这一版并不惊艳,但有个细节很关键:它没有急着把所有组件都“升级”,而是先建立了统一的基底。这符合设计改稿的正常路径——先统一系统,再调细节。它让你清楚地知道它改了什么、为什么改。
2.2 Codex 的第一版:速度快,执行直接
同一个项目,同样的说明文件,Codex 给我的第一印象是快。它的输出更“果断”,直接修改组件结构、调整样式、重排响应式规则,一次给出一大批改动。从代码质量看,它写得并不差,类名和结构都合理。
问题出在细节的“传播”上。它改了 Hero 的内边距,但没有同步去检查其他区块的垂直节奏是否还和 Hero 保持一致;它给卡片加了新的圆角值,却没有先看一眼全局变量里是不是已经存在一个统一的圆角定义。换句话说,它执行的是“字面指令”,而不是“设计意图”。
2.3 为什么第一轮不能作为选型依据
因为单次生成太依赖运气。强模型可能在一次任务上表现出色,弱一点的模型也可能因为恰好命中你的需求而显得很强。设计任务真正考验的是长程一致性:当需求不断变化、范围不断叠加,工具是否还能记住最初的设计约束,并且在新改动里延续它们。
所以我的建议是:别用第一次输出下结论。把同一个任务改成“两轮任务”——第一轮给需求,第二轮给一条模糊的修改意见,然后观察谁能在第二轮里保持全局秩序。这段差距,才是真实差距。
3. 差距真正的分水岭:迭代中的视觉约束保持
3.1 一次典型复盘:只提示“标题行距再透气一点”
第二轮的经典测试是给出一句人类才会说的模糊反馈,而不是精确的“把 line-height 从 1.4 改成 1.6”。我说:“主标题的字重有点重,行距再透气一点。”这句话里没有任何具体数值。
Claude Code 的处理方式是:读取当前标题的样式,发现字重是 700,将其降到 600;把 line-height 从 1.3 调到 1.45。然后它没有停在那里,而是查看了同级的其他标题——包括小标题、区块标题——发现它们在同一个字号阶梯里风格不一致,顺手把整个标题层级整理了一遍。最终给我的不只是一行 CSS,而是一套“标题层级”的一贯表达。
Codex 的处理则非常直接:定位到主标题那一处样式,把字重和行距改了,结束。改动本身没有错,但你很快会发现,页面上另外几处标题仍然是旧字重、旧行距。视觉节奏依然不统一。如果你继续让它改卡片、改页脚,每一处都要重新提醒一次。
3.2 Claude Code 为什么“看起来更懂设计”
不是说 Claude Code 有审美,而是它的工作循环里多了一个“目标锚定”的步骤。它在改动前会先读项目里的约定文件,改动时会参考相邻组件的写法,改动后会检查同类元素是否一致。这更像是把“整体协调”作为默认目标。
另外一点是它的多模态理解。我可以在对话中扔一张截图,说“这个区块看起来重心偏左”,它能结合截图内容和代码结构来定位问题。这让“视觉反馈—代码修改”的闭环短了很多,也更准确。
3.3 Codex 的问题不是能力,而是“目标锚定”太浅
我不认为 Codex 写不了好代码。它是优秀执行者,适合需求完全明确、改动范围清晰的任务。但设计任务天然是目标模糊的:你说“更透气”,它要推断出“行距、字重、可能还有区块间距”;你说“重一点”,它要猜是颜色重还是阴影重。这类推断需要的不是执行速度,而是对上下文的持续理解和对系统的整体感知。
实测下来,Codex 在每个单轮指令上都合格,但跨轮次之后,整个页面会慢慢变得“东一块西一块”。不是某一次改错了,而是每一次都局部正确,累加起来整体失控。这就是“不能收敛”的含义。
4. 差距背后的工程原因:项目记忆、变更粒度与多文件一致性
4.1 项目级记忆:CLAUDE.md 与 AGENTS.md 的角色
两个工具都支持项目级说明文件。Claude Code 默认读取CLAUDE.md,Codex 则读取AGENTS.md。在说明文件里写清楚设计 token、间距系统、组件命名约定,对两个工具都有帮助。
但实际使用时,我发现 Claude Code 对这份文件的“持续依赖”更强。它会在一轮又一轮的对话中反复回到这些约定,而不是只把文件当作初始指令。Codex 也会读,但进入具体修改后,更容易被最近的对话上下文带走,从而偏离文件里已经写好的规则。
实操建议:把设计规范写进项目记忆文件,而不是每次都在 prompt 里重复。设计任务最长远的改动,不是改样式,而是把规范变成工具每轮都默认遵守的约束。
4.2 变更粒度与审阅体验:为什么 diff 对设计至关重要
视觉打磨由几十个细小改动组成:一个 padding 调整、一个颜色深浅、一行 letter-spacing。这种工作最怕工具一次给出一大坨重写——你根本看不出它改了什么,也来不及阻止错误方向。
Claude Code 的交互默认提供逐文件、逐 diff 的审阅。我可以看到每个小改动,确认这处阴影值得换、那处间距不该动,再决定是否接受。这对设计改稿来说几乎是刚需。Codex 在自动执行模式下更像一个“整包交付”的交付商,速度快,但视觉改动这种“牵一发动全身”的场景,大粒度变更很容易引入新的不一致。
4.3 多文件一致性:设计 token 与样式的系统传播
一个页面里,按钮、卡片、标题、导航栏可能分散在四五个文件。设计系统的本质是:改一个 token,所有引用它的组件自动同步。工具能不能理解这层引用关系,决定了它修改质量的稳定性。
在这个维度上,Claude Code 的表现更接近“系统管理员”:修改前会先找全局变量文件,修改时优先复用已有 token,修改后检查引用点。Codex 更接近“定向编辑者”:你让它改哪个位置,它就改哪个位置,遇到重复值也不会主动联想到“这里应该抽成一个变量”。两种姿势不能说谁绝对更好,但在设计类任务里,系统管理员明显更合适。
5. 安装、配置和常见报错:从热词里看到的真实战场
写到这里,必须补充大量实测中绕不开的环境问题。最近关于这两个工具的热搜词,一半是功能对比,另一半是安装、登录、报错、配置翻车现场。这本身就说明了一个问题:工具能力再强,跑不起来就都是零。
5.1 Claude Code 安装与常见报错
常见流程是先在本地安装 Node.js,版本建议 18 以上,然后通过 npm 全局安装:
node -v npm -v npm install -g @anthropic-ai/claude-code claude --versionWindows 用户最容易遇到 PowerShell 执行策略问题:安装完成后输入claude提示“禁止运行脚本”。解决方式是在当前用户的 PowerShell 里放开脚本执行权限,然后用claude login完成浏览器登录。
热词里还出现了两条高频错误。一条是关于每周额度提升:“your limits are temporarily boosted”,这通常是官方在高峰期临时调整额度的提示,不必慌张。另一条是组织层面限制:“your organization has disabled claude subscription access”,这说明当前登录的账号被企业组织关闭了订阅权限。处理路径是换成个人账号,或者找管理员开启。和模型能力无关,纯粹是账号权限问题。
5.2 Codex 安装、登录与模型限制
Codex 现在既可以通过命令行安装,也有桌面版,Windows 用户可以直接使用桌面客户端。安装后同样需要登录 OpenAI 账号。热词里“codex打不开”出现频率不低,我通常建议按这个顺序排查:① 确认安装包和系统版本匹配;② 确认登录态没有过期;③ 检查本地网络是否能正常访问服务。
还有一个容易踩的坑是模型名不支持。热词里有一条错误信息:某个新模型通过 Codex 调用时被拒绝,提示模型不受支持。原因通常是你把配置里的模型名改成了一个 Codex 尚未接入的新模型。解决方式是恢复成工具官方支持列表里的模型名,不要在配置里随手填最新模型。
5.3 CC Switch 与本地转发配置的坑
CC Switch 是经常和 Claude Code 一起出现的配置工具,用来在多个模型端点之间切换,比如官方服务、兼容 OpenAI 协议的其他服务、本地 Ollama 模型。它修改的是 Claude Code 的配置文件,让你在切换不同后端时不用手动改文件。
热词里反复出现一条启动报错:CC Switch 在处理 Codex 的/responsesendpoint 时,本地转发链路连接失败。这个报错有三个常见原因:
- 本地中转服务没有启动,或者端口被占用;
- 配置里的模型名和转发目标服务的模型列表不匹配;
- 用了
/responses这种新版协议路径,但目标后端只支持旧版/v1/messages路径。
排查顺序应该是:先确认中转服务进程在运行,再核对 base URL、模型名、鉴权 key,最后调整协议路径。不要看到报错就卸载重装,多数情况下是配置对不上。
类似的还有“codex接入deepseek”的尝试。DeepSeek 提供兼容 OpenAI 接口的服务,可以在 Codex 或相关配置中把 base URL 指过去,并设置对应模型名。需要注意三个点:接口协议是否完全兼容、目标服务的限流策略、以及 API key 是否有对应权限。通用思路是:官方通道跑通后,再切换到兼容通道做小样本验证,不要一开始就批量跑。
5.4 省 token 的几个实操技巧
热词里有一个问题非常真实:“claude code如何用省token”。设计改稿任务上下文长,反复截图传图,消耗很快。几个有效做法:
- 项目约定写进
CLAUDE.md,不要每条指令重复,节省上下文空间; - 用
@精确引用具体文件,不要一次性把整个目录丢进去; - 让工具先用
grep或rg定位目标位置,再读取对应片段,而不是全文加载; - 一个会话只做一个改动主题,避免多种视觉意见互相污染上下文;
- 把高频检查项固化成语义化命令,每次调用时直接复用,而非每次重新描述。
注意:省 token 不是把信息压缩到模型看不懂,而是把“每轮都重复的背景信息”变成“只需要读取一次的约定”。这个平衡需要自己试验。
5.5 如果你要长期使用,还要补几块工程拼图
无论是 Claude Code 还是 Codex,跑通单次任务都只是开始。长期使用至少需要:目录和文件命名规范、变更日志记录、失败重试策略、输出目录明确化、以及谁有权限执行哪些命令。不要在一个没有版本管理的目录里让 AI 直接改代码,那会变成灾难。
6. 到底怎么选:任务类型决定工具,不是“谁强选谁”
6.1 适合 Claude Code 的任务特征
从实测看,Claude Code 更适合这些场景:
- 视觉改稿、风格统一、设计 token 维护;
- 需求里包含模糊的审美判断,比如“更透气”“更干净”“更平衡”;
- 需要跨组件、跨文件保持系统性一致;
- 修改需要逐条审阅,不能接受大范围重写;
- 多轮迭代,需求会持续变化。
一句话总结:当任务需要“理解意图”和“保持整体秩序”时,Claude Code 的优势明显。
6.2 适合 Codex 的任务特征
Codex 也有自己的舒服区:
- 需求清晰的 CRUD、接口对接、模板代码;
- 从零搭建项目骨架、按规范做格式化;
- 一次生成大量样板代码,追求速度;
- 测试用例补全、依赖升级、机械性重构。
当任务可以被精确描述、执行过程不需要太多价值判断时,Codex 的“直接执行”风格反而高效。它不擅长的事,是替你决定“哪种视觉更好”。
6.3 一个可以试的双工具工作流
你可以让两个工具各干各的:先用 Codex 快速搭出功能完整的骨架,再把维护和视觉收敛交给 Claude Code。反过来也行:Claude Code 先建立设计系统和组件规范,Codex 负责按规范批量生成重复页面。
关键不在“哪个工具更强”,而在于“职责边界是否清晰”。不要让两个工具在同一个会话里来回切换,否则上下文会互相污染,最终代码风格会打架。
6.4 一个可复用的两轮迭代验证法
无论你用什么工具,建议先跑这套测试流程,再决定是否投入大规模使用:
- 第一轮:给同一个真实项目,要求输出初稿。只给一份项目说明文件,不额外解释。
- 第二轮:给一条模糊的视觉修改意见,例如“整体间距太散,卡片需要更紧凑,同时保持标题层级清晰”。
- 计分项:初稿完成度、修改后约束保持率、需要重述设计规范的次数、最终代码可维护性。
如果工具在第二轮里还需要你把设计规范重新说一遍,甚至开始破坏第一轮的成果,那它更适合临时单次任务,不适合长期设计改稿。这套验证法不仅适用于这两个工具,也可以用来评估任何新的编程 agent。
7. 从这场实测里我学到的三件事
7.1 工具给的永远是“可控性”,不是审美
测试结束后我最大的感受是:AI 没有审美,但 AI 可以逼近审美。逼近的前提是有一个足够短的反馈循环——它能看见结果,能理解需求,能在每次小改动之间保持目标锚定。默认具备这种循环的工具,在落地体验上就会高出好几个级别。反过来,如果你的工具没法闭环,那你再强也只能当它的翻译官。
7.2 别用“生成速度”给工具排座次
设计改稿不是短跑,是长跑。它更看重的是“修改是否可追诉”“约束是否可保持”“代码是否可维护”。这三个能力,远比第一次生成快几秒更重要。我在测试里的感受是:初稿快的工具在第五轮才开始暴露问题,而那时你已经投入了半小时的心力。
7.3 下一步建议
如果你主要做前端视觉和设计类任务,我的建议很直接:先不要着急换工具,先把CLAUDE.md和AGENTS.md写清楚。把设计 token、间距系统、组件清单、命名规范固化下来。很多所谓“工具差距”,其实是“有没有把项目语境准备好”的差距。语境准备得越好,工具之间的差距就越小;语境空白,再强的工具也会变成高级打字机。
先把那套两轮迭代验证法跑起来,你会看到哪条路径真正适合你的工作流。