5 Commits
Author SHA1 Message Date
叫我小杨同学 d1eff01eb6 fix: 补丁 rc.2/rc.5 双版本适配,版本 1.1.88 2026-11-02 01:31:15 +08:00
叫我小杨同学 335ddee90f fix: 全仓审计加固与死代码清理,版本 1.1.87
- 回滚/备份:空 bak 改名 .bad 跳过;升级刷新 bak 补上单数 marker 补丁;统一原子写
- 补丁命中:optional 命中不符记软失败;#42 插入型替换加探针防重复插入
- Windows:进程枚举改用 | 分隔 + UTF-8,修复中文路径换包不杀旧进程;换包失败拉起原版
- 安全:asar 解包防越界;红队路径校验 realpath 防空 symlink;更新仅 https;报告回放去换行注入
- 提示词钩子:停用后 rewriteFn 返回原装配文本并清理 assemble guard;缓存签名纳入红队/策略/override
- 红队:listEngagements 默认不算统计;listVulns/报告支持 evidenceLimit
- 子代理名额占位即时生效并回退;--apply 有失败项退出码 1
- 清理:删除 lib/mnemon-settings.js 及 13 处死代码/未使用 import;移除 test 目录与 test 脚本
2026-11-01 21:47:03 +08:00
叫我小杨同学andClaude 6f9c500bb5 fix: 补丁失配判定加 drifted,宿主版本门禁与 expect 命中数契约(#188 通用部分)
从 PR #188(Pluto-Yt,fix/drift-detection)手改取通用部分落地,不含
0.2.1-rc.3 专属适配:

- 补丁失配不再静默成 skipped:文件在、marker 没有、pattern 一条都不中
  → 新增 drifted 状态(filePatchOutcome / patchStatus / rollupPatchStatus)。
  以前这种情况一律返回 skipped 并被当软成功,官方一升级插件就静默失效,
  状态页却全绿
- isSelfMarkedPatch() 例外:pattern 本身就是本插件写进宿主的痕迹
  (#80 撤销型),找不到 = 本来没加过或已撤过,仍算 skipped
- ALWAYS_SOFT_STATUSES 去掉 skipped;skipped 改为只有可选/自标记型才算
  软成功;drifted 看得见(状态页标红、不计入 ready)但不阻断 Apply,
  免得把 0.1.6 / 0.2.0 / 0.2.1-rc.2 上的用户堵死
- tallyDisplayPatches / rollupDisplayStatus:drifted 压过 applied
- ensureHostClean 不再过滤 pattern_not_found:没打上就是没打上
- 宿主版本门禁:读 package.json 的 dshTarget,比对宿主真实版本,
  gatherState 暴露 host_version / host_target / host_supported,
  CLI 与状态页在未适配时直接告警
- applyReplacementsToText 支持 { pattern, replace, expect } 命中数契约:
  命中数与声明不符就整条拒写,并回传实际命中数
- #77 锚点容错:写死 5 行改成锚首尾 + 非贪婪窗口 (?:(?!isRewindMarker)[\s\S]){0,300}?,
  官方在中间插一行也照样命中;窗口排除 isRewindMarker 保证二次应用不叠加

额外修的 bug:

- rollupPatchStatus 的 lastError 提到最前:以前只在 strictFiles 分支里返回,
  一个文件写成功就把别的文件 EACCES / read_error 吞成绿
- applyReplacementsToText 的 expect 契约原先只对字面量 pattern 生效,正则
  分支直接 continue 掉了 —— 官方把同一段代码复制成两份时正则会把两处一起
  改掉,补上正则分支的命中数检查
- patchStatus 的 drifted 计数排在 strictFiles 的 unmatched 之前:严格补丁的
  文件宿主一定在,原文对不上只可能是上游漂移,报 drifted 比 unmatched 更准
- 与 PR 的有意偏差:rollupPatchStatus 里 drifted 排在 already 之后。
  多文件补丁(#50/#57/#62)有个别文件本来就不含这段代码(barrel 文件),
  按 PR 的顺序会把这几条从 already/applied 翻成 drifted,制造假告警

未取(0.2.1-rc.3 专属、与通用逻辑无法拆开):新增 targetFiles 键
(harness-dev-context / skill-badge)、#32/#53 扩到 rc.3 新位置、
新增 #89 SANDBOX_POLICY_BRAND_NEUTRAL 与 #90 SKILL_BADGE_DESCRIPTION_NEUTRAL

新增 test/patch-status.test.js(29 条,全量 74 条全过)

Based-on: PR #188 by Pluto-Yt

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-30 13:09:35 +08:00
叫我小杨同学 95102b0bb2 fix: Apply 不再覆盖 npm 全局 dsh 软链;pnpm/plugin add 补本体 insert(#157 #154 #155) 2026-10-24 20:38:05 +08:00
叫我小杨同学 679a3db1cc 1.1.73: open-source local-lab only; drop skills and knowledge base. 2026-10-23 15:55:53 +08:00