Vobuda
下载 工作原理Claude Code对比 Codex对比 关于 联系

从磁盘文件看 Codex 和 Claude Code

这不是评判谁写的代码更好。这是两者实际行为的说明,写这篇文章的人不得不让一个窗口同时驱动这两个程序。

这篇对比和其他文章的不同之处

关于 Codex 和 Claude Code 的大多数文章,都是某人在自己电脑上跑的一次跑分,一个月内就会过时,因为两者更新模型的速度比任何人写文章的速度都快。这篇文章不打算那样做。谁写的代码更好,取决于你提问那天各自用的是什么模型,我们不会假装能给出定论。

我们能告诉你的,是这两个程序由什么构成,因为 Vobuda 必须读懂它们,才能在任何一个之上绘制控制栏。各自把会话存在哪里,恢复会话叫什么,模型列表在哪里,怎样宣告自己所处的模式。这些都是你自己磁盘上的事实,变化很慢,也决定了它们各自怎样融入一天的工作。

简短版本:从外部看,Claude Code 更容易读懂。它把模型写进一个文件,按项目分文件夹保存会话,恢复会话只需一个参数。Codex 把更多东西留在自己内部。它通过自己的选择器切换模型,所以诚实的做法是打开那个选择器,读出它显示的内容,而不是发布一份迟早会出错的列表。

各自把东西存在哪里

这张表里的一切都在你面前这台机器上,你可以自己去看。

Claude CodeCodex
历史会话~/.claude/projects 下按项目分文件夹一个索引文件 ~/.codex/session_index.jsonl,记录每个会话的名字
打开某个旧会话--resume <id>resume <id>
接着上一个会话--continueresume --last
技能~/.claude/skills,加上项目里对应的文件夹~/.codex/skills,加上项目里对应的文件夹
模型列表写在自己的一个文件里,由服务端实时更新,新模型上线当天就会出现它自己的选择器,菜单会打开它并逐行读取
设置模型/model 选模型,/effort 选强度它自己的 /model 选择器,然后为每个模型选一个强度
配置文件settings.jsonconfig.toml
状态栏显示的内容Opus 5.5,思考强度高,Claude Maxgpt-5.6-terra medium
进程名称claudenode,因为 Codex 是以 node 运行的

读取于 2026 年 9 月,基于两者当前的安装版本。以各自官方文档为准,这里呈现的是从一个必须同时驱动两者的窗口看到的样子。

两个文件夹,上面那张表全部来自这里

两个智能体都没有隐藏这些内容。Vobuda 的控制栏正是读取这些文件,这就是为什么它能显示一份我们自己从未手写过的模型列表。

~/.claude
settings.json          模型、推理力度、权限projects/              每个项目一个文件夹  <project>/           该项目的会话,最新的排最后skills/                你自己的技能,加上项目自带的history.jsonl          你输入过的内容,按顺序记录
按项目分文件夹,会话互不混淆,所以恢复会话时会先问是哪个项目。模型列表是安装程序自己写的一个文件。
~/.codex
config.toml            模型和推理级别session_index.jsonl    每个会话一行skills/                你自己的技能,加上项目自带的
一个索引记录所有会话,所以 resume --last 只需一条命令,要打开更早的会话就得去读这个索引。

我们踩过的三个坑,好让你认出它们

下面每一条最初都是 Vobuda 里的一个缺陷,而每一条也都说明了这两个智能体的某种真实特性。

Claude 会话最深层的进程往往是 codex

Claude Code 会把 Codex 当作自己的一个辅助进程来运行。所以如果用进程树里最深的那个进程来判断一个区块属于哪个智能体,就会导致程序坞在一个 Claude 会话上显示 CODEX,新建操作也会重启错误的程序。一个区块属于哪个智能体,取决于是谁启动了它,而不是它启动了什么。

Codex 不是 node_repl

Codex 是以 node 运行的,而 shell 启动一个程序的方式是先复制自身、再用目标程序替换自身,所以除非按名字明确查询这个可执行文件,进程列表在它的整个生命周期里都会沿用旧名字。以前一个运行 Codex 的区块标题会显示成 node_repl。

一个智能体的列表出现在另一个智能体的区块里

两份模型列表和一个 continue 参数,是在只有一个智能体时写的,后来出现了三个智能体,这些代码却还是全局共用。打开一个 Codex 区块时,弹出的选项却是 Opus、Sonnet、Haiku 和 Fable,而 continue 发送的是 codex --continue,Codex 收到后只会返回一个用法错误。现在从某个程序读取的任何信息,只归属于那个程序,也只会向那个程序查询。

智能体界面上的措辞会变

如果靠在一个智能体的界面里查找特定字词来判断它的回答或收到的请求,一旦该智能体发布新版本就会失效。现在两者都靠形态来识别:判断一个智能体靠的是它在你输入前显示的等待提示符,而不是围在外面的方框,因为方框是会变的样式,提示符不是。

大多数人真正想要的答案是两者都用

实际情况是,几乎没有人会只选一个而删掉另一个。这一个小时里某个智能体更适合手头的事,另一个手上还开着你之前在做别的事情时留下的会话,而且两者的用量限额总在不凑巧的时候用完。真正重要的是,同时运行两者会不会带来额外代价。

在 Vobuda 里不会。一个标签页里两个区块,或者两个标签页,各有自己的控制栏读取各自的智能体,各自显示自己的模型和思考强度,Claude Code 的权限模式显示在它们旁边。两者以同样的方式把信号交给窗口,所以无论是哪一个发出的,徽标、声音和通知的含义都相同,你不在时发生的事的记录也把它们并排列出,按区块分组。

两者都不需要通过设置项或开关来连接,因为一个必须先配置才能工作的信号不是功能,而是作业。它们在启动时自动连接,标签栏上的“集成”按钮可以为已经在运行的智能体重新建立连接。已有的第三方钩子保持原样,任何已经占用某个事件的钩子,会在我们的之后立刻被调用。

关于 Codex 和 Claude Code 的直接问答

Codex 和 Claude Code 哪个更好?

论代码质量,这取决于你提问那天各自跑的是什么模型,任何写死的答案都会过时。论程序本身的行为,Claude Code 从外部看更透明:它把模型列表写进一个文件,按项目把会话存进各自文件夹,用一个参数就能恢复会话。Codex 把更多东西留在内部。

我能同时运行 Codex 和 Claude Code 吗?

可以。同一个窗口里放两个区块,各自有自己的控制栏,读取各自的智能体。两者都会在完成任务或需要权限时发出通知,也都会出现在你离开期间发生的事的同一份记录里。

Vobuda 是怎样列出 Codex 模型的?

直接问 Codex。我们曾经发布过一份包含两个 Codex 并不运行的模型的列表,发布当天就是错的。现在模型按钮会打开 Codex 自己的选择器,读取它显示的各行,并按下你选中的那一行,每个模型提供的是 Codex 给它的强度。

两者中任何一个需要 Vobuda 账号吗?

不需要。Vobuda 根本没有账户。每个智能体使用你已经给它的订阅或密钥。Vobuda 只用 Claude Code 的登录状态做一件事,即向 Anthropic 查询你的用量上限,并且从不触碰 Codex 的登录。

如果用本地模型呢?

通过 Ollama 接入的本地模型,只是 agents.json 里的一条记录,不需要写代码。它会得到一个区块和一条控制栏,展示这个智能体能诚实声明的一切信息。

一个窗口,两个智能体

免费使用,无需账号,每条控制栏都读取它下面对应的智能体。

curl -fsSL https://vobuda.com/install.sh | sh