YMRwithNoworry/dsh-prompt-optimizer ↗★ 0
dsh-prompt-optimizer
将草稿一键优化为结构化提示词 适合希望提升Prompt质量的用户,支持对比差异并手动确认写回,不自动发送。
同名包的其他仓库
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:YMRwithNoworry/dsh-prompt-optimizer说明文档
阅读完整 README ↗使用
- 在输入框里随便写,越随意越好:
帮我做个好看的管理后台 - 点 ✨ 优化提示词
- 弹窗里出现左右两栏:原始 Prompt / 优化后的 Prompt,顶部有领域、复杂度、强度、语言标签
- 切到 差异对比 可以看逐行增删
- 选一个:
- 取消 —— 什么都不改
- 重新优化 —— 同一草稿再跑一次
- 采用优化结果 —— 写回输入框
- 检查一下,然后自己按发送
如果你在优化期间改了输入框,弹窗会提示「输入内容在优化期间发生了变化」,并额外给出 保留当前内容 与 应用优化结果 两个选项——它不会悄悄覆盖你刚打的字。
什么时候它什么都不做
这是正确行为,不是失败:
你好/谢谢/好的/继续—— 直接原样返回- 空输入 —— 按钮本身就是灰的
- Light 强度下的极短草稿 —— 没有可修的东西
弹窗会显示「原提示词已经足够清晰,已按原样返回」以及「已跳过模型调用」。
模型配置
插件不硬编码任何模型,也不要求你重新配 API Key。
设置面板里的「优化模型」是一个下拉框,选项来自 DSH 自己的 LLM 服务:插件调用
ctx.llm.listProviders() 与 listModels() 枚举当前 profile 真正连得上的路由,再对每个路由调用
resolveModelInfo() 取它支持的思考强度。结果是:
- 你在 DSH 里配置过的模型,这里直接可选,不需要手打
provider/model; - 换模型时「思考强度」自动切换成该模型支持的档位;
- 切到一个不支持当前强度的模型时,该强度会被自动清空(强度 id 是路由私有的);
- 两个模型都支持的强度在切换后保留。
路由解析顺序:
- 设置里显式选定的
provider/model - 调用会话当前使用的模型(连同它在会话里选的思考强度)
- harness 全局默认模型(
ctx.agentDefaultModel)
解析结果交给 ctx.llm.stream(),所以认证、重试、代理、适配器行为完全复用 DSH 现有的那套。
思考强度只在非空时才传给适配器。多数 provider 不暴露任何档位,传一个空字符串会让它们直接拒绝请求, 所以「默认」是真的不传。
温度固定为 0.2:架构师要的是可复现,不是创造力。
为什么下拉框里是空的
设置面板会说明原因,而不是只给一个空列表:
discovery.llmAvailable | providerCount | 含义 |
|---|---|---|
false | — | 该 profile 没有挂载 LLM 服务(llm / llm-pi-ai / llm-deepseek) |
true | 0 | 有服务,但没有任何 adapter 注册路由 |
true | >0 | 正常;failedProviders 里的 provider 表示它的 listModels 抛错或超时 |
无论哪种情况 current 始终可选,插件其余功能不受影响。
实现注意:cordis 只会把服务交给在
inject里声明过它的 fiber。直接读ctx.llm拿到的是undefined——不报错,只是所有 LLM 功能静默失效。又因为本插件必须在没有模型的 profile 里也能启动, 它不能把llm写进inject(那会变成必需依赖,插件会永远 pending)。 所以三个可选服务统一通过ctx.inject([name], scoped => …)惰性解析,见resolveServices。test/plugin-face.test.ts会断言源码里不存在任何ctx.llm/ctx.webServer直接读取。