dsh-prompt-optimization:将自然语言提示词转为专业指令

前言

DeepSeek Harness(DSH)采用「一切皆插件」的理念,插件通过扩展槽位注入界面与逻辑。自然语言需求往往含糊,模型只能猜测,这会让结果不稳定。这个插件在 DSH 的输入框工具栏增加「优化提示词」按钮,将模糊需求改写为任务明确、主旨清晰、无歧义的专业提示词。

插件定位

这是一个 DeepSeek Harness Web 插件,由 KukaNo996 维护。它把「帮我把周报弄一下」这类需求,改写成结构化、可执行的提示词,一键回填草稿,支持撤回。改写结果直接在输入框显示,不影响原始草稿内容。

核心功能

  • 一键优化:点击工具栏按钮,调用模型改写当前草稿并回填。
  • 一键撤回:改写后按钮变为「撤回」,点击恢复原文,再点可再次优化。
  • 多候选评估:可开启并行生成 2–5 份结果,再由评审模型选出最优。会显示 token 消耗。
  • 模型来源可配置:跟随输入框(默认) / 跟随主程序 / 自定义模型(任意 OpenAI 兼容端点)。
  • 本地模型支持:由主机侧直接请求端点,不受浏览器 CORS 限制。支持 Ollama / LM Studio / vLLM。
  • 显示提示文字:默认只显示图标。开启后按钮同时显示「优化提示词」和「撤回」文字。
  • 空输入引导:未填写内容时点击优化,提示语逐字写入输入框,停留 2 秒后逐字删除;开始输入即自动停止。
  • 根据上下文优化(Beta):可开启,先压缩当前会话上下文再据此改写,使结果更贴合表达习惯。默认关闭。
  • 引用保护:草稿含文件/会话引用芯片时自动禁用,避免改写丢失引用。
  • 失败安全:草稿在请求期间被修改则不覆盖本次结果;请求可随页面关闭/切会话立即中止。
  • 问题分类改写:先判断原文属于六类中的哪类(知识理解/编程实现/内容创作/分析决策/流程方法/表达转换),按类型决定问什么。
  • 问题拆解深入:问「什么是 X」时不直接回答,而是拆成至少 3 个分析维度写成提示词。
  • 篇幅分五档:按原文字数与问题类型选档:极短/简短/标准/详尽/完整,同一篇不跨档。
  • 可中断优化:优化过程中点击转圈即可中断,草稿恢复为原文。
  • 最大等待时长:可设置单次优化的最长等待时间,默认 15 秒、最低 10 秒,超时自动中止。
  • 检查更新:设置页可检查是否有新版本,更新源可自定义(npm registry / GitHub Releases / 任意镜像),只读版本号、不下载安装。

插件界面与词典提供简体中文、繁体中文、日语和英语。

安装与启用

方式一:插件管理器(推荐)

在 DSH 中打开「设置 → 插件」安装,或使用包坐标:

plugin_manager install_bundle target=dsh-prompt-optimization

国内网络可指定镜像源:

plugin_manager install_bundle target=dsh-prompt-optimization registry=https://registry.npmmirror.com

需要固定版本时写完整版本号,例如 target=dsh-prompt-optimization@1.4.1。

方式二:源码安装

git clone https://github.com/KukaNo996/dsh-prompt-optimization
plugin_manager install_bundle target=<克隆目录的绝对路径>

安装后:插件行出现在「设置 → 插件」,设置页出现在「设置 → 提示词优化」。

典型用法

  1. 在输入框写下需求,例如 帮我把周报弄一下。
  2. 点击工具栏「优化提示词」。
  3. 查看改写结果,满意直接发送;不满意点「撤回」。
  4. 首次使用若提示模型不可用,前往「设置 → 提示词优化」选择模型来源。

设置项

