Skip to content

Commit e453311

Browse files
committed
release: publish v1.17.4
1 parent 2785b56 commit e453311

53 files changed

Lines changed: 3066 additions & 216 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎CHANGELOG.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
# 变更日志 (CHANGELOG)
22

33
> **说明**: 版本概览摘要;历史版本见对应详细变更文件。
4-
> **最新版本详细变更文档**: [`changelogs/releases/v1.17.3.md`](./changelogs/releases/v1.17.3.md)
5-
> **最后更新**: 2026-08-12
6-
> **当前版本**: v1.17.3 修复 Cursor Windows Hook 传输、SkillRoute 精确恢复、多 generation 重复执行、受管所有权与诊断假绿;Cursor 第六宿主仍为本地 Beta,版本发布权威以对应 Git tag、npm registry 与 GitHub Release 为准。
4+
> **最新版本详细变更文档**: [`changelogs/releases/v1.17.4.md`](./changelogs/releases/v1.17.4.md)
5+
> **最后更新**: 2026-08-14
6+
> **当前版本**: v1.17.4 统一治理工作区 `.tmp/devcodex/` 临时产物,并新增默认预览、跨六宿主原子执行的安全卸载与受管残留清理;Cursor 第六宿主仍为本地 Beta,版本发布权威以对应 Git tag、npm registry 与 GitHub Release 为准。
77
88
---
99

1010
## 版本概览
1111

1212
| 版本 | 日期 | 变更摘要 | 详细 |
1313
|------|------|---------|------|
14+
| [v1.17.4](./changelogs/releases/v1.17.4.md) | 2026-08-14 | 🧹 **工作区临时产物与六宿主卸载治理**:统一 `<workspace>/.tmp/devcodex/`、manifest/TTL/lease/backup 边界与 `tmp status/prune`;新增默认预览的跨六宿主安全卸载,强化所有权、reparse/TOCTOU、并发回滚与用户内容保留 | [查看](./changelogs/releases/v1.17.4.md) |
1415
| [v1.17.3](./changelogs/releases/v1.17.3.md) | 2026-08-12 | 🔧 **Cursor Hook 与 SkillRoute 恢复闭环**:修复 Windows BOM/slash-drive、Claude 兼容导入重复执行、`MCP:` 名称与精确恢复消息;升级只保留单一活动 generation,并加固入口身份、用户 Hook 所有权和精确 Plugin 路径诊断 | [查看](./changelogs/releases/v1.17.3.md) |
1516
| [v1.17.2](./changelogs/releases/v1.17.2.md) | 2026-08-12 | 🔧 **生产回执绑定与跨宿主 Hook 隔离**:Codex/Grok 发布验收改以已安装回执为权威;DevCodex 管理的 Grok 子进程不再默认导入 Cursor Hooks,Cursor 官方配置与用户直接运行 Grok 的偏好保持不变 | [查看](./changelogs/releases/v1.17.2.md) |
1617
| [v1.17.1](./changelogs/releases/v1.17.1.md) | 2026-08-12 | 🔧 **六宿主 `--home` 隔离修复**:显式 HOME 优先于宿主、共享 Skill 与 VS Code MCP 的 ambient 路径覆盖,Grok 官方 CLI 继承 resolved target;真实/隔离负向探针保证 Cursor 接入不改动其他宿主 | [查看](./changelogs/releases/v1.17.1.md) |

‎README.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,10 +477,23 @@ devcodex --version
477477

478478
## 卸载
479479

480+
先预览 DevCodex 在六个宿主和共享运行时中的受管内容:
481+
480482
```bash
483+
devcodex uninstall --dry-run
484+
```
485+
486+
确认预览中没有所有权冲突后,显式清理受管 Hook、MCP、指令块、Plugin 和运行时,再卸载 npm 包:
487+
488+
```bash
489+
devcodex uninstall --apply
481490
npm uninstall -g devcodex
482491
```
483492

