返回洞察
最佳实践•2026-09-29•约 10 分钟 阅读

用语音写代码:直接对 Claude Code、Cursor、ChatGPT 说

用语音写代码:直接对 Claude Code、Cursor、ChatGPT 说
TL
Team Laxis
Laxis 团队 @ Laxis

Claude Code 会话进行到第四十分钟,agent 重构错了层。你知道原因:计费模块看起来多余,但它之所以存在,是为了兼容某个老供应商的怪毛病,真正的修复应该放在上一层。把这件事讲清楚要一整段话。可在状态正顺的时候打一整段字,感觉像是在受罚,于是你只敲了十一个词,下一次尝试还是没打中。正是这道落差,让编程语音输入成了语音输入最受热议的用法之一,也让它和十年前的“语音编程”完全不是一回事。

真正从中受益的开发者,并不是在念括号和分号。他们口述的是意图:提示词、需求说明、commit message,以及某条评审意见为什么重要。语法现在是 agent 的活儿,解释仍然是你的事,而大多数人用嘴解释比用手指快。

在 agent 出现之前,语音编程是另一回事

在很长一段时间里,用语音写代码是一门需要苦练的功夫,而不是图个方便。Talon 常与 VS Code 的 Cursorless 扩展搭配使用,让人靠一套精简的语音命令词汇,完全不动手就能编写和编辑代码。这方面的大量工作,是由患有重复性劳损(RSI)的开发者、为同样处境的开发者做出来的;如果你的双手暂时用不了,在练上几周之后,它依然是最靠谱的选择。

变的是工作的基本单位。当 agent 来写函数时,你产出的东西就变成了对函数的描述:它该做什么、不能弄坏什么、怎么判断它已经完成。这是成段的文字。而成段的文字,恰恰是普通听写一向擅长的。

去翻翻 Hacker News 上相关的讨论帖,标题类似 “Ask HN: Anyone using dictation with coding agents?”,留意其中缺了什么。大家聊的是按键说话(push-to-talk)快捷键、自定义词典,以及该把哪个系统级工具接到 CLI agent 上。几乎没人问怎么念出一个括号。

开发者实际口述什么(以及仍然手打什么)

按“这些字是写给谁看的”来给一天的工作分类,界线就一目了然。凡是写给人看的,或者用自然语言写给模型的,都可以考虑用语音。凡是编译器或 shell 要逐个字符解析的,通常就不适合。

任务口述还是手打?原因
给 Claude Code、Cursor、Codex 或 ChatGPT 的提示词口述长上下文说出来成本很低,模型也能直接读懂松散的表述
需求说明、计划和 issue 描述口述本质是解释;结构事后再整理
commit message 和 PR 描述口述趁印象还新,说出改了什么、为什么改,push 前再删减
代码评审意见口述,然后重读语气是要落到同事身上的,发出去之前先检查
docstring 和注释口述只是恰好写在代码文件里的文字
变量名、正则、配置、单行修改手打大小写、符号和精确字符,说出来又慢又容易错
shell 命令手打,或者交给 agent听错一个参数就可能造成实际破坏

关于最后一行:与其逐字口述 shell 命令,不如把目标描述给 agent,在批准之前先读一遍它提议的命令。这样即使听错了,也永远到不了你的 shell。

一个管用的语音提示词长什么样

语音提示词失败的方式很好预测:说着说着就跑偏了。你从目标说起,讲到一半想起一个约束,又回头补充,最后在测试套件的话题上越扯越远。模型通常能理清楚,但如果有一个能记在脑子里的松散框架,第一次尝试的效果会好得多。

四拍语音提示词

背景:我们在哪儿,已经有了什么。目标:你想要的改动,一句话说完。约束:什么不能动、要沿用哪些模式、要避开什么。完成标准:能证明改对了的测试、行为或输出。

按这个顺序说完,就很少需要再为漏掉的东西追问一次。

提示词是一次命中还是要改三遍,往往取决于几个习惯:

  • 发送前先读一遍。 Claude Code 的 /voice 默认会等你按 Enter,这个设置值得保留。花两秒扫一眼,就能在 agent 去找那个听错的文件名之前把它揪出来。它的按住模式还有一个短暂的预热过程,所以如果开头几个词丢了,文档建议把快捷键改绑到修饰键组合上,这样从按下第一个键就开始录音。
  • 留意内置限制。 根据 Claude Code 的文档,它的点按录音模式会在静音 15 秒或总时长达到两分钟后停止。长的需求说明,先口述到草稿文件或笔记里,再粘贴进去。
  • 按名称的实际拼写来说。 说“auth 文件夹里的 user service 文件”,而不是指望引擎自己生成精确的路径;路径要紧的时候,就把真实路径交给 agent。
  • 像对新同事那样跟它说话。 “这段看起来多余,其实不是,因为……”恰恰是手打的提示词里最常省掉的上下文。

