dsh-prompt-optimizer
Manifest valid★ 38DSH Web 插件:在输入框按回车时,先由『传话 AI』把你的话改写成一条可直接发给工作 AI 的命令——档位/权限/上下文可调,并按任务难度自行决定编排强度,确认后再发送
dsh-prompt-optimizer · 提示词优化器(DSH Web 插件)
中文 | English
🌐 界面语言说明:本插件的操作界面(UI)目前有且只有中文,暂未提供英文或其他语言的界面。英文 README 仅用于介绍,安装后界面依然是中文。 UI note: the plugin's user interface is currently Chinese-only. The English README is documentation only.
⚠️ 请先读这四点(作者郑重声明)
- 本插件目的是优化提示词,节省因为书写提示词而消耗的时间,并帮助用户更准确地传达意思;本质上是让 AI 可以多一步自我规划、约束。
- 本插件在 DeepSeek-V4.1-Flash 这种能力较强、但发挥受提示词影响严重的大模型上有明显作用。
- 本人仅使用此插件测试过部分 OneShot 类型的任务,并在这些任务上取得了突破性效果;因此无法保证此插件在所有任务中都能起到巨大的正向作用,建议对此插件的实际作用持保守意见。
- 本插件完全开源,支持任何人、任何形式使用并修改此插件,也欢迎提出建议,以及各种测试。
它做什么
你在输入框按回车的那一刻,消息不会直接发出去 —— 先由另一个 AI(传话者)把它整理成一条可以直接发给工作 AI 的命令,你看到满意结果再决定发送。
- 角色是传话,不是陪聊:优化 AI 明确知道自己是"把用户的意思转达给工作 AI",不回答你、不替你干活、不向你提问;产出是命令正文本身(没有「优化后的提示词 / 改动说明」这类元话语),可原样发给下游 AI。
- 优化用的模型、档位、权限都与对话本身独立,不会动你的对话模型。
- 档位与权限按会话独立:在 A 会话调到「极端 + 自动」,B 会话不受影响。
- 迷你窗按会话隔离:A 会话触发的窗,切到 B 不会冒出来;切回 A 若还挂着(等你决定)会原样回来。
- 按难度决定"开发长度"(编排强度):优化 AI 会先判强度,并把结论与依据写进命令里 —— 轻=直接改完跑验证即可、明确"不要建 goal/todo、不要写计划";中=先列 3~6 条 todo、按顺序做、做完逐条勾掉;重=先建立 goal(一句话目标 + 可观测验收)、分阶段推进、每阶段先验证再进下一阶段。命中高危信号(不可逆/难回退、动数据 schema 或持久化数据、权限密钥、发布上线、对外接口兼容、跨模块、没有现成测试能验证)时不得停留在"轻";没命中就不许升档,也不许因为描述长、字数多而升档。
- 约束写成可判定的硬要求:必须做 / 不得做 / 做完必须满足的判据三类分明,每条硬约束都带"违反时怎么处置",命令里不出现"尽量/最好/建议"这类可被绕过的软措辞。
作者:啃轮胎的西狐 · 版本 0.1.9beta1 · 版本日期 2026/09/14(插件内 ? 面板最底部也有同样署名)
📦 下载:本仓库的 Releases 提供可安装的 .tgz 包(npm pack 产物,安装方式见下一节)。提示词层的完整改动与依据见 PROMPT-OPTIMIZATION.md。
一、安装
方式 A:像安装其它 DSH 插件一样(推荐)
两步:先把包装进 profile,再把包名登记为 bundle 层。
# 1) 装包(GitHub 仓库 / tarball / 本地目录都行)
dsh plugin --profile web add github:WestFox-AwA/dsh-prompt-optimizer#v0.1.7-beta.1
dsh plugin --profile web add ./dsh-external-dsh-prompt-optimizer-0.1.7-beta.1.tgz
# 2) 在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 里加一行:
# "@dsh-external/dsh-prompt-optimizer"
重启 DSH 即生效。为什么还要改 bundles:dsh plugin 只是把参数转发给 pnpm(只负责安装),而"哪些包作为 bundle 层参与装配"由 profile 的 dsh.profile.bundles 决定。本插件自带 cordis.patch.yml,会在装配时把自己的 entry 插进根条目表 —— 与 @dsh-external/dsh-super-injector、@dsh-external/dsh-graded-mode 完全同一写法。
方式 B:不动 bundles,用 profile patch 插入
不想改 dsh.profile.bundles 时,也可以直接在 profile 的补丁层插一条 entry:
# ~/.dsh/profiles/web/cordis.patch.yml (顶层 YAML 数组)
- insert:
- id: prompt-optimizer
name: '@dsh-external/dsh-prompt-optimizer'
config: {}
包本身仍需可解析(dsh plugin add 装好,或手工放好 node_modules 软链/junction)。
⚠️ 方式 A 与方式 B 只能选一种:两种都做会让同一条 entry 插入两次,启动时报
duplicate loader entry id。
验证安装
dsh --dump-config --profile web | grep -A2 'id: prompt-optimizer' # 装配树里有它,且只有一条
node -e "console.log(require.resolve('@dsh-external/dsh-prompt-optimizer',{paths:['<profile 目录>']}))"
运行要求
- DSH Web(
dsh web;本插件只在 web 平台提供 UI)。 - 至少一条可用的 LLM 路由(优化默认跟随当前会话模型;也可在插件的模型胶囊里单独指定)。
- 插件本身零运行时依赖、无需构建(
lib/里就是可直接运行的 JavaScript)。
二、30 秒上手
- 在输入框正常打字,按 Enter(或点发送)。
- 消息被拦下,右下角弹出迷你窗,里面有两栏:思考(优化 AI 的推理过程,带本次思考 token 数)与产出(给你要发的那条命令)。
- 权限为 需要审查 时:可以直接编辑产出文本 → 点 确认提交 发出;不满意就 重新生成(会让你先填一个方向)。
- 权限为 自动输出 时:优化一完成就自动发出,无需操作。
- 不想优化了:点 ‹ 回退(停优化 + 关窗 + 不发消息 + 原文留在输入框),或点 放行本条 直接按原文发出。
输入框左侧的控件,从左到右是:优化档位(滑块)、优化权限(滑块)、上下文(滑块 + 右侧贴着「回合 / 全文」转化按钮)、优化模型(胶囊),再右边是 使用帮助(?)。点
?有同样的简明教程 + 署名。
三、控件怎么选
| 控件 | 取值 | 说明 | |---|---|---| | 优化档位 | 关闭 / 普通 / 高级 / 极端 | 关闭=完全不拦截,恢复原生发送;普通=只把话说清楚(约 3 秒);高级=补上"显然需要"的约束与验收标准(约 20 秒);极端=读取项目真实结构(只读,不写盘)后给出分阶段行动计划 + 验收标准 + 多情况预案(约 20 秒) | | 优化权限 | 需要审查 / 自动输出 | 审查=产出可编辑,点「确认提交」才发;自动=优化完成即自动发出(失败也会按原文发出,绝不静默吞消息) | | 上下文 | 回合 0~10 / 全文 关 / 开 | 滑块右侧那枚按钮点一下换一态:回合=读入最近 0~10 回合,只带你的原话(工作 AI 的回复只留长度与工具次数,防止它的方案/口吻被当成你的意图),总预算 1.2 万字符;全文=把工作 AI 现在看到的完整上下文(双方全文)交给优化模型,只有关/开两档,总预算 6 万字符。两种模式超限都按整回合丢弃最早的,绝不截断单条约束。 | | 优化模型 | 任意 provider/模型 | 只影响优化,不动对话模型;弹层里会标出「会话当前」模型;某家 provider 连不上会被标注「不可达」,不会拖慢整张列表 |
想要发挥插件所有能力且自动化,建议【极端】+【自动】。
上下文要用哪种?平时用「回合 0~3」(省 token、够用);需要它理解"现在聊到哪了"时切「全文 → 开」(对齐工作 AI 的上下文,代价是每次多花几万字符)。
四、迷你窗
- 可拖动:按住标题栏拖。
- 可改尺寸:拖右下角手柄,尺寸会记住(下次开窗沿用)。
- 不会跑丢:窗口缩小/切换会话后再打开,会自动夹回可见区域。
- 按会话隔离:窗口属于触发它的那个会话。
- 关键按钮永不消失:底部是常驻操作栏(确认提交 / 重新生成 / 回退 / 放行 / 重试),不随内容滚动,窗口再小也点得到;窗口很矮时会自动压缩内容区。
- 思考 token 计数:状态行显示本次总用量(如
Σ 1.1k tok),「思考」标题右侧显示思考消耗的 token(provider 不上报时显示— tok),「产出」标题右侧显示输出 token,旁边还有字数。
五、常见问题
| 现象 | 原因 / 处理 |
|---|---|
| 按回车没反应,消息也没发出去 | 说明已进入优化流程,看迷你窗的进度;若窗口不在视野,切到该会话即会出现 |
| 优化很慢 | 高级/极端档需要 20 秒左右(极端档还会读项目结构)。想快就用普通档 |
| 提示"优化模型不可用 → 已按原文发出" | 所选模型连不上(例如本机 ollama 未启动)。插件会自动回退到会话默认模型,下次用默认模型 |
| 想临时不用 | 把档位滑块拉到最左「关闭」 |
| 弹层里某家模型标「不可达」 | 该 provider 当前不可用(未启动/无权限),不影响其它模型 |
| 界面能换英文吗 | 暂时不能,当前 UI 有且只有中文 |
| 点了「放行本条」/「确定回退」,消息却又自动发出了一条(在会话里显示成「排队发送」) | 这是 0.1.9 修掉的缺陷:放行/回退后,迟到的"优化完成"事件仍会走自动发送,补发了第二条。现在运行一旦被用户终结(放行/回退)就带终态标记,autoSend 与 done 分支都会跳过;放行时还会同时中止后端运行。请升级到 0.1.9beta1 及以上 |
| 命令里老是让我先建 goal / 列 todo,太啰嗦 | 这是按难度判定的结果:只有多点改动或命中高危信号才会要求建目标/分阶段;单点小改应当只给一句命令 + 一句完成标志。若简单任务被过度编排,请把该条输出发我 —— 判定用例与规则见 PROMPT-OPTIMIZATION.md |
六、卸载
dsh plugin --profile web remove @dsh-external/dsh-prompt-optimizer
若用"方式 B"安装,请同时删除 cordis.patch.yml 里那条 insert。插件设置存在 ~/.dsh/prompt-optimizer.json(档位/权限/模型/迷你窗尺寸/按会话设置),如需彻底清理可一并删除。
七、实现要点(给想改代码的人)
- 两个半边:
lib/index.js(宿主:提示词部件化组装与传话框架、只读工具循环、SSE 流式运行、模型目录、状态落盘、HTTP 路由)+lib/client.js(浏览器:控件行、模型/帮助弹层、迷你窗、捕获阶段拦截回车与发送按钮)。 - 提示词是部件化组装的:身份 / 交付契约 / 档位正文 / 编排强度 / 事实纪律 五段共用部件,历史纪律按运行时的回合 or 全文模式二选一注入(
buildSystem(tier, { historyMode }))——同一句规则只有一份,改一处全局生效。 - 提示词改动有独立文档与证据:
PROMPT-OPTIMIZATION.md记录逐条改动(位置 → 原文 → 新文 → 意图)、可逐字 diff 的基线与新文快照、同批 5 例的新旧输出对照、长度/token 数字、以及"难度判定"专项用例的准确率(12/12,漏隐患 0、徒增开销 0)。 - 改提示词前先跑闸门:
evidence/prompt-invariants.cjs用 29 条正向 + 4 条反向断言检查"既有约束一条没丢"(中间领导纪律、反污染、不得虚构项目事实、各档位特有约束),失败即回退对应改动。 - 产物是纯 JavaScript(无构建步骤);
ACCEPTANCE.md是逐格验收清单,evidence/是机器留痕(自检报告、遥测、对照数据)。 - 拦截是捕获阶段在
window上做的(早于 React 与编辑器自身处理):Shift+Enter换行、/命令、空草稿、仅附件、输入卡片之外的回车一律放行。 - 不改动官方发送链路:确认发送时用官方
inputActions.setDraft()+submit(),与手动发送完全同一条路。 - 产物是纯 JavaScript(无构建步骤);
ACCEPTANCE.md是逐格验收清单,evidence/是机器留痕(自检报告、遥测、对照数据)。
八、隐私与边界
- 优化请求只发送你的输入文本,以及(高级/极端档)当前项目的目录树摘要与关键文件名;极端档的只读查证限定在项目根目录内,不写盘、不执行命令。
- 迷你窗默认不发送任何消息:只有「确认提交」/「自动输出」/「放行本条」三条路径会把内容交回官方发送链路。
- 本插件为客户端 + 宿主本地插件,不引入任何第三方服务。
九、许可与协作
BSD-3-Clause。完全开源:任何人、任何形式使用与修改都欢迎;也欢迎提 Issue、提 PR、以及各种测试反馈。见 LICENSE 与 CHANGELOG.md。
Similar plugins
by sojo-negai
DSH 提示词优化插件 —— 发送前点一下 ✨,模型结合上下文给出「补丁式」建议,勾选回填,不抢发送权。
★ 0
↓ 127/wk
MIT
TypeScript
Sep 11, 2026
dsh plugin --profile web add dsh-prompt-refineby JoukoPuro
一个 DeepSeek Harness(DSH)插件: 在 Web 输入框的工具行中添加一个 ✨ 图标按钮。点击后选择打磨风格,已接入的大模型 会把你草稿中的提示词改写得更专业、更易被 AI 理解 。A DeepSeek Harness plugin: icon-only composer button that rewrites your prompt via the connected LLM
★ 4
↓ 87/wk
MIT
JavaScript
Aug 14, 2026
dsh plugin --profile web add dsh-prompt-polishby masknull
DSH 插件:在每个会话的系统提示词最顶部注入自定义提示词,并可在 Web 设置页中即时编辑。
★ 0
MIT
TypeScript
Aug 31, 2026
dsh plugin --profile web add dsh-session-promptby kee0012
DSH 提示词优化插件:输入框工具栏一键 ✨ 优化(直接写回可还原),风格/上下文/还原等设置收纳进 ▾ 弹出层。
★ 0
JavaScript
Sep 6, 2026
dsh plugin --profile web add dsh-prompt-optimizerby LCQ-1024
Adds a prompt-enhancement button to the DSH composer that rewrites drafts into agent-ready prompts.
★ 3
MIT
JavaScript
Aug 18, 2026
dsh plugin --profile web add dsh-prompt-enhancerby master1Sun
DSH(DeepSeek Harness)Web 插件:在 composer 工具栏注入一个「提示词库」按钮,管理可复用的 prompt 片段,点击即可插入当前输入框。支持自动学习:输入复杂 prompt 文案时,插件会自动识别并保存到提示词库。
★ 11
MIT
TypeScript
Sep 14, 2026
dsh plugin --profile web add @sunjuntao/dsh-prompt-library