deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
给 DeepSeek Harness Web 界面增加语音对话能力:
纯 Client 插件,无服务端、无 API Key、无模型下载(浏览器自带语音引擎)。
代码、# 标题、列表、表格、链接等),避免 TTS 读出"星号星号"等噪音一条命令(git 源,产物已入库,无需构建):
dsh plugin --profile web add "github:lak321/dsh-voice-chat#<commit>&path:/"
<commit>换成最新提交号(见仓库主页)。或本地目录:cd dsh-voice-chat && dsh plugin --profile web add .
装完重启 DSH(npx -y @deepseek-ai/dsh web),浏览器打开后输入框旁出现 🎤 和 ⚙️ 按钮,每条 AI 回复旁出现 🔊 按钮。
兼容 DSH Profile:web。 旧的手动复制
client/并注入cordis.patch.yml的方式已废弃,由 bundle 层栈安装替代。
ctx.slots.inject 注册两个 slot:conversation.input.left(🎤 voice-input order 5、⚙️ voice-settings order 8)conversation.chat.assistant-actions(🔊 voice-speak order 5)SpeechRecognition(zh-CN,interim 实时结果 + maxAlternatives 5),识别结果 inputActions.setDraft()speechSynthesis + 中文语音;getVoices() 异步 → 监听 voiceschanged 事件 + 500ms 轮询兜底(3s 上限)localStorage 记录每个会话已朗读到的最大消息 seq,只朗读比它新的回复snapshot.nodes 找 {kind:'assistant', messageId, blocks:[{kind:'text',text}]} 节点props.useSession 是 React Hook,必须在组件函数体顶层调用,绝不能在 onClick 里调用(否则报 React #321 Invalid hook call,点击无反应)。selector 需返回原语(字符串/数字),避免重渲染风暴。exports.inject(依赖列表,如 ["slots"]),否则 ctx.slots 不可用、apply 静默失效。window.__ModuleLoader__.load({id, factory}) 格式,factory 内 require("react"),导出 exports.apply / exports.inject。MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。