cursor-guard 2.1.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ROADMAP.md ADDED
@@ -0,0 +1,834 @@
1
+ # Cursor Guard — 版本演进规划书
2
+
3
+ > 本文档描述 cursor-guard 从 V2 到 V7 的长期演进方向。
4
+ > 每一代向下兼容,低版本功能永远不废弃。
5
+ >
6
+ > **当前版本**:`V3.4.0`
7
+ > **文档状态**:`V2` ~ `V3.4` 已实施,`V4+` 规划中
8
+
9
+ ## 阅读导航
10
+
11
+ - `V2-V3`:先看当前可用能力,以及下一步最现实的演进
12
+ - `V4-V5`:再看智能化与多 Agent 协调的中期方向
13
+ - `V6-V7`:最后看协议、治理与终局形态
14
+
15
+ ---
16
+
17
+ ## 一句话看全局
18
+
19
+ | 版本 | 关键词 | 核心组成 | 一句话 |
20
+ |---|---|---|---|
21
+ | `V2` | 能用 | Skill + Script | "AI 弄丢代码能恢复" |
22
+ | `V3` | 更稳 | + Core 抽取 + 可选 MCP | "恢复操作更标准、更省 token" |
23
+ | `V4` | 更聪明 | + 主动检测 + 可观测 | "cursor-guard 会主动提醒你" |
24
+ | `V5` | 能协调 | + 多 Agent 安全协调 | "多个 AI 同时改代码也安全" |
25
+ | `V6` | 成生态 | + 开放协议 + 社区扩展 | "AI 编码安全的行业标准" |
26
+ | `V7` | 可证明 | + 可验证信任 + 治理层 | "能证明安全流程被执行了" |
27
+
28
+ ---
29
+
30
+ ## 这个项目不只是"又一个备份工具"
31
+
32
+ 市场上已有针对 AI 编码的快照/回滚工具(VS Code 扩展、平台内置 checkpoint 等),它们覆盖了"工具级保护"这一层。
33
+
34
+ cursor-guard 的差异化不在工具层的功能多少,而在**完整的四阶段终局设计**:
35
+
36
+ | 阶段 | 对应版本 | 定义 | 市场现状 |
37
+ |---|---|---|---|
38
+ | 阶段一 | `V2-V3` | 工具 | 市场已有竞品,cursor-guard 在此做到够好 |
39
+ | 阶段二 | `V4-V5` | 平台 | 少数大厂在内置,但不开放 |
40
+ | 阶段三 | `V6` | 协议 | 几乎空白,无人系统化定义 |
41
+ | 阶段四 | `V7` | 可验证治理 | 完全空白 |
42
+
43
+ 工具层是入口,协议层和可验证治理层才是护城河。
44
+ V2-V3 的目标是让用户"离不开",V6-V7 的目标是让行业"绕不开"。
45
+
46
+ ---
47
+
48
+ ## 一条贯穿所有版本的原则
49
+
50
+ > **MCP / 智能层 / 协调层 / 生态层 / 治理层都是可选增强,Skill + Script 基础路径永远可用。**
51
+
52
+ 用户不装 MCP、不开智能检测、不用多 Agent 协调——cursor-guard 也能正常保护代码。
53
+ 每一层新能力都是"有则更好,无则不影响"。
54
+
55
+ ---
56
+
57
+ ## 这套东西由什么组成
58
+
59
+ | 层 / 组件 | 当前状态 | 负责什么 | 是否必需 |
60
+ |---|---|---|---|
61
+ | `SKILL.md` | `V2` 已有,`V3.1` 增加 MCP 双路径 | 规定 Agent 的安全行为:先读后写、恢复前先保留、优先走哪条恢复路径 | 是 |
62
+ | `auto-backup.js` | `V2` 已有,`V3.0` 迁移至 Core | 后台定时备份,持续留下本地恢复点 | 是 |
63
+ | `guard-doctor.js` | `V2` 已有,`V3.0` 迁移至 Core | 检查环境、配置、Git 状态、备份可用性 | 是 |
64
+ | `Node Core` | `V3.0` ✅ 已完成 | 6 个模块:doctor / doctor-fix / snapshot / backups / restore / status | 否 |
65
+ | `MCP Server` | `V3.1-V3.4` ✅ 已完成 | 7 个工具,Agent 标准调用入口,结构化 JSON 返回 | 否 |
66
+ | `智能提醒 / 可观测` | `V4` 规划 | 主动发现风险、汇总健康状态 | 否 |
67
+ | `多 Agent 协调层` | `V5` 规划 | 协调多个 AI 的并发编辑,降低互相覆盖和冲突 | 否 |
68
+ | `开放协议` | `V6` 规划 | 把安全规则提炼成跨工具可复用的规范与测试套件 | 否 |
69
+ | `治理 / 可验证层` | `V7` 规划 | 让“是否走过安全流程”变成可以证明、可以审计、可以验证的事实 | 否 |
70
+
71
+ 一句话概括:
72
+
73
+ - `V2` 先把安全网立住
74
+ - `V3-V5` 逐步把入口、体验、协作做强
75
+ - `V6-V7` 再把这套东西上升为协议与治理能力
76
+
77
+ ---
78
+
79
+ ## 版本是怎么推进的
80
+
81
+ cursor-guard 的版本推进,不是“想到什么就加什么功能”,而是按一条固定顺序推进:
82
+
83
+ 1. **先把当前版本做稳**
84
+ 2. **再抽象出可复用核心**
85
+ 3. **再增加更好的调用入口**
86
+ 4. **再扩展到更复杂的场景**
87
+ 5. **最后再上升到协议与治理**
88
+
89
+ 这意味着:
90
+
91
+ - `V2` 先解决“能不能恢复”
92
+ - `V3` 再解决“恢复是否足够稳、足够省、足够标准”
93
+ - `V4-V5` 才去解决“复杂场景下是否仍然安全”
94
+ - `V6-V7` 最后回答“这套规则能不能成为行业共识、能不能被证明执行过”
95
+
96
+ ### 版本推进的硬规则
97
+
98
+ | 规则 | 含义 |
99
+ |---|---|
100
+ | 先稳后进 | 当前版本没有站稳,不推进下一代 |
101
+ | 先抽 Core 再扩入口 | 不在 CLI / MCP / IDE 适配器里复制逻辑 |
102
+ | 可选增强不替代基础路径 | 新能力只能增强,不能让基础可用性变差 |
103
+ | 不为远期版本提前妥协 | 不为了 V6/V7 提前把 V2/V3 做复杂 |
104
+ | 版本靠“条件满足”推进 | 不是按时间表硬推,而是按是否达成衡量标准推进 |
105
+
106
+ ### 你可以把它理解成一条演进链
107
+
108
+ ```text
109
+ V2:先有安全网
110
+
111
+ V3:把安全网做稳、做标准
112
+
113
+ V4:让系统会主动提醒风险
114
+
115
+ V5:让多个 AI 同时工作时也不乱
116
+
117
+ V6:把这些经验提炼成开放协议
118
+
119
+ V7:让“是否真的安全”变得可验证
120
+ ```
121
+
122
+ ---
123
+
124
+ ## cursor-guard 如何保证安全
125
+
126
+ cursor-guard 的安全,不靠“模型自己小心一点”,而是靠**规则 + 本地备份机制 + 恢复路径 + 诊断能力**共同保证。
127
+
128
+ ### 长期不变的安全规则
129
+
130
+ | 规则 | 含义 |
131
+ |---|---|
132
+ | 写前先留快照 | 在高风险改动前,先留下可恢复的版本 |
133
+ | 恢复前默认保留当前版本 | 回到旧版本前,先把现在这一版留住 |
134
+ | 本地优先 | 保护点默认保存在本地,不依赖远程服务 |
135
+ | 不自动 push | 不把备份自动推到 GitHub / 远程仓库 |
136
+ | 不污染用户分支和暂存区 | 安全机制不能打乱用户自己的 Git 节奏 |
137
+ | 恢复必须有人确认 | 不做无人确认的自动恢复 |
138
+ | 多路径恢复 | Git ref、shadow copy、上下文线索彼此兜底 |
139
+ | 增强层可选 | 就算没配 MCP、没开智能层,也必须能正常保护代码 |
140
+
141
+ ### 这些规则是怎么落地的
142
+
143
+ | 安全目标 | 落地方式 | 用户得到什么 |
144
+ |---|---|---|
145
+ | 写前可回退 | `refs/guard/snapshot` 等本地引用路径保存写前状态 | AI 改坏代码时能退回到改之前 |
146
+ | 持续有后手 | `refs/guard/auto-backup` 或 `.cursor-guard-backup/` 持续记录恢复点 | 不用等出事才临时补救 |
147
+ | 恢复不丢当前版本 | `refs/guard/pre-restore/*` 在恢复前先保留当前状态 | 回滚后还能回到“回滚前” |
148
+ | Git 仓库安全 | 使用 guard refs、临时 index、shadow copy 等机制 | 不污染主分支,不把备份混进正常提交 |
149
+ | 非 Git 目录也能自救 | shadow copy 作为兜底路径 | 即使没 Git 也能保命 |
150
+ | 环境问题能尽早暴露 | `guard-doctor` 检查配置、Git、ignore、备份状态 | 出问题前先发现,而不是出事后才知道 |
151
+ | 高风险操作可解释 | SKILL.md 规定恢复顺序、确认规则、预览优先 | Agent 行为不是临场发挥,而是按规则执行 |
152
+
153
+ ### 安全是分层保证的
154
+
155
+ | 层 | 作用 |
156
+ |---|---|
157
+ | `Skill` 层 | 约束 Agent:什么时候该快照、什么时候该确认、恢复优先级是什么 |
158
+ | `Script / CLI` 层 | 真正执行本地备份、自检和恢复动作 |
159
+ | `Core / MCP` 层 | 让能力调用更稳定、更标准,减少模型自由发挥 |
160
+ | `协议 / 治理` 层 | 让这套安全做法可以复用、可以验证、可以被别人实现 |
161
+
162
+ 所以,cursor-guard 的安全逻辑不是一句“请谨慎操作”,而是一套明确的产品底线:
163
+
164
+ - **先留后改**
165
+ - **先保留再恢复**
166
+ - **默认本地,不自动上云**
167
+ - **默认可解释,不靠黑盒**
168
+ - **默认可降级,不让增强层变成依赖**
169
+
170
+ ---
171
+
172
+ ## 兼容性承诺
173
+
174
+ 以下接口和格式在**当前主版本周期内**保持语义稳定:
175
+
176
+ | 稳定项 | 当前已有 | 承诺 |
177
+ |---|---|---|
178
+ | `.cursor-guard.json` | V2 全部字段 | 新版本只新增字段,不删除或改变现有字段语义 |
179
+ | `refs/guard/*` 已有路径 | `refs/guard/snapshot`、`refs/guard/auto-backup`、`refs/guard/pre-restore/*` | 这些路径和语义不变 |
180
+ | `refs/guard/*` 未来路径 | (暂无) | 新版本可能在 `refs/guard/` 下新增子路径(如 `refs/guard/pre-edit/*`、`refs/guard/audit/*`),新增不影响已有路径 |
181
+ | `.cursor-guard-backup/` | 时间戳目录 `YYYYMMDD_HHMMSS` | 目录结构和命名格式不变 |
182
+ | `cursor-guard-backup` CLI | `--path`、`--interval` | 命令名和核心参数不变 |
183
+ | `cursor-guard-doctor` CLI | `--path` | 命令名和核心参数不变 |
184
+ | SKILL.md 触发规则 | 中英文触发关键词 | 现有关键词持续有效 |
185
+
186
+ **新版本可以新增字段、新增命令、新增引用路径,但不破坏已有的。**
187
+
188
+ 如果未来某个主版本确实需要调整已有接口的语义(例如合并冗余字段),会遵循 deprecation 流程:**提前一个主版本标记废弃 → 新旧并存至少一个版本周期 → 下一个主版本移除旧接口**。不会在小版本中做破坏性变更。
189
+
190
+ 升级就是"多了新能力",不是"要改配置"。
191
+
192
+ ---
193
+
194
+ ## V2 — Skill + Script(当前版本)
195
+
196
+ | 项目 | 内容 |
197
+ |---|---|
198
+ | 状态 | 已发布 ✅ |
199
+ | 定位 | 让 Cursor AI 代理在编辑代码时有一张安全网。 |
200
+
201
+ ### 架构
202
+
203
+ ```
204
+ 用户 → Cursor Agent
205
+
206
+ SKILL.md(规则层)
207
+
208
+ Agent 拼 shell / git 命令执行
209
+
210
+ auto-backup.js(后台 watcher)
211
+ guard-doctor.js(诊断 CLI)
212
+ utils.js(工具库)
213
+
214
+ Git refs + .cursor-guard-backup/
215
+ ```
216
+
217
+ ### 能力
218
+
219
+ | 能力 | 实现 |
220
+ |---|---|
221
+ | 写前快照 | Agent 按 SKILL.md 拼 git plumbing 命令 |
222
+ | 自动备份 | `auto-backup.js` 后台定时脚本 |
223
+ | 恢复 | Agent 拼 `git log` / `git restore` / shadow copy |
224
+ | 诊断 | `guard-doctor.js` CLI |
225
+ | 配置 | `.cursor-guard.json` |
226
+ | 跨平台 | `.ps1` + `.sh` + Node CLI(`npx`) |
227
+
228
+ ### 已知局限
229
+
230
+ - Agent 恢复流程 token 消耗高(拼命令 → 读输出 → 判断 → 重试)
231
+ - 操作稳定性取决于模型当轮的命令生成质量
232
+ - 没有结构化工具调用入口
233
+ - 核心逻辑与 CLI 输出耦合(`console.log` + ANSI 色彩直出)
234
+
235
+ ### V2 在后续版本中的定位
236
+
237
+ **永远保留。** 即使用户升级到 V7,只要不配置任何增强层,系统自动降级到 V2 路径。
238
+
239
+ ### 进入 V3 的衡量标准
240
+
241
+ - V2.x 在真实项目中稳定运行,无重大恢复失败报告
242
+ - 用户反馈中"恢复流程不稳定"或"token 消耗高"成为主要痛点
243
+ - 核心逻辑(备份/恢复/诊断)的单元测试覆盖率达到基本可信水平
244
+
245
+ ---
246
+
247
+ ## V3 — Node Core + 可选 MCP
248
+
249
+ | 项目 | 内容 |
250
+ |---|---|
251
+ | 状态 | ✅ 已完成(V3.0-V3.4 全部交付) |
252
+ | 定位 | 不改变用户体验,让 Agent 的调用更稳、更省、更标准。Core 的设计目标不仅是服务 MCP,而是为未来所有入口(CLI / MCP / IDE 扩展 / 第三方适配器)提供统一的逻辑层。 |
253
+
254
+ ### 核心变化
255
+
256
+ 1. **从现有代码中抽取 Node Core 层**——纯逻辑、结构化返回、不做任何 `console.log`
257
+ 2. **新增 MCP Server 作为可选入口**——给 Agent 一个低歧义的工具调用接口
258
+ 3. **保留全部现有 CLI / 脚本**——改为调用 Core 层后格式化输出
259
+
260
+ ### 架构
261
+
262
+ ```
263
+ ┌─ Node Core(纯逻辑层)──────────────────────┐
264
+ │ core/doctor.js → { checks, summary } │
265
+ │ core/backups.js → { candidates[] } │
266
+ │ core/snapshot.js → { ref, strategy } │
267
+ │ core/restore.js → { status, pre_ref } │
268
+ └──────────────────────────────────────────────┘
269
+ ↑ ↑ ↑
270
+ CLI / 脚本入口 MCP Server auto-backup
271
+ (现有,调 Core) (新增,调 Core) (现有,调 Core)
272
+
273
+ SKILL.md:
274
+ 有 MCP → 优先走 MCP
275
+ 没 MCP → 走 CLI / shell(与 V2 一致)
276
+ ```
277
+
278
+ ### V3 拆为两步发布
279
+
280
+ #### V3.0 — Core 抽取(最关键,独立发布)✅ 已完成
281
+
282
+ 这是 V3 全部工作的地基,也是整个项目后续演进的基础。Core 做不好,MCP、协议、生态都走不动。
283
+
284
+ | 现有文件 | 抽取到 | 变化 |
285
+ |---|---|---|
286
+ | `guard-doctor.js` | `core/doctor.js` | 返回 `{ checks[], summary }` 而非 `console.log` |
287
+ | `auto-backup.js` 中的备份逻辑 | `core/backups.js` + `core/snapshot.js` | 纯函数,返回结构化结果 |
288
+ | `auto-backup.js` 中的恢复逻辑 | `core/restore.js` | 同上 |
289
+ | `utils.js` | 保持不动 | 继续作为底层工具库 |
290
+ | 现有 CLI 入口 | 改为调用 Core → 格式化输出 | 薄壳 |
291
+
292
+ Core 设计原则:
293
+ - 每个函数接收明确参数,返回 JSON-serializable 对象
294
+ - 不做 I/O 格式化(不打印、不着色)
295
+ - 错误通过返回值传达,不抛到调用层
296
+ - 所有函数可独立单元测试
297
+ - API 设计面向"被任意入口调用",不绑定特定消费者
298
+
299
+ **V3.0 的交付标志**:Core 层抽取完成,现有 CLI 和 watcher 全部迁移到调用 Core,所有现有测试通过,行为与 V2 完全一致。(已达成:utils 32 + core 40 + MCP 11 = 83 测试全过)
300
+
301
+ #### V3.1 — MCP Server 首版(在 Core 稳定后发布)✅ 已完成
302
+
303
+ | 工具 | 输入 | 输出 | 风险 |
304
+ |---|---|---|---|
305
+ | `doctor` | `path` | 环境 / 配置 / Git / 备份状态 | 低(只读) |
306
+ | `list_backups` | `path`, `file?`, `before?`, `limit?` | 恢复点列表 | 低(只读) |
307
+ | `snapshot_now` | `path`, `scope?`, `strategy?` | 快照引用 | 低(只创建) |
308
+ | `restore_file` | `path`, `file`, `source`, `preserve_current?` | 恢复结果 + pre-restore ref | 中 |
309
+ | `restore_project` | `path`, `source`, `preview` | 影响范围 / diff 摘要 | **首版仅 preview=true** |
310
+
311
+ `restore_project` 首版只返回预览,不执行。实际恢复走 `restore_file` 逐文件操作。
312
+
313
+ SKILL.md 同步更新:增加 MCP 检测与双路径逻辑。
314
+
315
+ ### V3.x 增量(全部已完成 ✅)
316
+
317
+ | 版本 | 新增 | 状态 |
318
+ |---|---|---|
319
+ | V3.2 | `restore_project` 开放执行模式;`doctor_fix` 工具(自动修补常见配置问题) | ✅ |
320
+ | V3.3 | `backup_status` 工具(watcher 状态、最近备份时间、策略、锁文件) | ✅ |
321
+ | V3.4 | MCP 自检——doctor 输出中加 "MCP server status" 检查项 | ✅ |
322
+
323
+ ### V3 不做的事
324
+
325
+ - 不做 daemon 管理(MCP 控制 watcher 启停)
326
+ - 不做远程同步
327
+ - 不做 Web UI
328
+ - 不引入 MCP SDK 以外的重量级依赖
329
+
330
+ ### 依赖策略
331
+
332
+ V3.1 引入 `@modelcontextprotocol/sdk` 作为唯一新增外部依赖。Core 层(V3.0)保持零依赖。
333
+ 选择官方 SDK 而非自行实现 stdio 协议,原因是 MCP 规范仍在快速演进,自实现容易落后。
334
+
335
+ ### V3 的交付目标
336
+
337
+ V3 完成后,cursor-guard 应该在个人开发者场景中做到:快照零感知、恢复一键完成、跨平台体验一致、token 消耗肉眼可见下降。这是后续所有版本的用户基础——工具层做不到极致,协议层就没人听。
338
+
339
+ ### 用户话术
340
+
341
+ - **不装 MCP**:cursor-guard 也能正常工作,和现在一样。
342
+ - **装了 MCP**:Agent 调用更稳、更快、更省上下文,但不是必需。
343
+
344
+ ### 进入 V4 的衡量标准
345
+
346
+ - V3 Core API 在至少一个完整版本周期内无破坏性变更
347
+ - MCP 工具调用成功率 > 95%(在正常环境下)
348
+ - 用户反馈中"恢复流程不稳定"不再是主要痛点
349
+ - 平均恢复路径的 token 消耗相比 V2 有可观测的下降
350
+
351
+ ---
352
+
353
+ ## V4 — 智能化 + 可观测
354
+
355
+ | 项目 | 内容 |
356
+ |---|---|
357
+ | 状态 | 概念阶段 💡 |
358
+ | 定位 | 从被动工具变成主动助手。不等用户问,主动发现问题。 |
359
+
360
+ ### 前提
361
+
362
+ - V3 的 Core 层和 MCP 已稳定运行至少一个版本周期
363
+ - V3 衡量标准全部达标
364
+
365
+ ### 主线方向:智能恢复建议 + 备份健康看板
366
+
367
+ V4 聚焦两件事——**主动风险提示**和**状态可见性**。这是用户从"能用"到"放心用"的关键一步。
368
+
369
+ #### 主线 A:智能恢复建议
370
+
371
+ ```
372
+ 现在:用户说"恢复到5分钟前" → Agent 查 → 列候选 → 恢复
373
+ V4:检测到短时间内大量文件被修改 → 主动提示"建议先看看恢复点"
374
+ ```
375
+
376
+ - 基于 watcher 的变更频率检测
377
+ - 当变更速率异常时(如 10 秒内 20+ 文件被改),在下次 MCP 调用响应中附加风险提示
378
+ - SKILL.md 可配置"主动提醒"策略(`"proactive_alert": true/false`)
379
+
380
+ #### 主线 B:备份健康看板
381
+
382
+ ```
383
+ cursor-guard status
384
+
385
+ 备份策略:git + shadow
386
+ 最近备份:2 分钟前
387
+ 备份数量:git 47 commits / shadow 23 snapshots
388
+ 磁盘占用:git 12MB / shadow 89MB
389
+ 保护范围:src/** lib/**(排除 node_modules)
390
+ 健康状态:✓ 一切正常
391
+ ```
392
+
393
+ - 一个结构化的状态聚合(MCP 工具 + CLI 双入口)
394
+ - 不做 Web UI,纯文本/JSON 输出
395
+
396
+ #### 候选支线(视需求择机推进)
397
+
398
+ - **多项目状态概览**:一台机器上多个项目的备份状态统一查看,共享策略模板
399
+ - **备份完整性校验**:Git 备份引用可达性检查(`git cat-file -t`)、shadow copy 哈希比对、doctor 增加"备份质量"指标
400
+
401
+ ### V4 不做的事
402
+
403
+ - 不做自动恢复(恢复永远需要人确认,这是产品底线)
404
+ - 不做 Web 仪表盘
405
+ - 不做云端同步
406
+
407
+ ### 进入 V5 的衡量标准
408
+
409
+ - V4 的主动提醒功能误报率 < 10%
410
+ - 健康看板的信息准确度经用户验证
411
+ - 多 Agent 并发编辑已成为用户的真实场景(不是假设)
412
+ - MCP 协议的 notification / resource subscription 机制已相对成熟
413
+
414
+ ---
415
+
416
+ ## V5 — 多 Agent 安全协调
417
+
418
+ | 项目 | 内容 |
419
+ |---|---|
420
+ | 状态 | 远期愿景 🔭 |
421
+ | 定位 | 从保护"一个 Agent 的操作"到协调"多个 Agent 的并发操作"。 |
422
+
423
+ ### 为什么需要这一步
424
+
425
+ V2-V4 解决的是单 Agent 场景。但行业趋势:
426
+ - Cursor 已有 background agent,未来可能多 Agent 并发编辑同一项目
427
+ - 一个开发者可能同时使用多种 AI 编码工具
428
+ - AI 编辑从"偶尔辅助"变成"持续大量写入"
429
+
430
+ 在这个背景下,"单 Agent 写前快照"已不够。需要的是**跨 Agent 协调**。
431
+
432
+ ### 三个可能方向(选一个)
433
+
434
+ #### 方向 A:并发编辑安全(最可能的主线)
435
+
436
+ ```
437
+ 场景:Agent A 在改 src/auth.ts,Agent B 在重构 src/api.ts
438
+ 但 api.ts 依赖 auth.ts 的导出
439
+
440
+ 现在:谁后写谁赢,另一个 Agent 的改动可能被覆盖
441
+ V5:cursor-guard 感知编辑意向 → 检测潜在冲突 → 发出警告
442
+ 冲突发生后能精确回退到每个 Agent 各自的编辑前状态
443
+ ```
444
+
445
+ 可能的实现:
446
+ - 本地轻量协调服务(或利用 MCP resource subscription)
447
+ - Agent 编辑前向 cursor-guard 注册 intent
448
+ - 维护"编辑会话表"
449
+ - 冲突检测基于文件路径(首版)→ 符号级依赖(增强版)
450
+
451
+ #### 方向 B:变更影响分析
452
+
453
+ ```
454
+ 现在:cursor-guard 知道 src/auth.ts 被修改了
455
+ V5:cursor-guard 知道 validateToken 签名变了,
456
+ 而 src/api.ts、src/middleware.ts、tests/auth.test.ts 都依赖它
457
+ ```
458
+
459
+ - 对接 TypeScript / 语言服务的符号引用
460
+ - 恢复时提供"这次变更涉及的所有文件"而非单个文件
461
+ - doctor 检查"最近 AI 编辑是否引入了类型错误/引用断裂"
462
+
463
+ 风险:做太深会变成另一个 lint 工具,需要严格克制边界。
464
+
465
+ #### 方向 C:AI 编辑审计链
466
+
467
+ 每次 AI 修改留下结构化审计记录(示例为未来格式,`refs/guard/pre-edit/*` 为 V5+ 新增路径,不影响现有 `refs/guard/snapshot` 和 `refs/guard/pre-restore/*`):
468
+
469
+ ```
470
+ [2026-03-21 14:32:05] agent:claude | action:edit | file:src/auth.ts
471
+ intent: "添加 JWT 过期检查"
472
+ lines_changed: 12-28
473
+ snapshot_ref: refs/guard/pre-edit/a3f2c1 ← V5+ 新增 ref 路径
474
+ risk_level: medium
475
+ user_confirmed: true
476
+ ```
477
+
478
+ 价值:
479
+ - 事后追溯"这段代码何时、被谁、因何改的"
480
+ - 团队场景可做 AI 编辑的 code review
481
+ - 精确定位问题操作链条
482
+
483
+ ### V5 不做的事
484
+
485
+ - 不做跨机器同步(那是 git remote 的事)
486
+ - 不做 AI 行为控制(cursor-guard 是安全网不是笼子)
487
+ - 不做通用版本控制(不取代 git)
488
+
489
+ ### 进入 V6 的衡量标准
490
+
491
+ - V5 的协调机制在真实多 Agent 场景中验证过,冲突检测准确率可接受
492
+ - cursor-guard 有一定的用户基数和社区认可度
493
+ - AI 编码工具市场格局相对稳定(知道要适配谁)
494
+ - 社区出现"跨工具安全标准"的真实需求信号
495
+
496
+ ---
497
+
498
+ ## V6 — 开放生态 + 行业标准
499
+
500
+ | 项目 | 内容 |
501
+ |---|---|
502
+ | 状态 | 远期愿景 🔭🔭 |
503
+ | 定位 | 从一个 Cursor 插件,变成 AI 编码安全的开放协议和参考实现。 |
504
+
505
+ ### 为什么会走到这一步
506
+
507
+ 到 V5,cursor-guard 已经积累了:
508
+ - 一套经过验证的安全规则体系(Skill 层)
509
+ - 一个稳定的核心引擎(Core 层)
510
+ - 一组标准化的工具接口(MCP 层)
511
+ - 多 Agent 协调能力(V5 层)
512
+
513
+ 这些东西并不是 Cursor 独有的需求。任何 AI 编码工具(Windsurf、Copilot Workspace、未来的新工具)都面临同样的问题:"AI 改了代码,怎么确保安全?"
514
+
515
+ V6 的核心判断是:**cursor-guard 解决的问题是通用的,不应该被锁在一个 IDE 里。**
516
+
517
+ ### 三个子方向
518
+
519
+ #### 方向 A:协议规范化
520
+
521
+ 把 V2-V5 积累的安全规则提炼成一份正式规范:
522
+
523
+ ```
524
+ AI Code Safety Protocol v1.0
525
+
526
+ 1. Pre-Write Snapshot
527
+ - MUST create recoverable snapshot before destructive operations
528
+ - Snapshot MUST NOT pollute user's staging area or branch history
529
+
530
+ 2. Recovery Priority
531
+ - Git ref → Shadow copy → Conversation context → Editor history
532
+
533
+ 3. Concurrent Edit Coordination
534
+ - Intent registration → Conflict detection → Advisory warning
535
+
536
+ 4. Audit Trail
537
+ - Structured record format for all AI-initiated edits
538
+ ```
539
+
540
+ 这份规范是 IDE 无关的。任何工具都可以按规范实现自己的保护层。
541
+ cursor-guard 本身变成"这份规范的参考实现"。
542
+
543
+ 配套产出:**协议一致性测试套件(conformance suite)**——第三方实现可以跑这套测试来验证自己是否符合协议。
544
+
545
+ #### 方向 B:插件化架构
546
+
547
+ 把 cursor-guard 的核心能力拆成可插拔模块:
548
+
549
+ ```
550
+ @cursor-guard/core → 核心引擎(备份/恢复/诊断)
551
+ @cursor-guard/mcp → MCP Server
552
+ @cursor-guard/watcher → 后台自动备份
553
+ @cursor-guard/coordinator → 多 Agent 协调(V5)
554
+ @cursor-guard/audit → 审计链(V5)
555
+
556
+ 社区可开发:
557
+ @cursor-guard/plugin-xxx → 自定义备份策略
558
+ @cursor-guard/adapter-yyy → 其他 IDE 适配器
559
+ ```
560
+
561
+ - 定义清晰的 Plugin API
562
+ - 社区可以贡献自定义备份策略(如 S3 备份、数据库快照)
563
+ - 其他 IDE 的适配器不需要 cursor-guard 官方维护
564
+
565
+ #### 方向 C:CI/CD 集成
566
+
567
+ 把 AI 编辑审计链对接到开发流程中:
568
+
569
+ ```
570
+ AI 编辑 → cursor-guard 记录审计链
571
+
572
+ git push → CI 流水线
573
+
574
+ cursor-guard CI check:
575
+ - 本次 PR 中有 N 处 AI 编辑
576
+ - 其中 M 处已有 pre-edit snapshot
577
+ - 覆盖率:M/N = 95%
578
+ - 风险评估:2 处高风险变更(大面积重写)
579
+
580
+ PR Review 中展示 AI 编辑报告
581
+ ```
582
+
583
+ 价值:团队层面可见 AI 编辑的影响范围和安全覆盖率。
584
+
585
+ ### V6 不做的事
586
+
587
+ - **不做商业化平台** —— cursor-guard 保持开源,协议保持开放
588
+ - **不做云端服务** —— 核心能力永远是本地优先
589
+ - **不做 IDE 本体** —— 只做安全层,不越界
590
+ - **不做强制标准** —— 协议是"推荐遵循",不是"不遵循就不能用"
591
+
592
+ ### 进入 V7 的衡量标准
593
+
594
+ - V6 协议规范已有至少两个独立实现(cursor-guard 自身 + 至少一个第三方)
595
+ - conformance suite 测试套件稳定
596
+ - 企业或团队场景出现"能不能证明 AI 编辑走了安全流程"的需求
597
+ - 审计链数据格式经社区验证
598
+
599
+ ---
600
+
601
+ ## V7 — 可验证信任 / 治理层
602
+
603
+ | 项目 | 内容 |
604
+ |---|---|
605
+ | 状态 | 远期愿景 🔭🔭🔭 |
606
+ | 定位 | 不只是"有备份、有恢复",而是"能证明这次 AI 改动是在安全链路下完成的"。 |
607
+
608
+ ### 为什么需要这一步
609
+
610
+ V6 定义了协议,但协议被遵守了吗?没人能证明。
611
+
612
+ 在团队和企业场景中,"我们用了 cursor-guard"不等于"每次 AI 编辑都走了安全流程"。管理者需要的不是承诺,是**证据**。
613
+
614
+ V7 的核心转变:
615
+
616
+ ```
617
+ V6:定义了"AI 编辑应该怎么才算安全"
618
+ V7:能证明"这次 AI 编辑确实走了安全流程"
619
+ ```
620
+
621
+ 类比:ISO 27001 定义信息安全标准,审计/认证证明你遵守了。标准有价值,但**可验证**才是企业买单的原因。
622
+
623
+ ### 核心能力
624
+
625
+ #### 7.1 审计记录签名化
626
+
627
+ 为每次 AI 编辑操作生成带签名的审计记录,保证记录不可篡改。
628
+
629
+ ```jsonc
630
+ {
631
+ "event_id": "a3f2c1d4",
632
+ "timestamp": "2026-03-21T14:32:05Z",
633
+ "agent": "claude-4",
634
+ "action": "edit",
635
+ "file": "src/auth.ts",
636
+ "pre_snapshot_ref": "refs/guard/pre-edit/a3f2c1", // V5+ 新增 ref 路径
637
+ "risk_level": "medium",
638
+ "user_confirmed": true,
639
+ "content_hash": "sha256:e3b0c44298fc...",
640
+ "signature": "ed25519:Kx8dG9f...(基于项目密钥对 content_hash 的签名)"
641
+ }
642
+ ```
643
+
644
+ > **注**:`refs/guard/pre-edit/*` 是 V5+ 规划的新增引用路径,用于细粒度审计。不改变现有 `refs/guard/snapshot`(写前快照)和 `refs/guard/pre-restore/*`(恢复前快照)的语义。
645
+
646
+ - 本地签名(基于项目密钥或机器指纹),不依赖外部服务
647
+ - 签名链:每条记录的签名包含前一条记录的哈希,形成可验证链
648
+ - 审计记录存储在 `.cursor-guard-audit/` 或 Git notes 中
649
+
650
+ #### 7.2 CI 安全覆盖率校验
651
+
652
+ 在 CI 流水线中验证"本次 PR 的 AI 编辑是否都有安全保护":
653
+
654
+ ```
655
+ cursor-guard ci-check --base=main --head=feature-branch
656
+
657
+ AI Edit Safety Report:
658
+ Total AI edits: 12
659
+ With pre-snapshot: 11 (91.7%)
660
+ With audit record: 12 (100%)
661
+ High-risk edits: 2 (both user-confirmed)
662
+ Unsigned records: 0
663
+
664
+ Status: PASS (threshold: 90%)
665
+ ```
666
+
667
+ - 作为 CI step 或 GitHub Action 运行
668
+ - 可配置通过阈值(安全覆盖率百分比)
669
+ - 输出格式兼容 PR Review comment
670
+
671
+ #### 7.3 团队策略包(Policy Packs)
672
+
673
+ 可复用的团队级安全策略定义:
674
+
675
+ ```json
676
+ {
677
+ "policy": "strict-production",
678
+ "rules": {
679
+ "pre_snapshot": "required",
680
+ "user_confirmation": "required_for_high_risk",
681
+ "audit_signing": "required",
682
+ "ci_coverage_threshold": 95,
683
+ "allowed_restore_sources": ["guard-ref", "shadow-copy"]
684
+ }
685
+ }
686
+ ```
687
+
688
+ - 策略包可导出、导入、版本化
689
+ - 团队管理者定义统一策略,成员项目自动继承
690
+ - 与 CI 校验联动——不满足策略的 PR 被标记
691
+
692
+ #### 7.4 安全操作证明(Attestation)
693
+
694
+ 最终形态:为一次完整的 AI 编辑会话生成可验证的"安全操作证明"。
695
+
696
+ ```
697
+ Attestation: session-20260321-143205
698
+ Agent: claude-4
699
+ Session: 14:32:05 - 14:47:22
700
+ Files edited: 8
701
+ All pre-snapshots: ✓
702
+ All audit signed: ✓
703
+ Policy compliance: strict-production ✓
704
+ Attestation hash: sha256:abc123...
705
+
706
+ This session's AI edits were performed under
707
+ cursor-guard safety protocol v1.0 with full compliance.
708
+ ```
709
+
710
+ - 可独立验证(给定 attestation,任何人可以校验)
711
+ - 不依赖 cursor-guard 服务——纯本地密码学验证
712
+
713
+ ### V7 的实施节奏
714
+
715
+ ```
716
+ V7.0 审计记录签名化 + CI 安全覆盖率校验
717
+ V7.1 团队策略包
718
+ V7.2 完整 attestation(安全操作证明链)
719
+ ```
720
+
721
+ ### V7 不做的事
722
+
723
+ - 不做中心化证书颁发(签名基于本地密钥,不引入 CA)
724
+ - 不做实时监控平台(cursor-guard 不是 SIEM)
725
+ - 不做合规认证业务(cursor-guard 提供证据,不做审计结论)
726
+
727
+ ---
728
+
729
+ ## 全版本对比
730
+
731
+ | | V2 | V3 | V4 | V5 | V6 | V7 |
732
+ |---|---|---|---|---|---|---|
733
+ | **一句话** | 能恢复 | 更稳更省 | 主动提醒 | 多 Agent 安全 | 行业标准 | 可证明 |
734
+ | **核心架构** | Skill + Script | + Core + MCP | + 智能检测 | + 协调层 | + 开放协议 | + 治理层 |
735
+ | **Agent 调用** | 拼 shell | 优先 MCP | MCP + 主动建议 | MCP + 协调 | 标准接口 | 标准接口 + 审计 |
736
+ | **安装门槛** | 最低 | 不变 | 不变 | 略增 | 看具体实现 | 看具体实现 |
737
+ | **适合谁** | 所有人 | 所有人 | 所有人 | 多 Agent 用户 | 工具开发者 + 团队 | 企业 + 合规场景 |
738
+ | **状态** | ✅ 已发布 | ✅ 已完成 | 💡 概念 | 🔭 远期 | 🔭🔭 愿景 | 🔭🔭🔭 愿景 |
739
+
740
+ ---
741
+
742
+ ## 版本推进节奏
743
+
744
+ ```
745
+ V2.x ────── ✅ 已完成
746
+
747
+ V3.0 ────── ✅ Core 抽取(6 模块,83 测试)
748
+ V3.1 ────── ✅ MCP Server 首版(7 工具)
749
+ V3.2 ────── ✅ restore_project 执行模式 + doctor_fix
750
+ V3.3 ────── ✅ backup_status
751
+ V3.4 ────── ✅ MCP 自检 ← 当前版本
752
+
753
+ │ 前提:MCP 调用成功率 > 95%,token 消耗可观测下降
754
+
755
+ V4.0 ────── 智能恢复建议 + 备份健康看板
756
+ V4.x ────── 候选支线(完整性校验 / 多项目概览)
757
+
758
+ │ 前提:多 Agent 并发成为真实场景
759
+ │ 前提:MCP notification 机制成熟
760
+
761
+ V5.0 ────── 多 Agent 协调基础版
762
+ V5.x ────── 审计链 / 影响分析
763
+
764
+ │ 前提:cursor-guard 有社区认可度
765
+ │ 前提:跨工具安全标准有真实需求
766
+
767
+ V6.0 ────── 协议规范 + conformance suite
768
+ V6.x ────── 插件架构 / CI/CD 集成 / 社区生态
769
+
770
+ │ 前提:协议有多个独立实现
771
+ │ 前提:企业场景需要可验证证据
772
+
773
+ V7.0 ────── 审计签名 + CI 安全覆盖率
774
+ V7.1 ────── 团队策略包
775
+ V7.2 ────── attestation(安全操作证明)
776
+ ```
777
+
778
+ **关键原则:每个版本只有在前一版稳定、且前提条件满足后才推进。不为远期版本提前做设计妥协。**
779
+
780
+ ---
781
+
782
+ ## Beyond V7
783
+
784
+ V7 的"可验证治理"是这条产品线的逻辑终点——该保护的都保护了、该标准化的都标准化了、该证明的都能证明。再往上加版本号,只有量变(更多平台适配、更多语言支持),没有质变。
785
+
786
+ 这不是说项目到此结束,而是说 cursor-guard 作为**一个项目**的功能边界到此收敛。
787
+
788
+ 但它推动的东西才刚开始——
789
+
790
+ 如果 V6 的协议被采纳、V7 的治理层被验证,那么"AI 编辑前必须有安全快照"会像"代码必须有版本控制"一样成为行业共识。到那时候,这个能力可能已经被 IDE 原生实现、被 CI 平台内置、被开发者视为理所当然。
791
+
792
+ **cursor-guard 最好的终局不是所有人都在用 cursor-guard,而是所有人都在用 cursor-guard 定义的范式。**
793
+
794
+ 就像 jQuery 推动了浏览器原生实现更好的 DOM API,最终让自己变得不再必要——那不是失败,那是赢了。
795
+
796
+ ---
797
+
798
+ ## 给用户说的话
799
+
800
+ ### 现在(V3)
801
+
802
+ > cursor-guard 已经能保护你的代码。
803
+ > 自动备份、写前快照、确定性恢复——开箱即用。
804
+ > V3 新增:MCP 工具调用(可选)让 AI 操作更稳、更快、更省 token。
805
+ > 自动诊断修复、备份状态一览、全项目恢复——一个工具搞定。
806
+
807
+ ### 未来
808
+
809
+ > 后续版本会让这个保护更智能、更能应对复杂场景。
810
+ > 但你现在用的功能,永远不会被废弃。
811
+ > 每一层新能力都是可选增强,不是强制升级。
812
+
813
+ ---
814
+
815
+ ## 附录:不做清单(全版本通用)
816
+
817
+ 无论演进到哪个版本,以下事项明确不做:
818
+
819
+ | 不做 | 原因 |
820
+ |---|---|
821
+ | 自动恢复(无人确认) | 恢复操作必须有人确认,这是产品底线 |
822
+ | 自动 push 到远程 | 本地优先,push 需用户明确指令 |
823
+ | 云端备份服务 | cursor-guard 的定位是本地安全网 |
824
+ | Web 仪表盘 | 投入产出比不合理 |
825
+ | 取代 Git | cursor-guard 是 Git 的增强,不是替代 |
826
+ | AI 行为限制 | cursor-guard 是安全网,不是笼子 |
827
+ | 多 IDE 全面适配 | 聚焦 Cursor,其他 IDE 由社区或 V6 协议解决 |
828
+ | 商业化封闭 | 保持开源,协议保持开放 |
829
+ | 中心化认证服务 | 签名和验证基于本地,不引入外部依赖 |
830
+
831
+ ---
832
+
833
+ *最后更新:2026-03-21*
834
+ *版本:v1.1(V3.4 交付后更新)*