Codex、OpenCode、Antigravity 和 Claude Code 的语音模式:哪个 CLI 有?
我们在 2026 年 10 月 13 日检查了五个编程代理 CLI 和两个应用。Codex CLI 和 oh-my-pi 能进行语音对话,Claude Code 和 Antigravity CLI 只能把语音听写进提示词,OpenCode 没有任何内置功能。每个怎么启动、音频发往哪里,以及语音要花多少令牌。
人们在 Google 里输入“codex voice mode”“opencode voice mode”和“antigravity voice mode”,找到的答案却把两种不同的东西混在同一个名字下面。所以我们在 2026 年 10 月 13 日打开了构建机上安装的每一个 CLI,读了它自己的命令列表,再拿它和厂商当天的文档逐一对照。
先说两个词,因为整个答案都取决于它们。
听写是单向的。你说话,文字落进提示词,你按下 Enter,然后在屏幕上读回答。
语音模式是双向的。你说话,代理去干活,回答被念给你听。你的眼睛可以离开终端。
简短的回答
| 工具 | 检查的版本 | 听写进提示词 | 语音回复 | 怎么启动 |
|---|---|---|---|---|
| Claude Code | 2.1.296 | 有 | 无 | /voice |
| Codex CLI | 0.162.1 | 没有单独的模式 | 有 | /voice |
| OpenCode | 1.19.0 | 仅限插件 | 无 | 无内置 |
| Antigravity CLI | 1.3.4 | 有 | 无 | /voice |
| oh-my-pi | 18.1.2 | 有,在本机上 | 有 | /live |
| Paseo(应用) | 当天的文档 | 有 | 有 | 应用里的语音模式 |
| T3 Code(应用) | 当天的仓库 | 有,iOS 应用 | 无 | composer 里的麦克风 |
本页剩下的部分是每一行的细节,然后是紧接着会冒出来的问题:对代理说话会不会比打字多花令牌。
Claude Code:是听写,不是对话
Claude Code 有语音听写(2.1.69 或更高版本)。你用 /voice 打开一次,它就会在各个会话之间保持开启:
/voice
Voice mode enabled (hold). Hold space to record. Dictation language: en (/config to change).
说话时按住 Space 键,松开就停止。你说话时文字会出现在提示词里,在转写最终确定之前显示为灰色,你还可以在同一条消息里混用打字和听写。如果你不想一直按着键,/voice tap 会在第一次轻按时开始录音,第二次轻按时发送提示词,前提是转写内容至少有三个词。这个键是 voice:pushToTalk 绑定,你可以在 ~/.claude/keybindings.json 里把它改到 meta+k 这样的修饰键组合上。
限制写在语音听写文档里。音频会流式传到 Anthropic 的服务器做转写,不在本地处理。它需要 claude.ai 登录:用 Anthropic API 密钥、Bedrock 或其他云提供商时,/voice 是一条未知命令。它需要本地麦克风,所以在 SSH 会话或云端会话里不能用。听写语言跟随 language 设置,支持 20 种语言,默认回退到英语。
它不做的事是说话。Claude 一如既往用文字回答。Claude 应用有真正的语音模式,在移动端、桌面端和网页端处于测试阶段,但 Anthropic 的语音模式帮助页面说得很清楚:在 Claude Cowork 和 Claude Code 里,可以用听写,但没有语音模式。
Codex CLI:用 /voice 进行真正的语音对话
这是大多数人在找的那个,也是文档讲得最不清楚的那个。
OpenAI 的 Codex 语音页面介绍的是由 GPT-Live 驱动的 ChatGPT Voice:一场你在 ChatGPT 桌面应用里针对某个 Codex 任务打开的语音对话,或者在手机与桌面主机配对后,通过 iOS 上的 Codex 打开。页面列出了 Plus、Pro、Business、Edu 和 Enterprise 套餐、同一时间只能有一个语音对话处于活动状态,以及一个只把语音转成提示词文字的独立听写功能。它没有提到 CLI。
CLI 有它自己的。在 codex-cli 0.162.1 里,斜杠命令列表(在开源仓库里,也在安装好的二进制文件里)包含 /voice,描述为“start or stop voice; use /voice settings to choose a voice”。你可以确认你的安装里这个功能是开着的:
codex features list | grep realtime
# realtime_conversation stable true
在会话里,/voice 会在当前线程上开启一场实时对话。你说话,Codex 出声回答,双方的字幕在终端里滚动。键位映射里有一个开始或停止对话的动作,还有一个给你的麦克风静音的动作,两个都可以重新绑定。CLI 在三种情况下会拒绝,每种都有一条提示:在对话的第一条消息之前(“Start a conversation before using voice mode”),在旁支对话里,以及在没有音频栈的构建上(“Voice requires macOS, an MSVC-based Windows build, or a glibc-based Linux build”)。
这场对话中有两个模型在工作:一个和你交谈的实时语音模型,以及真正干活的 Codex 线程。语音这一侧把你的请求交给线程,源代码把这一步叫作 handoff,再把结果说给你听。下面讲令牌的部分时请记住这一点。
OpenCode:没有任何内置
OpenCode 1.19.0 既没有语音命令,也没有听写。它的二进制文件里仅有的“speech”字符串,是提供商目录里语音模型的描述,你可以从自己的代码里调用它们,但那不是和 OpenCode 说话的方式。
社区填补了这个空缺。opencode-voice 是一个往 OpenCode 提示词里听写的插件:Ctrl+X V 开始录音,Enter 停止并插入转写内容,转写可以在本地 Whisper、OpenAI、ElevenLabs 或 Handy 应用之间选择。它的 README 对现状很坦诚:预发布软件,仅限 Linux x64,麦克风采集还是实验性的。它不会把回复念出来。
在 macOS 或 Windows 上,操作系统自带的听写在任何终端里都能用,OpenCode 也不例外。
Antigravity CLI:用 /voice 听写
Antigravity CLI 有听写,文档在它的 /voice 页面上。/voice、它的别名 /record,或者 F5 键,都能启动它。文字落进提示词输入框,在你自己发送之前不会发出去。
三个限制。它需要交互式会话,在 --print 模式下被禁用。它不对商业或企业账户开放。另外,如果你是在听写功能上线之前登录的,在你运行 /logout 并重新登录之前,转写都会失败。
SSH 的情况比大多数工具处理得好:在你自己的机器上运行 agy mic-serve,用 ssh -R 24713:127.0.0.1:4713 <server> 打开一条反向隧道,再在服务器上用 ANTIGRAVITY_MIC=127.0.0.1:24713 agy 启动 CLI。这样你的麦克风就会把声音送进远程会话。没有语音回复。
oh-my-pi:两样都有,而且听写留在你的机器上
oh-my-pi(omp)是这里唯一两样都做的 CLI,而且它的听写从不离开你的机器。
语音转文字默认关闭。在设置里(Speech 分组)打开它,然后按住 Space 键录音,松开就转写。模型在本机运行:默认是 Parakeet TDT v3,配置较低的机器可以改用不同大小的 Whisper。一个设置决定听写什么时候发送:从不发送、松开时、松开且句子完整时,或者在你说出“submit”时。
对话是 /live,或者 Ctrl+L。CLI 把它描述为“Codex-backed realtime voice mode”,声音在设置里(Live Voice)选择。另外,omp say 会用 Kokoro-82M 把任意文字念出来,这也是一个在本地运行的语音模型。
Paseo 和 T3 Code:语音在应用里,而不在 CLI 里
在同样的搜索里还会冒出两个应用。
Paseo 运行一个管理你的编程代理的守护进程,有桌面、移动、网页和 CLI 客户端。它既做听写,也做语音模式对话。语音处理可以在你的机器上运行(Parakeet 做语音转文字,Kokoro 做文字转语音,ONNX 模型跑在 CPU 上),也可以走 OpenAI,而语音模式本身是一个运行在 Claude、Codex 或 OpenCode 上的隐藏代理会话。默认的本地语音模型只支持英语;另一个 Parakeet 模型覆盖 25 种欧洲语言。Paseo 的其余部分,我们在 Paseo 替代方案页面上和 AgentsRoom 做了比较。
T3 Code 在它的 iOS 应用里有语音输入:转写在手机上运行并填进草稿,它从不自己发送任何东西。没有语音回复。
语音模式会多用令牌吗?
这是紧跟在“有没有”后面的问题,而每个工具的答案都不一样。
- Claude Code 的听写:不会。Anthropic 的文档说,转写不消耗 Claude 消息或令牌,也不计入
/usage显示的额度。你听写的内容会变成一条普通提示词,花费和敲出来的同一条提示词一样。 - Claude 应用里的语音模式:根据 Anthropic 的帮助页面,它和文字一样计入你的常规用量额度。
- Codex CLI 的
/voice:只要对话开着,就有一个实时语音模型在 Codex 线程旁边运行。OpenAI 的页面没有说语音对话怎么计入 Codex 的额度。我们没有找到数字,所以也不给出数字。 - Antigravity CLI:只有听写,文档没有说它怎么计算。
- oh-my-pi:本机上的听写不花令牌,也不发送任何东西。
/live走的是 Codex 的实时语音。
底层的规则在哪里都一样:干活的模型读的是文字。说出来的一轮和敲出来的一轮计费相同。改变你账单的是轮数和会话的深度,而语音往往会带来更多、更短的轮次。关于手机我们也说过同样的话,见 Claude Code 的 Remote Control 会多用令牌吗。
AgentsRoom 在它们旁边做了什么
AgentsRoom 的 Voice Mode 走的是另一条路:一场不取决于你运行哪个 CLI 的语音对话。
它作用于终端,而不是 CLI。你在一个已经在运行的代理上打开它。你的这一轮会被转写,作为你的消息发进那个代理的终端,代理在它自己的会话里干活,它的回复会用你挑选的声音念出来。免提会在每次回复之后重新打开麦克风。语言会被自动识别。它对 Claude Code、Codex、GitHub Copilot CLI、Cursor 以及 AgentsRoom 运行的另外 10 个代理 CLI 都一样,在 macOS、Windows 和 Linux 的桌面应用里都能用。
令牌开销很小,而且看得见:在第一条语音消息里,代理会收到一段简短的前言,要求它给出两到五句的口头回复,不要念出 markdown 或文件路径,之后每五条消息提醒一次。语音处理本身运行在我们的后端,从和听写共享的语音额度里扣除,或者走你自己的 OpenAI API 密钥。
如果只想听写,composer 里有一个麦克风按钮,在语音听写页面上有介绍。CLI 内置的语音你照样可以在它的终端里用:两者并不互相排斥。
怎么在你自己的机器上核实
版本变化很快,这个页面也会过时。下面是一分钟内核实表格每一行的方法:
claude --version # then /voice in a session
codex --version # then: codex features list | grep realtime
opencode --version # no voice command in the help
agy --version # then /voice in a session
omp --version # then the Speech settings, and /live
如果 /voice 在 Claude Code 里回答“Unknown command”,说明你是用 API 密钥或云提供商登录的,而不是用 claude.ai 账户。如果 Codex 的列表里没有 realtime_conversation,说明你的 CLI 比我们检查的版本旧。
常见问题
Codex CLI 有语音模式吗?
有。在 codex-cli 0.162.1 里,/voice 命令会在当前线程上开启一场语音对话:你说话,Codex 出声回答,双方的字幕显示在终端里。/voice settings 用来选择声音。它需要一场已经开始的对话,在旁支对话里不能用,并且运行在支持它的 macOS、Windows 和 Linux 构建上。OpenAI 自己的语音页面介绍的是 ChatGPT 桌面应用里和 iOS 上 Codex 里的 ChatGPT Voice,而不是这条 CLI 命令,所以我们在 CLI 本身里做了核实。
Claude Code 有语音模式吗?
Claude Code 有的是语音听写,不是语音对话。运行 /voice,然后说话时按住 Space 键(或者用 /voice tap),转写内容就会落进提示词。Claude 仍然用文字回答。它需要 claude.ai 登录和本地麦克风,所以用 API 密钥、在 SSH 会话或云端会话里都不能用。Anthropic 表示 Claude 应用的语音模式在 Claude Code 里不可用。
OpenCode 有语音模式吗?
没有内置。OpenCode 1.19.0 既没有语音命令,也没有听写。一个社区插件 opencode-voice 用 Ctrl+X V 加上了往提示词里听写的功能,但它是预发布软件,而且只能在 Linux x64 上运行。除此之外,你就用操作系统自带的听写。
Antigravity CLI 有语音模式吗?
它有听写。/voice、它的别名 /record,或者 F5 键,会把你说的话转成文字放进提示词输入框,但不会发送。它需要交互式会话,在 --print 模式下被禁用,并且不对商业或企业账户开放。通过 SSH 时,agy mic-serve 会把你自己机器的麦克风转发到服务器。没有语音回复。
Claude 的语音模式会多用令牌吗?
这取决于你说的是哪种语音。根据 Anthropic 的文档,Claude Code 的听写不消耗 Claude 消息或令牌,也不计入 /usage 里的额度:你听写的内容就变成一条普通提示词。Claude 应用里的语音模式和文字一样,计入你的常规用量额度。两种情况下模型看到的都是文字,所以说出来的一轮和敲出来的同样一轮花费相同,真正起作用的是轮数和会话的深度。
语音听写和语音模式有什么区别?
听写是单向的:你说话,文字落进提示词,你在屏幕上读回答。语音模式是双向的:你说话,回答被念给你听。Claude Code 和 Antigravity CLI 做听写。Codex CLI 和 oh-my-pi 两样都做。OpenCode 不装插件的话两样都不做。
下载 AgentsRoom
在一个窗口中运行你所有项目的所有 AI 代理。
配套应用:随时随地监控你的 Agent
使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。
把 Bug 和需求直接发送到您的公开待办清单。
继续阅读
AGENTS.md:一个上下文文件喂饱所有编码 Agent(Codex、Antigravity、Claude)
AGENTS.md 是 AI 编码 Agent 在动你代码之前先读的那份可移植指令文件。该往里写什么、它和 CLAUDE.md 有何区别,以及如何在 Codex、Antigravity 和 Claude 之间保持同一份上下文。
阅读全文如何与 AI 编程代理沟通:Claude、Codex、Antigravity、Grok Build
代码不再是瓶颈,沟通才是。本文介绍如何与 AI 代理 Claude、Codex、Antigravity 和 Grok Build 协作,让你更快、更精准地交付,同时减少 token 消耗。
阅读全文Claude 的令牌是什么,又是怎么运作的?我们数了 38 亿个
令牌是词的一个片段,Claude 会统计四种令牌:输入、缓存写入、缓存读取和输出。我们统计了自己 30 天的 Claude Code 会话,共 38 亿令牌:98% 是从缓存里重新读取的对话,Claude 写出的只占 0.3%。每种令牌的成本、为什么会话每多一轮就更重,以及 5 小时窗口到底在计量什么。
阅读全文