Skip to content

Commit 197d5ca

Browse files
committed
fix: harden Cursor hook transport and recovery
1 parent 804bbd6 commit 197d5ca

44 files changed

Lines changed: 1118 additions & 171 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: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
# 变更日志 (CHANGELOG)
22

33
> **说明**: 版本概览摘要;历史版本见对应详细变更文件。
4-
> **最新版本详细变更文档**: [`changelogs/releases/v1.17.2.md`](./changelogs/releases/v1.17.2.md)
4+
> **最新版本详细变更文档**: [`changelogs/releases/v1.17.3.md`](./changelogs/releases/v1.17.3.md)
55
> **最后更新**: 2026-08-12
6-
> **当前版本**: v1.17.2 修复生产 S15 从源码重算安装代次导致的错误绑定,并隔离 Grok 默认导入 Cursor Hooks 的跨宿主干扰;Cursor 第六宿主仍为本地 Beta,版本发布权威以对应 Git tag、npm registry 与 GitHub Release 为准。
6+
> **当前版本**: v1.17.3 修复 Cursor Windows Hook 传输、SkillRoute 精确恢复、多 generation 重复执行、受管所有权与诊断假绿;Cursor 第六宿主仍为本地 Beta,版本发布权威以对应 Git tag、npm registry 与 GitHub Release 为准。
77
88
---
99

1010
## 版本概览
1111

1212
| 版本 | 日期 | 变更摘要 | 详细 |
1313
|------|------|---------|------|
14+
| [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) |
1415
| [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) |
1516
| [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) |
1617
| [v1.17.0](./changelogs/releases/v1.17.0.md) | 2026-08-12 |**Cursor 第六宿主 Beta 接入与候选证据加固**:六宿主统一安装、Hook/Plugin/MCP/SkillRoute、本地四形态诚实诊断、Windows CLI 身份解析及当前源码 S15 强绑定 | [查看](./changelogs/releases/v1.17.0.md) |

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,8 @@ devcodex doctor --json
387387

388388
Cursor 行应至少显示 `adapter=ready; contract=passed``native=unverified` 是 Beta 的证据边界:它不等于适配器失败,也不能据此宣称本地 IDE、CLI 或 Headless 已完成真实模型回放。发布候选已使用官方 Cursor CLI 在隔离 HOME 中通过 `mcp list` / `mcp list-tools` 启动 memory/profile 两个 stdio server;这证明 Plugin、`${workspaceFolder}` 与 MCP 工具协商链可用,但没有登录的 CLI 仍不能替代 Hook/Skill 的端到端模型回放。若 adapter 或 contract 未通过,执行 `devcodex global-adapters apply`,完全退出 Cursor 后重新打开目标项目。
389389

390+
如果 Cursor 显示 `Submission blocked by hook``progressive-skill-route` 持续阻断、反复探索 `CallMcpTool` / `workspace.exe`,或 Hook 报 `returned no output`,请升级到 `devcodex >= 1.17.3`,执行 `devcodex global-adapters apply`,完全退出所有 Cursor 窗口后重新打开项目并新建对话。该故障来自旧版 Windows Hook 传输、恢复消息或多 generation 活动入口,不是“完全访问权限”未开启;不要为此开启完全访问,也不要把用户级 `.cursor` 复制到业务仓库。
391+
390392
DevCodex 的 Cursor 入口安装在用户 HOME:Hooks 位于 `~/.cursor/hooks.json`,动态 Plugin 位于 `~/.cursor/devcodex/plugins/devcodex-workspace`。业务项目里不应出现 `.cursor`、复制的 Hook 或第二套 Plugin;项目侧仍只保存 `.devcodex/` 运行态。
391393

392394
Cursor 本地 IDE、交互 CLI、Headless CLI 与 Cloud Agent 必须分开判断。Cloud Agent 不加载用户级 Hook,所以状态固定为 Partial / `UNVERIFIED`;不要通过放宽权限、复制 `.cursor` 到仓库或开启完全访问来伪造本地等价性。若本地流程未出现,请优先检查用户级 adapter/contract、`agent --version` 和新会话加载,而不是修改业务仓库。

RULES.md

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

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

