作品链接:github.com/xingbofeng/...
最近用 Cursor、Claude Code、Codex 这类工具比较多,我有一个感受越来越明显:
写代码这件事,正在从"敲代码"变成"描述意图"。
以前我大部分时间是在键盘上写实现。现在很多时候,我是在跟 AI 说:这里的逻辑改一下、这个状态不要放这里、这个 API 的 JSON 结构兼容一下旧字段、这个报错顺着调用链往上查一下。
这些话用嘴说很自然,但一个字一个字打出来,就会明显慢一拍。

我试过一些现成工具,但还是想自己做一个
一开始我也不是想自己造轮子。
我试过闪电说、Typeless 这类产品。它们各有优点,有的功能完整,有的体验也不错,也有一些支持本地模型、云端模型、自定义配置。
但用下来,我发现自己真正想要的东西其实更简单。
对我来说,现有方案经常会卡在几个地方:
要么是收费;
要么自定义模型需要配置云端;
要么本地模型在中文技术场景里还不够聪明。
这里不是说它们不好。它们面对的是更大的场景,功能自然会做得更完整。但我自己的需求很窄:我只是想在 vibe coding 的时候,把脑子里的话更快地输入到当前光标位置。
我不想打开一个新窗口。
不想多维护一套复杂配置。
也不想每次语音输入都变成一个新的工作流。
我想要的其实很简单:轻一点,快一点,少折腾一点。

所以我把语音输入做成了一个按键
VoiceInput 的交互非常简单:
按住右 Command,开始说话。
松开右 Command,文字直接落到当前光标位置。
它不是语音助手,也不想替你做决策。它更像一个"语音键盘"。
光标在哪,文字就去哪。
聊天框、文档、浏览器输入框、Cursor、代码编辑器,都可以按这个方式使用。
这也是我自己最在意的地方:不要打断正在进行的工作。
很多工具的问题不是能力不够,而是它会让你从原来的上下文里跳出去。对 vibe coding 来说,这种打断很伤,因为很多时候你只是想补一句上下文、改一句需求、描述一个 bug。
VoiceInput 想做的事情很小:把"想法到文字"这一步变短。

不是简单语音转文字,而是先识别,再纠错
语音输入在中文场景里,最烦的不是普通话识别错一两个字。
真正麻烦的是技术词。
比如 Python、JSON、TypeScript、API、Cursor、Agent 这种词,平时我们说的时候经常中英文混着来。语音识别模型如果把 Python 听成"配森",把 JSON 听成"杰森",那后面的上下文就会变得很奇怪。
所以 VoiceInput 不是简单地"语音转文字后直接结束"。
它会先用语音识别模型把你说的话转成文字,然后可以选择让大模型做一次保守纠错。
这里的重点是"保守"。
它不是润色,不是改写,也不是帮你把一句话变得更像营销文案。
它只尽量修正明显听错的技术词。
比如:
- 配森 → Python
- 杰森 → JSON
- Type Script → TypeScript
对我来说,这个能力比"把句子写得更漂亮"更重要。
因为在 vibe coding 里,我真正需要的是:让模型听懂我的技术上下文,而不是替我写作文。

为什么它要克制一点
VoiceInput 不是一个大而全的产品。
它没有想变成完整语音助手,也没有想接管你的工作流。
我希望它尽量克制:
- 常驻 macOS 菜单栏;
- 按住右 Command 即说即用;
- 中文场景开箱即用;
- 可选 LLM 纠错;
- 不确定时尽量保持原文;
- 不把每句话都擅自润色。
很多时候,工具越强,越容易开始替你做太多事。
但对输入工具来说,最重要的反而是存在感低。
它应该像键盘一样:你需要的时候就在,不需要的时候不打扰你。
我把它开源了
现在我把这个小工具开源了,项目叫 VoiceInput。
它不是一个大产品,也不敢说已经完美。只是我自己每天 vibe coding 时确实会用到的一个输入层。
如果你也觉得现在写代码越来越像是在和 AI 描述想法,如果你也觉得打字开始跟不上脑子里的话,可以试试看。
GitHub:xingbofeng / VoiceInput

一句话总结
VoiceInput 想解决的不是"语音助手"的问题。
它想解决的是:
当 vibe coding 让我们越来越频繁地用自然语言描述意图时,输入方式也应该变得更自然一点。
给 vibe coding 补一个输入层。