DSH Plugin Store
Back to home

xinmo114514

dsh-prompt-optimizer

No description

Stars
0
Language
JavaScript
Created
Aug 14, 2026
Updated
Aug 14, 2026
Other
GitHub repo

Introduction

✨ Prompt Optimizer · 提示词优化器

DSH 持久化 Web 插件(Persistent Cordis Plugin)—— 把模糊需求,变成 AI 智能体一次就能执行的超级提示词

License: MIT Version Platform Language

在输入框模型选择器左侧点一下 ✨,模糊需求 → 结构化可执行指令, 全程跑马彩虹渐变边框陪伴,优化完成后结果自动填入输入框,直接发送。


🎯 为什么需要它

同一个需求,两种问法,AI 的完成度天差地别:

模糊的问法 ❌清晰的指令 ✅
"帮我写个好看的主页""设计并实现一个个人作品集主页:单文件 HTML+CSS+JS,包含 Hero/作品卡片/技能区/联系区,响应式(375/768/1440px 无横向滚动),主色 ≤3 种,验收:浏览器直接打开可用"

但把每个需求都手动写清楚,太累了。这个插件做的就是这件事:你在输入框里随手写一句模糊需求,点一下 ✨,它用你当前选择的模型,把这句话改写成一份任何 AI 智能体都能自主规划、动手执行、自我验证的高质量指令。


✨ 功能特性

特性说明
🪄 一键优化输入任意需求 → 点 ✨ → 优化结果自动替换输入框内容,随时可发送
🧠 使用当前所选模型优化请求完全复用你在模型选择器里选的 provider / model / 推理等级,无需额外配置
🤖 面向编程智能体内置系统提示词 v4,专为 DSH 这类具备规划/执行/验证能力的 Agent 设计
🔎 探索优先协议缺失信息不预设假设,而是写成探索指令(读配置、列目录、跑命令、查网络),查不到才允许保守默认并在交付时注明
🔗 Skills 感知指示执行者先盘点自身已加载的 Skills,按任务领域调用匹配技能;技能与任务不匹配时不强用
🧩 双模板自适应内容任务 →「结构化指令」模板;执行任务 →「Agent 执行说明书」模板(可验证目标 / 执行前侦察 / 分阶段计划+验证点 / 验收清单 / 自纠错协议 / 汇报要求)
🌈 跑马彩虹渐变边框优化进行中输入框边框流动彩虹渐变(纯 CSS,不侵入原生 DOM),按钮同步彩虹旋转
🔒 优化期间锁定输入通过 DSH 官方 conversation.blocks 机制锁定输入框与发送按钮,防止输入被覆盖
📊 状态可见输入框上方状态行实时显示:✨ 正在优化(模型名) / ✓ 完成 / ⚠️ 失败原因
🧰 插件设置页在 DSH 设置 → 插件中注册「提示词优化器」标签页:功能特性、使用方法、GitHub 链接一目了然

🎬 效果演示

输入一句模糊需求,点击 ✨ 按钮:

帮我写个好看的主页

↓ 优化后自动填入输入框 ↓

你是一位资深前端开发与 UI 设计师。任务是设计并实现一个高颜值、现代感的个人作品集主页,最终交付一份完整可运行的单文件 HTML 代码(内嵌 CSS 和 JS)。

假设: 这是个人开发者/设计师的作品集主页……(如实际需要公司/产品主页,请自行替换背景与内容)

具体要求:

  1. 页面结构必须包含:顶部导航、Hero 首屏(大标题/副标题/主次按钮)、关于我、作品展示区(≥4 个卡片)、技能区、联系区、页脚;
  2. 视觉风格:现代极简 + 科技感,主色 ≤3 种,注重留白、圆角、卡片阴影、字体层级;
  3. 响应式:Flex/Grid 布局,375px / 768px / 1440px 均无错位,移动端菜单折叠为汉堡按钮;
  4. 动效:平滑锚点滚动、悬停反馈、作品卡片滚动进入视口淡入上移;
  5. 所有个人信息用占位符("你的名字"),并在代码中注释"此处替换为真实内容";
  6. 技术栈:仅原生 HTML5 + CSS3 + 少量 JS,不依赖任何框架;
  7. 输出格式:先给 3 行使用说明,再输出完整单文件代码;
  8. 验收标准:视觉惊艳;三种宽度下无横向滚动;交互反馈自然;占位符位置清晰。

[!NOTE] 以上为真实优化输出示例(节选)。原需求仅 8 个字,优化后变成一份可直接执行、可验收的完整任务书。


📦 安装

本插件是 DSH 持久化插件(Persistent Cordis Plugin):通过 dsh plugin 安装进 profile,作为 bundle 层挂载到宿主进程,重启 DSH / 刷新页面后按钮始终存在

方式一:GitHub 克隆 + dsh plugin(推荐)

git clone https://github.com/xinmo114514/dsh-prompt-optimizer.git
cd dsh-prompt-optimizer

# 安装到 web profile(等价于 dsh web)
dsh plugin --profile web add .

重启 DSH(dsh web),刷新页面,即可在输入框模型选择器左侧看到 ✨ 按钮。

方式二:本地路径 / npm 包

# 任意本地路径
dsh plugin --profile web add /path/to/dsh-prompt-optimizer
# 或 registry 包(若已发布)
dsh plugin --profile web add dsh-prompt-optimizer

dsh plugin 会把包 pnpm 安装进 profile,并自动将其加入 dsh.profile.bundles 层列表(包声明了 dsh.bundle,安装后自动激活)。

卸载

dsh plugin --profile web remove dsh-prompt-optimizer

[!TIP] 插件宿主端注册 POST /prompt-optimizer/api/optimize(仅限本机回环地址访问),浏览器端由 DSH 客户端模块系统自动发现并分发 lib/client.js,无需手动配置。


🚀 快速上手

① 在输入框输入模糊需求(如:帮我写个好看的主页)
② 点击模型选择器左侧的 ✨ 按钮
③ 观察:输入框锁定 + 彩虹跑马边框 + 状态行「✨ 正在优化提示词…」
④ 几秒后自动解锁,优化结果填入输入框 → 直接发送

🏗️ 技术架构

浏览器端 (Client half · lib/client.js)            宿主进程 (Host half · lib/index.js)
┌──────────────────────────────────┐   HTTP    ┌────────────────────────────────────┐
│ ✨ 按钮  conversation.input.right │ ────────► │ webServer.register 前缀路由        │
│ 状态行  conversation.input.dock  │  fetch    │  POST /prompt-optimizer/api/optimize│
│ 彩虹边框  CSS :has() 纯样式       │  JSON     │   ├─ 仅回环 Host 放行(403 围栏)   │
│ 输入锁定  conversation.blocks    │ ◄──────── │   ├─ agentDefaultModel 兜底取模型   │
│ 设置页  settings.plugins.tab     │ {ok,text} │   ├─ llm.stream(当前所选模型)        │
└──────────────────────────────────┘           │   └─ 结果缓存 + single-flight 去重   │
                                               └────────────────────────────────────┘
关注点实现方式
挂载方式包声明 dsh.bundle.patchcordis.patch.yml)→ 作为 bundle 层随 profile 启动自动挂载
客户端分发包声明 dsh.client + exports["./client"] → dsh-client-modules 扫描发现,/plugins/dsh-prompt-optimizer/client.js 自动注入浏览器
按钮位置槽位 conversation.input.right —— 渲染在模型选择器正左侧
读取当前模型客户端 modelDirectories 共享状态(useInput/directoryStore props);宿主端回退 agentDefaultModel
模型调用llm.stream()maxTokens: 8192;空输出自动去掉推理等级重试一次
彩虹跑马边框[data-composer-card]:has(...) + background-position 关键帧动画(动画属性不可带 !important,否则会被覆盖)
输入锁定conversation.blocks.set(sessionId, { reason }) / set(undefined)
前后端通信fetch('/prompt-optimizer/api/optimize')webServer.register,纯 JSON,仅本机回环可访问
性能优化相同请求 200 条 LRU 结果缓存 + single-flight 并发去重(warm 重复点击毫秒级返回,且结果一致)

📂 项目结构

prompt-optimizer/
├── package.json                  # 项目元信息 + dsh.bundle / dsh.client 声明
├── cordis.patch.yml              # bundle patch:把插件行插入 profile 组合
├── dsh.plugin.json               # 插件元数据(信息性;加载以 package.json dsh.* 为准)
├── lib/
│   ├── index.js                  # 宿主端:HTTP 路由 + LLM 调用 + 结果缓存 + 系统提示词 v4
│   └── client.js                 # 浏览器端:按钮 / 状态行 / 彩虹边框 / 输入锁定 / 设置页
├── src/
│   ├── host.js                   # 动态插件版宿主端(历史参考,逻辑与 lib/index.js 一致)
│   └── client.js                 # 动态插件版浏览器端(历史参考)
├── bench/                        # 性能基准:samples / harness / bench / profile-run
├── test/                         # 回归测试(零依赖,node test/run-tests*.js 运行)
├── docs/
│   ├── optimizer-system-prompt.md  # 内置优化系统提示词(可独立审阅、修改)
│   └── performance-report.md       # 性能优化实测报告(warm 提速 ~80%)
├── README.md                     # 你正在看的文件
├── UPLOAD_GUIDE.md               # 从零上传 GitHub 的详细中文指南(含 15 个坑点补救)
├── LICENSE                       # MIT
└── .gitignore

🧠 内置优化系统提示词(v4 · 探索优先 + Skills 感知)

三句话概括它的设计:

  1. 先分类:内容/对话任务走「结构化指令」模板;代码/执行任务走「Agent 执行说明书」模板;
  2. 探索优先:缺失信息一律写成探索指令让执行者自己查证,查不到才允许保守默认并在交付时注明,方向性重大歧义才允许问一次澄清问题;
  3. Skills 感知:执行者先盘点自身已加载的技能,按任务领域调用匹配的 skill,不匹配不强用;
  4. 闭环可验证:可验证目标 → 分阶段计划+验证点 → 验收清单 → 自纠错协议(≤3 次重试)→ 按清单汇报。

完整正文见 docs/optimizer-system-prompt.md


❓ 常见问题

[!NOTE] 插件是持久化的:安装后随 DSH 进程启动自动加载,重启 / 刷新页面后按钮始终存在,无需手动重新运行。

问题解答
点击 ✨ 没反应 / 状态行报错?确认宿主端已挂载(dsh plugin --profile web list 应能看到 dsh-prompt-optimizer);新版失败原因会直接显示在状态行
提示"模型没有返回有效内容"?已修复:maxTokens 提升至 8192 并支持自动降级重试(推理等级 Max 曾吃光 2048 预算导致空输出)
优化结果把我正在输入的内容覆盖了?已修复:优化期间通过 conversation.blocks 锁定输入框,无法打字;且回填前校验 draftRev,输入有变化则不覆盖
想换一个优化风格?修改 lib/index.js 中的 OPTIMIZER_SYSTEM_PROMPT(或参考 docs/ 下的独立文档)后重新安装/升级插件

📜 版本历史

版本亮点
v1.0.0(当前)持久化插件化(dsh plugin 安装、重启不丢);探索优先协议:去掉"假设"预设,缺失信息改为探索指令;Skills 感知;锁定输入框;状态行可见;空输出自动重试;设置 → 插件 专属标签页;warm 重复优化毫秒级返回(LRU 缓存 + single-flight)
v0.9面向编程智能体重构:双模板(结构化指令 / Agent 执行说明书)、篇幅分级、自纠错协议
v0.8修复空输出:maxTokens 2048→8192,block-end 兜底,去推理等级重试
v0.7彩虹跑马边框修复(!important 会覆盖 CSS 动画);新增状态行
v0.1首个可用版本:按钮 + 优化 + 彩虹边框

🤝 贡献与许可

欢迎提交 Issue / PR 改进系统提示词、UI 或稳定性。提交前请阅读 UPLOAD_GUIDE.md 了解协作流程。

本项目基于 MIT License 开源,自由使用、修改、分发。