changelogs/releases/v1.17.3.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# v1.17.3
2+
3+
> 发布日期:2026-08-12
4+
> 类型:Patch / Cursor Hook and SkillRoute recovery
5+
6+
## 摘要
7+
8+
本版本修复 Cursor 3.15.6 / Windows 中会导致 `Submission blocked by hook`、Hook `returned no output`、渐进式 Skill 路由反复阻断以及 Agent 猜测不存在工具的完整问题链。修复覆盖宿主传输字节、Windows 路径、Cursor 导入 Claude Hook 的重复执行、官方 MCP 工具名、精确恢复消息、多 generation 升级、受管配置所有权、宿主身份摘要与静态诊断,不要求用户开启“完全访问权限”。
9+
10+
## 修复内容
11+
12+
- Cursor/Claude 专用兼容入口只剥离一个 JSON stdin 前导 BOM;双 BOM、畸形 JSON、空帧上限与超限输入继续失败关闭。
13+
- Windows `/X:/...``\X:\...` workspace 路径在文件系统调用前规范化;UNC、POSIX 与相对路径语义保持不变。
14+
- 强 Cursor 指纹的 Claude 兼容导入返回事件合法 no-op,Cursor 专用 Hook 成为唯一 lifecycle owner,避免同一事件推进两次。
15+
- Cursor 官方 `MCP:<tool_name>` 与 server-qualified 形式在宿主边界规范化;错误工具、错误 digest 与未知动作仍拒绝。
16+
- `preToolUse` 拒绝时,短 `user_message` 保留稳定原因,`agent_message` 携带生命周期生成的精确 `Next call (exact)`,不再让模型臆造 `project``turnBinding``contextEpoch``generation``planDigest`
17+
- Resolver Skill 明确 Cursor `beforeSubmitPrompt` allow 响应不能承载动态上下文,要求优先执行服务端提供的精确恢复动作。
18+
- 用户级升级识别旧/current compatible generation;Cursor 10 个事件与 Claude 4 个事件只保留一个当前活动入口,旧 runtime 可供已打开进程保留,用户第三方 Hook 不变。
19+
- 受管 Hook 分类限定 DevCodex 路径、历史宿主路径和精确入口文件名;用户目录同名脚本、`.backup` 与非 command metadata 不再被认领。
20+
- Cursor static verifier 同时统计所有旧/新受管入口,并逐事件精确验证当前 wrapper、host 参数、Plugin 路径和 Resolver anchors;重复代次、legacy shared 入口、stale Plugin 或缺失恢复契约均失败关闭。
21+
- Claude/Cursor 子 lifecycle 使用显式 Node preload 获得包含 compatible helper/preload/wrapper 的专用 adapter identity;Codex、Copilot、Gemini、Grok 与共享 runtime digest 保持 v1.17.2 发布基线。
22+
- validation DAG 将三个 compatible 文件同时绑定到 host adapter 与 SkillRoute lifecycle 节点,入口漂移不能再跳过关联测试。
23+
24+
## 升级与恢复
25+
26+
```bash
27+
npm update -g devcodex
28+
devcodex global-adapters apply
29+
devcodex status
30+
```
31+
32+
升级后请完全退出所有 Cursor 窗口,再重新打开项目并新建对话。不要为本问题开启完全访问权限,也不要把用户级 `.cursor` 目录复制到业务仓库。
33+
34+
## 防回归验证
35+
36+
- BOM、双 BOM、畸形/超限 stdin、slash-drive、UNC/POSIX/relative path 与真实 CLI stdout/exit 组合。
37+
- Cursor-imported-Claude 四事件 no-op、原生 Claude 委托、Cursor 10 事件 schema 与单一 lifecycle owner。
38+
- `MCP:skill_route`、server-qualified 名称、unknown tool、wrong digest、allow/deny/postToolUse 与精确恢复消息。
39+
- 当前/旧 generation、legacy shared + current compatible、用户同名/backup 脚本、任意 metadata、重复 apply、retained runtime 与 stale Plugin path。
40+
- compatible wrapper 字节漂移只改变 Claude/Cursor identity;共享 runtime 与其他四宿主摘要逐字冻结。
41+
- release-risk 无缓存 full 93/93、Profile、治理台账、package、隔离安装和发布后 fresh-install R7。
42+
43+
## 六宿主非回归与已知边界
44+
45+
- Copilot、Codex、Gemini、Grok 继续使用共享入口;Claude 的原生事件和输出合同保持不变,仅通过兼容入口获得 BOM/导入隔离与专用身份。
46+
- Cursor 本地 IDE、交互 CLI 与 Headless CLI 继续为 Beta;Cursor Cloud Agent 不加载用户级 Hook,保持 Partial / `UNVERIFIED`
47+
- 由于维护者 Cursor 订阅额度耗尽,本版本不宣称完成真实模型回放;自动化协议、进程、安装与配置证据通过不等于 native model readiness。
48+
- Cursor Marketplace 发布不在本版本范围内。
49+
50+
## 发布拓扑
51+
52+
- npm 包名:`devcodex`
53+
- registry:`https://registry.npmjs.org/`
54+
- 发布分支:`main`
55+
- 目标 Tag:`v1.17.3`
56+
- 上一版本:`v1.17.2`
57+
- 问题证据:`.devcodex/devcodex/bugs/Cursor-Windows-Hook传输与兼容导入修复/`

