前言¶
在 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):
- 在
package.json的dependencies中加入本包,路径改为本机 clone 或解压后的实际目录,例如:
"dsh-prompt-optimizer": "file:D:/developRelevant/product/dshp/dsh-sen-message/dsh-prompt-optimizer"
-
在
dsh.profile.bundles中加入"dsh-prompt-optimizer"。 -
在 profile 目录执行:
pnpm install
- 在本包目录执行:
npm install
npm run build
- 重启 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 管理依赖。
典型用法¶
- 安装并重启 DSH web 后,打开任意会话,在聊天输入框右上角切换到「✨ 优化模式」。
- 在输入框写好草稿(注意 8000 字符上限与上下文条数/长度限制)。
- 触发优化(UI 或
Alt+O,以 Client 实现为准)。等待流式结果回填到草稿。 - 若生成被 token 上限截断,界面会给出
truncated相关提示;可随时取消,取消应中止底层 LLM 传输。 - 回填后可继续编辑,再切回「普通模式」按 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