DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-prompt-armor

Prompt Armor

DeepSeek Harness 的按模型提示词注入:通过官方系统提示词接口为每个模型设置独立的系统提示词,并提供用于编辑规则的设置面板。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:caixuf/dsh-prompt-armor#16d331870a7103914b8de27cc7a8f9b42d2e0e7b
README兼容性版本

兼容性与来源证明

Prompt Armor 以 dsh-prompt-armor 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/24

版本

0.1.0stable
2026/10/24

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/24
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 security-access 分类下经过校验的插件。

Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件Pocketdsh-pocket把 DeepSeek Harness 装进你的口袋:一个包、一个设置页,手机扫码即同步访问电脑上的 DSH(局域网 + 公网,实时同屏)。Codex Subscriptiondsh-codex-subscription在 DeepSeek Harness 中通过 OAuth 使用 ChatGPT 和 Codex 订阅,支持配额、安全重置、网络搜索、图像和快速模式,并可通过 ChatGPT 移动应用(Beta)控制 DSHXdpooldsh-xdpool将你拥有的所有免费额度汇聚为一个 DSH 模型池:合并所有本地登录的 WorkBuddy 账户并自动故障转移,通过二维码/网页登录 13 个供应商,汇总 76 个供应商的免费层额度,此外还提供用量仪表盘、模型路由和本地 OpenAI 兼容网关

README

dsh-prompt-armor

Give each model its own system prompt in DeepSeek Harness.

A profile is a named prompt plus the model patterns it applies to. When an agent assembles its system prompt, the profile that matches the current model is injected. Different models therefore get different instructions, from the same harness, with no restart and no core-file patching.

Why this exists

The community plugin dsh-purge does the same job — inject a prompt into every model — by rewriting the files inside @deepseek-ai/* with a 355 KB table of string replacements. That approach has three consequences:

  • It is version-fragile. The table matches literal source strings, so a Harness release that moves a space silently breaks the plugin. The table needs a new branch for every release.
  • It is undone by the package manager. The patches live in node_modules, so a reinstall wipes them and the plugin has to re-patch on the next start.
  • It has to guess. The official workspace baseline is a user message, not a prompt section, so the plugin's "drop the baseline" filter matches by name and text and usually does not fire.

This plugin uses the official seam instead. The Harness exposes ctx.systemPrompt.section() for exactly this purpose, and the harness itself uses it for every tool's guidance text. The section is registered on the plugin's own context, so unloading the plugin removes it and the system prompt returns to its default shape.

It also implements a thing dsh-purge only advertises: per-model dispatch. The upstream README says "swap prompts per model", but its code has no model, provider, or route key anywhere — the prompt it injects is the same for every model. Here the model id is read from the assembly context, so the dispatch is real.

Install

dsh plugin --profile desktop add <path-to-this-directory>

Or, in the desktop client, use Settings → Plugins, and enter the directory in the install box.

Use

Open Settings → Model Prompts. The panel lists the profiles on the left and edits the selected one on the right.

FieldMeaning
NameThe label shown in the panel and, optionally, above the injected text.
Applies toModel patterns, one per line. * is a wildcard.
EnabledWhether the profile contributes at all.
PromptThe text injected into the system prompt.

Two variables are substituted in the prompt body: {{model}} and {{provider}}. Any other {{…}} is left exactly as written.

Matching

The most specific pattern wins:

  • an exact model id beats a wildcard;
  • a longer wildcard beats a shorter one;
  • a disabled profile never applies;
  • with no match, nothing is injected and the system prompt is unchanged.

So a profile listing deepseek-v4.1-flash applies to that model only, while a profile listing deepseek-* applies to every DeepSeek model, and a profile listing * is the catch-all.

Files

The Host owns the rules on disk, under $DSH_HOME/prompt-armor/:

index.json          the profile list and their model patterns
profiles/<id>.md    one profile's prompt text

The panel writes through the Host, but the files are ordinary text: edit them in any editor and a running agent picks the change up on its next step.

Configuration

The plugin's row in cordis.patch.yml accepts:

KeyDefaultMeaning
enabledtrueWhether the plugin contributes a section at all.
dataDir$DSH_HOME/prompt-armorWhere the profiles live.
order-100000Where the injected text sits in the prompt.
showProfileNametrueWhether the profile name heads the injected text.

order is a plain number, so it does not depend on a named slot that a future release may renumber. The default puts the injected text first, ahead of the harness' own identity line, so a persona reads as the frame rather than as an aside. A value above 10200 places it after the deployment persona suffix instead, where it reads as a trailing instruction.

How it works

The Host half registers one prompt section:

ctx.systemPrompt.section({
  name: 'dsh-prompt-armor:profile',
  order: config.order,
  interpolate: false,
  text: (context) => {
    const model = context.agent?.options?.model
    const profile = selectProfile(store.profiles, model)
    return profile === null ? '' : store.text(profile.id)
  },
})

text is a function, so it is evaluated at every prompt assembly and can read the model the assembly is for. The section is registered with interpolate: false, because a user prompt may legitimately contain {{…}} and the harness throws on an unknown variable reference.

The browser half is plain JavaScript with no build step: it registers a settings.section entry and talks to the Host over a small JSON route on the harness' own web server. Mutating requests carry a custom header, so a cross-origin page cannot drive them.

Tests

node test/rules.test.mjs       # the matcher and the store
DSH_ASAR=<resources>/app.asar node test/integration.test.mjs

The integration test extracts the installed @deepseek-ai/dsh-system-prompt from the desktop app.asar, mounts the Host half on the real registry, and asserts the assembled prompt — so "the injected text reaches the model" is checked against the harness that is actually installed.

Licence

MIT.