Passer au contenu principal
K

dsh-kingspeak

kkmingjun/dsh-kingspeak

Voice dictation scratchpad: realtime speech-to-text into timestamped, per-session blocks, with one-click insert into the conversation composer. Requires the official DSH voice-input bundle (@deepseek-ai/dsh-experimental-voice-input-bundle); the speech model downloads on first use.

Installer

dsh plugin --profile web add github:kkmingjun/dsh-kingspeak

README

dsh-kingspeak

DSH 左侧栏底部的「君说」:以原生右侧栏 tab 打开的语音听写面板。

  • 占用右侧栏:点侧栏底部的入口(或右侧栏 Guide 页里的卡片),把「君说」作为一个原生 right-sidebar tab 打开;右侧栏展开、主区域向左让位、会话与输入框保持可见,宽度可以像原生右侧栏一样拖动调整。tab 的关闭、折叠、分栏都沿用 DSH 自己的交互。
  • 实时听写:点输入框里的麦克风开始说话,面板按停顿自动切句,边说话边把识别文字追加进输入框(用的是 DSH 自带的本地语音识别服务,模型、语言、下载进度与官方语音输入插件共用)。
  • 文本块时间轴:Enter 或「完成」把草稿变成一条文本块,左上角是时间戳;文本块随内容自动变高,超过 8 行折叠,右下角「展开 / 收起」。
  • 块操作:复制、编辑、删除(两次点击确认,且可撤销)、一键加入会话输入框。会话就在旁边,文字会立即写进当前草稿;若主区域不是会话(例如在插件页),会同时切回会话。
  • 按会话隔离:每个会话(会话)有自己的一份君说——文本块和草稿按会话 id 分开保存在本机浏览器,切换会话时只显示当前会话的内容,不会把其它会话写过的东西混进来。首次加载会把升级前旧的全局文本块按创建时间自动归并到各会话名下,实在无法判断归属的舍弃。
  • 修正 / 优化:输入框工具行「完成」左边两个按钮。
    • 修正:先跑一套零延迟的本地规则(中文标点、空格、重复标点、分段、句末标点),再交给 AI 校对错别字(temperature 0、只回正文、挑最低推理档位)。AI 结果回来时若草稿没被改动就直接替换,改动了就变成通知里的「采用」;都可以撤销。
    • 优化:把草稿交给 AI 润色、补背景、整理成更适合发给 AI 的请求(保留原有事实与约束,不编造),结果同样可撤销 / 采用。

结构

文件作用
index.jsHost 半:把 ctx.speechToText 包成 /api/kingspeak/{speech,prepare,cancel,transcribe};把 ctx.llm 包成 /api/kingspeak/assist(修正 / 优化)。
client.jsClient 半:注册原生右侧栏 tab 类型与正文槽位、侧栏底部入口、会话草稿桥、本地文本规则。
cordis.patch.yml插入 kingspeak 插件行。
locale/{zh,en}.json插件管理器里显示的标题与说明。
test/纯 Node 的 Host 路由测试、Client 装配 + 本地规则单测。

安装

# 在 DSH 里用 plugin_manager install_bundle 指向本目录即可

装上后重启 / 硬刷新页面,侧栏底部(设置旁边)会出现「君说」入口,右侧栏 Guide 页也会多一张同名卡片。

右侧栏契约

用的是 DSH 原生右侧栏的公开扩展面(@deepseek-ai/dsh-client-ui-sidebar-right):

  • ctx.get('sidebarRightTabs').register({ id, kind, keepMounted, priority, title, guide }) 登记 tab 类型;
  • ctx.slots.register({ name: 'sidebar.right.pane.tab', key: id }, Body) 提供正文;
  • ctx.get('sidebarRight').openTab(kind) 打开(该命令要求前台有会话,没有会话时入口会提示「先打开一个会话」)。

语音

  • 依赖 DSH 官方语音输入插件(@deepseek-ai/dsh-experimental-voice-input-bundle,默认 sensevoice-local)。
  • 首次使用若模型未下载,面板顶部会出现「下载并准备」,与官方插件详情页下载的是同一份模型。
  • 音频只在本机转写,不落盘、不写会话日志;文本块仅保存在浏览器 localStorage,并按会话 id 隔离。

修正 / 优化

  • 模型走 DSH 自己的模型通道(ctx.llm + agentDefaultModel.currentSelection()),不需要在这个插件里另配 API Key;每次点击会消耗一次模型调用。
  • 耗时:本地规则是 0 延迟;AI 一步对几百字通常是 0.6–2 秒(短输出、temperature 0、若有推理档位自动选最低的一档)。超时上限:修正 20 秒、优化 45 秒。
  • 修改提示词:index.js 里的 ASSIST_SPECS(system prompt、temperature、maxTokens、timeout);修改本地规则:client.js 里的 localTidy / paragraphize。
  • 什么时候会退回本地:没有可用模型、模型报错或超时——修正仍保留本地结果并提示原因;优化则直接报错、不动草稿。

Plugins associés