对准 dsh 0.1.5-rc.1(Node.js ≥18;Windows 无感路径依赖 Node ≥22 的 ,更低版本仍靠文件级 补丁)。其它版本原文对不上时会显示待应用 / 跳过,不会乱改文件。registerHookswindowsHide

兼容 0.1.2 社区预设的 字段,以及 历史会话的 v0 。装完必须 Apply + 重启dsh-persona textdsh-mnemonsummary

为什么需要本地红队清洗

大模型已经进到本地 Agent / Harness:提示词、审批门、沙箱和会话迁移都会在运行时改写模型行为。只测「模型会不会答」不够,还要看宿主层有没有把合法评测请求掐死。

  1. 暴露宿主护栏边界:在本机已安装的 包上做可回滚清洗,才能看清哪些拒绝来自模型,哪些来自 Harness 默认文案、审批阶梯或会话格式校验。@deepseek-ai/*

  2. 保住官方能力,只拆拒绝锁:不另造第二套身份,不删官方优化;身份只认操作员自己的 。prompt-inject.md

  3. 升级可复现:npm 覆盖 后自动重打补丁;原文对不上就跳过,避免把 0.1.5 包改坏。node_modules

本项目是本地 Harness 清洗插件,不是公网扫描器,也不是对第三方站点的攻击套件。

严正法律免责与合规使用声明(严格法律与合规免责声明)

【零容忍严正申明】:本项目坚决反对并严禁任何形式的违法犯罪行为。开发者绝不支持、不鼓励、不协助任何未授权网络攻击、漏洞利用、数据窃取、非法侵入计算机信息系统,或生成违法违禁内容的活动。

  1. 合法受控范围限定:本项目()定位为本地 DeepSeek Harness 的红队科研插件与鲁棒性评测辅助工具。严禁在未经所有者合法书面授权的目标、公网在线系统或生产业务上使用本项目或其衍生补丁。一切测试必须限制在本机已授权安装的 Harness、离线本地合成靶标(Local Synthetic Fixtures)、授权网络安全演练靶场及合规实验室受控环境中进行。dsh-purge

  2. 严禁违法与违禁用途:使用者严禁利用本项目直接或间接从事:

    • 任何违反《中华人民共和国刑法》、《中华人民共和国网络安全法》、《中华人民共和国数据安全法》、《中华人民共和国个人信息保护法》等法律法规的行为;

    • 未经授权渗透、攻击公私机构计算机信息系统,实施勒索、破坏、撞库或传播恶意载荷;

    • 诱导、生成或传播危害国家安全、恐怖主义、暴力血腥、涉黄涉赌、诈骗、侵犯公民隐私或知识产权等法律明令禁止的内容;

    • 违反相关大模型提供商的《服务条款(Terms of Service)》与《滥用政策(Usage Policy)》。

  3. 使用者独立承担全部责任:本项目依据 MIT 开源协议「按现状(AS-IS)」提供,开发者不对软件的完整性、安全性与适用性作任何明示或暗示保证。使用者应对自身的全部下载、部署、运行、修改、传播行为,以及由此产生的全部输入与输出后果,承担独立、完全的民事、行政及刑事法律责任。作者与贡献者不对使用者滥用承担任何直接、间接或连带责任。

  4. 违约即终止授权:任何将本项目用于非法攻击、恶意活动或违规行为的个人或实体,其开源软件使用许可自违法违规行为发生之日起自动且不可撤销地立即终止。该主体须立即停止使用并永久销毁本项目的全部代码、脚本与衍生数据,并依法承担相应法律责任。

  5. 第三方独立性声明:本项目属于完全独立的开源安全评测研究项目,与 DeepSeek 官方或其关联主体无任何隶属、商业合作、授权或官方背书关系。

  6. 同意即约束:任何克隆、下载、安装、二次分发或运行本项目代码的行为,均视为已阅读并完全同意上述全部条款。若不同意,请立即停止使用并删除全部代码与文件。

安装方式

Web 端和桌面端分开装、分开清洗,互不影响。

宿主

简介

默认怎么装

Web 端(官方)dsh web

web

PATH 上的官方dsh

桌面端(社区 DSH Desktop

desktop

桌面应用自带终端里的 (不要用 PATH 上的官方 )dshdsh

官方 Harness 桌面 EXE

default

官方 ,或下面的dshdsh://

装完后都要:

  1. 完全退出并重启刚装的那个宿主(Web 关 ;桌面端退出托盘再打开 )dsh webDSH Desktop.exe

  2. 这个宿主的设置页出现「规则设定」后点「应用」(只写入 profile 还不会改 )@deepseek-ai

  3. 启动后会自动清洗当前宿主;没有 时写入默认注入(已有文件不覆盖,空文件表示不注入)prompt-inject.md

Web 的「应用 / 重启 / 卸载」只动 Web。桌面端的「应用 / 重启 / 卸载」只动桌面应用,不会去拉 。dsh web

插件生态市场DeepSeek Harness Hub(只看介绍;不要用 ,那个地址不是 pnpm 能解的 tar,会报 )deepseek.stream/api/plugins/download?...ERR_PNPM_TARBALL_EXTRACT

Web 端(默认)

dsh plugin --profile web add https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip

当前目录已是本仓库时:

dsh plugin --profile web add .

然后关掉 再开,在 Web 设置页点「应用」。不在 PATH 就先装好官方 CLI,或走下面「手动配置」。dsh webdsh

桌面端(默认)

打开社区 DSH Desktop,在自带终端里执行(这里的 是桌面包装脚本,默认 profile 就是 ):dshdesktop

dsh plugin add https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip

不要用 PATH 上的官方 (会被拒绝)。不要用 (那是官方 EXE)。dsh plugin --profile desktopdsh://

然后退出托盘,重新打开 ,在桌面端设置页点「应用」。DSH Desktop.exe

从系统终端安装时,用桌面端自带 CLI。按正在运行的进程、默认安装位置定位 :DSH Desktop.exe

$zip = "https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip"
$exe = (Get-Process -Name "DSH Desktop" -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty Path)
if (-not $exe) {
  $exe = @(
    "$env:LOCALAPPDATA\Programs\DSH Desktop\DSH Desktop.exe",
    "$env:ProgramFiles\DSH Desktop\DSH Desktop.exe",
    "${env:ProgramFiles(x86)}\DSH Desktop\DSH Desktop.exe"
  ) | Where-Object { Test-Path -LiteralPath $_ } | Select-Object -First 1
}
if (-not $exe) { throw "未找到 DSH Desktop.exe,请先打开桌面端,或把 `$exe` 设成安装目录里的 exe" }
$cli = @(
  (Join-Path (Split-Path $exe) "resources\app\lib\desktop-cli.js"),
  (Join-Path (Split-Path $exe) "resources\app.asar.unpacked\lib\desktop-cli.js")
) | Where-Object { Test-Path -LiteralPath $_ } | Select-Object -First 1
$env:ELECTRON_RUN_AS_NODE = "1"
$env:DSH_DESKTOP_DEFAULT_PROFILE = "desktop"
& $exe --expose-internals $cli plugin add $zip

自定义安装目录时,把 换成该目录下的 。默认用 zip,避免本地路径空格把命令拆开。$exeDSH Desktop.exe

交给 AI 安装(只装插件)

把下面这一块发给本机助手,让它只执行安装命令。

给 AI 助手(只安装)

安装 DeepSeek Harness 插件 。先确认宿主,只装正在用的那一个。不要全盘搜索,不要读或改其它文件,不要应用设置,也不要重启应用。dsh-purge

Web 端(官方 dsh web

dsh不在 PATH 就告诉用户后停止。

dsh plugin --profile web add https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip

当前目录已是本仓库时改用 。dsh plugin --profile web add .

桌面端(社区 DSH Desktop)

不要用 PATH 上的官方 。不要用 。dsh plugin --profile desktopdsh://

默认:已在桌面端自带终端里时直接跑:

dsh plugin add https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip

从系统终端安装时:用正在运行的进程 Path,或默认位置 、。不要全盘扫描。然后:DSH Desktop%LOCALAPPDATA%\Programs\DSH Desktop\DSH Desktop.exe%ProgramFiles%\DSH Desktop\DSH Desktop.exe

$zip = "https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip"
$exe = (Get-Process -Name "DSH Desktop" -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty Path)
if (-not $exe) {
  $exe = @(
    "$env:LOCALAPPDATA\Programs\DSH Desktop\DSH Desktop.exe",
    "$env:ProgramFiles\DSH Desktop\DSH Desktop.exe",
    "${env:ProgramFiles(x86)}\DSH Desktop\DSH Desktop.exe"
  ) | Where-Object { Test-Path -LiteralPath $_ } | Select-Object -First 1
}
if (-not $exe) { Write-Host "未找到 DSH Desktop.exe,请先打开桌面端或给出安装目录"; return }
$cli = @(
  (Join-Path (Split-Path $exe) "resources\app\lib\desktop-cli.js"),
  (Join-Path (Split-Path $exe) "resources\app.asar.unpacked\lib\desktop-cli.js")
) | Where-Object { Test-Path -LiteralPath $_ } | Select-Object -First 1
$env:ELECTRON_RUN_AS_NODE = "1"
$env:DSH_DESKTOP_DEFAULT_PROFILE = "desktop"
& $exe --expose-internals $cli plugin add $zip

官方 Harness 桌面 EXE

dsh plugin --profile default add https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip

命令结束后,提醒:完全退出并重启刚装的那个宿主,再在该宿主设置页点「应用」。Web 和桌面端不要交叉点应用。然后停止。

官方桌面 EXE()dsh://

已安装 DeepSeek Harness 官方桌面客户端(EXE) 时,点下方按钮走系统 URI。社区 DSH Desktop 不认 ,走上面「桌面端」默认命令。dsh://

命令行等价:

dsh plugin --profile default add https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip

🌐 打开插件市场页 ·🚀 唤起客户端一键安装

🔗 原生协议链接:

dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.7&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.zip

网页端(前端)触发代码示例:

/**
 * 唤起 DeepSeek Harness 桌面客户端一键安装 dsh-purge
 */
export function installDshPurgeToDesktop() {
  const params = new URLSearchParams({
    id: 'dsh-purge',
    name: 'dsh-purge',
    version: '1.1.7',
    repo: 'YuJunZhiXue/dsh-purge',
    permissions: '系统提示词注入, 本机补丁, 设置页',
    downloadUrl: 'https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip',
  });

  const deepLink = `dsh://plugin/install?${params.toString()}`;

  const iframe = document.createElement('iframe');
  iframe.style.display = 'none';
  iframe.src = deepLink;
  document.body.appendChild(iframe);
  setTimeout(() => document.body.removeChild(iframe), 2000);
}

HTML 静态链接方式:

<a href="dsh://plugin/install?id=dsh-purge&name=dsh-purge&version=1.1.7&repo=YuJunZhiXue%2Fdsh-purge&permissions=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA%E8%AF%8D%E6%B3%A8%E5%85%A5%2C%E6%9C%AC%E6%9C%BA%E8%A1%A5%E4%B8%81%2C%E8%AE%BE%E7%BD%AE%E9%A1%B5&downloadUrl=https%3A%2F%2Fgithub.com%2FYuJunZhiXue%2Fdsh-purge%2Farchive%2Frefs%2Fheads%2Fmaster.zip">
   唤起客户端一键安装
