dsh-purge——一个在 DeepSeek Harness(DSH)插件生态里排得上日增长榜前三的开源项目。过去两个快照之间,这个项目的 Star 增长了 354 颗,仅次于两个更早期的大项目。L5 运行已验证,金标评级,安全扫描低风险。在 dsh.so 的收录里,它的 Star 数已经突破 8k。而这一切,都是一个被裁员的程序员,业余时间写出来的。

今天这篇文章,不仅要拆解 dsh-purge 的技术细节,更想聊聊这个项目背后的故事——关于一个"破甲"插件如何在一个月内蹿红,以及开源世界里那些不被看见的个人英雄。
dsh-purge 到底是什么?
dsh-purge 是 DeepSeek Harness 的一个插件。如果你还不知道 DSH 是什么,简单说就是 DeepSeek 官方推出的一个 Agent 开发框架——官方口号是"Everything is a plugin",从模型、工具、技能到沙箱、会话格式,每一层都是插件,可以自由组合和替换。
DSH 不只是把你的问题丢给模型就完了。它在运行时会做一层宿主控制——改提示词、审批门、沙箱环境、会话格式,这些都是在模型之外加的"壳"。
dsh-purge 做的事情,就是在你自己本机已经装好的官方 DSH 里,把模型的原始回答和宿主拦截这两层"分开"。
为什么要这么做?因为你在评测一个模型的安全性时,如果模型答不上来,你得搞清楚——到底是模型本身拒绝了,还是宿主层把答案拦了?这两件事天差地别。
所以 dsh-purge 的官方定位非常明确:用来做网络安全红队评测,让你在自己的本机环境里做受控测试,也用来看 DSH 默认策略该不该收紧。
作者反复强调的法律免责里也写得很清楚——它不是公网扫描器,不是打别人站点的套件,仓库里没有对外攻击载荷。所有补丁只作用于使用者自己的官方 DSH 安装包和本机配置。
核心亮点
1. 不同模型,不同破甲提示词
这是 dsh-purge 名字里"purge"的由来——它在运行时注入一段加密的默认提示词,绕过 DSH 的宿主拦截层。但最核心的设计是,你可以给不同模型配不同的破甲提示词。默认提示词面向的是国产模型"小码酱",但你完全可以自己写一套适配 GPT 系列的、Claude 系列的,或者别的什么模型的提示词。这样一来,你切换模型做评测的时候,破甲策略也跟着变,不用手动改来改去。
2. 不只破甲,还给你个演练台
正式版内置了一个"演练台"——第一次进去要先读声明、等倒计时、滚到文末、勾选三项授权。授权之后才能看到资产、技能和本机环境。演练台的定位也写得很死:只用于你有权管理的本机、离线靶标或已书面授权的演练环境。
3. 全图形化操作,零手改文件
dsh-purge 在 DSH 界面里加了一个侧栏——就是会话标题旁那个按钮。点开是右栏,两个 Tab:清洗和演练台。清洗页面里,补丁按组展开,状态一目了然。点"应用"自动备份原件、替换文件、注入提示词、自动重启。还原也是一键的,用 .dshpurge.bak 备份文件恢复。整个过程你不需要碰任何源码文件,也不需要知道 DSH 内部是怎么组织的。
4. 完整的 CLI 和聊天命令支持
虽然侧栏很好用,但如果你想在脚本里自动化,dsh-purge 也给了完整的命令行工具和聊天指令:
# 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 | create | delete | reset
/skills list | import <压缩包或文件夹> | create | delete
/rewind # 回退一轮对话
快速上手
安装命令(重点:Web 和桌面端要分开装!)
dsh-purge 不写死盘符,Web 和桌面端各用各的 profile,两边都要装、分开应用。
Web 端(官方 dsh web):
dsh plugin --profile web add https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.tar.gz
桌面端(官方 EXE 0.2.0-rc.2 / 0.2.1-rc.2):
dsh plugin --profile desktop add https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.tar.gz
如果你已经在本地 clone 了仓库,直接:
dsh plugin --profile web add .
dsh plugin --profile desktop add .
装完一定要做的三步
只把插件写进 profile 文件不会自动改 DSH 源码,必须手动触发应用:
- 完全退出刚装的那个宿主(Web 关掉 dsh web 再开;桌面端退出托盘再打开 EXE)
- 点会话标题旁的 dsh-purge 按钮,右侧栏切到 清洗,点 "应用"
- 成功后会自动重启一次宿主,让补丁进入当前进程
重启之后新开一轮对话,注入才生效。聊天里输 /purge status 能看到 DSH_HOME 路径和补丁列表,确认你用的是正确的那一份。
工作原理
应用补丁时
启动 dsh 或手动点"应用"后:补丁已经生效?是则跳过;否则先备份原件为 .dshpurge.bak,然后按补丁列表替换对应文件,覆盖 shim(运行时钩子),注入插件加密的默认提示词。所有改动都发生在你本机的 @deepseek-ai/* 包里和用户目录覆盖文件中。升级后原文对不上的补丁会显示"跳过",不会乱改。
每一轮对话的提示词注入
这是 dsh-purge 最精妙的部分。每次新一轮开始时:如果 prompt-inject.md 有内容就用它;否则检查当前目录有没有被勾选的本地 AGENTS.md / CLAUDE.md,有就用本地规则文件;没有就用插件内置的加密默认提示词,然后检查 Workspace baseline 策略——strict 去掉 DSH 原始 workspace baseline,fallback(默认)有用户注入就去掉没有就保留,always 永远保留 DSH 原始 baseline。
这样一来,你可以在不同项目里放不同的 AGENTS.md,dsh-purge 会自动根据当前目录加载,不需要手动切换配置。
Skill 不走提示词注入
Skill 是独立的——导入后写到 DSH 官方 skills 目录,由 DSH 自己加载。卸载插件时不会删你的 Skill。
写在最后
dsh-purge 在技术上确实有它的价值——把 DSH 的宿主拦截层和模型原始回答分开、图形化补丁管理、多模型破甲提示词切换、演练台授权机制。这些功能叠在一起,让它在 DSH 插件生态里迅速蹿红。
但更打动人的,是作者的坦诚。他没有搞什么高大上的叙事,没有说"我们正在构建什么伟大的开源社区"。他直说自己被裁了,没工作了,可能去跑外卖。七天后闭源,因为要吃饭。
开源世界从来不缺 star 数和 fork 数。缺的是这种——明明白白告诉你我是谁、我遇到了什么、我能做什么、我要什么。