没有AirPods也能用吗?TapQ降级模式与常见坑点完整排查手册

【免费下载链接】tapq

Multi-modal voice agent for your AI agents. Talk with Claude Code, Codex, and others by voice: answer their prompts, give instructions, ask what they did. Or just nod.

项目地址: https://gitcode.com/gh_mirrors/ta/tapq
点击查看 免费下载

TapQ 是一个多模态语音 agent:当 Claude Code、Codex、Cursor、OpenCode 这些 AI 编码助手停下来等你批准、提问或选择时,它把提示读进你耳边,你用声音或点头手势回答,全程不用看屏幕。没有 AirPods 也能用 TapQ——它会自动降级为纯语音模式(voice-only)。本文带你搞清楚降级模式下的预期行为、正确启动姿势,以及官方排查手册里的常见坑点,一次配好不再踩雷。

没有 AirPods 时,TapQ 会变成什么样

先说结论:无 AirPods 是官方支持的正常配置,不是故障。启动后你会看到/听到这些行为(详见 TROUBLESHOOTING.md):

  • 就绪横幅显示 AirPods motion: unavailable (voice-only; gestures return when AirPods connect)
  • 启动约 1.5 秒后朗读一次提醒 "No AirPods detected. Running voice only.",之后保持安静
  • 手势、点按、倾斜通道全部失效;音量滑动手势被主动关闭(这样音量键回归调音量,而不是移动选项)
  • 遇到选项题时它会教你可用的答案方式:"Say next, previous, or select."
  • 会话中途插上 AirPods,下一条提示自动恢复手势——不用重启、不用重新配置

⚠️ 最关键的一点差异:纯语音模式下 --wearer-gate(佩戴者归因)自动失效(fail open)。归因依赖的是耳机里的 IMU 运动信号来确认"这是不是你自己的声音",没有 IMU 就无从判断,麦克风听到的指令会直接通过。在开放工位或多人房间里要留意这一点。

无 AirPods 场景的正确启动姿势

TapQ 目前为源码分发(macOS 14+、Swift 6),先克隆并构建:

git clone https://gitcode.com/gh_mirrors/ta/tapq
cd tapq
swift build && swift test

然后按需求选择启动方式:

# 纯反应式循环:提示被朗读、用固定词表(yes/no/next…)回答,设备端识别、无需 API Key
scripts/run-runtime-app.sh serve

# 完整语音 agent:指令、提问、目标、follow-up(需要 OPENAI_API_KEY)
scripts/run-runtime-app.sh serve --voice-backend openai-realtime \
  --voice-trust environment --voice-instructions

无耳机场景下几个标志位的含义(完整参数见 docs/CLI.md):

标志作用无 AirPods 时的建议
--voice-trust environment把麦克风的语音当作用户本人,口述指令不再要求 --wearer-gate✅ 推荐,官方就是为"耳机在盒里、电脑在桌上"这个场景设计的
--wearer-gate佩戴者归因门禁可以保留,纯语音下自动不生效,插上耳机后重新生效
--voice-instructions允许口述指令给 agent搭配 --voice-trust environment 使用
--no-voice不申请麦克风/语音权限仅需要运动输入时才用
--no-announcements抑制非阻塞性播报不想听 "No AirPods" 提醒时开启

注意一个诚实的代价:在 --voice-trust environment 下,任何麦克风能听到的人都能下达指令——但谁都无法批准任何操作,审批只来自佩戴者的手势或语音(见 docs/VOICE_ONLY_AGENT_PLAN.md 的设计说明)。

8 个最常见的坑点及修复方法

以下内容整理自 TROUBLESHOOTING.md,按出现频率排序:

1. 没有 Motion / Speech / Microphone 权限

通过官方脚本启动,它使用本地签名的 headless app 容器,权限身份稳定:

scripts/run-runtime-app.sh serve

批准后在 系统设置 → 隐私与安全性 中检查 Motion & Fitness、Speech Recognition、Microphone 三项授权。

2. AirPods 已连接,但没有运动数据到达

逐项确认:耳机支持 headphone motion(AirPods Pro 全系、AirPods 3 及以后、AirPods Max)→ 已连接且佩戴 → 被选为当前音频输出设备 → 没有被其他进程占用运动流。然后重启 runtime。可以用抓取命令隔离"采集"和"识别"两个环节:

scripts/run-runtime-app.sh capture --duration 5 --output -

