# MiMo 语音汇报(mimo-voice-report) [English](./README.md) · **中文** 一个给 [DeepSeek Harness](https://deepseek.com) 用的插件:**任务完成时,用小米 MiMo 声音模型播报一句完成提示 + 一两句结果总结**,同时弹出立绘和对话气泡,气泡里的文字跟着音频进度逐字出现。 `dsh-plugin` · `deepseek-harness` · `cordis-plugin` · `mimo` · `tts` · `voice-clone` --- ## 它能做什么 - **完成即播报**:一轮任务结束(`turn/end`)时自动说话,提示 + 总结一共两三句,不啰嗦 - **三种结束语**:完成是「任务完成啦。」,出错是「呜,任务出错了。」,中止是「任务先停在这里啦。」 - **结果总结**:默认让 MiMo 对话模型(`mimo-v2.6-flash`)把最后一轮助手回复改写成一句到两句能念的话; 模型超时、被拒、输出不合格时自动退回规则摘要(去 Markdown、取前一两句),不会因为改写失败而没声音 - **口吻随人设走**(v1.20.0):每个音色一条人设提示词,汇报词按角色口吻生成——傲娇是「哼、才不是特意做的」, 清冷药师一针见血,大小姐端庄优雅。内置 16 条默认人设,可在设置卡「人设提示词」里按音色覆盖、 也可为自定义采样新增(`config.personaPrompts[id]`,最长 200 字);紧急兜底的规则摘要不经过人设 - **不重复开场**:模型偶尔把「任务完成啦」再说一遍,插件会剥掉开头的完成提示(`dedupeAnnounce()`), 剥空了就退回规则摘要 - **立绘 + 气泡**:播报时右下角弹出立绘和对话气泡,文字按 `currentTime / duration` 逐字显现,末尾有光标 - **随时开关**:输入框右侧的小喇叭,开/关状态存 `localStorage` - **被拦截能补播**:浏览器拦截自动播放时按钮变橙提示,点一下或之后任意点击/按键自动补播 - **只在需要时花钱**:只对当前打开的会话合成一次;语音**按 turn 缓存**(命中时连摘要模型调用都省掉), 同 turn 的并发请求(双开标签页 / 连点 / 强制重试)合并成一次生成;切走再回来不重复调用 - **Key 不出宿主**:API Key 只在宿主进程读取,浏览器只拿到 mp3 的 base64 ## 怎么工作 ``` 一轮任务结束(session 日志新增 turn/end) │ ▼ 宿主半 index.js 浏览器半 client.js · 旁听 session/event,折叠出「这一轮最后一条 · 输入框工具行右侧的小喇叭 助手回复 + 结束原因(completed/error/…)」 · useSession(s => s.running) 由 true 变 false · POST /mimo-voice/report 时: → POST /mimo-voice/report 1. MiMo 对话模型改写口播稿(1~2 句) · 收到 base64 mp3 →