前言¶
在 DeepSeek Harness(DSH)里跑多模型智能体时,常见需求是:同一套 Harness,不同模型要不同的 system 指令——例如 Flash 用精简 persona,主模型用完整规范。社区里已有通过改写 @deepseek-ai/* 包内源码、用大量字符串替换表注入 prompt 的做法;那种方式对 Harness 版本敏感,重装依赖会抹掉补丁,且往往无法真正按模型分流。下面介绍的 dsh-prompt-armor(维护者 caixuf,分类:模型推理)走 Harness 官方提供的 ctx.systemPrompt.section() 接缝,在组装 system prompt 时按当前模型匹配 profile,注入对应文本,无需改核心文件、无需重启即可在下一步生效。
这是什么¶
dsh-prompt-armor 是 DSH 社区插件:为每个模型(或一类模型)配置命名 profile(prompt 正文 + 适用的 model pattern),智能体组装 system prompt 时,命中当前 model id 的 profile 会被注入;未命中则不改默认 system prompt。数据由 Host 落在磁盘,桌面端提供 Settings → Model Prompts 面板编辑;插件卸载后 section 注销,prompt 恢复默认形态。许可证 MIT,package 版本 0.1.0(以仓库 package.json 为准)。
与「全模型同一 prompt」做法的差异¶
资料中对比了社区插件 dsh-purge:后者依赖改写 node_modules 内源码与固定替换表,版本一变字面量可能对不上;包管理器重装会清掉补丁。本插件在 README 中说明其实现了 dsh-purge 宣传但未在代码里做的 per-model dispatch——从 assembly context 读取 model id,再选 profile,而不是对所有模型注入同一段文字。
核心功能¶
Profile 与字段¶
一个 profile 包含:显示名称、适用模型 pattern(每行一个,* 为通配)、是否启用、以及注入的 Prompt 正文。Prompt 内仅替换 {{model}} 与 {{provider}};其它 {{…}} 原样保留(section 注册时 interpolate: false,避免用户正文里的占位符触发 Harness 未知变量错误)。
匹配规则¶
优先级由 README 归纳如下:
- 精确 model id 优于通配;
- 更长的通配 pattern 优于更短的;
- 禁用的 profile 不参与;
- 无任何匹配时不注入,system prompt 不变。
示例:deepseek-v4.1-flash 只作用于该 id;deepseek-* 作用于所有 DeepSeek 模型;* 为兜底。
Host 侧注入¶
Host 注册名为 dsh-prompt-armor:profile 的 section,text 为函数,每次组装时根据 context.agent?.options?.model 调用 selectProfile 取正文。Browser 侧为无构建步骤的 JavaScript,注册 settings section,经 Harness 自带 Web 服务上的小 JSON 路由与 Host 通信;变更请求带自定义 header,降低跨源页面误操作风险。
磁盘文件¶
规则由 Host 写入 $DSH_HOME/prompt-armor/(可通过配置改 dataDir):
index.json profile 列表与各 profile 的 model patterns
profiles/<id>.md 单个 profile 的 prompt 正文
面板经 Host 写盘;也可直接用编辑器改文件,运行中的 agent 会在 下一步 读到变更。
安装与启用¶
本地目录安装(命令须与 README 一致,将 <path-to-this-directory> 换成本机克隆或解压后的插件目录路径;下文不执行 git clone):
dsh plugin --profile desktop add <path-to-this-directory>
或在桌面客户端 Settings → Plugins,在安装框填入该目录。
插件在 cordis.patch.yml 中可配置:
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
是否向 system prompt 贡献 section |
dataDir |
$DSH_HOME/prompt-armor |
profile 存储目录 |
order |
-100000 |
注入段在 prompt 中的位置(数字,默认最前,便于 persona 作为框架;大于 10200 可放在 deployment persona 后缀之后) |
showProfileName |
true |
是否在注入正文前显示 profile 名称 |
典型用法¶
- 按上文完成安装并确认插件已加载。
- 打开 Settings → Model Prompts:左侧列表选 profile,右侧编辑 Name、Applies to、Enabled、Prompt。
- 在 Applies to 中按行填写 model pattern,例如仅给某一 id 加规则,或
deepseek-*/*分层覆盖。 - 在 Prompt 中按需写指令,并用
{{model}}、{{provider}}引用当前上下文。 - 保存后发起或继续对话;下一次 prompt 组装即应用新规则。
仓库 examples 目录可提供示例 profile,具体文件名以 GitHub 树为准。
适用场景与注意¶
适合:在同一 DSH 桌面/Harness 进程里为多模型维护不同 system 指令;希望用官方 section 扩展点而不是 patch node_modules;需要通配 + 精确 id 分层匹配。
注意:
- 插件以 当前 DSH 进程权限 运行,安装前请自行审阅源码与 MIT 许可证。
- 社区目录 SkillHub 插件页 与 GitHub 仓库由维护者发布,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本文不将其描述为官方应用商店条目。
- 依赖
@deepseek-ai/cordis~4.0.5,Node >= 20;与已安装 Harness 版本不匹配时以实际环境为准。 - 无匹配 profile 时不注入——若期望「默认 persona」,需显式配置 catch-all(如
*)profile。
结尾¶
dsh-prompt-armor 把「按模型换 system prompt」做成可编辑的 profile 规则,并挂在 Harness 官方的 system-prompt section 上,避免版本脆弱的源码替换表,且匹配逻辑在资料中有单测与 integration 测试说明。进一步了解与安装:
- 目录页:https://www.skillhub.cn/plugins/caixuf/dsh-prompt-armor
- 源码与 README:https://github.com/caixuf/dsh-prompt-armor