前言¶
在 DeepSeek Harness(DSH)里写智能体或会话时,经常需要把口语化的需求转成可执行的提示词。WorkBuddy 的「增强提示词」功能能做这件事,但它只在 WorkBuddy 环境内可用。下面介绍的 dsh-prompt-enhance 插件复用同样的增强规则,以独立方式在 DSH 中运行:在输入框添加「增强」按钮,并提供一个 enhance_prompt Host 工具。
插件定位¶
这个插件由维护者 sun04222 提供,属于「模型推理」分类。它只做一件事:把用户输入的原始提示词改写成更清晰、更具体的提示词,只返回改写结果本身。增强规则与 WorkBuddy 的「增强提示词」对齐,但指令文本由本项目自行撰写,不含任何第三方文本,可脱离 WorkBuddy 独立运行。
核心能力¶
两个入口¶
- 输入框右侧的「✦ 增强」按钮:点击后把当前草稿发给插件增强,成功后整段替换草稿并记住原文;草稿被手动改动后自动回到「增强」状态。
- Host 工具
enhance_prompt:接受参数text(必填)和model(可选),返回增强后的提示词。
共同管线¶
两者使用同一条管线处理请求:
- 空输入短路:
text.trim() === ''直接返回empty_input,不发起模型调用。 - 解析模型路由:参数
model> 插件配置provider/model> 当前默认模型(agentDefaultModel.currentSelection())。 - 单次、非 agent 式补全:一条 system 消息 + 一条 user 消息(用原文替换
{input}),不带工具、不带会话历史、不做多轮。 - 收集文本:累加流式
text-delta;finish.reason.kind === 'error' | 'aborted'记为失败。 - 后处理:
trim→ 剥掉首尾一个包裹引号字符 → 若trim后为空则失败;否则原样返回。
整个过程不执行用户提示词里的任何请求,只产出「改写后的提示词」。
输入输出格式¶
输入(工具参数)
{
"text": "帮我写一个登录页面", // 必填:用户原始提示词
"model": "deepseek/deepseek-chat" // 可选:model-id 或 provider/model-id
}
text 不预设格式,中/英/混合语言、多行、含代码片段都可;空白输入返回 empty_input。
输出(固定信封)
// 成功
{ "success": true, "text": "请解释这段代码的主要功能..." }
// 失败
{ "success": false, "text": "", "code": "llm_error", "error": "Enhanced result is empty" }
code 可取值:empty_input、llm_unavailable、llm_error、unknown。
增强规则¶
增强遵循与 WorkBuddy 一致的规则,但措辞为本项目原创:
硬约束¶
- 语言一致:输出必须与输入同语言;中文入 → 全中文,英文入 → 全英文,混合入 → 自然混合。
- 只输出提示词:不加解释、前言、Markdown 围栏、标签或分析。
- 不输出语言元信息:不写「用户输入是中文」这类说明。
- 保留原意:保留原请求的意图、主题、约束和目标输出类型,不回答该请求。
增强要求¶
- 做实质性增强:澄清任务、范围、约束、期望产出。
- 原提示词已经清楚时,做轻度润色,而不是原样返回。
- 完整且简洁,不得以未完成的列表、悬空连词或冒号结尾。
- 不添加无关要求、无依据的事实或多余章节。
分析与改写原则¶
先评估:主目标、歧义与缺口、指令清晰度、缺失的上下文;再应用:写清具体指令、补必要上下文、设定显式参数与约束、规定输出结构、给相关示例、语气与复杂度匹配用途、删除冗余。保持原目标,只做现实可加的改进。
明确禁止¶
- 不索要指南/教程(除非用户主动要)、不索要代码片段。
- 不引入用户未提及的具体技术栈。
- 不解释「怎么做(HOW)」,聚焦「做什么(WHAT)」。
- 不回答提问,而是把它扩写得更具体。
长度¶
提示词要求「约 800 字符以内」。这是模型侧软约束,代码不做截断,也不因超长报错。
适用场景¶
适合以下场景:
- 用户说「帮我优化/增强/润色这个提示词」「把这句话改成能直接发给模型的提示词」。
- 把一句口语化需求(如「给我的狗做个网站」)扩成可执行的任务描述。
- 将提示词交给另一个模型/另一个会话前,统一做一次清晰化。
- 批量为已有提示词库做统一风格的改写(逐条调用)。
不适用场景:
- 代替执行用户请求(本工具只改写提示词,不写代码、不解释代码)。
- 事实检索、翻译、摘要、改写文章正文(会被语言一致 + 只输出提示词两条规则带偏)。
- 需要多轮追问才能澄清的需求——本工具单轮、无对话状态。
安装与启用¶
从 GitHub 安装¶
dsh plugin --profile web add github:sun04222/dsh-prompt-enhance
安装后在设置 → 插件里能看到「提示词增强」;前端按钮需要刷新一次页面。
配置(cordis.patch.yml)¶
- insert:
- id: dsh-prompt-enhance
name: 'dsh-prompt-enhance'
config:
provider: '' # 默认模型 provider;空则用当前默认模型
model: '' # 默认模型 id;空则用当前默认模型
timeoutMs: 60000 # 单次补全墙钟上限(毫秒)
路由优先级:工具参数 model > 配置 provider+model > 当前默认模型。
本地开发¶
安装后无需重启即可用;再次修改代码后需把该 bundle 关一次再开,才会重新载入新模组。
node test/prompt.test.mjs # 纯函数单测(10 项,进程内运行)
node --check index.js; node --check prompt.js; node --check client.js
边界条件¶
- 输入为空白 / 只有换行 →
empty_input,不调用模型。 - 模型返回空白或只有引号 →
llm_error/Enhanced result is empty。 - 模型返回被引号包裹 → 剥掉首尾各一个引号字符(
"'“”‘’)。 - 输入含
$&、$'、$`→ 按字面量保留。 - 超时 → 默认 60s(
timeoutMs可配),返回llm_error。 - 调用被取消 → 返回
llm_error。 - 超长输入 → 不截断、不预校验;超出模型上下文时由 provider 报错 →
llm_error。 - 超长输出 → 不截断(800 字符仅是提示词要求)。
- 并发 → 无共享状态,可并行调用。
- 无可用模型 →
llm_unavailable,不影响插件其余功能。
注意事项¶
- 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
- 插件依赖 DSH 的
llm服务(有可用模型路由即可),不依赖 WorkBuddy 安装目录、其 sidecar、任何网络私有接口、任何 npm 依赖。 - 指令文本为本项目原创,与 WorkBuddy 规则一致但措辞不同,因此模型的文风可能与原应用略有出入。
生态背景¶
DSH 理念是「一切皆插件」。社区目录(https://www.skillhub.cn)是独立站点,与 DeepSeek / 幻方无官方从属关系,此处介绍仅为社区项目。