dsh-prompt-enhancer

34Star2Fork3Issue0Watching

DSH 插件,在输入框旁提供 ✨ 一键改写与 🎤 语音转写,按 5 种模式与多模型链独立调用 LLM 重写草稿,并支持一键重启异常服务。

语言
JavaScript
分支
main
deepseekdeepseek-harnessdsh-pluginpluginprompt-engineering

安装

$ 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.mjssrc/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.0CI workflow 使用 node-version: 22engines 未显式声明
客户端契约注入 inputActions.setDraft官方 web client 已满足;第三方客户端若实现同一契约即可加载,能力集不同时语音输入自动降级:仅 setDraft 但无插入能力 → 识别结果追加到草稿末尾;完全不注入 → 🎤 禁用并提示
平台macOS / Windows / LinuxWindows 走 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 profileweb

常见问题

Q: 安装后输入框里没有出现 ✨ 按钮怎么办?

A: 确认是用 dsh web profile 安装(命令带 --profile web),安装后必须重启 dsh web(仅刷新浏览器不会重新装载宿主页与客户端模块)。package.jsondsh.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-enhancerdsh-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 服务化」一键引导;其他平台端口重启走前台进程模式
dsh-prompt-enhancer — DeepSeek Harness 插件 | deepseek-plugin.org