有一条边界:如果你要口述的是昨天设计评审会上定下来的事,那是另一项工作。把会议上下文送进 Claude 或 ChatGPT 是 MCP 服务器的活儿,我们在对话类应用如何接入 MCP一文里讲过。

内置语音输入往往就够用

先看看你的工具里已经有什么。主流 agent 都已经跟上了,对很多开发者来说这就够了。

  • Claude Code 有一个 /voice 命令。按住空格键说话,或切换到点按模式。它针对编程词汇做了调优,会把你的项目名和 git 分支名作为识别提示,并把音频流式发送给 Anthropic 做转写。它需要登录 Claude.ai,所以如果你用 API key 或通过 Bedrock 认证就用不了,在 SSH 会话里也不能用。
  • Cursor 在 2025 年 10 月的 2.0 版本中加入了 Voice Mode:内置语音转文字来驱动 Agent,还能自定义提交关键词,说出某个短语就开始运行。
  • ChatGPT 的消息框里有听写按钮。转写结果以可编辑文本的形式出现,发送前可以先改。
  • VS Code Speech 是 Microsoft 的免费扩展,为 Copilot 加上语音聊天,并支持在编辑器里听写,音频在本地处理。

如果你一整天都待在其中某个窗口里,就从那里开始。缺口出现在你离开它的时候:PR 描述在浏览器标签页里,评审意见在 GitHub 上,站会进展在 Slack 里。每个内置麦克风都只在自己的框里工作,于是你要么同时维持好几套按键说话的习惯,要么对提示词以外的所有东西都回到手打。这就是系统级听写工具的理由:一个快捷键,光标在哪就打到哪,终端也不例外。

术语、标识符和终端

开发者讨论帖里抱怨最多的不是速度,而是词汇。通用语音引擎是从日常说话里学出来的,所以 kubectl、useEffect、你们内部的服务名、同事的姓,识别出来都是五花八门的“创意拼写”。工具解决这个问题有三种思路。

第一种是自定义词典:术语加一次,引擎就不再瞎猜。在 Laxis 里这叫 Personal Dictionary(个人词典);在评判准确率之前,先把你的技术栈、服务和团队成员的名字填进去。第二种是读取屏幕上的上下文。Wispr Flow 能识别 VS Code、Cursor 和 Windsurf 里可见的函数名、类名和变量名,还能在 Cursor 和 Windsurf 的聊天面板里用语音标记文件;如果你的提示词里满是 camelCase,这是实打实的优势。第三种是用技术语言训练的语音模型,这正是 Aqua Voice 给自家 Avalon 模型打出的卖点。

终端是另一个坑。很多听写应用是通过粘贴来插入文字的,而终端对粘贴比普通文本框更挑剔;Wispr Flow 自己的帮助页面就写到,在 Mac 上给 Claude Code 和 Codex 输入时,要把长段听写拆成几段。不管你用什么,都在自己真正使用的终端里口述一段 150 词的提示词,确认每个词都到了,而且没有提前提交。

想用语音输入标点和格式,我们的听写命令指南列出了可以说哪些命令。如果真正的问题是识别不准,为什么语音转文字总是听错讲了常见原因和解决办法。

口头禅对模型无害,对评审者可不是

语言模型会直接读过 “um, so, wait, actually” 这类词。同事读你的 PR 描述时,可就没那么享受了。去掉口头禅、合并重复短语的清理功能,对给人看的文字比对提示词更重要,所以评判任何工具时,要看它处理 commit message 和评审意见的效果,而不是看提示词。

代码是私有的,你的音频去了哪里

上面这些选项,除了本地处理的那几个,都会把你的声音发到服务器。Claude Code 的 /voice 流式发送给 Anthropic。ChatGPT 的听写发给 OpenAI。Laxis 同样在云端处理听写,我们宁可在这里直说,也不想让你在某个政策页面里才发现。

对大多数提示词来说,这并没有带来多少新的暴露,因为提示词文本本来就要发给模型厂商。变化的是链条上公司的数量:通过独立应用听写,你的话会先经过听写厂商,再到 agent 厂商。涉及私有代码、客户名称或任何受 NDA 约束的内容时,请先和你们公司负责安全的人确认这多出来的一跳。

