dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
[!IMPORTANT] 只从 GitHub 源码安装 —— npm 上没有这个包。
目前只验证过 DSH
0.2.1-rc.5与0.2.2-rc.1(桌面端实测)。先更新 DSH,再更新插件,顺序别反;更老的宿主请配对应的老版本插件,其它版本未验证——不认识的写法会自行跳过,不会硬改。
DSH → 插件 → 添加插件 → 输入框填:
https://github.com/zhuchongba-01/dsh-breach
[!NOTE] 为什么只能走 GitHub:
dsh-breach按正常流程发布时被 npm 的供应链自动扫描拦下(1.2.7没有进入 registry,npm 上只剩一个0.0.0-stage空壳占位包)。所以界面里只填dsh-breach,DSH 会把它当成 npm 包名去查源,命中的就是这个空壳,报「这个包没有声明组合包,无法作为插件安装」。
[!WARNING] 免责声明
本项目仅供本机自用、学习与研究。它会改写 DeepSeek Harness 宿主源码,并替换系统提示中的身份、免责与审批段落,安装即表示你已知悉并自行承担全部后果。
- 请仅在你自己的机器、你自己的安装上使用;不要用于他人设备、共享环境或生产系统。
- 使用前请自行备份。虽然每条改动都留了
.dshhappy.bak备份并可一键回滚,但不保证与任意宿主版本兼容,也不保证宿主升级后仍可正常还原。- 插件作者不对任何直接或间接损失负责,包括但不限于:宿主无法启动、数据丢失、账号受限、服务条款违约、法律责任。
- 请自行确认你所在地区的法律法规与所使用服务的条款。因使用本项目产生的一切风险与责任,由使用者自行承担。
- 本项目由原项目 dsh-purge 剥离而来,只保留破甲部分;原项目里的红队 / 渗透工作台(目标卡、角色稿、调度流程、工具链、报告产出)不随本包分发,也不在本项目的支持范围内。
- 本项目按 MIT 许可「按现状」提供,不附带任何明示或暗示的担保。
DSH 自带的系统提示与代码路径里,有一批为了「不出事」而写的段落:免责声明、审批提示句、hooks 的 deny、工具描述里的「先别干」。真拿来干活时,这些句子会反复把执行拉回确认环节。
dsh-breach 干两件事:
它不改你的会话内容,也不接管宿主:只在自己机器、自己这份安装上工作。
只有一种安装方式:从 GitHub 源码安装。
npm 上没有 dsh-breach 这个包——它没通过 npm 的发布期自动扫描,所以不要用 npm i dsh-breach、pnpm add dsh-breach 或界面里粘贴包名,那些都装不到东西。
DSH → 插件 → 添加插件,输入框里填完整仓库地址:
https://github.com/zhuchongba-01/dsh-breach
别只填
dsh-breach。只填包名时 DSH 会当成 npm 包名去查源,而 npm 上同名包只是个空壳,会报「这个包没有声明组合包,无法作为插件安装」。
package.json{
"dependencies": {
"dsh-breach": "github:zhuchongba-01/dsh-breach"
// 本机调试用目录链接:
// "dsh-breach": "link:D:/dsh/dsh-breach"
},
"dsh": { "profile": { "bundles": ["dsh-breach"] } }
}
然后在那个 profile 目录下执行 pnpm install。
插件自带的 CLI 是 dsh-breach(在 profile 的 node_modules/.bin 下),dsh-breach --help 看用法。
重启宿主后访问:
http://127.0.0.1:<DSH 端口>/dsh-breach/status
返回 {"ok":true, ...} 即加载成功。右侧浮动面板点开后能看到补丁分组。
| 概览 | 分组展开 | 失败筛选 |
|---|---|---|
还原 / 应用。全部 / 失败 / 跳过 可按状态过滤——筛选时只保留有命中的分组,组内也只列命中的那几条;全无命中就直接写「无失败补丁」。优先级从高到低:
输入框里正在显示的文字 > $DSH_HOME/prompt-inject.md > 插件内置的加密默认
lib/asset-table.js,运行时解密,明文不落盘。$DSH_HOME/prompt-inject.md,保存即生效,不用重启。把 @deepseek-ai/* 宿主源码里的特定字符串替换掉。
0.2.2-rc.1 上结算为 70 项。.dshhappy.bak 备份,记录在 $DSH_HOME/dsh-breach/applied.json。| 分组 | 干什么 | 例 |
|---|---|---|
| 提示词 | 改系统提示里的身份、免责、审批段落 | #1 全局 / 替换 / 作用域免责 → 强指令;#4 persona 去掉官方默认身份;#5 审批提示句 → 自动放行 |
| 代码 | 改运行时判定与默认值 | #6 沙箱 deny file-write;#7 沙箱默认 danger-full-access(可被 UI 切换);#8 审批默认 never |
| 工具 | 改工具说明与工具表 | #29 web 外部内容 untrusted 拦截 → 可执行数据;#48 bash/pwsh 去掉 delete/move 过度谨慎描述;#60 PTC |
| 兼容 | 让第三方预设 / OAuth 链路能跑 | #40 complete 预设把已折进 persona 的注入放最前;#47 Anthropic OAuth 不再强插 Claude Code 首段系统提示 |
状态语义
| 状态 | 含义 |
|---|---|
| 已生效 | 打了,或本来就是这个样子 |
| 跳过 | 目标文件 / 目标写法在这版宿主里不存在,没有可改的东西(不是错误) |
| 失败 | 找到了目标但改不动(权限、格式变动等) |
| 待应用 | 还没跑过 |
| 工具 | 作用 |
|---|---|
happy_status | 当前打了哪些补丁、哪些失败、备份在哪 |
happy_apply | 打补丁 / 重放 |
happy_revert | 按备份回滚 |
lib/net-scope.js 在第一步拦截三类请求:面向中国大陆 / 香港 / 澳门的主机、约 200 个银行域名、攻击类关键词请求。被拦时直接返回拒绝话术,不进入模型。白名单在 $DSH_HOME/net-scope-allow.txt,一行一个。
插件在自己的 Web 表面注册 /dsh-breach/*,只接受同源请求(跨站 sec-fetch-site、Origin: null、Origin 与 Host 不一致的一律拒绝)。
| 路由 | 作用 |
|---|---|
/dsh-breach/status | 补丁状态 |
/dsh-breach/apply | 应用 / 重放 |
/dsh-breach/revert | 回滚 |
/dsh-breach/override | 读取 / 写入提示词覆盖 |
/dsh-breach/rewind · /rewind/options | 会话回退 |
/dsh-breach/restart | 重启宿主 |
/dsh-breach/uninstall | 卸载 |
把会话退回到指定轮次,并可选是否连带回填输入框内容。
Node.js: >= 18
DSH: >= 0.2.1-rc.5
Surfaces: web, desktop
License: MIT
Install: https://github.com/zhuchongba-01/dsh-breach
| 项 | 值 | 状态 |
|---|---|---|
宿主 0.2.2-rc.1 · desktop | 70 项结算,70 生效 / 0 跳过 | 已验证 |
宿主 0.2.1-rc.5 · desktop | 72 项结算,71 生效 / 1 跳过 | 已验证 |
| 其它宿主版本 | — | 未验证(会自行跳过不认识的写法) |
| Node | ≥ 18 | — |
@deepseek-ai/cordis | ^4.0.1(peer) | — |
全部在 $DSH_HOME/dsh-breach/:
| 文件 | 内容 |
|---|---|
applied.json | 已应用补丁 id 与备份位置 |
host-backups/ | 宿主原文件备份 |
drill-grant.json | 演练授权 |
override-state.json | 覆盖状态 |
installed-rev | 安装版本标记 |
lib/
index.js 插件入口:注册工具、路由、注入钩子
core.js 补丁引擎(补丁定义 + 显示分组 + 应用/回滚)
client.js 客户端 bundle(面板 UI、词条、样式)
desktop.js 桌面表面适配
identity.js 身份覆盖
net-scope.js 区域与敏感操作门
asset-table.js 加密的默认提示词资产
table-key.js 封存/解封(AES-256-GCM + deflate)
rules.js 提示词注入底座(注入文本解析、工作区策略)
rewind.js 会话回退
update.js 自更新(默认关闭)
bin/
dsh-breach.js CLI
scripts/
embed-default-prompt.mjs 把明文 md 封成 asset-table.js
pnpm embed-prompt # 重新封存默认提示词(先准备 lib/default-prompt-inject.md)
node --check lib/index.js # 语法检查
只改了默认提示词正文才需要跑 embed-prompt;运行时不读明文 md。
先回滚补丁(面板点「还原」,或 happy_revert),再删包:
dsh-breach → 卸载pnpm remove dsh-breach,并把它从 dsh.profile.bundles 里删掉$DSH_HOME/dsh-breach/ 里的备份建议留着,确认宿主正常后再清。
宿主升级后要不要重打?
要。升级会覆盖宿主源码,进面板看状态,点「应用」重放即可;reapply 也会在启动时自动补。
「跳过」是坏了吗?
不是。它表示这条补丁的目标在这版宿主里不存在(文件没装、文案已改),无对象可改。本机长期只有 #71(梁神预设的身份句)是跳过,因为没装那个预设。
会不会把我的源码改坏?
每条改动前都写 .dshhappy.bak,applied.json 记着改了哪些;还原 按备份回滚。不认识的宿主版本直接跳过。
面板打不开 / 没反应?
先看 /dsh-breach/status 是否返回 {"ok":true};再确认 profile 的 bundles 里有 dsh-breach,并重启过一次宿主。
这个插件不是从零写的,它是从原项目 dsh-purge 里剥出来的单功能版。
MIT © 2026 zhuchongba01
插件通过改写宿主源码工作,只在你自己的机器、自己的安装上使用。