설치
pnpm pack # 产出 dsh-prompt-optimizer-0.1.0.tgz이 명령은 GitHub 저장소 주소에서 생성됩니다. 실행 전에 업스트림 README와 소스를 검토하고 재현성이 필요하면 release 또는 commit을 고정하세요.
README
유지 관리자가 작성한 문서 스냅샷입니다.
dsh-prompt-optimizer
DSH(DeepSeek Harness)Web GUI 聊天输入框的「提示词优化」插件:在输入卡工具行、模型切换按钮左侧新增优化入口,支持手动优化当前输入草稿与「发送前自动优化」开关;优化结果经前后对比框确认/二次编辑/放弃后决定是否发送,失败自动回退发送原文,对话不中断。
English summary: a DSH web-GUI plugin that adds a prompt-optimizer entry to the composer tool row (directly left of the model switcher), with manual trigger, an optional auto-optimize-before-send switch, a before/after comparison dialog, and fail-safe fallback to the original text.
特性
- 位置与形态:注册进官方
conversation.input.right槽位——渲染在输入框底行工具条、模型切换按钮正左侧;配色随 shell 深浅主题(body[data-ds-dark-theme]),不侵入既有聊天布局。 - 手动触发:点击「✦ 优化」优化当前输入框内容(草稿为空时禁用并提示)。
- 发送前自动优化:「自动」开关(localStorage 持久化)开启后,以 document 捕获阶段拦截 Enter 键与发送按钮点击(先于 React 根处理器;判定不成立一律放行原生流程,绝不吞发送)。
- 前后对比:原文只读 / 优化后可编辑双栏弹窗;
采用并发送(写入草稿并提交)、仅填入输入框、发送原文、放弃;Esc/遮罩关闭。 - 失败回退:优化失败/超时/模型垃圾输出 → 自动模式直接发送原文并提示;手动模式展示错误 + 重试。稳定错误码:
bad-request / auth / network / timeout / unsupported / internal。 - 双后端:
dsh(默认,免密钥):复用 harness 的ctx.llm+ 默认模型选择;openai:OpenAI 兼容/chat/completions,与 linshenkx/prompt-optimizer 相同的配置方式(baseUrl / apiKey / model / temperature / max_tokens / rounds),内置 DeepSeek / OpenAI / 自定义预设。
- 安全:API Key 存宿主侧
~/.dsh/dsh-prompt-optimizer.json(原子写、promise 链互斥),浏览器只见掩码、永不下发原文密钥;路由仅同源、请求体限长、不落盘 prompt 内容。 - 性能:拦截守卫 O(1)、自动关 = 零开销;client bundle ≈ 55 KB(gzip ≈ 12 KB,平台依赖全外部化);优化异步执行,输入框全程可编辑。
安装
方式 A:注入器流水线(开发/热插拔,本机已有 dsh-super-injector)
# 1. 构建(DSH_CHECKOUT 指向 dsh 源码 checkout;需 pnpm)
pnpm install
DSH_CHECKOUT=/path/to/dsh-checkout npm run build # build.sh 链接类型依赖 + tsc 双 program + tsdown client bundle
npm run verify # 离线冒烟(纯逻辑断言)
# 2. 注入运行中的 DSH(dev_* 工具,宿主侧执行)
dev_build_plugin <本目录> # 或手动: bash scripts/build.sh && pnpm build:client
dev_inject_plugin <本目录>
# 3. 刷新 http://127.0.0.1:3080 生效
dev_reload_package dsh-prompt-optimizer # 迭代热重载
dev_uninject_plugin dsh-prompt-optimizer # 卸载(全净)
方式 B:作为 bundle 安装(持久化,重启后仍生效)
pnpm pack # 产出 dsh-prompt-optimizer-0.1.0.tgz
dsh plugin --profile web add ./dsh-prompt-optimizer-0.1.0.tgz
# 重启该 profile 后生效
配置
打开工具行「⚙」设置面板:
| 字段 | 说明 |
|---|---|
| 后端模式 | DSH 内置路由(免密钥) / OpenAI 兼容供应商 |
| 供应商 | DeepSeek(https://api.deepseek.com/v1)/ OpenAI / 自定义 |
| Base URL / API Key / 模型 | 与 prompt-optimizer 供应商配置同构;API Key 留空保持原值 |
| 温度 / 最大输出 / 轮数 | 0–2 / 16–16384 / 1–3(多轮=对上一轮结果再精炼) |
| 测试连通 | 小样本调用验证密钥与端点 |
Host 路由(JSON envelope)
GET /dsh-prompt-optimizer/settings— 掩码后的设置视图POST /dsh-prompt-optimizer/settings— 保存设置POST /dsh-prompt-optimizer/optimize—{ prompt }→{ optimized }(支持一次性settings覆盖;45s 超时)POST /dsh-prompt-optimizer/test— 连通性测试
开发
src/
├── index.ts # host 入口(inject: llm / agentDefaultModel / systemPrompt)
├── host/{contract,settings,optimize,pure,routes}.ts
└── client/
├── index.ts # 注册 conversation.input.right 槽位条目
├── OptimizerControl.tsx # 工具行控件(优化按钮/自动开关/设置)
├── CompareDialog.tsx # 前后对比弹窗
├── SettingsPopover.tsx # 供应商设置
├── intercept.ts # 自动模式 document-capture 拦截(纯决策函数)
├── optimizer-api.ts # typed fetch 客户端
└── locales.ts # zh/en 文案
- 双 tsc program(host 排除
src/client,client 用react-jsx);tsdown.config.ts复刻官方clientBundle协议(window.__ModuleLoader__.load闭包、CSS Modules 内联、@deepseek-ai值导入 purity 门)。 scripts/verify.mjs离线冒烟(48 项断言:指令组装、JSON/双 blob 提取、垃圾输出拦截、设置往返、拦截决策表)。- 自动拦截依赖 InputBar 的 DOM 契约(
[data-composer-card]、卡内最后一个button为发送键):判定全部防御性判空,失配即放行原生流程。
许可证与合规
- 本插件:MIT。
- 兼容对象 linshenkx/prompt-optimizer 为 AGPL-3.0:本插件未复制其任何源码或提示词,仅遵循其 OpenAI 兼容协议与配置字段约定;优化指令为本插件自研。
저장소 정보
- 언어
- TypeScript
- 라이선스
- MIT
- 최신 릴리스
- v0.1.0
- 마지막 업데이트
- 2026. 8. 17. PM 1:10
신중하게 설치하기
소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.