dsh-prompt-armor:在 DeepSeek Harness 里按模型注入 system prompt

前言

在 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 归纳如下:

  1. 精确 model id 优于通配;
  2. 更长的通配 pattern 优于更短的;
  3. 禁用的 profile 不参与;
  4. 无任何匹配时不注入,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 名称

典型用法

  1. 按上文完成安装并确认插件已加载。
  2. 打开 Settings → Model Prompts:左侧列表选 profile,右侧编辑 Name、Applies to、Enabled、Prompt。
  3. 在 Applies to 中按行填写 model pattern,例如仅给某一 id 加规则,或 deepseek-* / * 分层覆盖。
  4. 在 Prompt 中按需写指令,并用 {{model}}、{{provider}} 引用当前上下文。
  5. 保存后发起或继续对话;下一次 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