DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

ssuper1 /

ssuper1/dsh-model-behavior

Verified

Model-aware behavior prompt injection for DeepSeek Harness: per-provider groups, per-model checkboxes and per-model prompt overrides.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@721ec18b

dsh-model-behavior

给 DeepSeek Harness 按 provider / 模型分组 自动追加一段可编辑的行为提示,如对某些模型进行「任务收束」。

非官方插件,与 DeepSeek 官方无隶属关系。

  • 按 provider 分组选择是否生效,分组内可逐模型勾选;
  • 一个规则里可以放多条编号提示词(1 号、2 号、3 号…),每个模型勾选用其中哪几条;
  • 每个模型还能再单独追加一段只对自己生效的文本;
  • 面板内实时预览当前草稿对某个 provider/model 的最终注入文本;
  • 只追加动态上下文,不替换核心系统提示,不改工具说明、权限或执行代码。

设置面板

上图是「设置 → 模型行为提示」里的规则卡片:勾选一个 provider 分组后,组内模型直接展开,每个模型前有复选框、右侧有「提示词」可以挑用哪几号提示词并追加专属文本。

安装

需要已安装 DeepSeek Harness 桌面端(peerDependencies 要求 @deepseek-ai/dsh 0.2.x)。

从 GitHub 安装(DSH 自带的插件命令,github:owner/repo 语法):

dsh plugin --profile <profile> add github:ssuper1/dsh-model-behavior

<profile> 换成你自己的 profile 名,例如 web。桌面端使用的 desktop profile 是保留名:npm 版 CLI 会拒绝管理它,需用桌面端自带的同名命令执行,或在插件市场里搜索安装。

手动安装(不想用包管理器时):把本仓库复制到 <profile>/node_modules/dsh-model-behavior,然后在 <profile>/package.json 里

  1. dependencies 加 "dsh-model-behavior": "file:<仓库绝对路径>"
  2. dsh.profile.bundles 数组追加 "dsh-model-behavior"

仓库根目录的 node install-local.mjs --profile <desktop|名称|绝对路径> 会自动完成上述两步并备份 manifest。

安装后必须重启桌面端(桌面端不会热加载新增 bundle),再进入「设置 → 模型行为提示」。也可以从插件管理里打开本插件的配置行。

使用

  • 开关控制整个插件或单条规则。
  • 勾选一个 provider 分组后,该分组下方直接展开它当前已注册的全部模型,每个模型前一个复选框:
    • 默认全选,表示该分组所有模型(包括以后新增的模型)都触发本规则;
    • 取消勾选即把该模型排除出本规则,各分组的勾选互不影响;
    • 全部取消勾选表示该分组已选但任何模型都不触发(内部存 __none__ 标记,与「未启用该分组」区分);
    • 重新勾满全部模型会自动折叠回「全部」,以后新增模型继续自动生效;
    • 模型目录读不到时(例如连接器未就绪),该分组改为显示一个可手写模型 ID 的输入框。
  • 提示词窗口:规则底部的「1 号提示词」是默认文本,所有模型初始都用它;点「+ 新增提示词窗口」可以加 2 号、3 号…(各自可编辑、可删除,1 号不可删)。
  • 每个模型行右侧的「提示词」展开一个选择区:
    • 勾选这个模型要用哪几号提示词,默认只勾 1 号;勾多号时按编号顺序用空行拼接;
    • 下面的文本框是只作用于该模型的追加内容,与所选编号的文本拼接后一起注入;清空即不加;
    • 行内标签会显示「默认(1 号)」「1、3 号」或「专属 N 字」,一眼能看出哪些模型偏离了默认;
    • 「恢复默认(只用 1 号)」把勾选和专属文本一起清掉;也可以取消所有编号(并有专属文本)让该模型不注入规则文本。
    • 勾选与专属文本只改变注入的文本,不改变匹配范围:是否命中仍由分组勾选和全局包含/排除决定。
  • 「全局仅应用模型 ID」对该规则已选的所有分组一起生效;「排除模型 ID」优先级最高。三处同时存在时取交集。模型 ID 精确匹配,不支持通配符。
  • 分别选择主会话、子代理。
  • 多个匹配规则按面板顺序一起追加;模型仍需自行遵循这些行为建议。
  • 保存后,已载入的插件在后续请求读取新配置;已经发出的请求不受影响。

实现

宿主侧(lib/index.js)注册 agent/request waterfall 的 prepend 监听,把 agent 到最终 {provider, model} 的路由写进 WeakMap;同时注册一个 required: true、interpolate: false 的动态上下文,每次请求刷新时按该路由算出要追加的文本。

选这条路径的原因:agent/request 的解析发生在 refreshContext 之前,所以上下文拿到的是本次请求真正使用的 provider/model,而不是会话头里可能已经过期的值;required 让这段上下文在 complete persona 还原后依然保留;interpolate: false 保证提示词里的 {{...}} 原样输出。

浏览器侧(lib/client.js,由 build.mjs 把 lib/core.js + lib/panel.js 内联生成)注册设置区块 model-behavior 和插件管理的配置行,通过配置表单的 snapshot/mutate 读写,版本冲突时拒绝保存并提示重新载入。

开发

node build.mjs                      # 重新生成 lib/client.js
node --test test/core.test.js test/client.test.js test/host.test.js test/panel.test.js
node scripts/verify-and-install.mjs # 重建 → 语法检查 → 全部测试 → 安装 → 校验副本与 manifest

test/client.test.js 会校验 lib/client.js 确实内嵌了当前的 core.js 与 panel.js,忘记重建会直接失败。

test-runtime.mjs 用桌面端 Electron 加载 app.asar 内实际打包的 Cordis 与 SystemPrompt 跑接线测试:

$env:ELECTRON_RUN_AS_NODE="1"; & "C:\Users\20393\AppData\Local\Programs\DeepSeek Harness\DeepSeek Harness.exe" test-runtime.mjs

验证状态

30 项 Node 测试通过(core 21 + client 6 + host 2 + panel 2),覆盖:编辑与预览、连续两次保存的版本、旧版本冲突拒绝与重新载入、分组默认范围、未来模型、精确包含/排除、主子范围、规则顺序、{{}} 文本保留、路由捕获、不同 agent 隔离、按分组限定模型、复选框全选折叠与 __none__、多号提示词按序拼接、越界号回退 1 号、专属文本追加、超长校验、client.js 与源码一致性。

test-runtime.mjs 在真实运行库下全部通过:事件 waterfall 捕获最终路由、schema 默认值、按分组模型过滤、编号提示词与逐模型选用、专属文本追加、动态上下文渲染、重复刷新不累积、complete persona 兼容。

这些是规则与运行库的接线测试,不是真实模型请求的端到端验证。

回退

从 <profile>/package.json 的 dependencies 和 dsh.profile.bundles 里移除 dsh-model-behavior 后重启;安装脚本每次都会留下 package.json.before-model-behavior-<时间戳>.bak。只想临时停用就用面板总开关。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 721ec18bf3fd

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout