dsh-airpod-control:用 AirPods 点头摇头回答 DSH 审批与提问

前言

在 DeepSeek Harness(DSH)里跑智能体时,权限审批卡片和模型向用户提问(ask_user_question)会频繁打断手头工作:你要切到窗口、找按钮、点「允许」或选选项。若你已经在用 AirPods,且机型支持头部追踪,可以把「点头 / 摇头」当成固定映射,少碰鼠标。下面介绍社区插件 dsh-airpod-control(维护者 fishcg,分类:客户端):它通过本机菜单栏应用 HeadOrbit 识别手势,经回环 HTTP 把答案交给 DSH,并自带 HeadOrbit 的一键安装引导。

这是什么

dsh-airpod-control 是 DSH 的客户端侧插件,npm 包名 dsh-airpod-control,当前版本 0.3.0,许可证 MIT。它不负责自己识别耳机运动,而是与 HeadOrbit(AirPods 头部追踪的 macOS 菜单栏 App)配合:HeadOrbit 轮询插件状态并 POST 手势,插件在「真有请求在等、且 HeadOrbit 在线」时才认领为审批或提问的回答者。

同一套手势对应两类场景:

场景 点头 摇头
权限许可(approval) 允许(allowed-once) 拒绝
模型提问(ask_user_question,3 个以上选项) 确认当前项 切到下一项

手势与网页按钮同时有效,谁先提交谁生效;没有回答者时 DSH 仍为 fail closed,本插件不改变这一点。

核心功能

插件在宿主里主要做四件事(均来自项目 README):

  1. 自动装好 HeadOrbit:自带安装器,会话右下角卡片可下载、安装、写配置、启动并等待心跳;目标路径 ~/Applications/HeadOrbit.app,端口与共享 token 由安装流程写入,无需手填。
  2. 审批回答者:仅在存在待处理审批且 HeadOrbit 在线时接管;点头对应允许,摇头对应拒绝。
  3. 提问回答者:点头确认当前选项,摇头在多选项时切换到下一项;会话里会对「点头将选中的按钮」做描边高亮。
  4. 浏览器半区收卡片:手势结算后,把页面上已处理的审批/提问卡片收起,避免「已点头允许但卡片仍挂着」;并输出 已允许 <工具> / 已拒绝 <工具> / 已选择 <选项>(若安装了 dsh-whale-widget 优先显示在小鲸鱼气泡,否则为顶部提示条)。

此外,浏览器半区在已安装官方语音输入插件 dsh-experimental-voice-input-bundle 时,支持同时按住 ← 和 → 开始录音、松开任一键结束并转录;也可保留 ⌃Space 作为备用。未装官方语音插件时不拦截方向键。

HTTP 路由挂在宿主 webServer 的 /dsh-airpod-control 前缀下,只监听 127.0.0.1,不单独开端口。共享 token 留空时自动生成到 ~/.dsh-airpod-control/token(权限 0600),请求需带 X-HeadOrbit-Token。

安装与启用

在终端执行(--profile 换成你实际使用的 profile;桌面版默认 desktop,dsh web 为 web):

dsh plugin --profile desktop add dsh-airpod-control

npm 包:https://www.npmjs.com/package/dsh-airpod-control。安装后需重启 DSH。引擎要求:node >= 20,dsh >= 0.2.1-rc.1 < 0.3.0-0(见 package.json)。

从源码安装(README 提供,非 git clone 以外的替代路径时按文档操作):

git clone https://github.com/fishcg/dsh-airpod-control.git ~/dsh-airpod-control
dsh plugin --profile desktop add link:~/dsh-airpod-control

装完打开任意会话,右下角会出现「用点头 / 摇头回答 DSH」卡片,点一下即走安装器四步:下载 HeadOrbit(MIT,构建源自 fishcg/HeadOrbit-dsh)→ 写入 DSH 端口与 token → 启动并等待轮询 → 引导在「系统设置 → 隐私与安全性 → 动作与健身」为 HeadOrbit 授权(须系统弹窗,需用户点击)。

不想点卡片时,可对本机 GUI 端口 POST(将 <port> 换成 dsh web 打印的端口):

curl -s -X POST "http://127.0.0.1:<port>/dsh-airpod-control/setup/run" | jq

首次使用前请佩戴支持头部追踪的 AirPods(Pro / 3 / 4 / Beats 等),并在 HeadOrbit 中确认已连接。

典型用法

  1. 戴好耳机,HeadOrbit 菜单栏图标显示已连接。
  2. 会话出现审批或提问卡片时,观察高亮:点头将触发的按钮会被描边点亮。
  3. 点头:审批为允许,提问为确认当前项;摇头:审批为拒绝,多选项提问为下一项。
  4. 手势落定后卡片收起;留意气泡或顶部提示中的结算文案。

自检链路是否健康(需已配置 token,示例自 README):

curl -s -H "X-HeadOrbit-Token: $TOKEN" http://127.0.0.1:$DSH_WEB_PORT/dsh-airpod-control/health

返回中含 headOrbitAlive、hasApprovalAnswerer、hasQuestionAnswerer 等字段,便于确认插件与 HeadOrbit 是否在线。

设置 → 左侧栏「AirPods 控制」 可调整点头/摇头幅度、语音输入按键、高亮当前选项、界面语言等,保存即时生效,无需重启 DSH。高级配置可在 profile 的 cordis.patch.yml 中覆盖 enabled、token、nodAllows、claimQuestions、timeoutMs 等键(均有默认值,见 README 配置表)。

适用场景与注意

适合谁:在 macOS 上长期使用 DSH 桌面/Web GUI、已佩戴支持头部追踪的 AirPods,希望少切窗口完成审批与多选提问的用户。

边界与风险(README 已写明):

  • 仅支持 macOS;无耳机或 HeadOrbit 未在线时,插件不认领请求,行为与未安装相近。
  • 插件以当前 DSH 进程权限 运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认接受安装器下载的 HeadOrbit 构建(ad-hoc 签名、未公证,安装后会去掉 quarantine)。
  • 安装器相关 /setup* 端点免 token,但限制回环 Host 与同站请求;仍建议只在可信本机环境使用。
  • DSH 换 GUI 端口时,插件会写入 ~/.dsh-airpod-control/endpoint.json,HeadOrbit 轮询会重读该文件,一般无需手改 App 配置。

排障时可查:curl /dsh-airpod-control/setup 是否 200(404 则检查 cordis.patch.yml 是否关掉插件);App 日志 ~/Library/Logs/HeadOrbit-DSHBridge.log;前端半区状态 GET /dsh-airpod-control/client-state。

结尾

dsh-airpod-control 把 AirPods 头部动作接到 DSH 的审批与提问通道上,并用一键安装器降低 HeadOrbit 的配置成本;手势与网页按钮并行,适合希望「点头允许、摇头拒绝或切选项」的 macOS 用户。插件目录页:https://www.skillhub.cn/plugins/fishcg/dsh-airpod-control;源码与完整 API、配置说明:https://github.com/fishcg/dsh-airpod-control。DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库与 npm 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