# dsh-prompt-boost-pro — 发送前先把提示词改好 [English](README.md) | 中文 > DeepSeek Harness(DSH)输入框工具栏里的一个 sparkle 按钮:点一下选模式,模型把草稿改写成更好的提示词, > 并以**原文 / 增强对照**的形式给你看——接受、换模式重试、或放弃,都由你决定。**不点接受绝不碰你的草稿。** 灵感来自 Trae CN 的「优化输入内容」:写下粗糙的想法,拿回一段可直接执行的指令。 与"一键改写"不同的是,这里始终先给你看两版,接受之后同一个按钮变成撤销——直到你改动或发送这段文字为止。 ## 功能特性 - **两种模式,每次自己选**——**结构化增强**按任务重组草稿(目标、约束、期望输出、验收要点); **轻度增强**只消歧、纠错、收紧。两者都保留你的原意与语言,都不添加你没写过的需求。 - **绝不反问你。** 提示词策略禁止把 agent 自己能查的信息(仓库结构、技术栈、改动范围、历史结论) 甩回给你;整段输出**最多留 1 处** `[待补充: …]`,且只用于真正需要你拍板、猜错代价高的事。 - **对照预览,从不静默覆盖**——原文与增强并排;接受 / 换模式重试 / 复制 / 放弃。 预览打开期间你改过草稿,它会明确提示,并把主动作改成「以增强结果覆盖当前草稿」。 - **会过期的撤销**——接受后只有"草稿仍等于增强结果"时按钮才显示撤销;发送或手改之后自动回到常态, 不会给你一个点了就报错的撤销。 - **截断不再是黑洞**——输出额度按草稿长度自适应(4000 → 8192 token),撞到上限**仍返回已有内容**并标注, 给提示而不是丢一个错误。 - **模型路由四级回退**——插件配置 → 界面模型选择器当前显示的 → 会话上一次请求用的 → 部署默认模型。 **新会话第一次点也能用。** - **到处都能关**——再点图标、点外部、按 `Esc`;预览弹窗也支持 `Esc`。菜单打开时按钮保持可点, 不会出现"关不掉的弹框"。 - **中英双语界面**,跟随主题(用 DSH 真实设计令牌),不埋点、不写配置文件。 ## 环境要求 - DSH web GUI(`dsh web`),harness `0.1.2-alpha.1` 或更新;当前 `0.1.5-rc.x` 线已实测。 - Node `^22.19.0 || >=24.0.0`(宿主半边跑在 harness 进程里)。 - 会话有可路由的模型即可——部署默认模型也算,所以无需任何额外配置。 ## 安装 ```sh # 在运行 web GUI 的 profile 里(通常叫 web) dsh plugin --profile web add github:xiaoshengliang2002/dsh-prompt-boost-pro # 或用 Release 上的 tarball dsh plugin --profile web add https://github.com/xiaoshengliang2002/dsh-prompt-boost-pro/releases/latest/download/dsh-prompt-boost-pro.tgz # 或本地目录(软链;改完重建即生效,不用重装) dsh plugin --profile web add link:/path/to/dsh-prompt-boost-pro ``` 然后重启 `dsh web` 并刷新页面。`lib/` 是已构建产物并随仓库提交,所以**从源码安装不需要构建、也不需要 pnpm 的构建授权**。 卸载:`dsh plugin --profile web remove dsh-prompt-boost-pro`。 ## 按钮在哪 `+` | 权限控制 | **✨ 增强** | 召唤专家 | …… | 模型 | 上下文环 | 发送 它注册的是 `conversation.input.left`、`order: -10`,因此紧贴权限控制之后。想让它在召唤专家之后, 把 `src/client/index.ts` 里的 `order` 改成 `20` 即可。 ## 工作原理 | 半边 | 职责 | |---|---| | 宿主(`lib/index.js`) | 在共享 API 通道注册 `POST /api/prompt-boost-pro/enhance`(同源、cookie 鉴权),解析模型路由,`ctx.llm.stream()` 一次性调用,清洗文本后返回 JSON。 | | 浏览器(`lib/client.js`) | 注册两个插槽:工具行的按钮与模式菜单、输入卡片浮层里的对照预览弹窗。每会话一个状态机,且只在"接受"时通过 `inputActions.setDraft` 写回草稿。 | 线协议、错误码与提示词策略见 [`docs/design.md`](docs/design.md); awesome-dsh-plugin 收录核对见 [`docs/awesome-dsh-plugin-checklist.md`](docs/awesome-dsh-plugin-checklist.md)。 ## 开发 这是一个普通 npm 包,`lib/` 是**刻意提交**的构建产物(让源码安装无需构建)。 ```sh npm run typecheck # tsc --noEmit,0 错误 npm run build # esbuild → lib/index.js + lib/client.js npm test # 4 套离线测试:宿主 28、浏览器 28、UI 关闭/撤销 40、提示词策略 27 npm run release:pack # 同步文档 + 构建 + 打包 npm run release:verify # 解包校验 31 项契约与收录条件 ``` **全程不需要联网**:`node scripts/link-dsh.mjs` 把本地 DSH checkout 里的包(esbuild、typescript、 react、@types)联结进 `node_modules`,构建与测试都能离线跑。 `preview/index.html` 是可点击的界面预览(用 DSH 真实设计令牌 + 本插件真实样式表); `preview/shot-preview.cjs` 把各状态截图渲染到 `preview/shots/`(由 `screenshots.json` 声明给市场)。 ## 版本沿革 - **0.1.2** —— 推理档位透传。客户端随请求带上模型选择器当前的推理档位(low/high/max), 宿主把它传给 LLM 调用;部署也可用新的 `reasoningEffort` 配置键固定档位。 修复"始终思考"的模型(GLM-5.3-Flash 等)报 `400 {"code":"1210"}`:这类模型默认档位是 off,会被上游以「不支持关闭思考」拒绝。 - **0.1.1** —— 升级窗口兼容。宿主在注册当前路径的同时注册旧的 `POST /api/prompt-boost/enhance`, 客户端在当前路径返回 404/405 时自动回退旧路径——"刷新了页面却没重启宿主"(或反过来)这种半更新 状态不再报「非预期响应(HTTP 404)」,而是照常工作。 - **0.1.0** —— 首个发布。两种增强模式(结构化 / 轻度);接受前的原文/增强对照预览;随草稿过期的撤销; 点外部/`Esc` 关闭;自适应输出额度并在撞顶时以 `truncated` 标记保留产出;模型路由四级回退 (新会话第一次点就能用);中英双语与自定义 sparkle 图标。123 项离线断言 + 34 项打包校验。 线协议:`POST /api/prompt-boost-pro/enhance`;按钮位于权限控制之后。 ## 许可证 MIT