- CLI
- 0.2.17
- 预览 ref
- a2c45c8
注意: 根据功能矩阵(英文),本地语音(设备端转写和合成)是实验性功能。语音功能在 0.2.x 中重新构建,支持本地、OpenAI Realtime、Codex Live(实验性)和 Grok Realtime。
写真正的指令时,打字很好用。
但在手机上“我只有 30 秒”的时刻,可靠好用的是语音:
- “停下手头的事,解释一下你改了什么。”
- “继续之前,如果你要碰迁移,先问我。”
- “总结一下计划,给我一个 3 步清单。”
目标是用语音对一个真实的编码会话进行头脑风暴和引导,而不让“语音层”变成另一个脱节的对话。
常见做法(听写、笔记、直接打字)各有缺失。
Happier 是一款用于跨设备运行和编排编码代理的开源应用,它让语音锚定在一个真实的目标会话上,并让你明确控制语音提供商能看到什么。
简要总结
- 决定你真正想要什么:
- 语音头脑风暴(先说),或
- 语音口述(所有内容直接发进会话)
- 在拥有仓库或工作区的机器上设置 Happier,并连接你的手机。
- 在 设置(Settings)→ 语音(Voice) 中选择语音模式:
- Happier Voice(设置快)
- 使用我的 ElevenLabs(Use my ElevenLabs,你的账号和计费)
- 本地 OSS 语音(Local voice,设备、自托管端点或设备端语音)
- 收紧隐私:先关闭 文件路径 和 工具参数 的分享。
- 开始说话时,记住有两条线程:
- 隐藏的 语音对话(你说了什么和它回复了什么)
- 目标会话(你真正想操作的 Claude Code/Codex 会话)
问题所在
离开键盘时,你仍然想让编码会话继续推进,而不是因为手机打字慢就发出半生不熟的指令。
语音很适合“快速引导”和“快速澄清”。
容易忽略的一点:语音提供商是外部服务。如果不看隐私开关,你可能会无意中分享比预期更多的内容。
常见做法及其权衡
- 直接在手机上打字:短消息可以,但细节会被省略。
- 直接在消息框里语音听写:快,但很容易发错(而且往往把每句话都倒进会话里)。
- 给自己打电话或留笔记:出奇地有效,但和会话没有连接。
- Happier 语音:当你想要说话的速度,同时保留真实的目标会话和真实的控制时,它很合适。
如果你第一次接触 Happier(它是什么,在哪里获取)
如果你之前没见过 Happier:它是一款面向 Claude Code、Codex 和 OpenCode 等 AI 编码代理的开源配套应用(移动端/网页/桌面)。
这里的工作流是:把仓库和代理运行环境留在拥有工作区的机器上,用手机上的 Happier 监控、引导和继续会话。
开始设置:
- 如何在手机上使用 Happier
- GitHub: https://github.com/happier-dev/happier
- 安装/下载: https://github.com/happier-dev/happier#how-it-works
- Discord(社区与支持): https://discord.gg/W6Pb8KuHfg
可行的工作流(分步操作)
1) 选择符合你约束的语音模式
打开 设置(Settings)→ 语音(Voice)。
Happier 支持四种语音模式:
- 关闭(Off)
- Happier Voice(托管的实时 ElevenLabs)
- 使用我的 ElevenLabs(Use my ElevenLabs,使用你自己的 API 密钥和代理的实时 ElevenLabs)
- 本地 OSS 语音(Local voice,可配置的 STT/TTS 管线)
决策规则:
- 想少做设置:从 Happier Voice 开始。
- 如果你已经有在意的 ElevenLabs 配置:用 使用我的 ElevenLabs。
- 想用设备语音、自托管端点或设备端语音:用 本地 OSS 语音。
2) “正式”使用语音前先收紧隐私
在语音设置中,Happier 提供了控制语音提供商能看到什么的隐私设置。
默认设置比较保守,其中两项尤其重要:
- 分享本地文件路径(Share local file paths,默认关闭)
- 分享工具参数(Share tool arguments,默认关闭)
如果你用语音引导真正的编码工作,这两项决定了:
- “语音提供商能帮忙,但看不到我文件系统和工具调用的细节”
- 还是“语音提供商能看到的远比我想要的多”
如果你想要更严格的隐私,再关闭:
- 分享最近消息(Share recent messages)
3) 理解“隐藏的语音对话”与“目标会话”
这是关键的思路。
语音启用时,Happier 会保留一个隐藏的语音对话。
这个对话的存在让你可以:
- 查看它听到了什么
- 以文字阅读语音回复
- 改用打字继续
- 查看它播报了什么
但语音仍需要一个真实的会话来执行操作。
那个会话就是目标会话。
如果语音感觉“在说话,却什么也没做”,通常是因为:
- 你看的是语音对话的记录,而不是目标会话,或者
- 语音指向了错误的目标会话
4) 决定用“直连会话”还是“语音代理”(本地 OSS 语音)
如果你使用 本地 OSS 语音,会看到两种对话模式:
- 直连会话(Direct session):转写语音并直接发送到目标会话。
- 语音代理(Agent):先和专门的语音代理对话,再让它操作目标会话。
如何选择:
- 基本上想要听写时,用 直连会话。
- 想让语音层在行动前提问、总结或再次确认时,用 语音代理 模式。
5) (可选)用 voice home 与项目根目录避免“意外的工作目录”
本地语音的代理模式会根据启动位置从不同的工作目录开始:
- 全局启动语音(侧边栏或全局界面)→ 从 voice home 开始
- 从某个会话启动语音 → 在该会话的项目根目录开始
如果你想要稳妥、中立的行为,可以启用 停留在 voice home(Stay in voice home),这样语音不会自动跳到项目根目录。
如果你确实希望它像仓库里真正的编码同事一样工作,通常从会话界面(项目根目录)启动更合适。
为什么可行(以及什么会出问题)
语音在 Happier 中好用,是因为它不只是“语音转文字”,而是一个仍能指向真实会话并对其操作的层。
实际中出问题的两个地方:
- 隐私不匹配:你本想“只谈大概”,却启用了暴露过多内容的分享。
- 目标不匹配:语音已启用,但指向了错误的会话(或者你在看语音记录而不是目标会话)。
常见错误
- 没检查隐私就打开语音 → 先快速检查一遍“分享最近消息 / 本地文件路径 / 工具参数”。
- 以为语音能取代会话 → 语音有自己的对话状态,你仍然需要一个目标会话。
- 想让语音层谨慎行事却用了直连会话 → 想要“先问再做”的行为,就切换到语音代理模式。
常见问题
语音会取代我的 Claude Code/Codex 会话吗?
不会。语音保留自己隐藏的对话状态,在需要操作时以一个真实会话为目标。
我应该从哪种模式开始?
如果你想要一个默认选择:从 Happier Voice 开始,只有在有特定的隐私、自托管或设备约束时才换到 本地 OSS 语音。