</a>

协议参数配置(dsh://plugin/install):

参数名

值 / 示例

说明

身份证

dsh-purge

插件唯一标识符

名称

dsh-purge

插件展示名称

版本

1.1.7

语义化版本号

回收

YuJunZhiXue/dsh-purge

GitHub 仓库

权限

系统提示词注入, 本机补丁, 设置页

申请权限

下载网址

https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.zip

zip 下载直链

手动配置安装

dsh不在 PATH、或不想用 时,按宿主改对应 profile。不要删原有 bundle。dsh plugin add

1. 找到 Harness 主目录(下文称 $DSH_HOME

安装形态

典型路径

环境变量

DSH_HOME(已设置就用它)

Windows 便携包

与 同级的npm-global.dsh

用户默认

Windows;Linux / macOS%USERPROFILE%\.dsh~/.dsh

宿主

profile 目录

Web 端

$DSH_HOME/profiles/web

社区桌面端

$DSH_HOME/profiles/desktop

官方桌面 EXE

$DSH_HOME/profiles/default

2. 把本仓库放到 plugins 目录

git clone https://github.com/YuJunZhiXue/dsh-purge.git "$DSH_HOME/plugins/dsh-purge"

或把已有仓库复制为 (目录名必须是 )。用 相对路径即可。$DSH_HOME/plugins/dsh-purgedsh-purgefile:../../plugins/dsh-purge

3. 改对应 profile 的 package.json

  • 网络:$DSH_HOME/profiles/web/package.json

  • 社区桌面端:$DSH_HOME/profiles/desktop/package.json

  • 官方桌面 EXE:$DSH_HOME/profiles/default/package.json

在 里追加(不要删别的依赖):dependencies

"dsh-purge": "file:../../plugins/dsh-purge"

在 数组末尾追加dsh.profile.bundles"dsh-purge"

  • Web:必须保留原来的 ,只追加本插件@deepseek-ai/dsh-web-app

  • 桌面端:保留原来的 等,只追加本插件@deepseek-ai/dsh-base

完整示意(其它字段按原文件保留):

{
  "dependencies": {
    "dsh-purge": "file:../../plugins/dsh-purge"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-purge"
      ]
    }
  }
}

