DeepSeek Harness 提示词优化插件
这是一个可安装的 DeepSeek Harness profile bundle。Web UI 会在发送按钮旁增加一个闪光按钮,宿主插件也可以在主 agent 请求前调用辅助 LLM 自动优化用户提示词。实现方式是使用 Harness 的客户端扩展槽和 Cordis 的协作式 agent/pre-step waterfall,不修改 agent loop。
安装
要求 DeepSeek Harness 0.1.0-rc.6 或更高版本。
gh repo clone lizhecome/deepseek-harness-prompt-optimizer
cd deepseek-harness-prompt-optimizer
dsh plugin --profile web add --ignore-workspace-root-check .若要用于一次性任务,可将 web 改为 headless,此时只启用自动优化;输入框按钮仅在 web profile 中提供。DeepSeek Harness 会先把 add . 锚定到当前 checkout,再让 pnpm 切换到 profile 目录。包清单声明了 dsh.bundle patch 和 Web 客户端入口,因此安装后会自动挂载宿主优化器、invariant companion 和输入框控件。
卸载命令:
dsh plugin --profile web remove --ignore-workspace-root-check @lizhecome/dsh-prompt-optimizer行为
输入框按钮
Web UI 会通过 conversation.input.right 扩展槽把闪光按钮放在正常发送控件之前。草稿为空或输入框正忙时按钮不可用。点击后会执行一次辅助模型请求,并用改写结果替换尚未发送的草稿。
应用结果前,按钮会同时比较草稿 revision 和完整文本。若用户在优化期间继续编辑,返回结果不会覆盖新内容,当前草稿会保留。网络、路由或模型失败时也不会改动草稿,错误会显示在按钮的无障碍状态和 tooltip 中。
宿主还提供 /optimize-prompt <prompt> 命令。按钮成功后会为该结果登记一次严格文本匹配:若原样发送,自动监听器不会再次优化;若先编辑再发送,文本不再匹配,发送时会按正常自动策略处理。
自动优化
监听器会先调用下游监听器,再检查最终的 PreStepDecision。它只优化来源为直接用户、全部内容块都是文本、且去除首尾空白后长度达到 minChars 的消息。插件上下文、工具结果、goal round、relay、图片和短提示词都会原样通过。
默认的 append 模式保留原始用户消息,并将优化结果作为单独标记来源的 notice 追加。两条消息都会在主请求前记录为 user/message 事件,因此回放内容与模型实际看到的内容一致。replace 模式保留原消息的 identity 和 source,但只记录并发送优化后的文本。
优化模型的路由优先级如下:
1. 配置中的 provider 与 model; 2. session 最近一次已路由的请求; 3. agent 显式配置的 provider/model。
若三者都不存在,优化会失败。默认 pass-through 策略会记录 warning 并保留原提示词;fail 会让拟进入的 step 失败。turn 的取消信号始终会继续传播。
配置
后应用的 profile patch 会整体替换一行的 config,因此需要重写所有希望保留的字段:
- id: prompt-optimizer
config:
provider: deepseek
model: deepseek-chat
maxTokens: 1024
minChars: 20
delivery: append
failureMode: pass-through
instruction: >-
Rewrite the prompt for precise execution. Preserve every constraint and
return only the rewritten prompt; do not solve the task.| 字段 | 默认值 | 含义 |
|---|---|---|
provider | '' | 辅助模型 provider;必须与 model 一起设置,留空则跟随 agent 路由。 |
model | '' | 辅助模型;必须与 provider 一起设置,留空则跟随 agent 路由。 |
maxTokens | 1024 | 优化输出的正整数 token 上限;达到上限的结果会被视为不完整并拒绝。 |
minChars | 20 | 触发优化的非负字符数阈值。 |
delivery | append | append 保留原文并追加有来源的 notice;replace 替换原文。 |
failureMode | pass-through | 运行失败后保留原提示词,或用 fail 让拟进入的 step 失败。 |
instruction | 内置 | 辅助调用的 system instruction;空白值会在加载时被拒绝。 |
provider 与 model 是不可拆分的一对。只设置其中一项、使用非整数上限或空白 instruction 都会导致插件加载失败。
模型与成本影响
每条符合自动优化条件的提示词会增加一次独立模型请求。点击按钮也会增加一次请求,但原样发送按钮结果时会消耗一次性绕过标记,不会再增加一次优化请求;若发送前编辑了结果,则重新按自动条件判断。每次优化的输入是草稿或直接用户消息以及优化器 system instruction,输出受 maxTokens 限制。自动优化的 append 会让主请求同时包含原文和优化结果,因此 token 更多;replace 不重复主请求 token,但 durable history 中不再保留原文。辅助请求复用 session id 做路由,但不复用主会话前缀。
内置 instruction 要求优化器保留语言、事实、标识符、引用文本、约束和输出格式,减少歧义与冗余,不虚构需求,并且只返回改写后的提示词。
已知限制
- 多模态或混合内容块的直接用户消息不会被优化。
- 提示词优化本质上仍是模型生成,可能扭曲意图;需要审计性时应使用
append。 - 辅助模型交互不会作为单独的模型事件保存。按钮结果会记录在 durable command lifecycle 中,自动交付的结果则记录在主 turn 中。
开发
pnpm install
pnpm run check测试会启动已发布的 Harness 服务和真实 agent loop,并使用确定性的进程内 LLM adapter,覆盖 durable append/replace、失败回退、短提示词绕过、命令执行、一次性去重、监听器 dispose、DOM 草稿替换和并发编辑保护。