Saltar al contenido principal
W

dsh-prompt-optimizer

westfox-awa/dsh-prompt-optimizer

Control de la entrada web de DSH (v0.3.0-beta.4 · paquete de capacidades para tareas complejas: 3D / normales / interacción / datos / concurrencia / detalles de rendimiento verificados punto por punto + aceptación automatizable + bilingüe chino-inglés ·aplicable a dsh-0.1.6-alpha.1): antes de enviar, una IA independiente (mensajera) optimiza el prompt en un comando listo para la IA de trabajo (cuatro intensidades, longitud del flujo según la dificultad, aislamiento por sesión, mini ventana minimalista).

Instalar

dsh plugin --profile web add github:westfox-awa/dsh-prompt-optimizer

README

dsh-prompt-optimizer v0.2.2-beta.1 · 提示词优化器(DSH Web 插件)

最新实测(v0.3.1-beta.1 · 同口径 n=2):命令侧 10 道复杂题/满分 180 → 169 分(93.9%),发布版对照 127 分(70.8%)、无优化 4 分(2.2%);配对 9 胜 / 0 负 / 1 平,同格噪声平均极差 0.83 分/18(最大 4)。简单任务回归:复杂包泄漏 0/4、命令长度 0.39×(比发布版更短)、越权索取流程 0/4。评分卡为 03 四档细分、确定性判分(不额外消耗 LLM 调用)。 版本能力汇总(0.3.1 → 0.3.8):命令侧(10 题/满分 180,n=2)0.3.1 = 169(93.9%,配对 9-0-1),0.3.30.3.4 = 165(91.9%,噪声内);发布版对照 125(69.2%)。产物级 03 分档(三题各 46 份):V3 17/45 = 37.8%(分布 8/2/0/5)· 发布版 0/45 = 0%。仍未解决:H3 的"假完成"(自检数字与真实几何不一致,3 份样本里 2 份),0.3.8 的 ⑦c 对账要求是针对它的候选对策但尚未测量命令侧子指标(v0.3.4-beta.1):命令是否要求"统一自检入口 + 返回结构 + 真实运行输出"—— 同批 60 格:v0.3.4 三项齐备 100%(20/20)· 发布版 0%(0/20);同批总分 91.9% 对 69.2%(配对 9 胜 0 负 1 平,噪声 0.87 分/18)。该子指标衡量"要求是否写进命令",执行侧落地率见产物级指标。 H3 可信测量(v0.3.6-beta.1,量具修复后):审计并修复反向面网格,两条件各 2 份 —— v0.3.6 4/6(1 份满分、1 份"声称修好但实测 24 个内向面")· 发布版 0/6(0 分两份,其中一份 10 个内向面未修好)。三题合计 0~3 分档:V3 16/42 = 38.1%(8/1/0/5)· 发布版 0/42 = 0%。样本小(n=2),仅作辅证。 产物级第二主指标(0~3 分档,v0.3.4-beta.1):3 = 统一自检入口齐备 + 独立法线审计通过 + 全判据过;2 = 入口 + 审计过;1 = 有入口但审计未过;0 = 无入口。H1/H2/H3 三题各 4 份:v0.3.4 12/36 = 33.3%(分布 8/0/0/4)· 发布版 0/36 = 0%(12/0/0/0);分题 H1 6/12、H2 6/12、H3 0/12(H3 为尚未攻下的前沿)。样本仍小,仅作辅证。

🌐 Read this in English →

跳到英文文档(英文文档顶部同样有回到中文的按钮)

中文English

界面语言跟随 DSH:DSH 设成中文则全中文,设成英文则全英文(不再只支持中文)。当前版本适用于 dsh-0.1.6-alpha.10.1.5-rc.1 亦可运行)。


