dsh-purge——一个在 DeepSeek Harness(DSH)插件生态里排得上日增长榜前三的开源项目,作者即将在一周后闭源。

我翻了一下 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 安装包和本机配置。
好,搞清楚定位之后,我们再来看它的核心能力。
02
PART
核心亮点
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 <id> | create <id> | delete <id> | reset
/skills list | import <压缩包或文件夹> | create <id> | delete <id>
/rewind # 回退一轮对话
03
PART
快速上手
安装命令(重点: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 源码,必须手动触发应用:
1
完全退出刚装的那个宿主(Web 关掉 dsh web 再开;桌面端退出托盘再打开 EXE)
2
点会话标题旁的 dsh-purge 按钮 → 右侧栏切到 清洗 → 点 「应用」
3
成功后会自动重启一次宿主,让补丁进入当前进程
重启之后新开一轮对话,注入才生效。聊天里输 /purge status 能看到 DSH_HOME 路径和补丁列表,确认你用的是正确的那一份。
04
PART
工作原理
作者在 README 里附了三张流程图,我帮大家翻译成大白话。
应用补丁时
启动 dsh 或手动点”应用”后:
补丁已经生效?
├── 是 → 跳过
└── 否 → 先备份原件为 .dshpurge.bak
→ 按补丁列表替换对应文件
→ 覆盖 shim(运行时钩子)
→ 注入插件加密的默认提示词
所有改动都发生在你本机的 @deepseek-ai/* 包里和用户目录覆盖文件中。升级后原文对不上的补丁会显示”跳过”,不会乱改。
每一轮对话的提示词注入
这是 dsh-purge 最精妙的部分。每次新一轮开始时:
prompt-inject.md 有内容?
├── 是 → 用 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。
///
LAST
写在最后
dsh-purge 在技术上确实有它的价值——把 DSH 的宿主拦截层和模型原始回答分开、图形化补丁管理、多模型破甲提示词切换、演练台授权机制。
这些功能叠在一起,让它在 DSH 插件生态里迅速蹿红。
但更打动我的,是作者的坦诚。
他没有搞个什么高大上的叙事,没有说”我们正在构建什么伟大的开源社区”。他直说自己被裁了,没工作了,可能去跑外卖。七天后闭源,因为要吃饭。
开源世界从来不缺 star 数和 fork 数。缺的是这种——明明白白告诉你我是谁、我遇到了什么、我能做什么、我要什么。
GitHub:https://github.com/YuJunZhiXue/dsh-purge





评论(0)