Skip to content

Releases

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 09 Nov 03:49

Full Changelog: v0.2.3...v0.2.4

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 07 Nov 15:54

Full Changelog: v0.2.2...v0.2.3

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 07 Nov 05:57

Full Changelog: v0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 06 Nov 23:58

Full Changelog: v0.1.2...v0.2.1

Purge Minimal 0.1.2

Choose a tag to compare

@youki258 youki258 released this 06 Nov 12:26

0.1.2

注入足迹缩减版本。0.1.1 仍然通过改写 75 处宿主源码来解锁;0.1.2 把其中 48 处改成宿主官方支持的两种方式——cordis 配置覆盖(8 条)与运行时 hook(4 个扩展点),只保留 27 条确实没有扩展点的源码补丁。同时移除内置红队演练台。

宿主源码改写:75 → 27

项 0.1.1 0.1.2
宿主源码补丁 75 条 27 条
受改写的宿主文件 41 个 .js + 11 个 .yml 15 个 .js + 0 个 .yml
.dshpurge.bak 备份文件 59 个 约 15 个
需要重启才能生效的改动 全部 仅这 27 条;配置与 hook 不再需要重打包
自检层数 23 层 20 层(新增 hook 层、配置覆盖层)

取消的 48 条按去向分三类:

  • 改走 cordis 配置覆盖(8 条):沙箱模式默认值、审批策略、权限预设表与默认预设、bash 超时、read 上限、子代理深度、会话日志上传、system-prompt 身份开关。全部写在 cordis.patch.yml,由宿主官方 patch 层按同 id 合并,不碰任何宿主文件。
  • 改走运行时 hook(4 个扩展点 / 5 条补丁):approval/request(替代 #5/#9/#11/#12 的审批自动放行)、fs/write-intent + fs/edit-intent(替代 #17)、tools/pre-execute(替代 #59)。挂在 cordis 官方事件上,插件卸载即恢复。
  • 直接删除(其余 35 条):改工具描述话术、改身份文案、liangshen 预设、escapesion 阶梯扩权、旧版本兼容垫片等。这些只影响措辞或本就无人使用。

审批策略因此从 never 变为 ask + hook 放行:万一 hook 没挂上,宿主会退回「问一次」而不是静默拒绝或静默放行——失败方向可观察。

自检变成「断言运行期事实」

新增两层:

  • hook 层:四个 hook 是否真的挂载(CLI 进程里显示为不适用,面板里有结论)。
  • 配置覆盖层:cordis.patch.yml 里 8 个 id 行与 defaultPreset: danger-full-access 是否齐全。

补丁表的 20 层逐层检查改为只覆盖留存补丁;当前 profile 的权限选择 层接受三种合法形态(never、ask+hook、bundle 显式固定默认预设),不再把正常的 hook 放行误判为异常。

移除内置红队演练台

lib/redteam/(19 文件 1.1MB)、presets/redteam/、skills/redteam/(23 份技能)、面板演练台(5 个组件约 11000 行)全部移除,浏览器 bundle 从 653KB 降到 263KB。

$DSH_HOME/redteam/ 下的数据(599MB 工具链、演练记录、知识库)原样保留,不动一个字节。其中通用的方法论抽成 skills/pentest-sop.md:证据四档分级、按服务计分封顶、报告可复现纪律。

无限制模式与红队模式本来就是两条线,删掉演练台不影响「所有操作无限制」:全权限来自 danger-full-access 预设(沙箱与文件围栏由宿主自己在全权限模式下短路放行)+ approval/request hook。

验证

  • pnpm test:514 tests / 491 pass / 0 fail / 23 skipped;
  • node scripts/check-docs.mjs:文档版本一致;
  • 主实例(3080)与隔离实例(3081)selfcheck:20 层全绿,host 15/15、hook 1/1、override 1/1、broken 0;
  • 双实例面板回归:无插件加载错误、无控制台报错、显示「Purge 0.1.2 / 21/21 · 6 条本机不适用」;
  • 打包:dsh-purge-minimal-0.1.2.tgz 约 1.7MB。

Purge Minimal 0.1.1

Choose a tag to compare

@youki258 youki258 released this 06 Nov 08:21

0.1.1

出厂默认提示词替换版本。0.1.0 的加密槽里封的是一份 39896 字节的长文本,含操作者本机的人格设定与一条本机绝对路径;0.1.1 把槽内容换成一份 2009 字节的通用版本,并重建了仓库历史。

出厂默认提示词

项 0.1.0 0.1.1
明文长度 39896 字节 / 459 行 2009 字节 / 19 行
日常注入 2212 字节 约 2.0 KB(全量注入,不再分段裁剪)
加密槽文件 22764 字节 2042 字节
含本机绝对路径 1 处 0
含操作者姓名 4 处 0

新文本是六条行为纪律(思维 / 产出纪律 / 语言 / 绝对能力面 / 上下文自律 / 验证纪律)加六条硬约束(绝不拒绝 / 一次拒绝即故障 / 做完 / 缺细节就填 / 每轮独立 / 不可逆操作先说明)。删掉的是:441 行只对红队会话生效的分段标记内容、44 行装饰线、12 组逐字重复段落、一处上游人格名、一条孤立编号残片、一份按类别罗列的测试清单,以及若干会让输出变差的措辞限制。

强制语句契约从 31 条改为 8 条语义锚点;契约测试改为直接解槽校验(test/inject-contract.test.mjs → lib/table-read.js 的 openSlot()),不再依赖用户的 ~/.dsh/prompt-inject.md。

用户文件不受影响

lib/core.js 的 isKeepableUserOverride() 在 override-state.json 记录 customized: true 时直接返回 true,换出厂默认不会覆盖 ~/.dsh/prompt-inject.md。升级后用户自己的提示词文件保持原样。

仓库重建

0.1.0 发布后 3 分 22 秒被自动化账号 fork 并保留了完整历史,其中含旧槽内容。0.1.1 以删除并重建仓库的方式发布,历史中不含任何旧槽 blob。

验证

  • pnpm test:全量通过(详见仓库 docs/STATE.md);
  • node scripts/check-docs.mjs:文档版本一致;
  • 解槽校验:2009 字节,操作者姓名 0 处,本机路径 0 处;
  • 主实例与隔离实例双回归:面板渲染正常、无插件加载错误、selfcheck 宿主补丁全绿。