Claude Code vs Codex:同一把 TaoToken Key 跑 Go 仓库重构的 Token
2026/9/21 17:59:24 网站建设 项目流程

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度

1. 先把任务定死:同一个 Go 仓库、同一个 handler 模块

我手上有个 Go 写的短链服务,internal/handler/link.go里堆了 400 多行,路由、参数校验、DB 调用、错误返回全糊在一个函数里。这次要做的重构目标很具体:把CreateLinkRedirect两个 handler 拆出 service 层,统一错误响应结构,顺手把context传递补全。

选这个模块是因为它够典型——有 HTTP 绑定、有业务逻辑、有数据库交互,重构时既考验工具对 Go 语法的理解,也考验它能不能跨文件改调用方。Claude Code 和 Codex 都支持从命令行直接操作仓库,我打算让它们跑同一个任务,记录三件事:Token 消耗、往返轮次、diff 行数。

Token 消耗看的是输入加输出总量,往返轮次指工具内部发起模型调用的次数,diff 行数就是最终git diff --stat的结果。这三个指标能反映工具在真实重构场景下的效率差异——有的工具一次改对,有的来回试探。

两个工具都通过 TaoToken 拿 Key,这样计费和模型路由走同一套,对比才有意义。TaoToken 在这里的角色是默认供应商:你从官网创建 Key,把 API 地址写进工具配置,之后两个工具都从同一个入口调模型。

2. 拿 Key 与写配置:两个工具共用一套入口

2.1 创建 Key

打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,注册后在控制台创建 API Key。这个 Key 同时给 Claude Code 和 Codex 用,不需要分别申请。创建时建议给 Key 起个能识别的名字,比如go-refactor-test,方便后面看用量。

Key 拿到后先存到环境变量里,两个工具都读同一个变量:

export TAOTOKEN_API_KEY="sk-你的key"

2.2 Claude Code 配置

Claude Code 通过ANTHROPIC_BASE_URLANTHROPIC_API_KEY两个环境变量识别供应商。在 shell 配置文件里加上:

export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="$TAOTOKEN_API_KEY"

如果你用 Claude Code 的配置文件方式,也可以写进~/.claude/settings.json

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的key" } }

改完重启终端,运行claude进入交互模式,输入/status能看到当前 base URL 指向 TaoToken 就对了。

2.3 Codex 配置

Codex 的配置在~/.codex/config.toml,需要指定 model provider 和 API 地址:

model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY"

然后在环境变量里确保TAOTOKEN_API_KEY已导出。启动codex后,用/model命令确认当前 provider 是 taotoken。

两个工具都配好后,可以先跑一个最小请求验证连通性。Claude Code 里直接问「这个仓库用什么语言写的」,Codex 里让它list files in internal/handler。能正常返回就说明 Key 和地址都生效了。

3. 重构任务的具体操作与记录方式

3.1 给两个工具的提示词

为了保证对比公平,两个工具收到完全相同的任务描述。我把提示词写成一个文件refactor-task.md,内容如下:

重构 internal/handler/link.go: 1. 把 CreateLink 和 Redirect 中的业务逻辑抽到 internal/service/link.go 2. 统一错误响应为 {"code": int, "message": string} 结构 3. 补全 context 传递,DB 调用都带 ctx 4. 更新所有调用方,确保 go build ./... 通过 5. 不要改数据库 schema 和路由注册

Claude Code 里用claude "读取 refactor-task.md 并执行",Codex 里用codex "读取 refactor-task.md 并执行"。两边都从干净的 git 工作区开始,每次跑之前git stash清空改动。

3.2 记录 Token 与轮次

Claude Code 在交互模式里输入/cost能看到当前会话的 Token 用量。Codex 在退出时会在终端打印 usage 摘要。往返轮次我通过工具日志里的 API 调用次数统计——Claude Code 的日志在~/.claude/logs,Codex 的日志在~/.codex/logs,用grep -c "api_call"数一下。

diff 行数在任务结束后跑:

git diff --stat git diff --numstat | awk '{add+=$1; del+=$2} END {print "added:", add, "deleted:", del}'

