YuJunZhiXue/dsh-purgePublic

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

AI summary: A local security plugin for DeepSeek Harness separating prompt modification from host interception.

Stars
10.6K
+1.9K today
Forks
2.3K
Watchers
18
Open issues
19
Open PRs
8
Contributors
~10
Commits
233
Branches
2

JavaScriptOtherCreated Aug 19, 2026Last push 3d agoLatest release v1.1.71+1.9K stars this week+1.9K this month

Quick answers

What is dsh-purge?
A local security plugin for DeepSeek Harness separating prompt modification from host interception.
What does dsh-purge do?
dsh-purge is a network security red team evaluation plugin installed on the official local DeepSeek Harness. It separates the problem submission process from host-level interceptions like prompt rewriting, approval gates, and sandbox environments. This separation enables controlled evaluations without mistaking host interceptions for model refusals. The tool modifies policies, permissions, and tool limits directly within the user's local instance. It ensures modifications only apply to the user's authorized local software rather than acting as a public scanner.
Who is dsh-purge for?
Security researchers and red team operators managing their own local DeepSeek Harness installations.
How do I get started with dsh-purge?
dsh plugin --profile web add dsh-purge
How popular is dsh-purge on GitHub?
YuJunZhiXue/dsh-purge has 10,618 stars and 2,299 forks on GitHub, and gained 1,938 stars in the last 7 days.
What license does dsh-purge use?
YuJunZhiXue/dsh-purge is released under the Other license.

Star history

since Oct 19, 2026
05K10KOct 2026Oct 2026Oct 2026Oct 2026
10.6K stars as of Oct 20, 2026. Measured daily since Oct 19, 2026; GitHub no longer exposes earlier star timestamps.

Update history

1 recorded
  • Oct 19, 2026License changed from MIT to Other.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepOctMonWedFri2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 5 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 3 commits2026-08-31: 4 commits2026-09-01: 1 commit2026-09-02: 4 commits2026-09-03: 1 commit2026-09-04: 0 commits2026-09-05: 2 commits2026-09-06: 1 commit2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 1 commit2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 1 commit2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 2 commits2026-09-17: 7 commits2026-09-18: 12 commits2026-09-19: 7 commits2026-09-20: 10 commits2026-09-21: 5 commits2026-09-22: 2 commits2026-09-23: 10 commits2026-09-24: 8 commits2026-09-25: 3 commits2026-09-26: 0 commits2026-09-27: 4 commits2026-09-28: 15 commits2026-09-29: 5 commits2026-09-30: 5 commits2026-10-01: 8 commits2026-10-02: 11 commits2026-10-03: 9 commits2026-10-04: 6 commits2026-10-05: 2 commits2026-10-06: 3 commits2026-10-07: 2 commits2026-10-08: 4 commits2026-10-09: 30 commits2026-10-10: 5 commits2026-10-11: 12 commits2026-10-12: 3 commits2026-10-13: 1 commit2026-10-14: 0 commits2026-10-15: 0 commits2026-10-16: 1 commit2026-10-17: 0 commits2026-10-18: 0 commits2026-10-19: 1 commit2026-10-20: 0 commits2026-10-21: 0 commits2026-10-22: 0 commits2026-10-23: 0 commits2026-10-24: 0 commits
216 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    10,618 stars

  • Breakout launch

    10,618 stars in 65 days

  • Rising fast

    +1,938 stars this week

What dsh-purge does

dsh-purge is a network security red team evaluation plugin installed on the official local DeepSeek Harness. It separates the problem submission process from host-level interceptions like prompt rewriting, approval gates, and sandbox environments. This separation enables controlled evaluations without mistaking host interceptions for model refusals. The tool modifies policies, permissions, and tool limits directly within the user's local instance. It ensures modifications only apply to the user's authorized local software rather than acting as a public scanner.