没有任何记录,说明是设备采集或权限问题,而不是手势分类器的问题。

3. Tap(点按)校准太弱

保持头部静止,用指尖快速、清晰地轻敲耳罩外侧壳体,不要挤压或按压耳机柄——校准寻找的是偏离静息基线的尖锐加速度尖峰。手势和点按的画像相互独立,可以只重试点按:

scripts/run-runtime-app.sh calibration run tap
swift run tapq calibration show tap

4. 交互过程中手势突然失灵

开启诊断输出,观察运动可用性、窗口起止事件、点按候选被拒的原因和断连/重连事件:

TAPQ_DEBUG=1 scripts/run-runtime-app.sh serve --no-voice

第一次点按被识别后,TapQ 会输出一段有界的采样轨迹,帮你区分"没听到第二次敲击"和"时序/姿态被拒"。

5. 语音命令不匹配

识别器固定为英文(en-US),与系统语言无关。用短命令测试:yes、no、next、previous、select。同时确认语音识别与麦克风授权已开启,且启动时没带 --no-voice。

6. 朗读提示语含糊、两种语言混杂

TapQ 默认用 macOS 系统合成器的 en-US 语音。如果听起来像在混读,多半是运行时选了非英文语音——检查 --speech-voice 与 TAPQ_SPEECH_VOICE,并在 TAPQ_DEBUG=1 下找 voice.unavailable 警告(表示指定语音未安装,macOS 回退到了系统语言语音)。注意它选的是语音不是翻译:可以在 macOS 语音设置里下载增强/ premium 语音,把它的 identifier 传给 --speech-voice。

7. Claude Code 不触发 TapQ

tapq integration claude status

移动过 checkout 或 runtime app 之后必须重装,因为 hook 配置里存的是绝对路径:

tapq integration claude install --permission-policy native

native 模式下,已有的 allow 规则和 bypassPermissions 可能合理地绕过 TapQ——这是设计行为,不是 bug。状态显示安装不完整或提示出现两次时,先 uninstall 再重装。

8. Codex 不触发 TapQ

tapq integration codex status

"已配置"不等于"已信任":打开交互式 Codex 会话执行 /hooks,确认 PreToolUse、PermissionRequest、Stop、UserPromptSubmit 四个注册项被信任。Codex 会故意跳过未信任的新 hook,所以 /hooks 才是权威检查。此外,只读命令、allow 规则、沙箱内操作等也可能合理地绕过 TapQ。

容易误判的"坑"——其实是设计如此

🔍 这几点不是故障,理解后能省掉大量排查时间:

  • 超时 / 没听到手势 / 没回答:窗口关闭,hook 不带答案返回,agent 正常显示屏幕提示。TapQ 从不猜测。
  • 语音后端失败不会跨后端降级:指定 --voice-backend openai-realtime 后,它就构成整条语音管线;一旦失败,本次运行的语音通道彻底断开(响亮的诊断日志 + 一句本地语音提醒),唯一恢复方式是重启 runtime——但手势、点按、屏幕回退和 broker 都还活着。这个"fail loud, never silently fall back"的完整决策见 docs/VOICE_BACKEND_FAILURE_PLAN.md。
  • 多选题、多重提问:一律留在 agent 自己的屏幕流程里处理。
  • Linux 上实时命令不可用:可移植内核和管理 CLI 可以在 Linux 构建测试,但 serve、capture、calibration run 需要 macOS。
  • 分享日志前先脱敏:调试输出可能含工具名、路径、请求标识;Claude 设置与 Codex hooks 文件可能含敏感命令或凭据,不要直接贴到公开 issue。

一分钟自检清单

配完按这个清单过一遍:

  •  tapq serve 正在运行,就绪横幅显示 voice-only(无耳机时)
  •  隐私与安全性中 Motion、Speech、Microphone 均已授权
  •  所用 agent 的集成已安装:tapq integration <agent> status 正常
  •  无耳机 + 需要口述指令时:--voice-trust environment 已开启
  •  需要会话功能时:OPENAI_API_KEY 已在启动环境中
  •  遇到怪问题时:TAPQ_DEBUG=1 复现一次,收集诊断日志

延伸阅读

【免费下载链接】tapq

Multi-modal voice agent for your AI agents. Talk with Claude Code, Codex, and others by voice: answer their prompts, give instructions, ask what they did. Or just nod.

项目地址: https://gitcode.com/gh_mirrors/ta/tapq
点击查看 免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值