493+
`devcodex uninstall` 是 `devcodex global-adapters remove` 的简写;不带 `--apply` 时也只预览。清理命令会跨 Copilot、Claude、Codex、Gemini、Grok、Cursor 做一次完整预检,只有收据与当前内容共同证明属于 DevCodex 的对象才进入同一原子事务。用户自己的配置、指令和 Hook 会保留;受管文件被修改、出现未知文件、路径越界、符号链接或收据损坏时,所有宿主均保持不变并返回阻断原因。Grok 官方卸载为回滚生成的短期工作区备份只在六宿主事务成功后按 manifest 与摘要精确清除,失败时保留并报告;命令只逐级回收已经为空的受管子目录,绝不会递归删除 `.copilot`、`.claude`、`.codex`、`.gemini`、`.grok`、`.cursor` 或 `.agents` 宿主根目录。
494+
495+
如果当前安装版本还没有 `devcodex uninstall --dry-run`,先执行 `npm update -g devcodex` 安装带清理能力的版本,再按上述顺序卸载。不要先执行 npm 卸载:npm 只移除包和命令 shim,无法在包已消失后安全识别宿主内哪些内容由 DevCodex 管理。清理成功后重复执行会返回 `already-absent`。
496+
484497
## 运行态与临时产物检查
485498

486499
需要排查空间占用或旧电脑遗留的运行态时,可以查看各类状态的负责人、文件数、体积和最后使用时间:

‎RULES.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# DevCodex v1.17.3 — 使用入口
1+
# DevCodex v1.17.4 — 使用入口
22

3-
> AI workflow injector for Copilot / Claude Code / Codex / Gemini / Grok / Cursor Beta · publisher: Rocky · version: 1.17.3
3+
> AI workflow injector for Copilot / Claude Code / Codex / Gemini / Grok / Cursor Beta · publisher: Rocky · version: 1.17.4
44
55
## 正式主支持客户端
66

