dsh-prompt-optimizer
Đã xác minh@zzy001/dsh-prompt-optimizer · v0.2.1 · MIT · Giao diện web
Prompt optimizer for DeepSeek Harness: a composer tool-row button that rewrites the draft into a structured prompt via the session's selected model, with one-click restore
Cài đặt
dsh plugin add @zzy001/dsh-prompt-optimizer Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.
Mã nguồn
Thẻ
Tác giả
Readme
dsh-prompt-optimizer
为 DeepSeek Harness(dsh)提供输入框提示词优化能力:在聊天输入框工具行添加一个 ✨ 按钮,一键把草稿改写成结构化提示词(任务目标 / 功能需求 / 验收标准 / 假设…),再点一次还原原文。
- 跟随会话模型与思考强度:优化调用使用输入框当前选中的模型与其思考强度设置(会话日志优先,退回部署默认),不改变任何会话状态;走你已配置的模型凭证,不引入任何新密钥。
- 官方通道:按钮注册在官方
conversation.input.right增量席位(发送按钮左侧);草稿读写走官方inputActions机器事务路径;图标与 Tooltip 复用官方 primitives 原语。 - 高质量改写:内置经调研打磨的元提示词(意图忠实 > 适度增强 > 歧义消解,反膨胀长度旋钮,假设显式化),详见
research/meta-prompt.md。 - 健壮交互:NDJSON 流式进度反馈(悬浮提示实时显示「已推理 N 字 / 已生成 N 字」,推理阶段事件持续喂看门狗)、120s 总上限 + 45s 空闲看门狗(同时取消宿主侧模型调用)、并发编辑检测(优化用 draftRev、还原用内容比对)、会话切换竞态守卫、失败红显 3s 提示、宿主错误码中英双语映射、回环/同源请求围栏、点击不夺焦点、无障碍标签。
兼容性
| 项 | 值 |
|---|---|
| DeepSeek Harness | >= 0.1.0-rc.8(实测至 0.1.1-rc.2,web profile) |
| Node.js | >=20 |
| 安装 | dsh plugin --profile web add ... |
工作原理
- Host 半部:在
webServerHTTP 载体上注册精确路由POST /plugins/prompt-optimizer/api/optimize。收到草稿后:解析会话当前模型选择与思考强度(原样跟随)→llm.resolveCallConfig校验路由 →llm.stream一次性调用(元提示词作 system,temperature 0.4,maxTokens 随输入长度缩放)→ 以 NDJSON 事件流应答(meta→progress* → 终态done|error),progress 同时上报可见文本与推理阶段的字数;只累积text-delta(思维链增量永不混入结果)。 - Client 半部:注册进输入框工具行席位;点击后同源
fetch调用上述路由并增量读取事件流——悬浮提示实时显示「思考中…已推理 N 字 / 已生成 N 字」;终态done到达后经 draftRev 校验一次性原子替换草稿并进入"还原"态。还原前比对当前草稿与按钮写入的确切内容,手改过则拒绝覆盖。 - 模型选择解析顺序与官方 api-proxy 一致:会话日志的请求配置优先,其次
agentDefaultModel默认选择(在输入框切换模型时官方会同步保存默认,因此常规场景与界面显示一致)。
安装
方式 A:npm(推荐,发布后可用)
dsh plugin --profile web add @zzy001/dsh-prompt-optimizer
方式 B:本地目录(开发/自用)
npm install
npm run build
dsh plugin --profile web add ./dsh-prompt-optimizer
方式 C:GitHub
dsh plugin --profile web add "github:zzy-cl/dsh-prompt-optimizer#<commit-sha>"
pnpm ≥10 首次安装 git 依赖会要求授权构建脚本(allowBuilds),按 dsh 提示操作;npm 分发预构建产物则无需授权。
方式 D:tarball(无构建授权)
npm pack
dsh plugin --profile web add ./zzy001-dsh-prompt-optimizer-0.1.0.tgz
所有
dsh plugin add方式需要本机有 pnpm:npm install -g pnpm或corepack enable pnpm。
安装后重启一次 dsh web,输入框工具行右端(发送按钮左侧)出现 ✨ 图标。
更新
两个坑:①semver 里
^0.1.x不匹配更高的 0.y 版本,普通update无法跨越;②pnpm ≥11 的供应链冷却策略可能让@latest静默解析回旧版(输出 "Already up to date" 但实际什么都没装)。最稳妥的做法是始终用精确版本号。
# npm 源安装的:精确版本号升级(推荐)
dsh plugin --profile web add @zzy001/[email protected]
# 本地目录安装的:先在插件目录 git pull,再重新 add(路径不变则原地覆盖)
cd dsh-prompt-optimizer && git pull && cd ..
dsh plugin --profile web add ./dsh-prompt-optimizer
# GitHub 安装的:把钉住的 ref 前移到新 commit
dsh plugin --profile web add "github:zzy-cl/dsh-prompt-optimizer#<new-commit-sha>"
然后重启一次 dsh web——profile 插件层在启动时装载,运行中不会热替换。
验证升级成功:输入框有草稿时点击 ✨,优化进行中悬浮提示实时显示「已生成 N 字」(0.1.x 只会转圈)即为 0.2.0。
回退到指定版本 / 卸载:
dsh plugin --profile web add @zzy001/[email protected] # 回退
dsh plugin --profile web remove @zzy001/dsh-prompt-optimizer # 卸载(同样需重启)
使用
- 在输入框输入提示词(草稿为空时图标置灰)。
- 点击 ✨ → 图标转圈 → 草稿被替换为结构化提示词,图标变为 ↩。
- 点击 ↩ → 还原原始文本,图标变回 ✨。
- 优化结果直接发送后按钮自动复位。
失败(超时 / 模型错误 / 等待或还原前手动改了草稿)时图标红显 3 秒并在悬浮提示中说明原因;还原前若草稿又被手动编辑过,插件拒绝覆盖并提示,绝不吞掉手改内容。
与动态插件的关系
本仓库由同会话的动态 Cordis 插件(prompt-1)固化而来,功能一致、通道不同(动态版走包私有 RPC,仓库版走 webServer 路由)。两者不要同时启用:都注册 conversation.input.right 的 prompt-optimizer 席位,后激活者会覆盖前者。长期使用请安装本插件并停用动态插件。
开发
npm install
npm run check # tsc --noEmit
npm run build # tsdown → lib/ + esbuild → client/client.js
npm pack --dry-run
结构:
src/
├── index.ts # Host 半部:webServer 路由 + 模型选择解析 + llm 调用
├── meta-prompt.ts # 优化元提示词(设计依据见 research/meta-prompt.md)
└── client.ts # Client bundle 源码(构建为经典脚本)
research/ # 元提示词与命名调研
review/ # 发布前评审报告
发布
npm login
npm publish # prepare 自动构建,发布预构建 lib + client + cordis.patch.yml
发布前用 npm pack --dry-run 复核产物。GitHub 仓库建议打 topics:dsh-plugin、deepseek-harness。
License
MIT