3.3 两次重构的 diff 摘要

Claude Code 跑完后的 diff 摘要:

internal/handler/link.go | 312 +++++++++++++------------------- internal/service/link.go | 187 ++++++++++++++++++++++ internal/handler/link_test.go | 24 +++-- cmd/server/main.go | 8 +- 5 files changed, 289 insertions(+), 242 deletions(-)

Codex 跑完后的 diff 摘要:

internal/handler/link.go | 298 +++++++++++++------------------- internal/service/link.go | 165 +++++++++++++++++++++ internal/handler/link_test.go | 18 ++-- cmd/server/main.go | 6 +- 4 files changed, 261 insertions(+), 226 deletions(-)

两边都成功拆出了 service 层,go build ./...都通过。Claude Code 多改了一个文件,因为它顺手把internal/handler/middleware.go里的错误处理也统一了——这不在任务要求里,属于额外改动。Codex 严格按提示词范围改,没有越界。

4. 三列对照表与可验证结果

4.1 核心指标对照

指标Claude CodeCodex
Token 消耗(输入+输出)约 48K约 36K
往返轮次7 次5 次
diff 行数(增+删)531 行487 行
构建通过
额外改动有(middleware.go)

Token 消耗上 Codex 更省,因为它改的文件少、没有额外探索。Claude Code 多花的 Token 主要用在读 middleware.go 和判断要不要一起改。往返轮次 Codex 也少两次,说明它一次规划得更准。

但省 Token 不等于结果更好。Claude Code 的额外改动让错误响应在整个 handler 层都统一了,Codex 只改了任务指定的两个 handler,middleware 里的错误格式还是旧的。如果你要的是严格范围控制,Codex 更合适;如果你要的是「顺手把相关的一起收拾了」,Claude Code 的主动性有价值。

4.2 验证重构结果

两个工具跑完后,我都做了同样的验证:

go build ./... go test ./internal/handler/... ./internal/service/...

测试全绿。然后手动跑了一遍服务,用 curl 打POST /api/linksGET /:code,返回结构符合新的{"code": int, "message": string}格式。

4.3 失败分支

如果go build报错,先看是不是 import 路径没更新。两个工具都可能漏改调用方的 import。修复方式是在报错文件里手动补上internal/service的引用,然后重新 build。

如果 Token 消耗异常高(比如超过 100K),检查是不是工具陷入了反复读文件的循环。Claude Code 可以用/compact压缩上下文,Codex 可以开新会话重新跑。

如果 API 返回 401,检查TAOTOKEN_API_KEY是否在当前 shell 里导出,以及 base URL 是否写成了https://taotoken.net/api(不要带路径后缀)。配置细节可以参考 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的文档页。

5. 成本、模型选择与一些实际体会

Token 成本按 TaoToken 控制台的实际计费为准,不同模型单价不同。这次对比里两个工具都用了默认模型路由,没有手动指定。如果你要控制成本,可以在 TaoToken 控制台看用量明细,按项目或 Key 维度拆分。

模型选择上,Claude Code 默认走 Anthropic 系列,Codex 默认走 OpenAI 系列,TaoToken 会根据工具请求的模型名路由到对应供应商。你不需要在配置里写死模型,工具自己会带。如果想换模型,在工具的配置里改 model 字段即可,TaoToken 这边不用动。

我试过在同一个仓库上让两个工具跑三次同样的任务,Token 消耗的波动大概在 15% 左右,往返轮次波动 1 到 2 次。所以单次对比的数字只能当参考,要看趋势得多跑几次取平均。

一个实际体会:Claude Code 在跨文件重构时更愿意主动探索,Codex 更克制。这不是好坏问题,是风格差异。你如果明确知道要改哪些文件,Codex 的克制能省 Token;如果你不确定影响范围,Claude Code 的探索能帮你发现遗漏的调用方。

最后,两个工具的配置都指向同一个 TaoToken Key,切换工具时不用重新申请凭证。Key 的管理和用量查看在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的控制台里,建议给不同项目建不同的 Key,方便追踪成本。

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询