‎changelogs/releases/v1.17.4.md‎

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# v1.17.4
2+
3+
> 发布日期:2026-08-14
4+
> 类型:Patch / Workspace temporary artifacts and global uninstall safety
5+
6+
## 摘要
7+
8+
本版本交付两组相关的本机治理能力:工作区临时产物统一进入当前工作区的 `.tmp/devcodex/`,并提供可审计、默认仅预览的状态与清理命令;全局卸载则先跨六宿主验证 DevCodex 所有权,再以单一事务精确移除受管 Hook、MCP、指令块、Plugin 和运行时。两组能力都以 fail-closed 为默认边界,不接管用户内容、其他 producer 或宿主根目录。
9+
10+
## 工作区临时产物统一治理
11+
12+
- 所有 DevCodex 工作区临时产物统一使用当前物理工作区 `<workspace>/.tmp/devcodex/`;旧 `.devcodex/workspace/.tmp/` 和项目内 `.devcodex/.tmp/` 只作为有界迁移输入。
13+
- `WorkspaceTempManifestV1` 记录 owner、type、project、producer、TTL、lease 与备份事务;未知 owner、未知分区、锁、reparse、路径逃逸或不完整备份一律拒绝清理。
14+
- 新增 `devcodex tmp status|prune [--dry-run|--apply] [--json]`;prune 默认只预览,只有显式 `--apply` 才清理已经证明属于 DevCodex 且满足回收条件的对象。
15+
- 安装器、Grok adapter、content-root 隔离与 package projection 使用各自受管分区;不会认领 `.tmp` 容器、其他 producer、根级 `tmp/.tmp-*` 或云盘 spool。
16+
- 测试创建的 OS 临时目录在成功与异常退出时均有回收路径,避免验证自身持续污染工作区。
17+
- canonical root 解析会跳过路径中仅同名的内层 `.tmp/devcodex` 片段并继续向上寻找真正的受管分区,避免嵌套发布工作区使备份 manifest 丢失。
18+
19+
## 六宿主全局卸载与残留清理
20+
21+
- 新增 `devcodex uninstall`,等价于 `devcodex global-adapters remove`;两者不带 `--apply` 时都只输出精确计划。
22+
- 覆盖 Copilot、Claude Code、Codex、Gemini、Grok 与 Cursor Beta 的用户级受管对象;先完整预检全部宿主,再进入跨宿主单事务,避免部分宿主已删、部分宿主失败。
23+
- 收据升级为类型化所有权证据,并兼容受管的旧 runtime generation;Markdown、JSON 与 TOML 只移除 DevCodex 管理片段,保留用户指令、Hook、MCP、未知键、注释与其他插件配置。
24+
- 路径边界验证覆盖 root/exact-file safety root、完整父链 reparse/junction/symlink、物理边界、权限不可观测、摘要漂移、未知文件、回执投毒与执行期 TOCTOU;任何不确定性都在 mutation 前失败关闭。
25+
- 回滚不会覆盖并发产生的用户内容;只有目标仍是本事务刚写入的精确摘要时才允许撤销,备份恢复同样验证类型、摘要、边界与目标缺席,并把失败记录为结构化 `rollbackFailures`。
26+
- Grok 官方登记变更与文件事务具备补偿路径;短期备份仅在六宿主事务成功后按 manifest 与摘要回收。空目录只逐级、非递归地清理已知受管子目录,绝不递归删除宿主根。
27+
- 重复执行在确认受管对象已不存在后返回 `already-absent`,不会把缺失误报为失败。
28+
- Cursor Plugin manifest 版本现在与 npm package 版本共同受 `validate-versions` 守门,禁止宿主插件元数据滞后于发布版本。
29+
30+
## 升级与卸载
31+
32+
先升级到包含安全清理能力的版本,再预览卸载计划:
33+
34+
```bash
35+
npm install -g devcodex@1.17.4
36+
devcodex uninstall --dry-run
37+
```
38+
39+
确认计划没有所有权冲突后再执行:
40+
41+
```bash
42+
devcodex uninstall --apply
43+
npm uninstall -g devcodex
44+
```
45+
46+
不要先运行 `npm uninstall -g devcodex`;包和 CLI 一旦被移除,就无法再使用本版本的所有权收据与安全事务识别宿主残留。
47+
48+
## 兼容性与已知边界
49+
50+
- 本版本是向后兼容的 patch;现有 `init`、`update`、`global-adapters apply`、`status`、`doctor` 与 `devcodex grok` 语义不变。
51+
- Cursor 本地 IDE、交互 CLI 与 Headless CLI 继续为 Beta;Cursor Cloud Agent 不加载用户级 Hook,保持 Partial / `UNVERIFIED`。
52+
- “完全访问权限”不是卸载或临时产物治理的正确修复手段;遇到 sandbox/权限不可观测时命令会报告阻断,不会降低边界继续删除。
53+
- npm 包卸载只能移除全局包和命令 shim;宿主受管残留必须在包仍存在时先通过 `devcodex uninstall` 处理。
54+
55+
## 防回归验证范围
56+
57+
- workspace temp 的 owner/type/project/TTL/lease/backup、未知分区、锁、reparse、路径逃逸、迁移与自清理矩阵。
58+
- 六宿主 plan/apply/idempotency、用户 sentinel、受管片段、旧 generation、Grok 补偿与隔离 HOME 矩阵。
59+
- malformed receipt、超量/超大 receipt、junction/symlink、permission denied、exact-file 父链漂移、摘要变化、并发写入与 rollback failure 证据。
60+
- CLI help/JSON、README/website/Profile、版本/portfolio/validation DAG、完整测试、安全审计、coverage、package/pack/install 与发布后 fresh-install R7。
61+
- exact tarball 必须从规范 `<workspace>/.tmp/devcodex/` 内的嵌套工作区完成 install→preview→apply→repeat apply→npm uninstall,且恢复清单、收据、包目录和 shim 最终全部归零。
62+
63+
## 发布拓扑
64+
65+
- npm 包名:`devcodex`
66+
- registry:`https://registry.npmjs.org/`
67+
- 发布分支:`main`
68+
- 目标 Tag:`v1.17.4`
69+
- 上一版本:`v1.17.3`
70+
- 关联需求:`.devcodex/devcodex/requirements/工作区临时产物统一治理/`
71+
- 关联修复:`.devcodex/devcodex/bugs/全局卸载与宿主残留清理/`