如果音频完全不能离开本机,也有切实可行的选择:VS Code Speech 在本地运行,Superwhisper 可以在你自己的硬件上跑模型。其中的取舍,以及值得向任何厂商提出的问题,都在我们对端侧与云端转写的对比里写清楚了。

向安全团队提的三个问题

按我们的政策,说出来的音频算不算源代码或客户数据?听写工具本身是否在批准供应商名单上,而不只是编程 agent?是否有些代码仓库需要本地处理的工具,而另一些不需要?

编程用的听写工具该看什么

这里不做排行榜;我们的听写软件对比负责这件事。对编程来说,要问的问题更具体:

  1. 到处都是同一个快捷键吗? 终端、IDE、浏览器和聊天都要覆盖,否则你又回到四套习惯。
  2. 能不能教会它你的词汇,这份词表能不能跟着你换电脑?
  3. 按住还是切换? 按住一个键适合短提示词;切换模式对长需求说明、对不想一直按着键的手都更友好。
  4. 它会改写多少? 你要的是去掉口头禅、补上标点,而不是把你的技术含义换个说法。
  5. 音频在哪里处理,对你手上的代码来说能不能接受?
  6. 按什么计量? 每周字数、每月分钟数还是不限量,以及这份额度是否和别的功能共用。

说到最后一点,这是我们的情况。Laxis 免费版每月提供 300 分钟,放在同一个池子里:会议和听写消耗的是同一批分钟数。提示词都很短,但如果你也用它录会议,就会感觉到两者的重叠。Premium 把额度提高到 2,000 分钟,每个新账户都能免费使用 14 天 Premium,无需绑卡。Laxis Voice Keyboard 支持 Mac、Windows、iPhone 和 Android,能在任何应用里输入,包括 VS Code 和终端。

结论

多年来,反对用语音写代码的理由一直是:代码不是语言。对代码本身来说,这话依然成立;对这份工作来说,已经不成立了。编程中不断扩大的那一部分,是向一个有能力把东西造出来的对象解释你想要什么,而解释这件事,人们早在有人打字之前就一直在用嘴做。最能用好 agent 的开发者,最后可能是最会跟它们说话的人,而不是屋里打字最快的那个。

常见问题

能用语音写代码吗?

能,而且有两种不同的方式。如今大多数开发者会向 Claude Code、Cursor 等 AI agent 口述自然语言的提示词、需求说明和 commit message,让 agent 去写语法。完全不动手的编程,也就是直接用语音编写和编辑代码本身,借助 Talon 和 Cursorless 等工具同样做得到,但需要几周的练习。

Claude Code 有语音输入吗?

有。Claude Code 有一个 /voice 命令:按住空格键录音,或切换到点按模式,你说的话会被转写进提示词。它针对编程术语做了调优,并把你的项目名和分支名作为识别提示。它需要登录 Claude.ai,会把音频流式发送给 Anthropic,并且在 SSH 下或使用 API key 认证时无法使用。

在 Cursor 里怎么用语音输入?

Cursor 从 2025 年 10 月发布的 2.0 版本起内置了 Voice Mode,可以对 Agent 说出提示词,并设置自定义提交关键词。它是为 Agent 输入框设计的。至于 commit message、PR 描述或终端,开发者通常会再装一个系统级听写应用,光标在哪就打到哪。

口述涉及私有代码的提示词安全吗?

这取决于音频去了哪里,以及你的雇主允许什么。大多数听写,包括 Claude Code 的 /voice、ChatGPT 听写和 Laxis,都在云端处理,这会在链条上多加一个厂商。如果音频必须留在本机,可以选 VS Code Speech 和 Superwhisper 这类本地模型工具。先查一下你们的安全政策。

怎么让听写正确拼出技术术语和变量名?

在评判准确率之前,先把它们加进自定义词典。大多数听写工具,包括带 Personal Dictionary 的 Laxis,都能让你保存库名、内部服务名和同事的名字,让引擎不再瞎猜。有些工具还会读取编辑器里可见的名称。对于大小写不寻常的标识符,直接手打或让 agent 补全通常更快。

听写软件能在终端里输入吗?

能。大多数系统级听写应用除了编辑器和浏览器,也能在终端里输入,不过终端处理粘贴文本的方式和普通文本框不同。在你实际使用的终端里用一段长提示词测试,检查每个词是否都到了。避免逐字口述 shell 命令;把目标描述给 agent,再审查它提议的命令。