dsh-prompt-optimizer:在 DSH 输入框里用当前模型优化草稿

前言

在 DeepSeek Harness(DSH)里写提示词时,草稿往往还处在「能表达意图但未整理」的状态:上下文在会话里、模型在会话选择里,若要把同一段文字交给模型润色,常见做法是复制到外部工具或另开一轮对话。DSH 社区插件 dsh-prompt-optimizer 把「普通输入 / 优化输入」做成聊天输入框右上角的常驻切换,优化结果直接回填草稿,仍可继续编辑。

下面介绍插件定位、能力与在 web profile 下的安装方式。事实以 GitHub 仓库 README 为准。

这是什么

dsh-prompt-optimizer 是 DSH 可注册的正式 bundle 插件(非仅在进程内存活的动态沙箱包)。维护者为 EmotionG,在 SkillHub 目录中归类为「模型推理」,简介为优化提示词。

Host 侧注册 Connection RPC 通道 /prompt-optimizer;Client 侧在 conversation.input.right 提供「普通模式 / ✨ 优化模式」切换。优化模式下,插件基于当前会话上下文,并复用当前会话选择的模型,对输入框草稿做流式优化,再通过 setDraft 写回 composer。

与仅用 cordis_define 的动态插件版相比:本包通过 profile 的 dsh.profile.bundles 安装,进程重启后仍生效;通信走 Connection RPC,宿主 handler 能收到真实 AbortSignal,取消会传播到 LLM 适配器底层传输(动态版多为协作式 break)。

核心功能

输入框 UI 与快捷键

  • 槽位:conversation.input.right,包含模式切换、发起优化、加载、取消、错误与截断提示、成功渐隐等状态。
  • 快捷键:Alt+O(实现中对 IME、表单控件、defaultPrevented 做了防护)。

优化与上下文

  • 使用会话投影上的 modelSelection:next ?? lastUsed;若 provider/model 只传其一,视为未提供,回退 agent 默认模型。
  • 上下文约束(README 行为要点):最近 10 条消息、每条最多 800 字符、总量 6000 字符;草稿超过 8000 字符会截断后再优化。

取消与健壮性

  • 用户取消、会话切换卸载、插件停止、传输关闭,汇聚到同一 AbortController,在传输层中止 LLM 请求(含 DeepSeek 适配器 idle watchdog 兜底)。
  • max-tokens 导致截断时返回 truncated 并提示;拒绝重复 token;每条请求使用唯一消息 id。
  • 模式选择为模块级变量,跨会话切换保持;插件重载时重置。

代码结构(便于二次开发)

路径 职责
src/index.ts Host:optimize / cancel RPC,ctx.llm.stream 流式生成
src/client/index.ts Client:UI 与 RPC 调用、setDraft 回填
scripts/build-client.mjs esbuild 产出 lib/client.js(react 外部化)
cordis.patch.yml bundle patch,插入 profile 组合

版本 0.1.0,许可证 MIT(见仓库 package.json)。peer 依赖含 @deepseek-ai/cordis(>=4.0.2)、react(^18.2.0)。

安装与启用

插件面向 web profile。安装前需在包目录完成构建,产出 lib/index.js 与 lib/client.js。

方式一:在 profile 目录手动改依赖

在 profile 目录(示例路径 C:\Users\<user>\.dsh\profiles\web):

  1. 在 package.json 的 dependencies 中加入本包,路径改为本机 clone 或解压后的实际目录,例如:
"dsh-prompt-optimizer": "file:D:/developRelevant/product/dshp/dsh-sen-message/dsh-prompt-optimizer"
  1. 在 dsh.profile.bundles 中加入 "dsh-prompt-optimizer"。

  2. 在 profile 目录执行:

pnpm install
  1. 在本包目录执行:
npm install
npm run build
  1. 重启 dsh web(或通过 dsh plugin 命令管理)。

README 说明:npm install 用于 devDependencies(esbuild、tsc、类型包);npm run build 等价于 build:host(tsc)与 build:client(esbuild)。

方式二:dsh plugin 命令

同样需要先在本包目录 npm install 与 npm run build。之后可用:

dsh plugin --profile web -- add "file:..."

将 "file:..." 换成本包在本机的 file: 路径;该命令会转发 pnpm 管理依赖。

典型用法

  1. 安装并重启 DSH web 后,打开任意会话,在聊天输入框右上角切换到「✨ 优化模式」。
  2. 在输入框写好草稿(注意 8000 字符上限与上下文条数/长度限制)。
  3. 触发优化(UI 或 Alt+O,以 Client 实现为准)。等待流式结果回填到草稿。
  4. 若生成被 token 上限截断,界面会给出 truncated 相关提示;可随时取消,取消应中止底层 LLM 传输。
  5. 回填后可继续编辑,再切回「普通模式」按 usual 方式发送。

模式选择在切换会话时仍会保持,直到插件重载。

适用场景与注意

适合谁:经常在 DSH composer 里写长提示、希望用当前会话同一模型在原地润色草稿的开发者或智能体使用者;需要可注册 bundle、重启后仍生效的安装方式时,应选本仓库而非仅内存动态插件。

权限与安全:插件以当前 DSH 进程权限运行,优化请求会走 ctx.llm.stream,会读取会话表面作上下文。安装前请自行审阅 GitHub 源码 与 MIT 许可证,确认 file: 路径指向可信目录。

生态说明:DSH 强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。

结尾

dsh-prompt-optimizer 把提示词优化嵌进 DSH 输入框:切换模式、用会话模型与有限上下文优化草稿、回填可编辑,并通过 RPC 与 AbortSignal 把取消链路接到传输层。需要安装细节与行为边界时,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/EmotionG/dsh-prompt-optimizer
  • GitHub:https://github.com/EmotionG/dsh-prompt-optimizer
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye