前言¶
在 DSH 里和 Agent 对话时,输入框里往往只有一句口语化的想法,例如「把登录表单做得更安全」。这类草稿缺少目标、约束和可验收标准,模型容易猜路径、扩范围。自己对照 AGENTS.md 或 README 手工扩写 prompt,又重复且难保持格式一致。
下面介绍的是社区插件 dsh-prompt-optimizer(npm 包名 dsh-smartprompt),由 shellpower96 维护,归类为「模型推理」。它在 Composer 下方增加 Smart Prompt 按钮:在草稿非空时可见,点击后按你在配置里声明的项目文档收集事实,调用当前会话的模型把草稿改写成结构化、可执行的 prompt,并直接回填输入框。输出默认按中文字数上限 400 字(可配置),集成面只有插件配置里的 config 字段。
这是什么¶
DSH Web 插件,Host 端注册命令 /optimize-prompt,Client 端在 conversation.composer.dock 注入按钮。它不修改系统 prompt,也不注册 Agent 工具;每次优化在会话日志里留下一对 command/run 与 command/done,界面只显示单行摘要(例如「✨ Smart Prompt · N chars · Fill composer」),不会把完整优化结果铺进对话流。
模型路由优先使用当前会话 Agent 的 provider/model,否则回退到进程默认模型;请求走 ctx.llm.stream(),因此 llm/stream 中间件仍然生效。README 注明已在 DSH 0.2.0-rc.2 上验证;package.json 要求 Node >= 20、dsh >= 0.2.0-rc.2,许可证 MIT。
核心功能¶
界面行为¶
- 草稿为空:不渲染按钮。
- 点击后:按钮显示 Optimizing…,成功则用结果替换草稿,按钮变为 ✓ Optimized。
- 失败:按钮旁一行说明(超时 / 无模型 / 模型错误),草稿不变。
事实来源与改写原则¶
配置项 docs 指定工作区内、按顺序读取的文档(默认 AGENTS.md、README.md);缺失文件跳过,绝对路径与 .. 会被拒绝。另有字符预算 contextChars 限制「项目事实」块总长;可选 includeGoal: true 把当前会话 goal 纳入事实块。
元 prompt(src/prompt.js)要求输出具备:忠实(不扩缩范围,未定项写 TBD)、有据(模块/文件/命令仅能在事实块中出现,否则写 needs locating)、结构化(Goal、现状与落点、约束与惯例、任务拆分、验收标准,空节省略)、可执行(验收标准可验证)、简洁(每节最多 3 条 bullet、全文最多 10 条),且只输出正文、无代码围栏。超长时 finalizeOptimizedText() 在完整行/句/词边界截断并加 …。
配置项(节选)¶
插件不读环境变量,无效配置在激活时按字段名抛错。
| 字段 | 默认值 | 含义 |
|---|---|---|
enabled |
true |
总开关 |
maxDraftChars |
4000 |
超长草稿直接拒绝,不送模型 |
contextChars |
8000 |
事实块总字符预算 |
maxOutputChars |
400 |
优化结果上限(中文按字;英文上限约为 1.8 倍) |
timeoutMs |
120000 |
单次调用超时 |
docs |
["AGENTS.md","README.md"] |
事实文档列表 |
systemPromptLocale |
"auto" |
元 prompt 语言:auto/zh/en;产出语言跟草稿 |
安装与启用¶
DSH 的插件目录即包管理器本身,无单独提审门户。当前 README 给出的 Git 安装方式如下(需本机 PATH 上有 pnpm,否则可能出现 spawn pnpm ENOENT):
plugin_manager(action="install_bundle", target="github:shellpower96/dsh-prompt-optimizer#v0.1.0")
本地开发可从绝对路径安装:
plugin_manager(action="install_bundle", target="/absolute/path/to/dsh-prompt-optimizer")
卸载:
plugin_manager(action="remove_bundle", target="dsh-prompt-optimizer")
另可选:把市场索引 https://raw.githubusercontent.com/shellpower96/dsh-prompt-optimizer/main/market/index.json 加入 DSH Discover 源;npm 全局包 dsh-smartprompt 在 README 中标注为名称已预留、发布待定。新 bundle 可能经 HMR 到达,若按钮未出现可刷新页面一次。
在 Cordis 配置中插入插件行,空配置即可启用:
- insert:
- id: prompt-optimizer
name: 'dsh-prompt-optimizer'
config: {}
指向自有惯例文档的示例:
- insert:
- id: prompt-optimizer
name: 'dsh-prompt-optimizer'
config:
docs: ['AGENTS.md', 'README.md', 'docs/architecture.md']
contextChars: 6000
systemPromptLocale: auto
典型用法¶
- 安装 bundle 并在配置里
insert上述name: 'dsh-prompt-optimizer'行。 - 在已有会话中打开 Composer(README 说明:全新对话首屏尚无按钮,需至少一条消息后出现 session 作用域的 dock)。
- 输入简短草稿,点击 Smart Prompt,等待回填后再发送或继续编辑。
仓库内测试:
node --test
适用场景与注意¶
适合:团队已在仓库根维护 AGENTS.md、README 等约定文档,希望把 Composer 里的即兴一句话快速变成带约束与验收标准的短 prompt,且长度受控(默认约 300 字目标、400 字硬顶)。
注意:
- 插件以当前 DSH 进程权限 读工作区文件并调用模型;安装前请自行审阅 GitHub 源码 与 MIT 许可证。
- 命令名固定为
optimize-prompt,同作用域不能重复注册。 - 长度预算对模型是软约束,硬截断仅作兜底;需要更长输出可提高
maxOutputChars。 - 社区目录页 skillhub.cn 插件条目 与 GitHub 仓库由维护者发布,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,目录站点为独立社区索引。
结尾¶
dsh-prompt-optimizer 把「项目文档里的惯例」和「Composer 里的草稿」接到一条命令上:点一次按钮,得到结构化、有据、可验收的短 prompt 并回填,减少手写扩写和幻觉路径。进一步了解可访问目录页 https://www.skillhub.cn/plugins/shellpower96/dsh-prompt-optimizer 与仓库 https://github.com/shellpower96/dsh-prompt-optimizer 。