设置 作用 默认
模型来源 跟随输入框 / 跟随主程序 / 自定义模型 跟随输入框
API 地址 自定义模式的 OpenAI 兼容端点,如 http://127.0.0.1:11434/v1 —
模型名称 自定义模式必填;跟随模式留空表示自动 —
Provider(可选) 跟随模式下覆盖自动选择的 provider 自动
API Key 自定义端点密钥;本地模型可留空 —
温度 0–2,越低越稳定 0.3
最大输出 token 0 表示交给模型默认值 0
优化指令 自定义 system prompt,留空用内置指令 内置
多候选评估 开关 + 候选份数(2–5) 关闭 / 1 份
显示提示文字 开启后按钮显示「优化提示词」和「撤回」文字,关闭时只显示图标 关闭(仅图标)
更新源 检查更新时使用的地址;留空按内置顺序尝试 自动
根据上下文优化(Beta) 开启后先压缩会话上下文再据此改写提示词 关闭
最大等待时长 单次优化的最长等待时间,覆盖上下文压缩、多候选生成与评审 15 秒

可随时用「测试连接」验证当前配置;配置未保存到可调用状态时,保存仍会成功,但优化会返回可读的错误提示。

问题分类与改写原则

插件在改写前先判定原文属于哪一类,类型决定该问什么,不用同一套模板套所有问题:

类型 典型问法 改写重点
知识理解类 什么是、为什么、有什么区别、原理 拆成多个分析维度,系统讲透
编程实现类 写、改、修、重构、报错、性能 输入输出、语言框架、约束、边界、验收方式
内容创作类 文案、起名、邮件、脚本、翻译 受众、用途、语气、篇幅、禁忌
分析决策类 对比、选型、评估、要不要 候选对象、评价维度、结论形态、判断标准
流程方法类 怎么做、如何入门、步骤 阶段划分、每阶段产出、依赖与检查点
表达转换类 总结、精简、改写、格式化 目标形态、保留什么、删掉什么

插件不会以大模型口吻直接回答「什么是闭包」这类问题,而是把问题改写成一条可执行的提示词,要求覆盖至少 3 个分析维度。

篇幅分档

改写长度由原文字数与问题类型共同决定,同一篇内不跨档:

档位 原文 输出
极短档 不足 20 字(如「写个快排」) 1–2 句,核心任务 + 一个最关键约束;绝不加标题、编号、背景
简短档 20–50 字,单一诉求 2–4 句或最多 3 条短要求,不设小标题
标准档 50–150 字,或含 2–3 个并列诉求 4–8 行,可加 1–2 个小标题
详尽档 150–400 字,或类型要求系统回答(知识理解/分析决策/流程方法) 结构化多段:目标 / 覆盖维度 / 约束 / 输出形态 / 验收标准
完整档 超过 400 字,或多条并列且彼此依赖 才用含背景、执行步骤、风险与检查点的完整结构

知识理解类即使原文很短也落到详尽档。

中断与等待时长

优化过程中点击转圈即可中断,草稿会恢复为原文。中断会同时结束客户端请求与主机侧的模型调用。

「最大等待时长」限制单次优化的总耗时,默认 15 秒、最低 10 秒。该时长覆盖整个流程——上下文压缩、多候选生成与评审,超时后插件会自动中止并明确提示。

根据上下文优化(Beta)

设置页的「根据上下文优化(Beta)」默认关闭。开启后:

  1. 读取当前会话中你真正输入过的消息(宿主注入的运行时上下文等不参与)。
  2. 交给模型压缩成一份简短偏好简报——表达习惯、常用措辞、关注的主题、已排除的做法。
  3. 用这份简报作为参考改写提示词。

只有压缩后的简报会进入改写请求,原始对话不会直接发给模型。压缩本身会多调用一次模型,因此 token 消耗相应增加。压缩失败时会退回普通改写,不会让整个操作失败。

该功能仍处 Beta:它会改变改写结果,介意可随时关闭。

检查更新

设置页底部有「检查更新」区块,点击后查询是否有新版本。它只读取版本号,不下载、不安装,也不会写入设置文件。

更新源支持三种写法:

  • 内置别名:npm、npmmirror、github
  • npm registry 包地址:https://registry.npmmirror.com/dsh-prompt-optimization
  • GitHub Releases API 地址:https://api.github.com/repos/KukaNo996/dsh-prompt-optimization/releases/latest

留空时依次尝试 npm registry → npmmirror → GitHub Releases,任一成功即返回。自定义源按响应内容识别格式(dist-tags.latest 或 tag_name),因此镜像站、代理都可用,不依赖域名。单个源超时 10 秒,失败自动回退到下一个;全部失败会逐条列出原因。版本比较遵循语义化版本优先级,正确处理预发布版本。

