跳到正文
Hacker News· tragdate·· 9 天前AI 评分38

Clodex:把 Claude 塞进 Codex CLI 的 Rust 分支

Plz No Ban

AI 导读

Clodex 是 openai/codex 的分支,将 ChatGPT 桌面版 Codex 背后的模型换成 Claude,直接进程内调用 Anthropic Messages API,无需代理或翻译层,桌面应用、语音模式和 ChatGPT 登录均保持不变。

正文 · AI 翻译

把 Claude 塞进 Codex CLI。一个怪物。Sam 和 Dario 不会手牵手,所以我们替他们牵了。🦞🤝🦞

Clodex 是 openai/codex 的一个分支,其中 ChatGPT 桌面应用 Codex 背后的模型换成了 Claude,在进程内与 Anthropic 的 Messages API 通信。没有代理,没有转换层,没有 TypeScript。桌面应用、语音模式以及你的 ChatGPT 登录完全保持原样;只有后端二进制文件变了。

一天之内,一口气,靠语音做出来的。请相应地看待它。

它做什么

  • WireApi::Anthropic:codex-rs/anthropic 中的一条新线路,将 Codex 的 Responses 风格提示映射到 Anthropic Messages(工具、带签名的思考、提示缓存、图像、原生网络搜索),并将结果作为 Codex 事件流式返回。
  • 来自 Claude Code 的认证:读取 ~/.claude/.credentials.json,就地刷新 OAuth 令牌,遇到 401 重试一次。你的 Claude 订阅就是配额。
  • 语音模式继续工作:实时通话在你的 ChatGPT 账户上创建,应答的后端是 Claude。每个实时会话都会附加一段语音模式附录,让 Claude 知道如何作为语音后端行事。
  • 子代理完成后会唤醒父代理。
  • 在另一个提供商下创建的线程会在当前活跃的提供商上恢复。

在 rust-v0.162.0-alpha.10 之上有十二个提交。git log b496f984f4..HEAD 就是全部故事。

注意

  • 只在一台机器上测试过:Arch Linux、ChatGPT 桌面版 26.930(chatgpt-bin)、捆绑的 Codex CLI 0.162.0-alpha.10。没有别的了。
  • 需要桌面应用中已有的 ChatGPT 登录(用于 UI 和语音)以及已有的 Claude Code 登录(用于模型)。
  • Anthropic 的 OAuth 是为 Claude Code 设计的。Clodex 把自己伪装成 Claude Code。这是否在你的计划条款范围内,由你决定。
  • 未优化的开发构建,约 420 MB 的二进制文件。没有运行测试。没有 clippy。预期会有粗糙之处:引用被丢弃,apply_patch 不会流式输出其 diff,速率限制头被忽略。
  • 桌面仍然运行原版 codex-code-mode-host;Clodex 符号链接到它。

安装

git clone https://github.com/ZmoleCristian/clodex
cd clodex/codex-rs
RUSTFLAGS="-C link-arg=-fuse-ld=mold" cargo build -p codex-cli --bin codex --profile dev-small
ln -s /usr/lib/chatgpt/resources/codex-code-mode-host target/dev-small/codex-code-mode-host

冷构建在 8 核上大约 5 分钟;增量构建为 30 到 50 秒。

需要一个包含 Claude 模型的模型目录。把它放在 ~/.codex/catalog.clodex.json(参见 docs/clodex-catalog.example.json)。

桌面将启动的包装器,而不是其捆绑的 CLI:

#!/bin/sh
# ~/bin/clodex-codex
real=/path/to/clodex/codex-rs/target/dev-small/codex
case " $* " in
  *" app-server "*) exec "$real" "$@" \
    -c model_provider=anthropic \
    -c model=claude-opus-5-5 \
    -c model_catalog_json=$HOME/.codex/catalog.clodex.json ;;
  *) exec "$real" "$@" ;;
esac

启动器:

#!/bin/sh
# ~/bin/clodex
pkill -f /usr/lib/chatgpt/ChatGPT 2>/dev/null
while pgrep -f /usr/lib/chatgpt/ChatGPT >/dev/null; do sleep 0.2; done
export CODEX_CLI_PATH=$HOME/bin/clodex-codex
exec /usr/lib/chatgpt/ChatGPT "$@"

原版应用、/usr/lib/chatgpt 和 ~/.codex 均未改动。从菜单项启动应用,你得到原版 Codex;用 clodex 启动,你得到 Claude。

为什么

OpenCodex 能用,但它是应用和模型之间一个 48 万行的 TypeScript 代理。Codex 中的接缝是 core/src/client.rs 中的一个 match 分支;把 Anthropic 放在那里更便宜。

上游

此分支跟踪 openai/codex 标签。变基,解决 client.rs、realtime_conversation.rs 和 thread_processor.rs 中的少量冲突,重新构建。上游 README 在 docs/README.upstream.md 中。

来源:Hacker News · github.com