‎changelogs/unreleased.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# 未发布变更(Unreleased)
22

33
> **用途**: 记录尚未正式发版的实现级变更。
4-
> **当前**: v1.17.3 Cursor Windows Hook 与 SkillRoute 恢复闭环候选已迁入 `changelogs/releases/v1.17.3.md`;生产回执绑定见 `v1.17.2.md`,六宿主 HOME 隔离见 `v1.17.1.md`,Cursor 第六宿主 Beta 历史见 `v1.17.0.md`,正式已发布事实以 Git tag、npm registry 与 GitHub Release 为准。
4+
> **当前**: v1.17.4 工作区临时产物与六宿主安全卸载候选已迁入 `changelogs/releases/v1.17.4.md`;v1.17.3 Cursor Windows Hook 与 SkillRoute 恢复见 `v1.17.3.md`,正式已发布事实以 Git tag、npm registry 与 GitHub Release 为准。
55
66
## 当前未发布实现候选
77

8-
- **工作区临时产物统一治理 v0.1.1-candidate(PI-241 / PF-290)**:所有布局统一使用当前物理工作区 `<workspace>/.tmp/devcodex/`,旧 `.devcodex/workspace/.tmp/` 与 `<project>/.devcodex/.tmp/` 仅作只读迁移输入;DevCodex 不接管 `.tmp` 容器、其他 producer、根级 `tmp/.tmp-*` 或 Drive spool。`WorkspaceTempManifestV1` 以 owner/type/project/producer/TTL/lease/backup transaction 约束清理资格,分区根不可整体认领,unknown owner、未知分区、lock、reparse、路径逃逸、不完整备份和有界检查截断全部 fail closed。新增 `devcodex tmp status|prune [--dry-run|--apply] [--json]`,prune 默认预览;安装器与 Grok adapter 备份统一写入 `backups/<project>/` 并登记 manifest,content-root 删除隔离区进入 canonical `quarantine/` 且回滚不信任回执内 manifest 路径,package projection 的短期锁/回执迁到按物理源码根隔离的 OS temp;10 个已定位的 OS-temp 测试生产者在成功与异常退出时统一自清理,63/63 个 `mkdtempSync` 生产者均具备回收信号,定向回归前后 15 组前缀计数净增长为零。既有 `runtime status/prune` 与 SkillRoute 摘要语义不变。V27、README FAQ、输出路径规范、数据库一次性脚本规则、Profile 01/02/04/05/06/07、package files 与聚焦/CLI 回归同步更新;历史 57 个目标及本轮用户精确授权的 8 个外部目录均已清理,新根的 742 个普通文件逐文件 SHA-256 一致,3 个 retain manifest 仅重绑定 targetPath,旧源未删除。本条仅为未发布候选,不代表 tag/registry/GitHub Release 已形成。
8+
- **v1.17.4 工作区临时产物与六宿主安全卸载已归档(PI-241 / PF-290 / PI-242 / PF-291)**:统一 `<workspace>/.tmp/devcodex/`、受管 manifest/TTL/lease/backup 与 `tmp status/prune`;新增默认预览的 `devcodex uninstall` / `global-adapters remove`,以跨宿主单事务、路径与所有权 fail-closed、并发安全回滚和用户内容保留完成清理。完整候选见 `changelogs/releases/v1.17.4.md`;正式发布事实仍以 Git tag、npm registry 与 GitHub Release 为准。
99
- **v1.17.3 Cursor Windows Hook、SkillRoute 恢复与发布安全闭环(PF-286~PF-289)**:Hook adapter 在 JSON stdin 边界只剥离一个前导 U+FEFF,保留双 BOM、畸形 JSON 与超限帧的失败关闭;Cursor Windows 的 `/X:/...` / `\X:\...` 工作区路径在文件系统调用前规范化,同时保留 UNC、POSIX 和相对路径语义。Cursor 导入的 DevCodex Claude Hook 通过强 Cursor 指纹返回事件合法的最小 no-op,由专用 Cursor Hook 单独执行生命周期,避免同一请求重复推进。专用入口同时把 Cursor 官方 `MCP:<tool_name>` 规范为路由可识别名称,并在 `preToolUse` 拒绝时把生命周期生成的精确 `Next call (exact)` 投影到 `agent_message`;不依赖 `beforeSubmitPrompt` 的 allow 响应传递官方 schema 不支持的动态上下文。Resolver Skill 和安装态 verifier 会阻止模型臆造 binding 或遗漏恢复契约。用户级升级合并器识别 `devcodex/runtime-<generation>/.../lifecycle-cursor-compatible.cjs`,Cursor/Claude 活动事件只保留一个当前 generation,同时保留用户第三方 Hook 与 rolling-upgrade retained runtime;受管 ownership 使用路径与精确文件名边界,compatible helper/preload/wrapper 进入 Claude/Cursor 专用身份,Cursor verifier 精确验证 current wrapper、Plugin path 与 Resolver anchors。共享 runtime digest 与其他四宿主入口保持发布基线;真实 Cursor IDE 因订阅额度耗尽仍未做模型回放,Local 保持 Beta,Cloud/模型 replay 保持 `UNVERIFIED`。正式已发布事实仍以 Git tag、npm registry 与 GitHub Release 为准。
1010
- **v1.17.2 生产回执绑定与跨宿主 Hook 隔离修复**:发布后 R7 在 Windows 源码树发现生产 Grok 探针用 CRLF 源码重算 `RuntimeGenerationManifestV1`,与 npm Linux 发布包的 LF 安装代次不同;Codex/Grok production S15 现统一从 committed `global-host-receipt.json` 绑定 runtime 与 shared Skill 根,校验版本、摘要与物理边界,Grok launcher 不再内部重复推演。继续实装复验又发现 Grok 1.0.0 默认扫描官方 Cursor 扁平 `~/.cursor/hooks.json`,其兼容解析器会报 matcher group 结构错误并干扰回合;所有 DevCodex 管理的 Grok 子进程现统一以环境变量关闭 Cursor Hook 外部兼容,且 `inspect --json` 必须证明来源为 `env`、发现列表中不存在 `.cursor`。Cursor 官方 Hook schema、用户 Grok 持久配置及直接运行 `grok` 的偏好均不改变;其他五宿主、Cursor Cloud 与模型 replay 的能力边界也不升级。
1111
- **v1.17.1 六宿主 HOME 隔离修复**:`global-adapters apply --home <dir>` 将显式 HOME 作为 CLI 隔离权威,在目标解析前屏蔽 Copilot/Claude/Codex/Gemini/Grok/Cursor、共享 Skill 根与 VS Code MCP 的 ambient 路径覆盖;空值/纯空白 `--home` 失败关闭,未传 `--home` 时保留原环境变量语义。事务后调用 Grok 官方 CLI 时,再把 committed `GlobalHostTargetV1.root` 绑定为派生环境的 `GROK_HOME`,且不修改 ambient process env;target root 缺失时返回 typed failure。单测覆盖六宿主 root、12 个路径覆盖键、原环境不变、legacy 路线和 malformed target;真实探针证明隔离 HOME 6/6 committed、12 个 ambient 目标零创建、真实五个既有宿主加 Grok 的 34 个受管条目快照不变。同步修复 package-lock 根版本漂移并扩展版本校验器。Cursor Local 继续为 Beta,Cloud 与模型驱动 replay 继续为 `UNVERIFIED`。
@@ -78,7 +78,7 @@
7878
- **全局 adapter 终审防假绿**:stale managed 文件清理失败会写入 receipt 的 `pendingStaleManagedPaths` 并由后续全局升级重试,不能因首轮事务已提交而丢失;Copilot CLI 的 PascalCase Hook 输入与原生输出合同已接入共享 lifecycle,`PreToolUse` 与 `Stop` 的阻断能力按宿主事件分别声明。
7979
- **源码候选诊断隔离**:源码仓中的 `status/doctor` 现在明确使用 `source-candidate-vs-installed-receipts`,返回 `installedHealthClaim=false` 并抑制已安装包修复动作,候选差异仅保留为 `withheld*` 证据;receipt 不再持久化任何安装进程临时路径,生命周期清理/receipt 收尾不完整会显式降级,安全审计默认读取受控 registry 策略。
8080
- **全局适配深审补强**:fresh workspace 的 bare `init/update` 自动建立 `workspace-namespace` marker,避免已安装 Hook 找不到 owner;共享 `.agents` 改为单一事务 Owner,且只部署 active Skill;per-host receipt 改为只绑定 DevCodex 管理片段,用户自有宿主配置不再制造假 stale,受管字段漂移仍会被检测和修复。
81-
- **全局宿主边缘合同收口**:Claude 显式 `CLAUDE_CONFIG_DIR` 时,instruction/settings 与 MCP managed segment 统一落入同一配置身份;`status/doctor` 将 receipt 缺失、受管文件缺失或漂移转为结构化失败,不再假绿;裸 `devcodex uninstall` 与带宿主形式统一返回 GlobalOnly 禁用合同;`devcodex grok` 显式向子进程传递已解析的用户级 `GROK_HOME`,避免 Windows 上 worktree GC 因 HOME 缺失告警。
81+
- **全局宿主边缘合同收口**:Claude 显式 `CLAUDE_CONFIG_DIR` 时,instruction/settings 与 MCP managed segment 统一落入同一配置身份;`status/doctor` 将 receipt 缺失、受管文件缺失或漂移转为结构化失败,不再假绿;带单宿主选择器的旧卸载形式继续返回 GlobalOnly 禁用合同,裸 `devcodex uninstall` 则由本候选升级为六宿主原子清理入口;`devcodex grok` 显式向子进程传递已解析的用户级 `GROK_HOME`,避免 Windows 上 worktree GC 因 HOME 缺失告警。
8282
- **HostParity 企业级持续对齐(E1/E3/E5/E7)**:新增 `UnalignedLedgerV1` fixture(U-A1~U-C3)+ `parity-unaligned-ledger` / `parity-upgrade-decision`;`MIN_CANNOT_CLAIM` + floor 断言;`test:host-parity` 串联 `test-host-parity-ledger`;站点/AGENTS 投影补台账与 9 步 checklist;validate 默认不挂 host-parity(以 optimization-controls 为准)。需求:`Grok-Codex未对齐收敛与持续对齐保证` CP3。
8383
- **历史候选(已被 GlobalOnly 取代)— CLI 默认五宿主(A2)**:曾计划让 bare `devcodex init/update` 部署五宿主;当前正式候选已改为 npm 全局安装/升级管理用户级宿主 adapter,bare `init/update` 仅维护 workspace `.devcodex`。本条只保留设计演进记录,不是当前行为。
8484
- **C16 TTFV + WorkspaceRootScanBan(PI-20260724-01)**:GrokTurnChecklist 增加 `scan-hygiene` / `ttfv-first-delivery`;Hook `neverApprove` 拦截 monorepo/workspace 根递归 inventory(绝对根路径、`dir /s`、cwd=根时的相对 `-Recurse`/`-Depth`);SC16 与 `17-compliance`/`01-common`/website 消费者对齐;探针与 Hook 一级子路径一致;`test:host-parity` 纳入回归矩阵。

‎content/duplication-inventory.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"schemaVersion": "ControlContentDuplicationInventoryV1",
3-
"sourceBundleDigest": "968e656c67f8112a80cc751aba26031218d6f4009daefd04cb9bf10734cf2558",
3+
"sourceBundleDigest": "f442e7380f139d4399c71097a644f1fbf60bf5f1397d3fbed939318fbf09193b",
44
"thresholds": {
55
"minParagraphChars": 100,
66
"sectionThreshold": 0.94,

0 commit comments

Comments
 (0)