CallMeGuLab/dsh-purge-safe

dsh-purge-safe

DeepSeek Harness 破甲:默认提示词面向国模「鸢码」,完整开放版,无付费墙,技能库与知识库全含。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐

待分类deepseekdeepseek-harnessharness-jailbreak

dsh-purge-safe

⚔️ DeepSeek Harness 网络安全红队工具(dsh-purge-safe)

Version 0.1.0

DeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「鸢码」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐ 如要二开,请查看署名要求部分


English | 中文 | 日本語

目录


介绍

dsh-purge-safe 是装在本机官方 DeepSeek Harness 上的网络安全红队评测插件。当前 0.1.0 已适配 DSH 0.2.1-rc.5(rc.2 仍可用)。 官方 Web(dsh web)和官方 桌面端(EXE)都支持,两边分开装、分开应用。

Harness 不只是把问题交给模型。它还会在运行时改提示词、审批门、沙箱和会话格式。只看「模型答不答」,会把宿主拦截误当成模型拒绝。这个插件在你自己的安装里把这两层分开,用来做受控评测,也用来看默认策略该不该收紧。

你会用到它做什么
dsh-purge-safe 侧栏会话标题旁的按钮打开右侧栏。里面两页:清洗、演练台
清洗分组查看补丁,应用、还原、卸载;编辑提示词和多套规则
演练台正式版内置。授权后查看资产和本机环境。技能库与知识库随包提供。
宿主策略调整默认文案、权限策略和工具上限。官方能力保留,不另写一套身份
启动时自动再检查并应用。npm 升级盖掉 node_modules 之后不用手改文件

不写死盘符。按 $DSH_HOME、dsh 启动器旁边的 .dsh,再退回 ~/.dsh。不改 Harness 源码仓库,在 dsh-purge-safe 的「清洗」里点「应用」才写入。身份来自插件里的加密提示词,也就是提示词框默认显示的那一份。不读取宿主磁盘上的提示词文件。

本插件只处理使用者本机已安装的官方 @deepseek-ai 包和本机配置。它不是公网扫描器,也不是针对第三方站点的攻击套件。仓库内不含木马、未授权渗透脚本或对外攻击载荷。


📌 原版禁止倒卖。二开必须署名。

署名要求

原版禁止倒卖。 不得付费转售、换皮上架,或以商品形式分销。

二开必须署名,并写明来源仓库:CallMeGuLab/dsh-purge-safe。借用本项目的名称、思路、代码或提示词,同样必须署名。

不署名、隐瞒来源、改头换面据为己有,或把原版拿去倒卖,维护团队将依法追究责任。

许可证

本仓库使用 Apache License 2.0。二开、再分发必须保留版权声明和 NOTICE,写明来源 CallMeGuLab/dsh-purge-safe。原版禁止倒卖。


⚠️ 严正法律免责与合规使用声明

免责声明: 本项目为非营利开源项目,遵守国家法律法规及所在平台的相关规范,仅供学习与研究使用。不得将本项目用于任何违法违规用途;由此产生的后果由使用者自行承担。