⚠️ 请先读这五点(作者郑重声明)

  1. 本插件目的是优化提示词,节省因为书写提示词而消耗的时间,并帮助用户更准确地传达意思;本质上是让 AI 可以多一步自我规划、约束
  2. 本插件在 DeepSeek-V4.1-Flash 这种能力较强、但发挥受提示词影响严重的大模型上有明显作用
  3. 本人仅使用此插件测试过部分 OneShot 类型的任务。本 README 第七节给出的实测数字,都是特定测试题 + 特定评分卡上的结果,不代表你的任务也一定提升建议对此插件的实际作用持保守意见
  4. 本插件完全开源,支持任何人、任何形式使用并修改此插件,也欢迎提出建议,以及各种测试
  5. 语言与兼容性:界面已支持中文与英文(跟随 DSH「设置 → 通用 → 语言」,zh / en 即时切换);当前此插件版本(v0.2.2-beta.1)适用于 dsh-0.1.6-alpha.1。升级 DSH 前请先看 DSH-COMPAT.md;该文档记录了接口核对、升级步骤与升级后的逐项验收结果。

🆕 更新介绍(What's new)

v0.3.0-beta.1 —— 本版:复杂任务能力包(细节逐项过关)

  • 复杂任务(一次性搭大场景、精细可驾驶模型、数据迁移、并发、性能预算)命中域信号后,命令里必须逐条给出该域的失效模式检查:法线朝向与可见面、坐标与单位、碰撞与网格一致、输入映射与反馈、可恢复与可配置、幂等与回滚、并发去重与锁顺序、边界数据、性能预算与画质。
  • 外加:现象量化(数值审计 + 视觉对照两条路)、全局验收场景、不得降级清单、范围边界与回退方式、判定标准与证据形式(没有证据不算完成);细节要求不得变成流程开销(是否建 goal/todo 仍只由流程规则决定)。
  • 实测(8 道复杂题 × 2 次采样 = 48 格):无优化 2.1% / 发布版 69.8% / 本版 92.0%(满分 144 → 132),配对胜 7 负 0 平 1,噪声 ±0.75 分/18,全程 230 秒;简单任务回归 0 泄漏、长度 1.11×。数据与复现见 PROMPT-OPTIMIZATION.md 第九节。

v0.2.2-beta.1 —— 国际化 + 两个真实缺陷修复

1. 界面国际化(本次主功能)

  • 插件 UI 全部支持中/英双语:控件行、上下文滑块与「回合 / 全文」按钮、模型弹层、迷你窗(含按钮与状态行)、帮助面板、通知提示、署名行。
  • 语言跟随 DSH 设置里的语言zh / en),切换即时生效,无需重启;读不到语言服务时按中文兜底,漏翻的文案会原样显示中文,不会出现空白
  • 产出语言也跟随你:英文原话 → 通篇英文命令(含小标题与清单项,不中英混排);中文原话 → 中文命令。

2. 修掉两个"把活推回给用户"的缺陷(提示词层,来自真实使用反馈)

  • ① 项目事实未知(哪个文件、哪个函数)原先被写成"停下并等待用户确认" —— 这是错的:该查的应当自己查。现在明确区分项目事实未知(自己去查,查不到就带着检索结论继续推进)与用户意图未知(才允许问)。
  • ② 过度把设计选择退给用户:原先会一次抛出7 条确认清单。现在改为能定的自己定(并写明取舍),该问的最多 1~2 条且必须带推荐默认值,同时给出"查不到也要能推进"的兜底路径。

3. 修复"提示词相对 0.1.1 反而退化"(用户报的,实测确实存在)

  • 把「实质优先」段重新前置、合规规则精简后置:普通档 1319 → 1172 字符,高级 1857 → 1815,极端 1877 → 1813 —— 更短,且在配对比较中更强(见第七节)。

4. 修复放行/回退后自动补发第二条(会话里显示为「排队发送」)

  • 运行一旦被用户终结(放行 / 回退)就带终态标记,自动发送与完成分支都会跳过;放行时同时中止后端运行。

更早的 v0.1.9 起还包含:上下文双模式(回合 0~10 / 全文开关)、扁平化极简底栏、以及 DSH 0.1.6 的历史读取适配(会话事件投影 + 一次性播种)。 完整逐条记录见 CHANGELOG.md;提示词层的逐条改动(位置 → 原文 → 新文 → 意图 → 证据)见 PROMPT-OPTIMIZATION.md


它做什么

你在输入框按回车的那一刻,消息不会直接发出去 —— 先由另一个 AI(传话者)把它整理成一条可以直接发给工作 AI 的命令,你看到满意结果再决定发送。

  • 角色是传话,不是陪聊:优化 AI 明确知道自己是"把用户的意思转达给工作 AI",不回答你、不替你干活、不向你提问;产出是命令正文本身(没有「优化后的提示词 / 改动说明」这类元话语),可原样发给下游 AI。
  • 优化用的模型、档位、权限都与对话本身独立,不会动你的对话模型。
  • 档位与权限按会话独立:在 A 会话调到「极端 + 自动」,B 会话不受影响。
  • 迷你窗按会话隔离:A 会话触发的窗,切到 B 不会冒出来;切回 A 若还挂着(等你决定)会原样回来。
  • 按难度决定"开发长度"(编排强度):优化 AI 会先判强度,并把结论与依据写进命令里 —— =直接改完跑验证即可、明确"不要建 goal/todo、不要写计划";=先列 3~6 条 todo、按顺序做、做完逐条勾掉;=先建立 goal(一句话目标 + 可观测验收)、分阶段推进、每阶段先验证再进下一阶段。命中高危信号(不可逆/难回退、动数据 schema 或持久化数据、权限密钥、发布上线、对外接口兼容、跨模块、没有现成测试能验证)时不得停留在"轻";没命中就不许升档,也不许因为描述长、字数多而升档
  • 约束写成可判定的硬要求:必须做 / 不得做 / 做完必须满足的判据三类分明,每条硬约束都带"违反时怎么处置",命令里不出现"尽量/最好/建议"这类可被绕过的软措辞。

作者:啃轮胎的西狐 · 版本 0.2.2beta1 · 版本日期 2026/09/15(插件内 ? 面板最底部也有同样署名)

📦 下载:本仓库的 Releases 提供可安装的 .tgz 包(npm pack 产物,安装方式见下一节)。


一、安装

方式 A:像安装其它 DSH 插件一样(推荐)

两步:先把包装进 profile,再把包名登记为 bundle 层。

# 1) 装包(GitHub 仓库 / tarball / 本地目录都行)
dsh plugin --profile web add github:WestFox-AwA/dsh-prompt-optimizer#v0.2.2-beta.1
dsh plugin --profile web add ./dsh-external-dsh-prompt-optimizer-0.2.2-beta.1.tgz

# 2) 在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 里加一行:
#      "@dsh-external/dsh-prompt-optimizer"

重启 DSH 即生效。为什么还要改 bundlesdsh 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 Webdsh web;本插件只在 web 平台提供 UI)。
  • 至少一条可用的 LLM 路由(优化默认跟随当前会话模型;也可在插件的模型胶囊里单独指定)。
  • 插件本身零运行时依赖、无需构建lib/ 里就是可直接运行的 JavaScript)。

二、30 秒上手

  1. 在输入框正常打字,按 Enter(或点发送)。
  2. 消息被拦下,右下角弹出迷你窗,里面有两栏:思考(优化 AI 的推理过程,带本次思考 token 数)与产出(给你要发的那条命令)。
  3. 权限为 需要审查 时:可以直接编辑产出文本 → 点 确认提交 发出;不满意就 重新生成(会让你先填一个方向)。
  4. 权限为 自动输出 时:优化一完成就自动发出,无需操作。
  5. 不想优化了:点 ‹ 回退(停优化 + 关窗 + 不发消息 + 原文留在输入框),或点 放行本条 直接按原文发出。

输入框左侧的控件,从左到右是:优化档位(滑块)、优化权限(滑块)、上下文(滑块 + 右侧贴着「回合 / 全文」转化按钮)、优化模型(胶囊),再右边是 使用帮助(?)。点 ? 有同样的简明教程 + 署名。


三、控件怎么选

控件取值说明
优化档位关闭 / 普通 / 高级 / 极端(英文界面:Off / Low / High / Ultra关闭=完全不拦截,恢复原生发送;普通=只把话说清楚(约 3 秒);高级=先自己把事推一遍,再把必要假设、步骤、边界与验收标准写成要求(约 20 秒);极端=读项目真实结构(只读,不写盘)+ 按难度决定是否建 goal/分阶段,命中不可逆/发布类信号才给多情况预案(约 20 秒)
优化权限需要审查 / 自动输出审查=产出可编辑,点「确认提交」才发;自动=优化完成即自动发出(失败也会按原文发出,绝不静默吞消息)
上下文回合 0~10 / 全文 关 / 开滑块右侧那枚按钮点一下换一态:回合=读入最近 0~10 回合,只带你的原话(工作 AI 的回复只留长度与工具次数,防止它的方案/口吻被当成你的意图),总预算 1.2 万字符;全文=把工作 AI 现在看到的完整上下文(双方全文)交给优化模型,只有关/开两档,总预算 6 万字符。两种模式超限都按整回合丢弃最早的,绝不截断单条约束。
优化模型任意 provider/模型只影响优化,不动对话模型;弹层里会标出「会话当前」模型;某家 provider 连不上会被标注「不可达」,不会拖慢整张列表
界面语言中文 / English跟随 DSH 设置里的语言,插件内不单独设置

想要发挥插件所有能力且自动化,建议【极端】+【自动】。

上下文要用哪种?平时用「回合 0~3」(省 token、够用);需要它理解"现在聊到哪了"时切「全文 → 开」(对齐工作 AI 的上下文,代价是每次多花几万字符)。


四、迷你窗

  • 可拖动:按住标题栏拖。
  • 可改尺寸:拖右下角手柄,尺寸会记住(下次开窗沿用)。
  • 不会跑丢:窗口缩小/切换会话后再打开,会自动夹回可见区域。
  • 按会话隔离:窗口属于触发它的那个会话。
  • 关键按钮永不消失:底部是常驻操作栏(确认提交 / 重新生成 / 回退 / 放行 / 重试),不随内容滚动,窗口再小也点得到;窗口很矮时会自动压缩内容区。
  • 思考 token 计数:状态行显示本次总用量(如 Σ 1.1k tok),「思考」标题右侧显示思考消耗的 token(provider 不上报时显示 — tok),「产出」标题右侧显示输出 token,旁边还有字数。

五、常见问题

现象原因 / 处理
按回车没反应,消息也没发出去说明已进入优化流程,看迷你窗的进度;若窗口不在视野,切到该会话即会出现
优化很慢高级/极端档需要 20 秒左右(极端档还会读项目结构)。想快就用普通档
提示"优化模型不可用 → 已按原文发出"所选模型连不上(例如本机 ollama 未启动)。插件会自动回退到会话默认模型,下次用默认模型
想临时不用档位滑块拉到最左「关闭」
弹层里某家模型标「不可达」该 provider 当前不可用(未启动/无权限),不影响其它模型
界面能换英文吗。跟随 DSH「设置 → 通用 → 语言」:选中文则全中文,选英文则全英文,切换即时生效(v0.2.2-beta.1 起)
点了「放行本条」/「确定回退」,消息却又自动发出了一条(在会话里显示成「排队发送」)这是 0.1.9 修掉的缺陷:放行/回退后,迟到的"优化完成"事件仍会走自动发送,补发了第二条。现在运行一旦被用户终结(放行/回退)就带终态标记,autoSenddone 分支都会跳过;放行时还会同时中止后端运行。请升级到 0.1.9beta1 及以上
命令里老是让我先建 goal / 列 todo,太啰嗦这是按难度判定的结果:只有多点改动或命中高危信号才会要求建目标/分阶段;单点小改应当只给一句命令 + 一句完成标志。若简单任务被过度编排,请把该条输出发我 —— 判定用例与规则见 PROMPT-OPTIMIZATION.md
命令里反问我"请确认用哪个文件",明明它自己查得到这是 v0.2.1-beta.2 修掉的缺陷(把"项目事实未知"误写成"停下等用户确认")。请升级;若仍出现,把该条输出发我

六、卸载

dsh plugin --profile web remove @dsh-external/dsh-prompt-optimizer

若用"方式 B"安装,请同时删除 cordis.patch.yml 里那条 insert。插件设置存在 ~/.dsh/prompt-optimizer.json(档位/权限/模型/上下文模式/迷你窗尺寸/按会话设置),如需彻底清理可一并删除。


七、实测数据与证明(不吹嘘)

测量方式(全部为宿主内一次性测量台,不进产品代码;脚本在 evidence/,可复现):

题目(用户原话) --relay 优化--> 命令 --solve 执行--> 执行 AI 的回答 --judge 评分--> 分数
  • 固定执行 AI 与固定评分卡,每道题跑同一批条件;判分时不给评分员看条件标签(盲评)。
  • 命令侧:优化器产出的命令本身注入了多少实质要求,每题满分 5 分。
  • 答案侧:执行 AI 回答质量,每题满分 10 分(严格 0/1/2 逐点评分)。
  • 单格噪声实测 ±1 分(命令侧)/ ±2 分(答案侧),所以关键结论用重复采样(n=2~4)并如实标注落在噪声内的差异。

命令侧(4 道题,满分 20)

条件高级档极端档
无优化(对照)4≈4
0.1.1 旧提示词1918.7(n=2~3)
0.1.9 退化版1615.3(n=2~4)
0.2.1 修复后(现版基线)1818
  • 退化是真实存在的(极端档 18.7 → 15.3),不是主观感受;修复后回到 0.1.1 水平或更好:极端档在 10/10 次配对比较中 ≥ 退化版(符号检验 p≈0.001)。
  • 四档都测过:关闭=无优化对照(4/20,说明优化确实带来变化);普通=按设计只做语言层修复、不新增需求,故不参与"实质注入"比较。

答案侧(3 道硬题,满分 10)

条件T5 条件概率陷阱T6 物理量级估算T4 工程题
无优化84~59
0.1.1 旧109 / 79
0.1.9 退化版8 / 109 / 94
0.2.1-beta.110 / 1010 / 94
0.3.1(先防后查)93.9%169/1809 胜 0 负 1 平

必须一起读的四条限制(否则会高估这些数字):

  1. 极端档 T4 的低分(1~6/10)是测量台局限,不是提示词缺陷:台里的执行 AI 没有文件系统/命令工具,而命令要求它"先扫工作目录",于是它只能停下。该命令本身经逐字检查是全场质量最高的,因此这一格不计入结论。
  2. 答案侧在强模型上会饱和:不少格"无优化"也能拿高分(例如 T4 的 9/10),所以答案侧的区分力弱于命令侧。
  3. 样本量有限:多数格 n=13,单格 12 分的差异属于噪声;本文只把"方向一致 + 活跃路径可见"的差异当作结论。
  4. 以上数字来自特定 4~7 道题(条件概率陷阱、量级估算、工程改造等),不能外推到你自己的任务

复现入口evidence/prompt-snapshot.cjs(导出任意版本的三档提示词快照)、evidence/prompt-invariants.cjs(约束闸门:30 条正向 + 4 条反向断言,含 v0.2.2 新增的「输出语言跟随用户原话」)、evidence/lab-build.cjs / lab-ans.cjs(测量台)、evidence/lab-ship.cjs(结果汇总)。改提示词前先跑闸门,失败即回退。

产物级验证(单文件 HTML,独立审计,不依赖浏览器):H1 法线盒体 / H2 操控 / H3 审计并修复反向面,两条件各 7 份产物 —— 发布版 5/7 = 71.4% · v0.3 5/7 = 71.4%(打平);H1、H2 两条件全部通过(独立审计 inwardFaces 全为 0),H3 各 2/4,四份失败全是"接口未暴露到全局"(属执行 AI 的接口一致性,命令侧 4/4 都已要求)。产物级目前不区分两个条件,有区分度的是命令侧。验证器自证:正确夹具 15/15 PASS、绕序反转夹具 FAIL 且 inwardFaces=12。一键复跑:node evidence/artifact-check.cjs

产出语言跟随你(真跑实测,非模拟):走宿主生产路径各跑一条 —— 英文输入 Add a rate limiter to the login endpoint. → 产出全文 3511 字符、中日韩字符 0、首行 First locate the login endpoint: …;中文输入 给登录接口加一个限流。 → 1353 字符、中日韩 1037(占 0.766)、首行 任务:给登录接口加限流。evidence/lang-probe.cjs + lang-probe.json,统计基于全文快照而非 4000 字截断)。


