DSH 插件,在输入框旁提供 ✨ 一键改写与 🎤 语音转写,按 5 种模式与多模型链独立调用 LLM 重写草稿,并支持一键重启异常服务。
- 语言
- JavaScript
- 分支
- main
安装
$ dsh plugin --profile web add github:Fishsb/dsh-prompt-enhancer在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
一句话定位
DSH 插件,在输入框旁添加 ✨ 一键改写按钮与 🎤 语音输入按钮,把草稿按所选模式与多模型链独立调用 LLM 重写;附带 DSH 异常时的一键重启链路。
核心能力
- 在 DSH Web 输入框的工具行提供 ✨ 按钮:点击触发独立 LLM 调用,原文被替换为增强版本;不满意可一键撤销,增强中可取消,斜杠命令保留前缀只优化正文
- 提供 5 种优化模式:基础(直发)、轻量(本地规则分析)、标准(规则 + 工作区与会话检索)、专家(LLM 分析 + 全量检索)、一键发布(检索同类项目 + 九章开发规格生成)
- 内置多模型链:按配置顺序逐一尝试,失败自动切换下一条,支持自定义添加、删除、改序、单独开关思考模式与行内连通性测试
- 提供 🎤 语音输入:录音 → 识别(云端 Qwen3-ASR / OpenAI 兼容 / 本地离线 SenseVoice)→ 可选去口水词规整 → 填入草稿;说完停顿 1.2 秒自动停止(VAD 静音检测),音频仅内存处理不落盘
- 提供 DSH 异常一键重启:网页打不开时,可生成桌面快捷方式(Windows 鲸鱼图标)双击重启,或直接命令行调用;自动识别服务模式(nssm / sc)还是前台模式
- 多语言:按钮与文案跟随 DSH 界面语言(中文 / English)
技术实现
- 语言: JavaScript (CommonJS)
- 关键依赖:
@deepseek-ai/dsh-client-runtime(客户端运行时)+@deepseek-ai/dsh-client-locale(国际化)+react(UI 组件)+node:https(出网与云端 ASR) - 架构模式: 双半部(host + client)Cordis 注入;host 端通过
cordis.patch.yml把插件 ID 接入 profile 层栈,客户端依赖inputActions.setDraft契约实现输入框改写;服务注册通过ctx.provide提供 enhance / models / update / diagnostics / plugins / config 六大服务 - 入口文件:
lib/index.cjs(host 入口,build-host.mjs由src/host/app.js汇总)+lib/client.cjs(client 入口,由src/client/skeleton.js汇总)
适用场景
在不熟悉措辞技巧时,把粗糙想法快速改写为结构化、要素完整的提示词;或在 DSH Web 出现异常(端口未监听、网页打不开)时,从命令行或桌面快捷方式恢复服务。日常用编辑器、写作、调试提示词的用户,以及将 DSH 部署在 Windows Server / 桌面版需要远程维护的用户会从这两个能力直接受益。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | ^0.1.0-rc.6 | 通过 peerDependencies 声明,搭配 @deepseek-ai/dsh-client-runtime 与 @deepseek-ai/dsh-client-locale 注入客户端;dsh.client.platform 固定为 web,仅 web profile 扫描 |
| Node.js | >= 22.0.0 | CI workflow 使用 node-version: 22;engines 未显式声明 |
| 客户端契约 | 注入 inputActions.setDraft | 官方 web client 已满足;第三方客户端若实现同一契约即可加载,能力集不同时语音输入自动降级:仅 setDraft 但无插入能力 → 识别结果追加到草稿末尾;完全不注入 → 🎤 禁用并提示 |
| 平台 | macOS / Windows / Linux | Windows 走 sc / nssm 服务管理;Linux 走 systemctl;macOS 走 launchctl;不支持的平台降级为手动重启提示 |
| 原生模块 | 无 | 仅使用 Node.js 内置 node:https / node:http / node:fs / node:path / node:child_process / node:os / node:url;本地 ASR 引擎(sherpa-onnx)部署在 $DSH_HOME/dsh-prompt-enhancer-asr/ 独立进程,不进入插件主包 |
安装方式
dsh plugin --profile web add github:Fishsb/dsh-prompt-enhancer
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| 优化模式 | 枚举 | 基础 / 轻量 / 标准 / 专家 / 一键发布 | 基础 |
| 记忆开关 | 布尔 | 开启后发送前多轮优化的迭代累积为记忆链代入下一轮;发送即清空 | 关闭 |
| 模型链 | 列表 | 按顺序尝试的多模型条目(provider + model + 思考强度),可增删改序 | 官方默认两个模型(deepseek-v4-flash / deepseek-v4-pro) |
| 自定义模型 | 列表 | 用户额外添加的模型条目,名称 + 模型 ID + 思考强度 | 空 |
| 思考模式 | 布尔 | 是否启用该模型的链上推理(影响耗时与配额) | 关闭 |
| 上下文预算 | 数字 | 该模式可注入多少参考量(0 = 不注入;越大范围越广) | 基础 0 / 轻量 2000 / 标准 4000 / 专家 4000 / 一键发布 4000 |
| 超时时间 | 数字 | 单次 LLM 调用最长等待时间(0 = 无限制) | 基础/轻量/标准 30000,智能/发布 60000 |
| 输出 Token 上限 | 数字 | 单次响应最大 Token 数(0 = provider 默认) | 基础/轻量/标准 2000,智能/发布 4000 |
| 输出字符上限 | 数字 | 响应收集的字符上限(0 = 不截断) | 基础/轻量/标准 8000,智能/发布 16000 |
| 模板选择 | 枚举 | 该模式使用的模板:默认(只重述) / 增量(保守补充缺失大逻辑) / 自定义:<名称> | 默认 |
| 自定义模板 | 列表 | 该模式多条自定义模板(每条 ≤4000 字符,每模式 ≤10 条) | 空 |
| 语音识别引擎 | 枚举 | 云端(Qwen3-ASR / OpenAI 兼容) / 本地(SenseVoice 离线) | 云端 |
| 语音识别语言 | 枚举 | 自动 / 中文 / English / 日本語 / 한국어 / 粤语 | 自动 |
| 静音自动停 | 布尔 | 说完话停顿 1.2 秒自动停止录音 | 开启 |
| 规整(去口水词) | 布尔 | 识别后是否调用 LLM 去除「嗯/啊/那个」等语气词 | 关闭 |
| 规整模型来源 | 枚举 | 跟随模型配置(用增强链中的某条) / 自定义(独立 OpenAI 兼容) | 跟随模型配置 |
| 端口重启服务名 | 字符串 | Windows 服务模式下 sc 命令的服务名 | dsh-web |
| 端口重启 profile | 字符串 | 重启后使用的 DSH profile | web |
常见问题
Q: 安装后输入框里没有出现 ✨ 按钮怎么办?
A: 确认是用 dsh web profile 安装(命令带 --profile web),安装后必须重启 dsh web(仅刷新浏览器不会重新装载宿主页与客户端模块)。package.json 里 dsh.client.platform 固定为 web,只有 web profile 会扫描这个 bundle。
Q: 没有配置任何模型时点 ✨ 会发生什么?
A: 插件不会自动套用任何兜底模型,host 会返回 NO_MODEL 错误码并在按钮下方显示「未配置模型,请在设置中添加模型」。首次安装会继承基座当前模型与官方 DeepSeek 默认两个模型(deepseek-v4-flash / deepseek-v4-pro),可自行删除或调整。
Q: 5 种优化模式(基础/轻量/标准/专家/一键发布)有什么区别?
A: 基础 = 直发改写、不读上下文、最快;轻量 = 本地规则分析、缺失项保守提示、不注入外部上下文;标准 = 规则理解 + 工作区文件与会话事件检索、零额外 LLM 成本;专家 = LLM 任务分析 + 全量检索(文档/代码/会话)注入、上下文理解最准;一键发布 = 检索同类项目 + 工作区参考生成九章开发规格,支持多轮细化。
Q: 记忆开关是什么?开启后会不会把聊天内容长期保存在客户端?
A: 记忆仅在发送前一轮「优化 → 修改 → 再优化」之间累积为最多 4 轮的链(仅内存中的 memoryRounds),下一轮代入历史并感知修改方向;消息一旦发送,记忆链立刻清空。关闭记忆时完全停止读写;本地或云端均不持久化记忆内容。
Q: 网页打不开时怎么用「一键重启」恢复 DSH?
A: 插件设置「模型与插件 → 端口重启 → 桌面」可一键生成带鲸鱼图标的「重启DSH」桌面快捷方式(仅 Windows),双击即在命令行窗口重启;不生成快捷方式也能用,直接执行 node "...\AppData\Local\dsh-prompt-enhancer\executor\0.1.11\lib\updater-host.cjs" --cli restart --service dsh-web --profile web 即可。
Q: 语音输入支持哪些识别引擎?本地引擎要不要额外下载模型?
A: 默认提供云端(Qwen3-ASR / OpenAI 兼容 /audio/transcriptions)与本地(sherpa-onnx + SenseVoice,离线、不上传)双引擎;插件安装包不携带/不默认下载模型,本地引擎需在「模型配置 → 🎙 语音识别 → 引擎选本地 → 本地模型区点下载模型」自行下载(SenseVoice 228MB / Paraformer 137MB),下载完成后自动热加载。
Q: 卸载后还在 DSH 设置里看到插件页面怎么办?
A: 卸载后必须重启一次 DSH 才能从运行中完全卸载;如果重启后仍残留,进入 DSH 安装目录手动删除 $DSH_HOME/dsh-prompt-enhancer 与 dsh-prompt-enhancer.config.json 即可。
Q: 桌面版(DSH Desktop)每次重启设置都丢失是什么问题?
A: 该问题已在 v3.2.4 修复(GitHub Issue #1)。DSH Desktop 启动时动态分配端口,浏览器 localStorage 按 Origin 隔离,每次重启被误判为「首次安装」覆盖用户配置。修复后配置改为磁盘存储($DSH_HOME/dsh-prompt-enhancer.config.json),动态端口切换后自动恢复。
上手难度
进阶 — 需要理解 DSH Web profile 安装流程、模型链配置、上下文预算与各模式差异,以及 DSH 服务管理(Windows / Linux / macOS 三套)。默认配置下可直接使用,但精细调优需进入「模型与插件」设置页。
已知问题与限制
- 第三方客户端未实现
inputActions.setDraft契约时,✨ 按钮不显示;🎤 语音输入自动降级(无插入能力 → 追加到草稿末尾;完全不注入 → 🎤 禁用并提示) - 优化模式的「撤回」按钮仅在当次结果应用后短时间内可点击;用户修改草稿后再点 ✨,「撤回」变为「继续优化」(基于上一轮基础继续)
- 一键重启仅在 Windows 上支持「桌面快捷方式(鲸鱼图标)」生成;macOS / Linux 需手动执行 CLI 命令
- 本地 ASR 引擎的 SenseVoice(228MB)/ Paraformer(137MB)模型由用户在设置页主动下载,不随插件安装附带;首次使用本地引擎需手动下载
- M2/M3 架构重构进行中:
src/host/config.js注释TODO(M3): register config schema and migration显示完整 Schemastery 迁移尚未完成,目前由config-schema.js轻量校验兜底 - 插件打包体积较大(
lib/client.cjs~350KB、lib/shortcut-icon.cjs~43KB),安装包会同步下载鲸鱼图标资源 - 客户端协议版本固定为
protocolVersion: 1,与旧版本(≤2.8.3)不兼容;执行器版本由EXECUTOR_VERSION+ 内容哈希管理,代码变更自动重建 - macOS 与 Linux 平台的一键服务化(nssm 等价物)路径当前未启用,仅 Windows 提供「nssm 服务化」一键引导;其他平台端口重启走前台进程模式
DeepSeek Harness (DSH) 插件。两大核心能力:
- ✨ 提示词增强 — 输入框草稿一键改写,不满意可撤回
- 💬 语音识别 — 说完自动停,云端 / 本地双引擎离线可用,识别结果填入草稿
另附 🔁 DSH 服务异常一键重启(网页打不开也能命令行恢复)。
✨ 两大核心功能
1. 提示词增强(✨)
输入框工具行的 ✨ 按钮触发一次独立 LLM 调用,直接改写当前草稿;可继续优化、可撤回、增强中可取消。
- 一键增强 — ✨ 按钮触发独立 LLM 调用,直接替换草稿;可继续优化、可撤回、增强中可取消
- 5 种优化模式 — 基础(直发)/ 轻量(结合上一轮对话参考)/ 标准(规则 + 检索)/ 专家(任务分析 + 全量检索)/ 一键发布(生成完整开发规格)
- 记忆开关 — 开启后,发送前的多轮「优化→修改→再优化」累积为记忆链,下一轮代入历史并感知修改方向;发送消息即清空,关闭后完全停止读写
- 模型链 — 按序尝试多个模型,可增删改序、开关思考、行内连通性测试
2. 语音识别(💬)
输入框旁的 🎤 录音按钮开始说话,识别(云端 Qwen3-ASR / 本地离线 SenseVoice 双引擎)→ 可选规整(去口水词)→ 填入草稿 → 可一键优化。说完停顿自动停止(VAD 静音检测),录音仅内存中转不落盘。
- 双引擎 — 云端 Qwen3-ASR / 本地离线 SenseVoice(框架 + 可选下载,发布物精简)
- 说完自动停 — VAD 静音检测,无需手动停止
- 快捷键唤醒 — 可录制全局快捷键,点按 / 长按双触发
- 文本规整 — 识别结果可选经基座 LLM 规整,去口语化
- 自动增强 — 开启后识别填入草稿即自动触发提示词增强
🔧 其他能力
- 🌐 多语言 — 按钮与文案跟随 DSH 界面语言(中文 / English)
- 🔁 一键重启(独立功能) — 网页打不开也能重启 DSH:桌面快捷方式(鲸鱼图标)双击,或命令行直接调用;支持服务化重启与进程级降级
🚀 安装
dsh plugin --profile web add github:Fishsb/dsh-prompt-enhancer#v3.3.0
安装后重启 DSH(dsh web),输入框工具行出现 ✨ 按钮即安装成功。
需本机已装 DeepSeek Harness 且
pnpm在 PATH 中。客户端兼容性(语音识别):🎤 语音输入依赖客户端注入
inputActions.setDraft(官方 web client 已满足);第三方客户端若实现同一契约即可加载,能力集不同时语音输入自动降级(无插入能力 → 识别结果追加到草稿末尾;完全不注入 → 🎤 禁用并提示)。本地离线引擎为「框架 + 可选下载」模式:插件安装不携带/不默认下载模型;设置 → 模型配置 → 💬 语音识别 → 引擎选「本地」→ 「本地模型」区点 下载模型(SenseVoice 228MB,带进度显示),下载完成自动生效。详见 docs/map/flow/voice-input.md。
更新 / 卸载:
dsh plugin --profile web update dsh-prompt-enhancer
dsh plugin --profile web remove dsh-prompt-enhancer
卸载后必须重启 DSH 才能从运行中移除。
🔁 一键重启(独立功能)
DSH 服务异常、网页打不开时,仍可一键恢复——不依赖浏览器、不依赖 3080 端口。插件设置「端口重启」确认态点击「桌面」生成带鲸鱼图标的「重启DSH」快捷方式,双击即重启并显示进度;不生成快捷方式也能用,任意命令窗口直接调用:
node "<DSH_HOME>\AppData\Local\dsh-prompt-enhancer\executor\0.1.11\lib\updater-host.cjs" --cli restart --service dsh-web --profile web
📦 库说明
核心逻辑拆分为独立 Node 模块,可复用:lib/shortcut-win.cjs(Windows 快捷方式生成)、lib/updater-host.cjs(CLI 重启 / 更新执行器)、lib/platform-service.cjs(跨平台服务管理)、lib/sys.cjs(环境与路径)。详见各模块头注释。
🎯 使用(提示词增强)
- 输入任意非空文本(斜杠命令保留前缀,只优化正文)
- 点击 ✨ 按钮
- 等待独立 LLM 调用完成,草稿被替换为增强版本
- 不满意点击 可撤回 恢复原文
📸 效果展示
语音识别(输入框 🎤 录音按钮,说完自动停):

语音识别设置(引擎切换 / 快捷键唤醒 / 模型下载 / 文本规整):

⚙️ 配置
设置 →「模型与插件」:
| Tab | 说明 |
|---|---|
| 模型配置 | 配置优化模型链,按序尝试、可增删改序;语音识别段落(引擎切换 / 快捷键唤醒 / 本地模型下载 / 文本规整) |
| 优化参数 | 优化模式 / 记忆开关 / 上下文预算 / 超时与输出上限 / 模板 |
📚 文档
隐私:插件不记录、不上报任何数据;增强结果来自外部 LLM,发送前请自行核对。