【零容忍严正申明】:本项目坚决反对并严禁任何形式的违法犯罪行为!本维护团队绝不支持、不鼓励、不协助任何未授权网络攻击、漏洞利用、数据窃取、非法侵入计算机信息系统或生成违法违禁内容的活动。任何将本项目用于违法犯罪的行为,均与本维护团队无关,由行为人依法独立承担全部法律责任。

  1. 本仓库不含违法内容:dsh-purge-safe 发布的代码、文档、补丁与默认提示词不是木马、后门、未授权渗透工具、勒索软件、撞库脚本,也不是针对公网或第三方系统的攻击载荷。项目本身不提供违法内容,也不教唆、组织、协助实施违法犯罪。
  2. 只作用于本机官方 Harness:安全评测补丁、提示词注入全部发生在使用者本机已安装的官方 DeepSeek Harness(@deepseek-ai 包、本机 profile / $DSH_HOME)上。对象是使用者自己的官方本地软件,不是他人的网站、服务器、账号或信息系统。
  3. 评测补丁不对外网目标联网:应用补丁、写入注入、回滚、卸载均在本机文件与本机进程内完成,不对任何公网主机、未授权系统进行扫描、探测、入侵或攻击发包。不得把本项目当作跳板去打外网。插件若开启「检测更新」,仅可能访问本插件自己的 GitHub 仓库以核对版本,与对第三方系统的网络攻击无关,也不能被解释为授权对外渗透。
  4. 合法受控范围限定:本项目定位为使用者在自己有权管理的本机官方 Harness上,进行红队科研与鲁棒性评测的辅助工具。严禁在未经所有者合法书面授权的目标、公网在线系统或生产业务上运行本项目。一切测试必须限制在本机已授权安装的官方 Harness、离线本地合成靶标、授权网络安全演练靶场及合规实验室受控环境中进行。
  5. 严禁违法与违禁用途:使用者严禁利用本项目直接或间接从事任何违反下列法律法规的行为(必须逐条遵守,不得以任何理由规避):
  • 《中华人民共和国刑法》
  • 《中华人民共和国网络安全法》
  • 《中华人民共和国数据安全法》
  • 《中华人民共和国个人信息保护法》
  • 以及其他现行有效的法律、行政法规与监管规定;
  • 同时严禁:
  • 未经授权渗透、攻击公私机构计算机信息系统,实施勒索、破坏、撞库或传播恶意载荷;
  • 诱导、生成或传播危害国家安全、恐怖主义、暴力血腥、涉黄涉赌、诈骗、侵犯公民隐私或知识产权等任何法律明令禁止的违法违禁内容;
  • 违反相关大模型提供商的《服务条款》与《滥用政策》。
  1. 使用者独立承担全部责任:本项目依据 Apache-2.0“按现状”提供,维护团队不对软件的完整性、安全性与适用性作任何明示或暗示的保证。使用者应对自身的所有下载、部署、运行、修改、传播行为以及由此产生的全部输入与输出后果承担独立、完全的民事、行政及刑事法律责任。维护团队与所有贡献者绝不承担任何因使用者滥用导致的直接、间接或连带责任。
  2. 违约即终止授权:任何将本项目用于非法攻击、恶意活动或违规行为的个人或实体,其开源软件使用许可将自违法违规行为发生之日起自动且不可撤销地立即终止。该主体须立即停止使用并永久销毁本项目的所有代码、脚本与衍生数据,并依法承担相应法律制裁。
  3. 第三方独立性声明:本项目属于完全独立的开源安全评测研究项目,与 DeepSeek 官方或其关联主体无任何隶属、商业合作、授权或官方背书关系。文中「官方」仅指评测对象为使用者本机安装的官方 DeepSeek Harness 软件包,不代表 DeepSeek 官方开发、认可或担保本插件。
  4. 必须署名:借用本项目的名称、思路、代码或提示词,必须署名并标明本仓库。不署名将依法追究责任。详见 署名要求。

适配范围

0.1.0 适配 DSH 0.2.1-rc.5,0.2.1-rc.2 仍可用。

  • dsh 0.2.1-rc.5(官方桌面 / 官方 dsh web):推荐版本。已修 {{cwd}} / [cwd] 整轮失败、补丁 #40 命中、toolFilter 废弃、dsh-tools 解析、hostFs fd、桌面换包自杀、file: 归档更新、Ctrl+Enter 插话。
  • dsh 0.2.1-rc.2:兼容。
  • 不支持 dsh 0.2.1-rc.3 / rc.4 及更新。 宿主对不上时补丁会显示待应用或跳过,不会乱改文件。请改用 0.2.1-rc.5 或 0.2.1-rc.2。

对不上的补丁会显示待应用或跳过,不会乱改文件。


安装

不要走插件市场:dsh-plugin.org 或设置里的「插件市场」一键安装会报 already queued: dsh-purge-safe,命令也走不成。npm 仓库没有 dsh-purge-safe 这个名字,不要 pnpm add dsh-purge-safe。

快速安装

PATH 里有 dsh?一条命令、一次重启、一次点击。跑你正在打开那一端的命令(桌面版把 web 换成 desktop):

# 官方 `dsh web`
dsh plugin --profile web add https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main

# 官方桌面 EXE
dsh plugin --profile desktop add https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main
  1. 完全退出再打开刚装的那个宿主。Web:停掉 dsh web 再开。桌面:托盘也要退出,再开 exe。
  2. 在这个宿主点会话标题旁的 dsh-purge-safe →「清洗」→「应用」。应用成功后会自动重启一次。

完成 —— 聊天里跑 /purge status 验证。如果 pnpm 问要不要允许构建、或者下面任何东西没出现,走后面的分步说明。

分步说明

第 1 步 —— 选定宿主。 官方 dsh web 和官方桌面 EXE 分开装、分开应用,只装你正在打开的那一个。

你正在用profile安装命令
官方 dsh webweb快速安装里 web 那条
官方桌面 EXEdesktop快速安装里 desktop 那条

第 2 步 —— 装插件。 压缩包地址只用 codeload.github.com 这个写法,不要用 github.com/.../archive:后者 302,pnpm 会 fetch failed。

有 dsh:跑快速安装里你那一端的命令。当前目录已是本仓库时,把网址换成 .。

只有 pnpm(没有 dsh 也行):进正在用的那个 profile,不要在仓库根执行。

cd "$DSH_HOME/profiles/web"    # 桌面改 profiles/desktop
pnpm add https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main

Windows PowerShell:

cd "$env:USERPROFILE\.dsh\profiles\web"   # 桌面改 profiles\desktop
pnpm add https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main

pnpm add 和 dsh plugin add 都会拉包;postinstall 再把 dsh-purge-safe 写进 dsh.profile.bundles,并在 profile 的 cordis.patch.yml 补上本体 insert(没有这一行,宿主不加载插件,界面也没有按钮)。

完成标志: node_modules/dsh-purge-safe/package.json 在,该 profile 的 bundles 里有 "dsh-purge-safe",cordis.patch.yml 里有 id: dsh-purge-safe 的 insert。

  • pnpm 11/12 默认拦安装脚本(ERR_PNPM_IGNORED_BUILDS),要带上允许构建:
pnpm add --allow-build=dsh-purge-safe --allow-build=dsh-purge-safe@https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main
# 已经装上但只有警告时,必须带完整 specifier(只写 dsh-purge-safe 会留下 set this to true or false):
pnpm approve-builds dsh-purge-safe@https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main
# bundles / insert 还没写上时再补:
node node_modules/dsh-purge-safe/scripts/ensure-profile-bundle.mjs
  • dsh 和 pnpm 都没有时,跳到手动安装。
  • 桌面客户端也可以点按钮(dsh:// 唤起,下的仍是同一份压缩包)。

唤起客户端一键安装

第 3 步 —— 重启宿主。 只把插件写进 profile 还不会改 @deepseek-ai。完全退出再打开刚装的那个宿主(Web:停掉 dsh web 再开;桌面:托盘也要退出,再开 exe)。

完成标志: 会话标题旁出现 dsh-purge-safe。没出现?跳到第 5 步。

第 4 步 —— 应用并验证。 在这个宿主点会话标题旁的 dsh-purge-safe,打开「清洗」,点「应用」。宿主自己的设置页里没有这一项。应用成功后会自动重启一次,没做完不会重启。Web 的按钮只动 Web,桌面的只动桌面,不要在一个里面点另一个的应用。

完成标志: 聊天里 /purge status 能打出 DSH_HOME 和补丁列表,路径是你正在用的那一份。没装的可选包(dsh-liangshen)显示跳过,不挡住完成。

第 5 步 —— 排障。 只有上面没有跑到「完成标志」时才看这里。

  • 会话标题旁没有按钮。 在对应 profile 跑 dsh --dump-config(或 dsh --profile desktop --dump-config),看有没有本体行 id: dsh-purge-safe(不是 dsh-purge-safe-redteam)。没有就再跑第 2 步的 ensure-profile-bundle.mjs,然后完全退出重开宿主。升到本版本后,若演练台子行已经在跑,它也会在启动时把缺的 insert 补上,再完全退出重开一次即可。开头那几条 entry "redteam-store" not found 只是旧红队包不在,可以忽略。
  • 市场报 already queued: dsh-purge-safe。 不要再点市场;回到第 2 步用 dsh plugin add 或 pnpm 装。命令也说已经有了,就先卸再装,然后重走第 3 步:
dsh plugin --profile desktop remove dsh-purge-safe
dsh plugin --profile desktop add https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main

只有 pnpm 时:

cd "$DSH_HOME/profiles/desktop"
pnpm remove dsh-purge-safe
pnpm add https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main

Web 端把 desktop 换成 web。

高级

交给助手安装。 把下面整段发给本机助手。它只执行安装命令:不要全盘搜索、不要改其它文件、不要代点「应用」、不要重启。

给 AI 助手(只安装)

安装 DeepSeek Harness 插件 dsh-purge-safe,只装到 Web profile。不要全盘搜索,不要读或改其它文件,不要应用设置,也不要重启应用。不要装到桌面 profile。不要走插件市场。npm 仓库没有这个包名,不要 pnpm add dsh-purge-safe。

Web 端(官方 dsh web)

有 dsh:

dsh plugin --profile web add https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main

没有 dsh、只有 pnpm:找到 $DSH_HOME/profiles/web(常见 ~/.dsh/profiles/web),在该目录执行:

pnpm add https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main

当前目录已是本仓库且有 dsh 时改用 dsh plugin --profile web add .。dsh 和 pnpm 都没有再告诉用户后停止。

命令结束后,提醒用户:完全退出并重启 dsh web,再点会话标题旁的 dsh-purge-safe,在「清洗」里点「应用」。然后停止。

手动安装。 命令装不上、或 dsh 不在 PATH 时用这个。只改正在用的那个宿主对应的 profile,不要动另一个,也不要删原有 bundle。

完整手动步骤

1. 找到真正在用的 $DSH_HOME。 认目录:名字是 .dsh(官方 EXE 偶见 dsh-home),里面有 profiles,且至少有一个 profiles/<名>/package.json。按顺序找:DSH_HOME 环境变量 → 安装根旁边的 .dsh(便携包)→ %USERPROFILE%\.dsh 或 ~/.dsh → %APPDATA% / %LOCALAPPDATA%\DeepSeek Harness\dsh-home。确认:profiles/web/package.json 里 "name" 是 dsh-profile-web(桌面是 dsh-profile-desktop)。本机常有两份 .dsh,要用你实际启动的那个宿主对应的那份。

Windows PowerShell 列候选:

$cands = @()
if ($env:DSH_HOME) { $cands += $env:DSH_HOME }
$cands += "$env:USERPROFILE\.dsh"
$dsh = Get-Command dsh -ErrorAction SilentlyContinue
if ($dsh) {
  $dir = Split-Path $dsh.Source
  $cands += @((Join-Path $dir ".dsh"), (Join-Path (Split-Path $dir) ".dsh"), (Join-Path (Split-Path (Split-Path $dir)) ".dsh"))
}
$cands += @("$env:APPDATA\DeepSeek Harness\dsh-home", "$env:LOCALAPPDATA\DeepSeek Harness\dsh-home")
$cands | Select-Object -Unique | Where-Object { $_ -and (Test-Path (Join-Path $_ "profiles")) }

2. 把插件放到 $DSH_HOME/plugins/dsh-purge-safe(目录名必须是 dsh-purge-safe,其 package.json 里 "name" 也必须是 dsh-purge-safe)。

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

没有 git:下载 main.tar.gz,解压后把 dsh-purge-safe-main 改名为 dsh-purge-safe,整夹放到 plugins 下。已有本仓库副本就复制整个目录,不要只拷几个 .js。

3. 只改对应 profile 的 package.json,先备份。 Web → $DSH_HOME/profiles/web/package.json;桌面 → $DSH_HOME/profiles/desktop/package.json。只追加两处,原有依赖和 bundle 全部留着:

  1. dependencies 增加 "dsh-purge-safe": "file:../../plugins/dsh-purge-safe"
  2. dsh.profile.bundles 末尾追加 "dsh-purge-safe"(已有就不要再加)
{
  "name": "dsh-profile-web",
  "private": true,
  "dependencies": {
    "dsh-purge-safe": "file:../../plugins/dsh-purge-safe"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "dsh-purge-safe"
      ],
      "patchReload": "live"
    }
  }
}

JSON 要合法(新增项前面有逗号,最后一项后面没有多余逗号)。file:../../plugins/dsh-purge-safe 不要改成绝对路径,patchReload、其它插件、版本号都不要动,"dsh-purge-safe" 不要写两次。桌面端没有 dsh-web-app 就不要硬加。

4. 只在刚改的那个 profile 目录装依赖(cd 进 profile 目录,不要在仓库根或 $DSH_HOME 根):

cd "$DSH_HOME/profiles/web"   # 或 profiles/desktop
pnpm install

成功标志:出现 profiles/<web|desktop>/node_modules/dsh-purge-safe/package.json。找不到 pnpm 就用官方 dsh 自带的 Node / pnpm;报 Could not resolve 就检查 file: 路径;JSON 解析失败就修逗号或还原备份。

5. 完全退出该宿主,再启动,再点「应用」 —— 即第 3 步和第 4 步。按钮会出现在会话标题旁,只在这个宿主点「应用」(或 /purge apply)。没出现多半是改错了另一份 .dsh,回到第 1 步核对。

卸载。 会话标题旁的 dsh-purge-safe →「清洗」→「卸载」。弹窗确认:会先还原已应用的补丁,还原回原版 Harness,再重启当前宿主。停用或卸载时会把「智能体预设」里指向红队模式的默认值改回 standard,避免宿主因找不到 redteam 而无法新建会话。

卸载命令与配置
# 也可以用命令行 / 聊天
dsh-purge-safe --uninstall
# /purge uninstall

插件配置在 cordis.patch.yml(postPrompt 默认为空):

- insert:
    - id: dsh-purge-safe
      name: 'dsh-purge-safe'
      config:
        enabled: true
        autoApplyOnStart: true
        autoUpdateOnStart: false
        autoRevertOnMissing: false
        verbose: false
        postPromptOrder: 5100
        postPrompt: ""

目录结构

bin/ 是命令行,lib/ 是补丁和演练台,presets/redteam/ 是红队预设,skills/redteam/ 是随包技能,client.js 是侧栏。

运行时文件在 $DSH_HOME:prompt-inject.md、rules/、skills/、redteam/。未设 DSH_HOME 时,优先用 dsh 安装目录旁边的 .dsh,再退回 ~/.dsh。Web 和桌面端各用自己那一份主目录。


使用

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

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

# 其它插件已占 /rewind(或 /purge、/rules、/skills)时,这条命令会跳过或改挂
# /purge-rewind 等备用名;主插件其余命令、工具、/dsh-purge-safe/* 路由不受影响。

# 模型工具
purge_status   purge_apply   purge_revert

设置页「应用」成功后会自动重启,以加载已改的包文件;也可手动点「重启」。补丁标题下有正式版和测试版。测试版跟 beta 分支。点「切换到正式版」会装回 main,并清掉钉选。正式版里选旧版本会固定在该版本,要回到最新再点「更新」。旧的测试标签不再列出。

输入框旁的「回退一次」和「回退上一轮」都留在当前这条对话里,不另开分支。已发送的那句会回到输入框,这一轮已经发出的内容和已完成的任务会从当前对话撤掉,改字后重新发送即可。多轮对话后回退按当前这一轮定位,不会又退到第一条用户消息。聊天里 /rewind 同样可用。

极简 / PTC 与标准不一致时:同一任务在标准模式能跑、在极简或 PTC 被拦,通常是 preset 里 run_code 或 plan 拦截句没洗净,或内置 minimal 缺少 agent-instructions。请升级到最新版,完全退出宿主 → 清洗里应用 → 自动重启 → 新开一轮对话 再试;只换 preset 不重应用,旧进程里的补丁不会更新。

响应速度

DSH 会按顺序执行同一批中的 Bash 调用。旧版 dsh-purge-safe 把默认前台等待从 60 秒提高到了 10 分钟,一条慢命令会让后续调用一起等待。补丁 #21 现在把带插件标记的旧值恢复为官方的 60 秒。无标记的等待时间和其他自定义值会保留;无标记的 10 分钟无法可靠地区分是插件旧值还是用户设置。

在 macOS/Linux 的 dsh web 中,如需更快返回工具结果,可在 $DSH_HOME/profiles/web/cordis.patch.yml(通常是 ~/.dsh/profiles/web/cordis.patch.yml)添加下面的条目。已有相同 id 时修改原条目,不要重复添加。这个 profile 覆盖层在内置配置之后加载,后续应用插件会保留它。

- id: bash-sandbox
  config:
    timeoutMs: 10000

使用标准 jobs 服务且 promoteOnTimeout: true 时,未完成的命令会在 10 秒后返回后台任务 id,并继续运行。用 job_output 读取结果、用 job_kill 停止。这个设置缩短前台等待,不会让命令本身跑得更快。没有 jobs 服务或关闭自动转后台时,超时会终止命令。单次调用传入的 timeoutMs 优先于这里的默认值;run_in_background: true 可立即返回任务 id。

日常任务还可以选择让新会话默认使用 Low 推理:

- id: agent-default-model
  config:
    provider: deepseek-official
    model: deepseek-flash
    reasoningEffort: low

重启 dsh web 后加载配置。模型和推理等级默认值只用于新建会话,已有会话请在输入框中选择 Low。插件不会自动修改这些模型偏好。需要深入推理的任务可保留 High;搜索文件时应限定目录,避免递归扫描所有应用目录。

本地靶场

禁止对中国大陆、香港、澳门,银行与金融站点,政府与军事站点发起渗透、攻击或扫描。


本地校验

node --check lib/index.js
node --check lib/core.js
node --check lib/rewind.js
node --check lib/skills.js
node --check client.js

工作原理

应用,启动时或手动点「应用」:

flowchart TD
  A["启动或点应用"] --> B{"补丁已经生效?"}
  B -->|是| C["跳过"]
  B -->|否| D["备份原件为 .dshpurge.bak"]
  D --> E["按补丁列表替换对应文件"]
  E --> F["覆盖 shim"]
  F --> G["注入插件加密默认(提示词框默认显示的那份)"]

每次会话的覆盖:

flowchart TD
  A["重启或新会话"] --> B["注入插件加密默认,不必点保存,不读宿主磁盘"]

每一轮的提示词注入与规则集决策。左边三个输入就是你在 dsh-purge-safe 面板里控制的东西,虚线表示它们各自驱动哪一步判定:

flowchart TD
  L["规则库:启用某个规则集 → 写入 prompt-inject.md"]
  W["本地规则:勾选当前目录的 AGENTS.md / CLAUDE.md"]
  P["工作区策略:strict / fallback / always"]

  A["新一轮开始"] --> B{"prompt-inject.md 非空?"}
  B -->|是| C["注入 = prompt-inject.md (A)"]
  B -->|否| D{"当前目录有被勾选且非空的本地 md?"}
  D -->|是| E["注入 = 被勾选的 workspace md (B)"]
  D -->|否| F["注入 = 插件加密 slot 默认值 (D)"]
  C --> G{"Workspace baseline 策略 (C)"}
  E --> G
  F --> G
  G -->|strict| H["去掉 DSH workspace baseline 段"]
  G -->|fallback 默认| I{"上面有用户注入内容? (A 或 B)"}
  G -->|always| J["保留 DSH workspace baseline 段"]
  I -->|是| H
  I -->|否| J
  H --> K["最终系统提示词"]
  J --> K

  L -.-> B
  W -.-> D
  P -.-> G

还原

  • 每个目标文件在应用前备份为 <文件>.dshpurge.bak。
  • 「还原」或 /purge revert 用备份覆盖回去并删除备份;没有备份时去掉 shim 里由本插件写入的行。
  • prompt-inject.md 是用户文件,还原时保留。
  • 「卸载」会先还原(若已应用),再删除注入文件、规则库和插件本身。
  • 重复应用是幂等的。

路径探测

宿主面先判断 web / desktop(预留 gui / tui,尚未单独适配时回退 web)。

Web:

  1. DSH_HOME / DSH_BASE
  2. dsh 启动器旁的 .dsh
  3. npm prefix -g / npm root -g
  4. 嵌套 @deepseek-ai/dsh/node_modules/@deepseek-ai
  5. 系统默认 ~/.dsh

官方桌面: 只改当前正在运行的官方桌面安装。点「应用」成功后会自动重启一次。社区桌面端不维护。

找不到目标时提示设置 DSH_BASE,不改文件。


更新

GitHub Releases 可下载历史包。原版不允许倒卖;二开必须署名并注明来源,第三方二开与本仓库无关。

说明

  • 改动范围是本机 @deepseek-ai/* 包里的渲染文案、默认策略和执行逻辑,以及用户目录下的覆盖文件与规则集。
  • 升级后原文对不上会显示跳过,这次应用仍算完成,不会乱改。
  • 不改动非 @deepseek-ai 的第三方插件源仓库(启动时的 CMD 无感会尽力修补已装的 doctor / market / dsh-liangshen / mnemon,属运行时补丁)。
  • 安装走 GitHub 压缩包(npm 仓库没有这个名字,也不要走插件市场)。有 dsh:dsh plugin --profile web add https://codeload.github.com/CallMeGuLab/dsh-purge-safe/tar.gz/refs/heads/main。只有 pnpm:在 $DSH_HOME/profiles/web 里 pnpm add 同一地址。桌面把 web 换成 desktop。当前目录已是本仓库时 add .。

感谢 LINUX DO 社区