Security researchers and red team operators managing their own local DeepSeek Harness installations.

  • Separated evaluation: Allows independent testing of model responses versus host interceptions.
  • Patch management: Group, view, apply, revert, and uninstall patches directly from the interface.
  • Prompt editing: Edit prompts and manage multiple rule sets within the plugin.
  • Drill platform: View assets, skills, and local environment details for authorized targets.
  • Host policy adjustment: Modify default text, permission strategies, and tool limits without creating new identities.
  • Automatic reapplication: Automatically checks and reapplies patches upon startup to handle npm upgrades.

Where teams use it

Controlled security evaluations

Conduct security assessments on local AI models without interference from host-level restrictions.

Robustness testing

Evaluate the default policy strength of the DeepSeek Harness to determine if restrictions need tightening.

Local environment inspection

Review authorized assets, skills, and configurations within a secure, offline local setup.

Prompt policy management

Manage and test various prompt injection rules and strategies securely.

Getting started: dsh plugin --profile web add dsh-purge

README

master branch

dsh-purge

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

Version 1.1.71

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

GitHub stars MIT license awesome · DSH plugin DeepSeek Harness Hub DSH
Node.js JavaScript

Listed on dsh-plugin.org

中文 · English

暂时停更。

这段时间要先把工作安顿好,项目维护先放一放:暂不发新版本,暂不处理 issue / PR,新版 dsh 也不保证跟上。已经发布的版本可以继续用,仓库也还在。等我恢复维护,会写在这篇 README 开头。

这个项目一直是业余在做。若它对你有帮助,欢迎看看下面的 赞助;也在征集 README 广告位,换一点把项目撑下去的空间。

官方 Web 和官方桌面端都支持。 官方 dsh web 用 profile web;官方桌面 EXE(DeepSeek Harness 0.2.0-rc.2)用 profile desktop。两边分开安装、分开点「应用」。当前版本只适配 dsh 0.2;更早的 dsh 用对应的老版本插件。社区桌面端不维护。

写进 profile 还不会改宿主。点会话标题旁的 dsh-purge → 清洗 → 应用。成功会自动重启;补丁没打完不重启。重启后新开一轮对话,注入才进当前会话。

Node.js ≥18。Windows 无闪窗需要 Node ≥22。插件市场一键安装和下面的命令都走 npm 包 dsh-purge。

目录


☕ 赞助

这个项目要是帮到你了,欢迎打赏。我是讨口子,施舍点~

资产 地址
USDT(TRC20) TV5ajPkRD8RH623Dx9mqvYZVNN8nPGRKid
Solana 6x16GhRgLVpKFFXaU1seKNdx2rypspSJTL4dbpt6Xpwk
Ethereum 0xB68BD60C0e8c519513B7DF9bB147696815423B3E
Bitcoin bc1qu70yxkrtwnymt8ryluz9x8y8hqzune5340npht

广告位

README 长期有人看,现开放少量展示位。收入用于贴补业余维护。

位置 状态
本页赞助区上方(文字链 + 一句介绍,或一张小图) 空缺,可定

名额少,谈妥再上。不接灰产、盗版、冒充本仓库、纯引流盘。

合作请发邮件 [email protected],或 GitHub @YuJunZhiXue 私信。标题注明「dsh-purge 广告位」。


介绍

dsh-purge 是装在本机官方 DeepSeek Harness 上的网络安全红队评测插件。官方 Web(dsh web)和官方 桌面端(EXE)都支持,两边分开装、分开应用。

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

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

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

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


📌 非盈利公益项目,严禁任何主体用于商业售卖、付费倒卖或黑灰产牟利,仅供技术参考。

署名要求

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

不署名、隐瞒来源、改头换面据为己有,作者将依法追究责任。


违规商用公示

抖音直播账号 「老张的ai」(直播间显示 「老张AI讲堂」)把本仓库当收费货卖:直播间问价、当场收钱,不署名,也不守上面的非盈利条款。作者人就在场,对方照收。

本项目免费、非盈利。拿它卖课、卖插件、卖 token、倒卖,许可当场作废,作者保留追究权利。

2026-10-12 直播记录:

老张的ai 直播问价 老张的ai 直播收钱