changelogs/unreleased.md

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

33
> **用途**: 记录尚未正式发版的实现级变更。
4-
> **当前**: v1.17.2 生产 S15 安装回执绑定与 Cursor→Grok 跨宿主 Hook 隔离候选已迁入 `changelogs/releases/v1.17.2.md`;六宿主 HOME 隔离见 `v1.17.1.md`,Cursor 第六宿主 Beta 历史见 `v1.17.0.md`,正式已发布事实以 Git tag、npm registry 与 GitHub Release 为准。
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 为准。
55
66
## 当前未发布实现候选
77

8+
- **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 为准。
89
- **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 的能力边界也不升级。
910
- **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`
1011
- **v1.17.0 Cursor 第六宿主 Beta 接入**:`GlobalHostTargetV1` 扩展为六宿主,npm 全局安装在用户 HOME 写入 `~/.cursor/hooks.json`、动态 DevCodex Plugin、resolver Skill 与本地 stdio MCP;覆盖 workspaceOpen、sessionStart/sessionEnd、beforeSubmitPrompt、Pre/PostTool、failure、afterAgentResponse、preCompact 与 bounded Stop follow-up。本地 IDE、交互 CLI、Headless CLI 分列为 Beta,Cursor Cloud Agent 因不加载用户级 Hook 固定为 Partial / `UNVERIFIED`。`status/doctor`、HostEnforcementMatrix、能力目录、README、RULES、投影内核、安装/回滚/负向测试与 package 文件清单同步升级;业务 workspace 继续零 `.cursor` 产物。Windows native probe 会按 PATH/PATHEXT 优先解析官方 `cursor-agent.cmd` / `.bat`,再回退到 `agent` 并校验产品身份,既避免 Node 跳过 `.cmd` 后误命中 Grok `agent.exe`,也继续用 `HOST_NATIVE_IDENTITY_MISMATCH` 暴露真实别名冲突。Cursor Marketplace 发布不在本版本范围内。

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": "f4f0fa193a4354ee69a36d8f5ddefef1db504f3d3424243372d9e177baae6442",
3+
"sourceBundleDigest": "33b2f4cbc2d9f82c21e29103e50e634665f200f03c498168230613d837de7b4a",
44
"thresholds": {
55
"minParagraphChars": 100,
66
"sectionThreshold": 0.94,

content/instructions/00-safety.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 安全底线与输出语言规则,定义 S01~S07、违规处理与不可豁免边界
44
priority: P2
5-
version: 1.17.2
5+
version: 1.17.3
66
---
77
# 安全底线规范(S01~S07)
88

content/instructions/01-common.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 通用规范总则,覆盖优先级、意图路由、Profile/active-root、宿主适配与治理总线
44
priority: P5
5-
version: 1.17.2
5+
version: 1.17.3
66
---
77
# 通用规范
88

content/instructions/01a-profile-loading.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 意图驱动的 Profile 加载、active-root 路径、目标项目识别与项目现实扩展规范
44
priority: P5
5-
version: 1.17.2
5+
version: 1.17.3
66
---
77
# Profile 加载与项目现实扩展
88

content/instructions/01b-record-router.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 任务切换边界、RecordRouter 分流、Improvement Intake 与提交发布边界的通用规范
44
priority: P5
5-
version: 1.17.2
5+
version: 1.17.3
66
---
77
# 任务边界与 RecordRouter
88

0 commit comments

Comments
 (0)