{"_id":"@difimim/dsh-voice-input","_rev":"3-23d39d8a877de73174bda4898bc4afc1","name":"@difimim/dsh-voice-input","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@difimim/dsh-voice-input","version":"1.0.0","keywords":["deepseek-harness","dsh","cordis","voice","speech-to-text","webspeech","plugin"],"author":{"name":"difimim"},"license":"MIT","_id":"@difimim/dsh-voice-input@1.0.0","maintainers":[{"name":"difimim","email":"marcus299792@gmail.com"}],"homepage":"https://github.com/difimim/dsh-voice-input#readme","bugs":{"url":"https://github.com/difimim/dsh-voice-input/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"3f915e9268b66ee78de2121cb7a97020238c9ea6","tarball":"https://registry.npmjs.org/@difimim/dsh-voice-input/-/dsh-voice-input-1.0.0.tgz","fileCount":6,"integrity":"sha512-nGgHBooIwUnKehdsKIPOQE7Ma11LoeeaMxQo1bQv7Rwg5BPr2kwJykYiqbbfJMhd8MB1fU/5AfnMEloxNNjp6g==","signatures":[{"sig":"MEUCIQDtkzfHHc7KhvFST0H1SPV6OGHOviM6TUm9M6gXfCXQKwIgYgdcTbmYTS01M9YG5Iwl3tuh/B2PwGMQiaChreC7reM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12658},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"_npmUser":{"name":"difimim","email":"marcus299792@gmail.com"},"repository":{"url":"git+https://github.com/difimim/dsh-voice-input.git","type":"git"},"_npmVersion":"11.19.0","description":"DeepSeek Harness 语音输入插件：在输入框加入麦克风按钮，用浏览器 Web Speech API 把语音实时转成文字填入输入框。","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-client-runtime":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-conversation":"^0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-voice-input_1.0.0_1788080514817_0.029198374729295207","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@difimim/dsh-voice-input","version":"1.0.1","keywords":["deepseek-harness","dsh","cordis","voice","speech-to-text","webspeech","plugin"],"author":{"name":"difimim"},"license":"MIT","_id":"@difimim/dsh-voice-input@1.0.1","maintainers":[{"name":"difimim","email":"marcus299792@gmail.com"}],"homepage":"https://github.com/difimim/dsh-voice-input-npm#readme","bugs":{"url":"https://github.com/difimim/dsh-voice-input-npm/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"}},"dist":{"shasum":"2164a964fd44bf9311142b8aad75d30874f589a1","tarball":"https://registry.npmjs.org/@difimim/dsh-voice-input/-/dsh-voice-input-1.0.1.tgz","fileCount":6,"integrity":"sha512-VxhFMqsm850fUofjlT86PL9HewNlB4gUbbGrMaRBtdPc0N6XVf2bzdeSclwmMIgAkSRV6yqeIFEAMmUlKFL62A==","signatures":[{"sig":"MEYCIQDp456U1Ar4RRgTIQhW5taqcn1yhEypno/og8M97rK6IAIhAP+Hc/hR7d/Bd4uf1W/UhCpNJChRAuaPlPOIAW2UPbZn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12662},"main":"lib/index.js","type":"module","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"_npmUser":{"name":"difimim","email":"marcus299792@gmail.com"},"repository":{"url":"git+https://github.com/difimim/dsh-voice-input-npm.git","type":"git"},"_npmVersion":"11.19.0","description":"DeepSeek Harness 语音输入插件：在输入框加入麦克风按钮，用浏览器 Web Speech API 把语音实时转成文字填入输入框。","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-client-runtime":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-conversation":"^0.1.1-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-voice-input_1.0.1_1788081987446_0.740241972049037","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@difimim/dsh-voice-input","version":"1.0.2","description":"DeepSeek Harness 语音输入插件：在输入框加入麦克风按钮，用浏览器 Web Speech API 把语音实时转成文字填入输入框。","license":"MIT","author":{"name":"difimim"},"repository":{"type":"git","url":"git+https://github.com/difimim/dsh-voice-input-npm.git"},"type":"module","main":"lib/index.js","exports":{".":{"default":"./lib/index.js"},"./client":{"default":"./lib/client.js"},"./package.json":"./package.json"},"dsh":{"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"},"bundle":{"patch":"./cordis.patch.yml"}},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-client-runtime":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-conversation":"^0.1.1-rc.2","react":"^18.2.0"},"keywords":["deepseek-harness","dsh","cordis","voice","speech-to-text","webspeech","plugin"],"_id":"@difimim/dsh-voice-input@1.0.2","bugs":{"url":"https://github.com/difimim/dsh-voice-input-npm/issues"},"homepage":"https://github.com/difimim/dsh-voice-input-npm#readme","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-QegY/cOw22pTqZFsRqc1N5hFcvz1X5AOAdgXmzGfDVHrRtPUDvv/Er5/XkY6C6xSCTfosZVjbCcyXSKTeE2LgQ==","shasum":"7b2fc3e05abac2133da00d396632e08dc7a56b33","tarball":"https://registry.npmjs.org/@difimim/dsh-voice-input/-/dsh-voice-input-1.0.2.tgz","fileCount":6,"unpackedSize":12664,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBgYUxJwzYjzIhkcOOSY/a0sJZZsg4aQOIqXjoOc6HmUAiEA8ZKfzVpdl/Cc8EU4RbPfLE1ukn7C2eLcNs/L+xmvdjo="}]},"_npmUser":{"name":"difimim","email":"marcus299792@gmail.com"},"directories":{},"maintainers":[{"name":"difimim","email":"marcus299792@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-voice-input_1.0.2_1788087323265_0.07206822970667393"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-30T09:01:54.591Z","modified":"2026-08-30T10:55:23.568Z","1.0.0":"2026-08-30T09:01:54.944Z","1.0.1":"2026-08-30T09:26:27.585Z","1.0.2":"2026-08-30T10:55:23.406Z"},"bugs":{"url":"https://github.com/difimim/dsh-voice-input-npm/issues"},"author":{"name":"difimim"},"license":"MIT","homepage":"https://github.com/difimim/dsh-voice-input-npm#readme","keywords":["deepseek-harness","dsh","cordis","voice","speech-to-text","webspeech","plugin"],"repository":{"type":"git","url":"git+https://github.com/difimim/dsh-voice-input-npm.git"},"description":"DeepSeek Harness 语音输入插件：在输入框加入麦克风按钮，用浏览器 Web Speech API 把语音实时转成文字填入输入框。","maintainers":[{"name":"difimim","email":"marcus299792@gmail.com"}],"readme":"# DSH Voice Input · DeepSeek Harness 语音输入插件\n\n在 DeepSeek Harness（DSH）输入框底部加入一个麦克风按钮：点击后用浏览器内置的 **Web Speech API** 把语音**实时**转成文字并填入输入框。零成本、零服务端部署。\n\nA DeepSeek Harness plugin that adds a microphone button to the composer. Click it to transcribe speech into the input box using the browser's built-in Web Speech API — zero cost, zero server.\n\n---\n\n## 安装\n\n这是一个标准的 DSH 插件 bundle，用一条命令安装：\n\n```bash\ndsh plugin --profile web add @difimim/dsh-voice-input\n```\n\n装完**重启 DSH**（`dsh web`），按钮就会出现在输入框工具行左侧。\n\n> 其他 profile（如 `tui`）同理：`dsh plugin --profile tui add @difimim/dsh-voice-input`。\n\n### 从本地 / 未发布源码安装\n\n还没发布到 npm 时，可以按路径安装：\n\n```bash\ndsh plugin --profile web add file:/path/to/dsh-voice-input\n# 或\ndsh plugin --profile web add link:/path/to/dsh-voice-input\n```\n\n## 功能特性\n\n- 🎙️ 输入框工具行左侧新增麦克风按钮，点击开始 / 停止收音\n- ⚡ 实时识别：边说边把中间结果写进输入框草稿\n- ➕ 追加式写入：不清空已有文字，识别结果追加到当前草稿末尾\n- 🌐 零成本零服务端：直接复用浏览器内置 Web Speech API\n- 🎨 跟随主题：按钮颜色使用 DSH 主题变量，自动适配明暗色\n\n## 使用\n\n1. 点麦克风图标 → 按钮变红并出现脉冲动画，开始收音；\n2. 直接说话，文字会**实时**出现在输入框里；\n3. 再点一下（图标变方块）→ 停止收音；\n4. 确认文字无误后，正常回车发送。\n\n## 工作原理\n\n| 部分 | 说明 |\n| --- | --- |\n| **识别引擎** | 浏览器内置 Web Speech API（`SpeechRecognition` / `webkitSpeechRecognition`） |\n| **识别语言** | 默认 `zh-CN`（中文），可在 `lib/client.js` 里改 `rec.lang` |\n| **写入方式** | 通过输入框 Slot 提供的 `inputActions.setDraft()` 写入草稿，与手打内容共存 |\n| **按钮位置** | `conversation.input.left`（输入框工具行左侧，模型选择那一行） |\n\n## 浏览器兼容性\n\n| 浏览器 | 支持 |\n| --- | --- |\n| Chrome / Edge | ✅（推荐） |\n| Safari | ✅（较新版本，行为略有差异） |\n| Firefox | ❌（不支持 Web Speech API） |\n\n- 首次点击会弹出**麦克风授权**，请点「允许」。\n- 需联网：Web Speech API 会把音频交给浏览器厂商的识别服务器。\n\n## 隐私说明\n\n当前方案（Web Speech API）为了“零成本、零部署”，会把语音发到浏览器厂商的识别服务。若你在意隐私或需要完全离线，请参考下方 Roadmap 的 Vosk 接入计划。\n\n## 目录结构\n\n```\ndsh-voice-input/\n├── package.json      # dsh.client + dsh.bundle.patch 声明\n├── cordis.patch.yml  # bundle patch：把本插件挂进 host 组合\n├── lib/\n│   ├── index.js      # Node 半（纯 UI 插件，空 apply）\n│   └── client.js     # 浏览器半（麦克风按钮 + Web Speech 识别）\n├── README.md\n└── LICENSE\n```\n\n## Roadmap\n\n- [x] Web Speech API 实时语音输入\n- [ ] 语言切换（中文 / 英文 / 自动）\n- [ ] Vosk 离线识别接入（通过 host 侧 Remote 服务）\n- [ ] 语音输入过程中的可视化状态条\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}