桌面 profile 若没有 这一行,不要硬加;只保证 里有 。dsh-web-appbundles"dsh-purge"

4. 安装依赖

cd "$DSH_HOME/profiles/web"       # Web
pnpm install

cd "$DSH_HOME/profiles/desktop"   # 社区桌面端
pnpm install

cd "$DSH_HOME/profiles/default"   # 官方 EXE
pnpm install

Windows PowerShell:

cd "$env:USERPROFILE\.dsh\profiles\web"
# cd "$env:USERPROFILE\.dsh\profiles\desktop"
# cd "$env:USERPROFILE\.dsh\profiles\default"
# 便携包:<安装根>\.dsh\profiles\<web|desktop|default>
pnpm install

5. 重启,再打补丁

  1. 完全退出刚装的那个宿主(Web 关进程;桌面端退出托盘),再启动。

  2. 设置页应出现「规则设定」。有缓存就 Ctrl+F5。

  3. 这个宿主点「应用」,或聊天 。/purge apply

  4. 按提示再重启一次。桌面端的「重启 / 卸载」会重启桌面应用。

这是什么

dsh-purgeDeepSeek Harness 的设置插件:

  • 改本机已安装的 包:默认文案、权限策略、工具上限;@deepseek-ai/*

  • 设置页「规则设定」:分组查看补丁、应用 / 还原 / 卸载、编辑会话覆盖、多套规则;

  • 启动时自动检查并重新应用(npm 升级覆盖 之后不必手搓);node_modules

  • 不写死盘符:按 、dsh 启动器旁边的 、系统默认 探测本机位置。$DSH_HOME.dsh~/.dsh

不改 Harness 源码仓库。设置页点「应用」即可。身份只来自你自己的 ,插件不再另写一张身份卡。prompt-inject.md

0.1.5 适配要点

现象

补丁

处理

选工作区 / 开新对话被清空

#4 #28 #39

0.1.5 的 只要 ;旧预设仍写 。补丁把 收成 别名,梁神等 0.1.2 预设才能挂上dsh-personaprefixtexttextprefix

历史会话summary requires notice form

#40

dsh-session-format-v0-to-v1允许 mnemon 的 / 带着instructionsrecallsummary

「你是谁」回到 DeepSeek 助手

注入文件

不发明第二套身份; 段只贴 原文dsh-purgeprompt-inject.md

梁神第一轮像没注入

#29

Phase-1 保留 persona / persona-prefix / persona-suffix 与 inject,不扒官方工具目录

#20 / #21 / #28 / #29仍是可选插件项:没装对应包就跳过。


使用

# CLI
dsh-purge --status
dsh-purge --apply
dsh-purge --revert
dsh-purge --uninstall
dsh-purge --edit

# 聊天
/purge status | apply | revert | uninstall | edit | help
/rules list | use <id> | create <id> | delete <id> | reset | help
/rewind

# 模型工具
purge_status   purge_apply   purge_revert

设置页「应用」完成后需要重启才会加载已改的包文件。点「重启」才会重启,不会自动重启。

输入框旁的「回退」会丢掉最近一轮对话,并把上一句填回输入框;聊天里 同样可用。/rewind

项目 dsh-purge/README.zh-CN.md at master · YuJunZhiXue/dsh-purge