模型来源模式

模式 使用的模型 取不到时
跟随输入框(默认) 输入框右下角当前选择的模型 报错,不切换到其它模型
跟随主程序 见下方解析顺序 逐级回退
自定义模型 你填写的 OpenAI 兼容端点 报错提示缺少地址或模型名

「跟随输入框」绝不回退:选它就是为了固定用手上那个模型,悄悄换成别的模型会违背这个意图。当会话还没有可识别的选择时,插件会明确提示。

「跟随主程序」的解析顺序:

  1. 设置页显式填写的 provider + model
  2. 当前会话最近一次请求使用的模型(即模型选择器所选)
  3. 主程序默认模型(设置 → 模型)
  4. 兜底 deepseek-account / deepseek-flash

环境要求

  • DeepSeek Harness 0.2.1 及以上(依赖 conversation.input.right、settings.section 插槽与 inputActions.setDraft)
  • 「跟随主程序」模式需已登录 DeepSeek 账户或已配置可用模型;否则请改用「自定义模型」

隐私与安全

  • API Key 存储:优先放入宿主凭据服务(keyStorage: credential),settings.json 只记录「是否已配置」;没有凭据服务时降级写入 $DSH_HOME/dsh-prompt-optimization/settings.json(POSIX 下 0600)。旧版本明文会自动迁移并清除。
  • 浏览器侧:永远只能拿到掩码(如 sk-••••1234),任何接口都不返回明文。
  • 接口防护:除 /status 外所有路由要求进程级随机票据(页面从 /status 获取)并校验 Origin;模型路由按来源限流 10 次/分钟。
  • 数据去向:被优化的草稿文本会发送给你配置的模型端点(跟随模式即主程序所用 provider)。请勿在需要保密的草稿上使用不可信的第三方端点。
  • 请求中止:页面关闭、切换会话或再次点击时立即中止在途请求,主机侧返回 499 并停止计费。

实现说明

插件在主机侧注册同源前缀路由 /dsh-prompt-optimization/*:

路由 方法 用途
/status GET 插件健康状态 + 下发请求票据
/settings GET / POST 读取 / 保存设置(密钥只写不读)
/optimize POST 执行改写(含多候选评估)
/test POST 测试连接
/update-check GET / POST 检查更新(不占模型调用额度)
  • 跟随模式走 DSH llm 服务(自带账户鉴权与重试);自定义模式由主机侧请求 OpenAI 兼容 /chat/completions。
  • 评估:candidates > 1 时并行生成 N 份,再发一次只返回编号的评审请求;评审失败或无有效编号时退回确定性评分(结构 + 数字/标识符保留率 + 长度比)。
  • 取消:req.on('close') 触发 AbortSignal,透传给 llm.stream / fetch。
  • 检查更新:对更新源发起 HTTPS GET(10 秒超时、2 MB 上限),按响应内容识别 npm packument 或 GitHub release,用语义化版本规则比较;只读,不写设置文件。
  • 上下文:开启 Beta 后先读取会话中用户真正输入的消息,交给模型压缩成偏好简报,再把简报注入改写请求;原始对话不直接发给模型。

客户端侧以 window.__ModuleLoader__.load 注册两个 slot:

  • conversation.input.right:工具栏优化 / 撤回按钮与错误气泡。
  • settings.section:设置页面。

草稿读写使用宿主注入的 inputActions / useInput,不改 DOM;occurrences 非空时禁用优化。改写完成后一次性回填草稿,输出即用,不带任何开场白。样式只用 --dsw-alias-* 主题 token。

适用场景

适合需要在 DSH 中反复打磨提示词的场景:从模糊需求到结构化指令、从单次问答到复杂任务规划。本地模型支持使得可以在无网络环境下使用。注意插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

小结

这个插件通过分类、分档、多候选评估等方式,将自然语言提示词转为专业指令,支持一键优化与撤回,配合灵活的模型来源配置与本地模型支持,适合需要稳定、可控提示词链路的开发者使用。

目录页:https://www.skillhub.cn/plugins/KukaNo996/dsh-prompt-optimization
GitHub:https://github.com/KukaNo996/dsh-prompt-optimization

羽毛球分组比赛记分
小程序二维码

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

小夜