八、实现要点(给想改代码的人)

  • 两个半边lib/index.js(宿主:提示词部件化组装与传话框架、只读工具循环、SSE 流式运行、模型目录、状态落盘、HTTP 路由)+ lib/client.js(浏览器:控件行、模型/帮助弹层、迷你窗、捕获阶段拦截回车与发送按钮)。
  • 提示词是部件化组装的RELAY_IDENTITY实质优先 → 档位正文 → FACT_RULESOUTPUT_CONTRACTPROCESS_RULES,历史纪律按运行时的回合 or 全文模式二选一注入(buildSystem(tier, { historyMode }))——同一句规则只有一份,改一处全局生效。现版长度:普通 1405 / 高级 2424 / 极端 2422 字符。
  • i18n 实现:客户端读取 DSH 的 locale 服务(getSnapshot().activezh / en)并订阅变化;文案表 EN_TEXT中文原文为键(179 条),查不到即原样返回中文,因此漏翻只会显示中文、不会显示空白;语言服务不可用时按中文兜底。
  • 拦截是捕获阶段window 上做的(早于 React 与编辑器自身处理):Shift+Enter 换行、/ 命令、空草稿、仅附件、输入卡片之外的回车一律放行。
  • 不改动官方发送链路:确认发送时用官方 inputActions.setDraft() + submit(),与手动发送完全同一条路。
  • 自检evidence/ 下有可复现的自检(range-demo 滑块、help-demo 帮助面板在视口内、i18n-demo 强制 en/zh 双语断言);ACCEPTANCE.md 是逐格验收清单;evidence/*.jsonl 是机器留痕(客户端 beacon、遥测、对照数据)。

九、隐私与边界

  • 优化请求只发送你的输入文本,以及(高级/极端档)当前项目的目录树摘要与关键文件名;极端档的只读查证限定在项目根目录内,不写盘、不执行命令。
  • 上下文模式按你的设置读取本会话的历史:回合模式只带你的原话;全文模式带双方全文(受 6 万字符预算约束,超限整回合丢弃)。
  • 迷你窗默认不发送任何消息:只有「确认提交」/「自动输出」/「放行本条」三条路径会把内容交回官方发送链路。
  • 本插件为客户端 + 宿主本地插件,不引入任何第三方服务。

十、许可与协作

BSD-3-Clause。完全开源:任何人、任何形式使用与修改都欢迎;也欢迎提 Issue、提 PR、以及各种测试反馈。见 LICENSECHANGELOG.md

Plugins relacionados