前言¶
在 DeepSeek Harness(DSH)里写提示词时,多数人只会在输入框里写一个草稿,比如“帮我加个按钮,别搞坏别的”。这类草稿缺少明确的交付物、边界条件和验收标准,模型往往只能靠运气理解意图。
dsh-pa 在输入框工具栏里放置一个菱形按钮,点击后把草稿交给 harness 自带的 LLM 服务做一次低温改写,结果直接写回输入框;再点一次,逐字恢复原始草稿。插件不创建预览面板,不把内容复制到剪贴板,原始草稿按会话保存,保证可逆。
插件概况¶
- 名称:dsh-pa
- 维护者:rg2304luyue
- 分类:模型推理
- 简介:供 DeepSeek Harness 使用的轻量级提示词增强插件
- GitHub:https://github.com/rg2304luyue/dsh-pa
- 目录页:https://www.skillhub.cn/plugins/rg2304luyue/dsh-pa
核心功能¶
输入框按钮与就地改写¶
插件在 conversation.input.right 插入一个菱形按钮,位于模型选择器左侧。点击后,本地拦截空草稿、提交中草稿、已像成品提示词的草稿等情况,只置灰按钮并给出提示,不发起请求。通过拦截的草稿会被发送到 POST /api/dsh-pa/enhance,由 harness 的 LLM 流式改写,结果直接通过 setDraft 写回输入框,按钮转为激活态。
可逆与按会话记忆¶
每次增强前,插件会把原文按会话保存,最多保留 32 对原文/增强文对。点击一次,输入框显示增强后的文本;再点一次,原文逐字恢复。如果用户手工编辑了增强后的文本,保存的原文会被丢弃,下次增强基于当前文本进行。
缓存与连点不花钱¶
同一模型下、同一草稿在 5 分钟内再次点击,会直接返回缓存的增强文本,不再调用模型。默认 temperature: 0,保证重复点击时措辞与结构保持稳定。
结构化草稿保护¶
已像成品提示词的草稿(例如带列表标记且带有输出预期的长草稿)会被识别为“结构化草稿”,菱形置灰,不会再次改写。该判断依据草稿长度(默认 structuredMinChars: 800)与结构特征。
模型路由¶
插件支持三种模型路由优先级:
1. Config.model:配置的 provider 或 provider/model;
2. 当前会话选中的模型;
3. ctx.llm 报告的第一个已配置 provider 与模型。
三者都解析不到时,端点返回 503 NO_MODEL。
安装与启用¶
从 Git 源安装(无需 npm 包):
dsh plugin --profile desktop add github:rg2304luyue/dsh-pa
profile 名根据实际运行环境填写:desktop(Electron 桌面应用)、web(DSH Web)。插件 bundle 声明了 dsh.bundle.patch,加载器会自动插入 dsh-pa 行。
如需从本地 tarball 安装:
npm pack --pack-destination ./dist # 生成 dist/dsh-pa-0.4.6.tgz
# 在 DeepSeek Harness 里:
plugin_manager action=install_bundle target=<./dist/dsh-pa-0.4.6.tgz 的绝对路径>
卸载:
plugin_manager action=remove_bundle target=dsh-pa
配置¶
在用户层(cordis.patch.yml,在所有 bundle 层之后生效)追加同 id 的配置行:
- id: dsh-pa
name: dsh-pa
config:
model: '' # '' = 跟随当前会话选中的模型
temperature: 0
timeoutMs: 120000
maxDraftChars: 24000
structuredMinChars: 800
cacheTtlMs: 300000
配置说明:
| 键 | 默认值 | 说明 |
|---|---|---|
model |
'' |
用于改写的 provider 或 provider/model;留空则跟随输入框当前选择 |
temperature |
0 |
采样温度,0–2;低值让重复改写时措辞与结构更稳 |
timeoutMs |
120000 |
单次改写时限,5 秒 – 10 分钟;超时返回 504 ABORTED |
maxDraftChars |
24000 |
超过该长度直接拒绝,返回 413 DRAFT_TOO_LARGE,不截断 |
structuredMinChars |
800 |
达到该长度即视为成品提示词、菱形置灰 |
cacheTtlMs |
300000 |
同一模型下复用同一草稿改写的时长;0 关闭缓存 |
model、temperature、timeoutMs、maxDraftChars 每次请求读取,改动立即生效;structuredMinChars 与 cacheTtlMs 在按钮挂载时从 GET /api/dsh-pa/enhance 读取,刷新或新会话后生效。
内置改写策略¶
插件使用约 1500 字符的 SYSTEM_PROMPT,分三档策略:
- 永不做:不回答请求、解释改写、用前言/引号/代码围栏包裹结果;不把草稿复述成条目;不改变含义、范围、术语、数字或语气;不编造事实、文件、API 或验收标准;不重命名标识符;不切换语言;不添加草稿没有要求的流程规则、错误处理或测试内容。
- 总是做:先写一句目标,用草稿自己的措辞点明交付物;然后补上目标句缺少的要求,沿用草稿自身的顺序与编号;把含糊措辞落实成草稿隐含的具体条件;最后给一条收尾的输出要求。这是唯一允许模型主动添加的条目。
- 风格:纯 markdown,目标句 + 列表,60–200 词、上限 250。问句可转成分析请求,但陈述句不得改成反问。同一草稿重跑时措辞、结构、顺序保持稳定;已经精确的草稿只做最小改动。仅当歧义会影响实现(尺寸、位置、默认状态、持久化)时,才在结尾加一句假设/Assuming。
默认 temperature: 0,重复点击同一草稿时返回完全相同的文本。本版本不支持自定义策略,Config 管的是调用参数,不是提示词。
异常与边界¶
| 情况 | 行为 |
|---|---|
| 空 / 纯空白草稿 | 本地拒绝,按钮置灰并显示 button.empty 提示 |
草稿处于 submitting / adjudicating |
本地拒绝,按钮置灰并显示 button.blocked 提示 |
| 草稿已像成品提示词 | 本地拒绝,按钮置灰并显示 button.structured 提示 |
运行时没有 inputActions.setDraft |
本地拒绝,按钮置灰并显示 button.unsupported 提示 |
超过 maxDraftChars |
返回 413 DRAFT_TOO_LARGE,拒绝而非截断 |
| 请求体为空或 JSON 非法 | 返回 400 BAD_REQUEST |
| 请求体超过 512 KiB | 返回 413 BAD_REQUEST,直接销毁 socket |
| 解析不到模型 | 返回 503 NO_MODEL |
| 上游模型失败 | 返回 502,附带稳定错误码(AUTH、RATE_LIMIT、NO_ADAPTER、CONTEXT_WINDOW_EXCEEDED 等) |
| 模型没有返回可用文本 | 返回 502 EMPTY_RESULT,草稿不动 |
超过 timeoutMs |
返回 504 ABORTED,调用被中止 |
| 处理函数里的意外错误 | 返回 500 INTERNAL,绝对路径脱敏成 <path> |
| 任何失败 | 输入框文本一律不改,tooltip 显示 error.prefix + 宿主消息,6 秒后自动消失 |
适用场景与注意事项¶
dsh-pa 适合需要快速把口语化草稿转化为结构化提示词的场景,尤其是需要反复调试 prompt 的智能体开发与实验阶段。插件以当前 dsh 进程权限运行,安装前建议查看源码与许可证。
插件不提交消息,不碰附件、队列与会话历史,在你亲自按下发送之前,任何内容都不会进入对话。
总结¶
dsh-pa 在 DSH 输入框中提供一个菱形按钮,把草稿一次性改写成结构化的提示词,再点一次即可还原。它通过本地拦截、按会话记忆、五分钟缓存、结构化草稿保护等机制,在保证原意不变的前提下,提升提示词的清晰度与可复现性。
- 目录页:https://www.skillhub.cn/plugins/rg2304luyue/dsh-pa
- GitHub:https://github.com/rg2304luyue/dsh-pa