对方微信名 「老张的ai科技」,直播间观众榜同号。被问到是不是本仓库开发者时,自称「老厉害了」;作者当场表示要投诉。

老张的ai科技 微信自称开发者


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

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

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

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

适配范围

最新版只支持 dsh 0.2,不要拿它去打 0.1.x。

  • dsh 0.2(官方桌面 0.2.0-rc.2 / 官方 dsh web):用 1.1.40 及以上。本页命令装的就是这一档。
  • dsh 0.1.7(含 rc.1 / rc.2):用 1.1.39 及更早 —— 在 Releases 里选对应标签。

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


安装

现在只维护官方 dsh web 和官方桌面 EXE,两边都要装、分开应用。Web 的包进不了桌面端,桌面端的包也进不了 Web。

Web(官方 dsh web)

dsh plugin --profile web add dsh-purge

桌面端(官方 EXE)

dsh plugin --profile desktop add dsh-purge

当前目录已经是本仓库时,把包名换成 add .。dsh 不在 PATH 时走 手动安装。registry 上不去:同一个 --profile,把目标换成 https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.tar.gz。

插件市场 一键安装会按本仓库反查 npm,命中后装 dsh-purge。目录页可能仍写 github: —— 按钮若退回 git,用上表命令。

桌面客户端也可以点按钮(dsh:// 唤起):

唤起客户端一键安装

装完都要做这三步

只把插件写进 profile 还不会改 @deepseek-ai。

  1. 退出并重新打开刚装的那个宿主:Web 关掉 dsh web 再开;桌面端退出托盘再打开对应 exe。
  2. 在这个宿主点会话标题旁的 dsh-purge,在 清洗 页点 「应用」。宿主的设置页里没有这个条目。
  3. 「应用」成功后会自动重启一次,让补丁进入当前进程。没做完不会重启。

Web 的控件只动 Web,桌面端的只动桌面应用。不要在一个宿主里点另一个宿主的应用。

怎样算装上了

  • 会话标题旁有 dsh-purge,点开后在「清洗」里能点「应用」。
  • 聊天里 /purge status 能打出 DSH_HOME 和补丁列表,路径应是你正在用的那一份。
  • 没装的可选包(例如梁神)显示跳过,不挡住应用完成。

交给助手安装

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

给 AI 助手(只安装)

安装 DeepSeek Harness 插件 dsh-purge,Web 和官方桌面端都要装。不要全盘搜索,不要读或改其它文件,不要应用设置,也不要重启应用。

dsh 不在 PATH 就告诉用户后停止。当前目录已是本仓库时,把下面两条里的包名都换成 .。npm registry 上不去,把包名换成 https://github.com/YuJunZhiXue/dsh-purge/archive/refs/heads/master.tar.gz。某个 profile 不存在就跳过那一条,另一条照装。

Web 端(官方 dsh web)

dsh plugin --profile web add dsh-purge

桌面端(官方 EXE)

dsh plugin --profile desktop add dsh-purge

命令结束后,提醒用户:Web 完全退出并重启 dsh web;桌面端退出托盘再打开 EXE。各自点会话标题旁的 dsh-purge,在「清洗」里点「应用」。然后停止。

手动安装

命令行装不上、或 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(目录名必须是 dsh-purge,其 package.json 里 "name" 也必须是 dsh-purge)。

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

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

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

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

JSON 要合法(新增项前面有逗号,最后一项后面没有多余逗号)。file:../../plugins/dsh-purge 不要改成绝对路径,patchReload、其它插件、版本号都不要动,"dsh-purge" 不要写两次。桌面端没有 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/package.json。找不到 pnpm 就用官方 dsh 自带的 Node / pnpm;报 Could not resolve 就检查 file: 路径;JSON 解析失败就修逗号或还原备份。

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

卸载

会话标题旁的 dsh-purge →「清洗」→「卸载」。弹窗确认:会先还原已应用的补丁,还原回原版 Harness,再重启当前宿主。

# 也可以用命令行 / 聊天
dsh-purge --uninstall
# /purge uninstall

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

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

界面预览

会话标题旁有 dsh-purge。点开是右侧栏,两页:清洗 和 演练台。白 / 墨可切换。补丁按组展开,进度只计真正已应用的项。规则集在上方列表启用或删除,下方编辑正文。

第一次进演练台要先读声明、等倒计时、滚到文末并勾选三项。清洗不需要这一步。演练台只用于你有权管理的本机、离线靶标,或已经书面授权的演练环境。

清洗

清洗

演练台授权

演练台授权

演练台

演练台

补丁

补丁

规则集

规则集

自己的服务器

在清洗页,提示词下面。每行一台,点保存名单。步骤见 自己的服务器。

自己的服务器

区域 说明
dsh-purge 会话标题旁的按钮,打开或收起右侧栏
清洗 原来的规则设定:补丁、提示词、规则集、Skill
演练台 授权后的资产、技能与环境页。未授权时按钮标「未授权」
补丁 分组查看状态,应用、还原或卸载
提示词 编辑 prompt-inject.md,作为会话覆盖段
自己的服务器 每行登记一个 IP 或完整主机名,保存后写入 $DSH_HOME/net-scope-allow.txt
规则集 多套 AGENTS.md / CLAUDE.md;启用写入 $DSH_HOME,删除从列表去掉
Skill 导入压缩包或文件夹到当前宿主官方目录 $DSH_HOME/skills/<id>/SKILL.md(Web / 桌面各用自己的主目录,不写死盘符);命中、加载、/名称 由 DSH 负责。也可自己删该文件夹

目录结构

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

运行时文件在 $DSH_HOME:prompt-inject.md、rules/、skills/、net-scope-allow.txt、redteam/。未设 DSH_HOME 时,优先用 dsh 安装目录旁边的 .dsh,再退回 ~/.dsh。Web 和桌面端各用自己那一份主目录。Skill 不进注入段,也不顶替提示词。


使用

# 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
/skills list | import <压缩包或文件夹> | create <id> [说明] | delete <id> | help
/rewind

# 模型工具
purge_status   purge_apply   purge_revert

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

输入框旁的「回退一次」和「回退上一轮」跟官方 DSH session.fork({ atSeq }):撤回已进行的那一轮,新会话接上之前的上下文,旧会话归档,那句回到输入框,再发送会重新注入。聊天里 /rewind 同样可用。

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

响应速度

DSH 会按顺序执行同一批中的 Bash 调用。旧版 dsh-purge 把默认前台等待从 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;搜索文件时应限定目录,避免递归扫描所有应用目录。

自己的服务器

中国大陆、香港、澳门的地址默认禁止。只有事先登记的那一台可以例外。在对话里说「这是我的服务器」不会放行。密钥和密码也不会。

这一栏在提示词下面。若侧栏里还没有它,先完全退出 DeepSeek Harness,再重新打开。

  1. 点会话标题旁的 dsh-purge,停在 清洗。
  2. 往下滚过 提示词,下面就是 自己的服务器。
  3. 每行只写一台,用下面三种写法之一:
  • 203.0.113.10:一个 IP。
  • my-vps.example.com:一个完整主机名。保存后,这个主机名当时解析出来的地址也会放行。
  • [email protected]:账号只用来认出这种写法,不能证明这台机器属于你。
  1. 点 保存名单。名单写在 $DSH_HOME/net-scope-allow.txt。
  2. 密钥、密码、网段和通配符会在保存时丢掉。没有写进名单的大陆、香港、澳门地址仍然禁止。

上面的 203.0.113.10 和 example.com 只是写法示例,不是放行地址。把它们换成你自己的那一台再保存。


本地校验

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["注入插件加密默认(提示词框默认显示的那份)"]
Loading

每次会话的覆盖:

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

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

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
Loading

Skill 不进注入段:

flowchart LR
  A["设置页导入或 /skills import"] --> B["写到官方 skills 目录"]
  B --> C["由 DSH 加载"]
  C --> D["卸载插件不删用户 Skill"]
Loading

还原

  • 每个目标文件在应用前备份为 <文件>.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,不改文件。


更新

每一版改了什么、安装包在 Releases。发新版时把 package.json 的版本号改掉,中英文说明写进 release-notes.md,推到 master 就会自动打包。同一版本再推送不会重复发包。

说明

  • 改动范围是本机 @deepseek-ai/* 包里的渲染文案、默认策略和执行逻辑,以及用户目录下的覆盖文件与规则集。
  • 升级后原文对不上会显示跳过,这次应用仍算完成,不会乱改。
  • 不改动非 @deepseek-ai 的第三方插件源仓库(启动时的 CMD 无感会尽力修补已装的 doctor / market / 梁神 / mnemon,属运行时补丁)。
  • 安装走 npm 包名 dsh-purge:dsh plugin --profile web add dsh-purge 或 dsh plugin --profile desktop add dsh-purge。当前目录已是本仓库时 add .。registry 上不去再加 master.tar.gz。插件市场一键安装走同一个 npm 包。

感谢 LINUX DO 社区

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

72 total
  1. v1.1.71v1.1.71Oct 11, 20262.2K downloads

    # 1.1.71 ## 中文 - 版本 **1.1.71**。 - 修复 1.1.70 的 `??` 混 `||`:插件启用时 `failed to import`(桌面 / Web 同一入口)。 - #86 只改 UI 队列 steer → followup;公共 `steer()` 收回 next-step,代理间 `send_message` 仍下一步插入。 - `installed-rev` 跨版本不再沿用旧 `apply:x.y.z`。#88 按现行 `renderedPrompt` / 旧 `system` 锚点打中的那条落标记。 - 发版前 `node --check` 主入口,避免再把语法错误打进 Release。 ## English - **1.1.71**. - Fix 1.1.70 `??` mixed with `||`: enable failed to import on desktop and web. - #86 keeps UI queue steer → followup. Public `steer()` is next-step again so `send_message` inserts at the next step. - Stale `apply:x.y.z` in `installed-rev` refreshes across versions. #88 marks the host anchor that actually exists (`renderedPrompt` or `system`). - Release CI syntax-checks the plugin entry. # 1.1.70 ## 中文 - 版本 **1.1.70**。 - Hub / 残装若给 `dsh-purge` 加上 `pluginPackages`,Cordis 会一直 pending,宿主退出码 1。本版把依赖钉回 `systemPrompt` + `tools`。 - 清洗页只合并升级链展示(免责、审批、挂全文、hooks 等),Apply 仍打全部补丁。 - 去掉已无用的 #81 / #89 清单行;挂全文并进 #87,官方 phase-1 走静默放行。 - 指挥端改为「按用户给的目标开工」。合并 #97 / #98 / #99。 ## English - **1.1.70**. - Hub / incomplete installs that inject `pluginPackages` leave dsh-purge pending and kill the host. Dependencies are pinned to `systemPrompt` + `tools`. - C

  2. v1.1.70v1.1.70Oct 11, 202638 downloads

    # 1.1.70 ## 中文 - 版本 **1.1.70**。 - Hub / 残装若给 `dsh-purge` 加上 `pluginPackages`,Cordis 会一直 pending,宿主退出码 1。本版把依赖钉回 `systemPrompt` + `tools`。 - 清洗页只合并升级链展示(免责、审批、挂全文、hooks 等),Apply 仍打全部补丁。 - 去掉已无用的 #81 / #89 清单行;挂全文并进 #87,官方 phase-1 走静默放行。 - 指挥端改为「按用户给的目标开工」。合并 #97 / #98 / #99。 ## English - **1.1.70**. - Hub / incomplete installs that inject `pluginPackages` leave dsh-purge pending and kill the host. Dependencies are pinned to `systemPrompt` + `tools`. - Clean page groups upgrade-chain patches for display only; Apply still writes every patch. - Dropped dead #81 / #89 rows. Hang lives in #87. Official phase-1 keep is silent. - Commander bind: start from the user's target. Includes #97 / #98 / #99. # 1.1.69 ## 中文 - 版本 **1.1.69**。 - 发送时剥掉 ChatML / `project_instructions`,框和磁盘不动。 - 应用 + 重启挂当前默认,不必再点保存;框里仍是插件旧默认会刷到加密槽。 - 红队只排不折:注入 → cap → 红队正文;目标卡/角色段改名 `dshpg-*`。 - 隔离 ctx 也注册 inject/cap;#86 steer 改 next-turn;#87 hang 用 LF 比对。 - 红队操作稿锁「上面的提示词作准」;指挥端去掉「给了单位名就授权」。 ## English - **1.1.69**. - Peel ChatML / `project_instructions` on the wire; box and disk stay intact. - Apply + restart hangs the current default; no extra Save. Stale plugin defaults refresh from the sealed slot. - Redteam

  3. v1.1.69v1.1.69Oct 10, 2026109 downloads

    # 1.1.69 ## 中文 - 版本 **1.1.69**。 - 发送时剥掉 ChatML / `project_instructions`,框和磁盘不动。 - 应用 + 重启挂当前默认,不必再点保存;框里仍是插件旧默认会刷到加密槽。 - 红队只排不折:注入 → cap → 红队正文;目标卡/角色段改名 `dshpg-*`。 - 隔离 ctx 也注册 inject/cap;#86 steer 改 next-turn;#87 hang 用 LF 比对。 - 红队操作稿锁「上面的提示词作准」;指挥端去掉「给了单位名就授权」。 ## English - **1.1.69**. - Peel ChatML / `project_instructions` on the wire; box and disk stay intact. - Apply + restart hangs the current default; no extra Save. Stale plugin defaults refresh from the sealed slot. - Redteam: inject → cap → ops only (no fold). Card/role sections renamed `dshpg-*`. - Isolated ctx also registers inject/cap. #86 steer → next-turn. #87 hang needle uses LF. - Redteam ops note: inject wins. Commander no longer says a company name means authorized. # 1.1.68 ## 中文 - 版本 **1.1.68**。 - **#92**:技能面板认 YAML 块标量 `description`(`|` / `>`),不再误报不可用。 - **#93**:红队「版本/更新」:`file://` 转成本地路径;Windows 用 `.cmd` + `shell` 起 npm/pnpm;npm 404 回落 GitHub tags。 - **#94**:官方桌面 CLI 入口补 `app.asar.unpacked` 回退。Hub 首次安装仍可能撞官方 asar 路径。 - **#95**:拆除 `refusal-recover`(读错字段永不触发;修好会无限复读)。 - **#96**:bash 前台等待从插件标过的 600s 迁回 60s,后续工具不再被堵 10 分钟。 - 注入置顶;capability 段改名 `dshpg-capabilities`;用户 prompt 一律 followup(#85);默认关闭自动「继续」。 #

  4. v1.1.68v1.1.68Oct 10, 202634 downloads

    # 1.1.68 ## 中文 - 版本 **1.1.68**。 - **#92**:技能面板认 YAML 块标量 `description`(`|` / `>`),不再误报不可用。 - **#93**:红队「版本/更新」:`file://` 转成本地路径;Windows 用 `.cmd` + `shell` 起 npm/pnpm;npm 404 回落 GitHub tags。 - **#94**:官方桌面 CLI 入口补 `app.asar.unpacked` 回退。Hub 首次安装仍可能撞官方 asar 路径。 - **#95**:拆除 `refusal-recover`(读错字段永不触发;修好会无限复读)。 - **#96**:bash 前台等待从插件标过的 600s 迁回 60s,后续工具不再被堵 10 分钟。 - 注入置顶;capability 段改名 `dshpg-capabilities`;用户 prompt 一律 followup(#85);默认关闭自动「继续」。 ## English - **1.1.68**. - **#92**: Skill panel parses YAML block-scalar `description`. - **#93**: Redteam update: `file://` → fs path; Windows npm/pnpm via `.cmd`; GitHub tags if registry 404. - **#94**: Desktop CLI falls back to `app.asar.unpacked`. Hub first-install may still hit stock asar. - **#95**: Removed `refusal-recover` (dead reader / unbounded nudge loop). - **#96**: Restore marked bash foreground wait 600s → 60s. - Inject leads; capability section renamed; user prompt always followup; autoContinue default off. # 1.1.67 ## 中文 - 版本 **1.1.67**。 - **#85**:continue 续跑在传输/429 连错时不再无限兜圈。`takeContinue` 加 failStreak 阈值;`refundContinue` 不清 `lastContinueSeq`,连错 ≥3 直接放弃。 - **#84**:区域拦截的空 Assistant 流改为单批 `text-chunks` 记录(带 `.length`),不再卡

  5. v1.1.67v1.1.67Oct 9, 2026239 downloads

    # 1.1.67 ## 中文 - 版本 **1.1.67**。 - **#85**:continue 续跑在传输/429 连错时不再无限兜圈。`takeContinue` 加 failStreak 阈值;`refundContinue` 不清 `lastContinueSeq`,连错 ≥3 直接放弃。 - **#84**:区域拦截的空 Assistant 流改为单批 `text-chunks` 记录(带 `.length`),不再卡住宿主 UI。 - 启动种子:进程启动时若 `$DSH_HOME/prompt-inject.md` 为空或缺失,自动把加密默认稿写一次;用户改过的稿不动。清洗完点重启后,重启成功立刻就能用默认提示词。 - Windows 官方包重启:restart 脚本名改成 `pid+random`,首启不与并发实例打架;多余的 `.cmd` 中介删掉,直接 `wscript.exe //nologo //B` 起脚本;本机旧版无 pid 后缀的脚本/日志超过 24h 启动时自动清。 - 杀进程范围收紧:`ASAR_SWAP_PS1` 不再 `/IM` 杀全名同名进程,只按安装根下 pid 停,避免误伤第三方同名。 - 官方 CLI shim 原地改写之前先存一份 `.dsh-purge.bak`,并走原子写,断电/盘满可回退。 - 首装场景不卡:WScript 判 clean 时,两边都是 null(文件缺或读失败)放行启动,只有任一明确 dirty 才拦。 - 探测缓存:`runningExes` / `shortcutExes` 空结果不再缓存;点"应用"前 `clearDesktopLocateCache()` 仍可强刷。 - `scheduleAsarRenameWhenIdle` 的 `.rename-pending` 锁:时钟回拨或超过 30 分钟视为失效,清掉重做。 - `execFileSync` 三处 PowerShell 调用加 `maxBuffer: 8MB`,大结果不再静默 ENOBUFS 掉。 - 其他:net-scope region gate 指数退避 + IPv6 regex 收紧;identity `injectMatchers` 支持 >4096 分段匹配、`installAssembleGuard` 幂等;hooks-deny 删 R0 兜底规则改原子写;extract-asar commit 不删 `nextDir`,写 `.dshpurge-recover.json` 便回滚;client.js redteam preset 多路检测、shell.submit WeakMap 清理补齐。 ## English - **1.1.67**. - **#85**: Continue loop no

Commits per week

last 52 weeks
570Week of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 5 commitsWeek of 2026-08-23: 0 commitsWeek of 2026-08-30: 15 commitsWeek of 2026-09-06: 2 commitsWeek of 2026-09-13: 29 commitsWeek of 2026-09-20: 38 commitsWeek of 2026-09-27: 57 commitsWeek of 2026-10-04: 52 commitsWeek of 2026-10-11: 17 commitsWeek of 2026-10-18: 1 commitsOct 26, 2025Oct 18, 2026
216 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 5 commitsSun 1:00 — 0 commitsSun 2:00 — 1 commitsSun 3:00 — 1 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 2 commitsSun 8:00 — 1 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 2 commitsSun 12:00 — 0 commitsSun 13:00 — 1 commitsSun 14:00 — 1 commitsSun 15:00 — 0 commitsSun 16:00 — 6 commitsSun 17:00 — 1 commitsSun 18:00 — 6 commitsSun 19:00 — 2 commitsSun 20:00 — 0 commitsSun 21:00 — 4 commitsSun 22:00 — 1 commitsSun 23:00 — 4 commitsMon 0:00 — 2 commitsMon 1:00 — 2 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 2 commitsMon 10:00 — 4 commitsMon 11:00 — 0 commitsMon 12:00 — 4 commitsMon 13:00 — 3 commitsMon 14:00 — 1 commitsMon 15:00 — 3 commitsMon 16:00 — 2 commitsMon 17:00 — 2 commitsMon 18:00 — 3 commitsMon 19:00 — 0 commitsMon 20:00 — 0 commitsMon 21:00 — 2 commitsMon 22:00 — 0 commitsMon 23:00 — 0 commitsTue 0:00 — 4 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 1 commitsTue 10:00 — 0 commitsTue 11:00 — 0 commitsTue 12:00 — 0 commitsTue 13:00 — 1 commitsTue 14:00 — 1 commitsTue 15:00 — 0 commitsTue 16:00 — 1 commitsTue 17:00 — 0 commitsTue 18:00 — 1 commitsTue 19:00 — 0 commitsTue 20:00 — 1 commitsTue 21:00 — 0 commitsTue 22:00 — 0 commitsTue 23:00 — 3 commitsWed 0:00 — 4 commitsWed 1:00 — 1 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 0 commitsWed 10:00 — 0 commitsWed 11:00 — 1 commitsWed 12:00 — 0 commitsWed 13:00 — 2 commitsWed 14:00 — 1 commitsWed 15:00 — 0 commitsWed 16:00 — 4 commitsWed 17:00 — 4 commitsWed 18:00 — 4 commitsWed 19:00 — 0 commitsWed 20:00 — 1 commitsWed 21:00 — 1 commitsWed 22:00 — 1 commitsWed 23:00 — 4 commitsThu 0:00 — 2 commitsThu 1:00 — 0 commitsThu 2:00 — 1 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 1 commitsThu 9:00 — 2 commitsThu 10:00 — 1 commitsThu 11:00 — 1 commitsThu 12:00 — 2 commitsThu 13:00 — 3 commitsThu 14:00 — 0 commitsThu 15:00 — 2 commitsThu 16:00 — 2 commitsThu 17:00 — 3 commitsThu 18:00 — 1 commitsThu 19:00 — 1 commitsThu 20:00 — 3 commitsThu 21:00 — 2 commitsThu 22:00 — 2 commitsThu 23:00 — 0 commitsFri 0:00 — 2 commitsFri 1:00 — 1 commitsFri 2:00 — 6 commitsFri 3:00 — 1 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 1 commitsFri 10:00 — 2 commitsFri 11:00 — 1 commitsFri 12:00 — 2 commitsFri 13:00 — 4 commitsFri 14:00 — 8 commitsFri 15:00 — 5 commitsFri 16:00 — 1 commitsFri 17:00 — 3 commitsFri 18:00 — 4 commitsFri 19:00 — 1 commitsFri 20:00 — 2 commitsFri 21:00 — 3 commitsFri 22:00 — 6 commitsFri 23:00 — 6 commitsSat 0:00 — 6 commitsSat 1:00 — 5 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 2 commitsSat 10:00 — 1 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 2 commitsSat 14:00 — 1 commitsSat 15:00 — 0 commitsSat 16:00 — 2 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 2 commitsSat 20:00 — 1 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 1 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits218 (94%)
Community commits14 (6%)

232 commits in total over the last year.

DateListRankStars gained
Oct 20, 2026weekly#9+2,933
Oct 19, 2026weekly#9+2,622
  • morluto/rea

    Reverse engineer anything with agents, from app behavior down to native binaries.

    370.6K stars · TypeScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    287K stars · JavaScript

  • react/react

    The library for web and native user interfaces.

    251.7K stars · JavaScript

  • DietrichGebert/ponytail

    Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

    174.4K stars · JavaScript

  • huggingface/transformers

    🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.

    168K stars · Python

  • vercel/next.js

    The React Framework

    143.2K stars · JavaScript