cursor-guard 2.1.1 → 4.0.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/README.md +69 -11
- package/README.zh-CN.md +351 -293
- package/ROADMAP.md +1040 -0
- package/SKILL.md +631 -557
- package/package.json +14 -5
- package/references/config-reference.md +215 -175
- package/references/config-reference.zh-CN.md +215 -175
- package/references/cursor-guard.example.json +6 -6
- package/references/cursor-guard.schema.json +30 -0
- package/references/lib/auto-backup.js +315 -530
- package/references/lib/core/anomaly.js +217 -0
- package/references/lib/core/backups.js +357 -0
- package/references/lib/core/core.test.js +1459 -0
- package/references/lib/core/dashboard.js +208 -0
- package/references/lib/core/doctor-fix.js +237 -0
- package/references/lib/core/doctor.js +248 -0
- package/references/lib/core/restore.js +360 -0
- package/references/lib/core/snapshot.js +198 -0
- package/references/lib/core/status.js +163 -0
- package/references/lib/guard-doctor.js +46 -238
- package/references/lib/utils.js +438 -371
- package/references/mcp/mcp.test.js +374 -0
- package/references/mcp/server.js +252 -0
- package/references/quickstart.zh-CN.md +364 -0
package/ROADMAP.md
ADDED
|
@@ -0,0 +1,1040 @@
|
|
|
1
|
+
# Cursor Guard — 版本演进规划书
|
|
2
|
+
|
|
3
|
+
> 本文档描述 cursor-guard 从 V2 到 V7 的长期演进方向。
|
|
4
|
+
> 每一代向下兼容,低版本功能永远不废弃。
|
|
5
|
+
>
|
|
6
|
+
> **当前版本**:`V4.0.0`
|
|
7
|
+
> **文档状态**:`V2` ~ `V4.0` 已实施,`V5+` 规划中
|
|
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` | 成闭环 | + 变更控制层 | "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-V4.0` ✅ 已完成 | 9 个工具,Agent 标准调用入口,结构化 JSON 返回 | 否 |
|
|
66
|
+
| `智能提醒 / 可观测` | `V4.0` ✅ 已完成 | 主动发现风险、汇总健康状态(anomaly + dashboard) | 否 |
|
|
67
|
+
| `变更控制层` | `V5` 规划 | 覆盖编辑意图、冲突告警、影响半径、审计事件、按事件恢复 | 否 |
|
|
68
|
+
| `开放协议 / 团队工作流` | `V6` 规划 | 把变更控制能力提炼成跨工具协议、适配器和 CI 查询入口 | 否 |
|
|
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
|
+
| 状态 | ✅ 已完成(V4.0 全部交付) |
|
|
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
|
+
#### Core 模块(2 个新增)
|
|
404
|
+
|
|
405
|
+
| 模块 | 文件 | 核心函数 |
|
|
406
|
+
|---|---|---|
|
|
407
|
+
| **anomaly** | `core/anomaly.js` | `createChangeTracker()` / `recordChange()` / `checkAnomaly()` / `getAlertStatus()` / `saveAlert()` / `loadActiveAlert()` |
|
|
408
|
+
| **dashboard** | `core/dashboard.js` | `getDashboard()` — 综合健康看板(策略、计数、磁盘、范围、健康、告警) |
|
|
409
|
+
|
|
410
|
+
#### MCP 工具(2 个新增 + 全局 alert 注入)
|
|
411
|
+
|
|
412
|
+
| 工具 | 功能 |
|
|
413
|
+
|---|---|
|
|
414
|
+
| `dashboard` | 一次调用返回综合健康看板 |
|
|
415
|
+
| `alert_status` | 查询当前活跃的变更频率告警 |
|
|
416
|
+
| **全局注入** | 所有现有 MCP 工具响应自动附加 `_activeAlert` 字段(如有活跃告警) |
|
|
417
|
+
|
|
418
|
+
#### 配置新增
|
|
419
|
+
|
|
420
|
+
| 字段 | 默认值 | 说明 |
|
|
421
|
+
|---|---|---|
|
|
422
|
+
| `proactive_alert` | `true` | 启用/禁用主动变更频率检测 |
|
|
423
|
+
| `alert_thresholds.files_per_window` | `20` | 触发告警的文件变更数 |
|
|
424
|
+
| `alert_thresholds.window_seconds` | `10` | 滑动时间窗口(秒) |
|
|
425
|
+
| `alert_thresholds.cooldown_seconds` | `60` | 连续告警最小间隔(秒) |
|
|
426
|
+
|
|
427
|
+
#### 测试
|
|
428
|
+
|
|
429
|
+
- V4 最终测试分布:utils 39 + core 78 + MCP 21 = **138 测试全过**
|
|
430
|
+
- 较 V3.4(83 测试)净增 55 个测试,覆盖 anomaly、dashboard、MCP alert 注入、protect basename 匹配、C-quoted 路径解析、shadow/ref 碰撞重试、rename 预览、loadConfig 类型校验等场景
|
|
431
|
+
|
|
432
|
+
#### V4 代码审查加固(4 轮共 17 项修复)
|
|
433
|
+
|
|
434
|
+
V4 经过 4 轮系统性代码审查,修复了以下关键问题:
|
|
435
|
+
|
|
436
|
+
| 轮次 | 修复项 | 要点 |
|
|
437
|
+
|---|---|---|
|
|
438
|
+
| 一审 | 6 项 | Guard ref 首次快照从 HEAD 种子改为 orphan commit;`listBackups` / `getBackupStatus` 加 `--grep=^guard:` 过滤非 guard 提交;`previewProjectRestore` 识别 untracked 文件;`executeProjectRestore` 支持 `cleanUntracked` 选项;`injectAlert` 注入覆盖所有 MCP 工具;watcher 异常计数按 protect/ignore 过滤 |
|
|
439
|
+
| 二审 | 4 项 | `loadConfig` 校验数组元素类型(非字符串自动过滤并警告);`createGitSnapshot` protect 缩小时旧 tree 残留清除;auto-backup porcelain 解析修正(`execFileSync` 替代 `git()` 避免 `trim()` 截断首行);`executeProjectRestore` filesRestored 口径修正(不含 untracked 清理数) |
|
|
440
|
+
| 三审 | 4 项 | `doctor-fix.js` stale-lock PID 正则修正(`pid=` 格式);Git pre-restore ref 加毫秒防碰撞;非 Git pre-restore shadow 同步加碰撞检测;`doctor.js` shadow 目录正则支持毫秒后缀 |
|
|
441
|
+
| 四审 | 3+2 项 | `createGitSnapshot` protect basename 语义对齐(`git add -A` + `matchesAny` 裁剪替代 `git add -- <pattern>`);`unquoteGitPath()` 反解 C-quoted 路径(支持 UTF-8 octal);pre-restore ref / shadow snapshot 碰撞重试循环(最多 1000 次);`previewProjectRestore` 正确解析 rename/copy 条目 |
|
|
442
|
+
|
|
443
|
+
### V4 不做的事
|
|
444
|
+
|
|
445
|
+
- 不做自动恢复(恢复永远需要人确认,这是产品底线)
|
|
446
|
+
- 不做 Web 仪表盘
|
|
447
|
+
- 不做云端同步
|
|
448
|
+
|
|
449
|
+
### 进入 V5 的衡量标准
|
|
450
|
+
|
|
451
|
+
- V4 的主动提醒功能误报率 < 10%
|
|
452
|
+
- 健康看板的信息准确度经用户验证
|
|
453
|
+
- 多 Agent 并发编辑已成为用户的真实场景(不是假设)
|
|
454
|
+
- MCP 协议的 notification / resource subscription 机制已相对成熟
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
## V5 — AI 代码变更控制
|
|
459
|
+
|
|
460
|
+
| 项目 | 内容 |
|
|
461
|
+
|---|---|
|
|
462
|
+
| 状态 | 中期主线 🚀 |
|
|
463
|
+
| 定位 | 从保护"一次 AI 写操作"升级为管理"整条 AI 代码变更链路":事前预防、事中判断、事后追溯、按事件恢复。 |
|
|
464
|
+
| 产品定义 | `AI Code Change Control Layer` |
|
|
465
|
+
| 关键词 | `intent` / `impact` / `audit` / `restore-by-event` |
|
|
466
|
+
|
|
467
|
+
### 为什么需要这一步
|
|
468
|
+
|
|
469
|
+
V2-V4 已经证明,cursor-guard 的价值不只是"多留一个备份点",而是在 AI 编码场景下提供一层本地、可解释、非侵入式的安全控制:
|
|
470
|
+
|
|
471
|
+
- **Agent-aware**:知道这不是普通文件变更,而是 AI 发起的代码修改
|
|
472
|
+
- **Local-first**:核心能力默认在本地完成,不依赖云端才能恢复
|
|
473
|
+
- **Non-polluting Git safety net**:通过 `refs/guard/*`、临时 index、shadow copy 提供恢复点,不污染用户分支与暂存区
|
|
474
|
+
- **Deterministic recovery**:恢复顺序明确,可解释、可复现
|
|
475
|
+
- **已有四层基础**:Skill / Core / MCP / Watcher 已搭好,具备继续上升为"变更控制层"的条件
|
|
476
|
+
|
|
477
|
+
如果继续只强调"写前快照",会低估这个项目真正的优势。V5 应该把 cursor-guard 明确升级为:
|
|
478
|
+
|
|
479
|
+
> **AI Code Change Control Layer**
|
|
480
|
+
> 一层面向 AI 编码的代码变更安全控制层。
|
|
481
|
+
|
|
482
|
+
### V5 的闭环
|
|
483
|
+
|
|
484
|
+
V5 不是"三个方向选一个",而是把下面这条链路做完整:
|
|
485
|
+
|
|
486
|
+
1. **Intent**:谁正准备改这里?
|
|
487
|
+
2. **Impact**:这次改动会波及哪里?
|
|
488
|
+
3. **Audit**:这段代码何时、被谁、因何改的?
|
|
489
|
+
4. **Restore**:出事后该回退哪次操作?
|
|
490
|
+
|
|
491
|
+
只有这四步连起来,cursor-guard 才不是"备份工具",而是"变更控制层"。
|
|
492
|
+
|
|
493
|
+
### V5.0 可执行功能清单
|
|
494
|
+
|
|
495
|
+
| 模块 / 能力 | AI 要做什么 | 建议产物 | 完成标准 |
|
|
496
|
+
|---|---|---|---|
|
|
497
|
+
| `intent registry` | 在高风险写入前注册编辑意图,记录 agent、会话、工作区、分支、目标文件、风险级别 | `core/intent.*` 或同等模块 | 能列出活跃会话,能释放会话,能查到谁准备改哪个文件 |
|
|
498
|
+
| `pre-edit snapshot` | 在每次高风险 AI 写入前创建 `refs/guard/pre-edit/*` 恢复点 | `refs/guard/pre-edit/<session>/<seq>` | 任意一条 AI 编辑事件都能关联到写前快照 |
|
|
499
|
+
| `conflict detection` | 先做文件路径级冲突检测,再预留符号级增强位 | `detectConflicts()` / `listConflicts()` | 两个会话同时改重叠文件时能给出 advisory warning |
|
|
500
|
+
| `audit store` | 以 append-only 方式保存 AI 编辑事件 | 默认本地 `JSONL`;后续可升级 `SQLite` | 能按文件 / 会话 / agent / 时间 / 风险级别查询 |
|
|
501
|
+
| `restore by event` | 允许从一条审计事件直接跳转并执行恢复 | `restore_from_event` | 给定 `event_id` 可以定位 `before_ref` 或 `restore_ref` |
|
|
502
|
+
| `impact set` | 为高风险编辑记录受影响文件 / 符号 / 测试集合 | `impact_set` 字段 | 查询事件时能看到"这次改动可能波及哪里" |
|
|
503
|
+
| `MCP / CLI surface` | 暴露最小可用接口给 Agent 和终端 | `register_intent` / `list_active_intents` / `audit_query` / `get_event` / `restore_from_event` | AI 不需要拼复杂 shell,就能完成查询与恢复 |
|
|
504
|
+
| `dashboard / doctor` | 把活跃会话、冲突告警、最近 AI 事件纳入诊断和看板 | `dashboard` / `doctor` 扩展字段 | 用户能看见"现在谁在改、最近改了什么、哪里有冲突" |
|
|
505
|
+
| `tests / docs` | 为事件链路补齐单测、集成测试和文档 | tests + schema docs | V5.0 的所有核心事件和恢复路径都有测试覆盖 |
|
|
506
|
+
|
|
507
|
+
### V5 主线 A:并发编辑安全(预防层)
|
|
508
|
+
|
|
509
|
+
```
|
|
510
|
+
场景:Agent A 在改 src/auth.ts,Agent B 在重构 src/api.ts
|
|
511
|
+
但 api.ts 依赖 auth.ts 的导出
|
|
512
|
+
|
|
513
|
+
现在:谁后写谁赢,另一个 Agent 的改动可能被覆盖
|
|
514
|
+
V5:cursor-guard 先感知编辑意图,再给出冲突预警,
|
|
515
|
+
并为每个编辑会话留下各自可恢复的 pre-edit 证据点
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
首版目标:
|
|
519
|
+
|
|
520
|
+
- Agent 写入前先注册 `intent`
|
|
521
|
+
- 维护本地"编辑会话表":Agent / 会话 / 工作区 / 分支 / 目标文件 / 风险级别
|
|
522
|
+
- 冲突检测先从**文件路径级**做起,再逐步增强到符号级
|
|
523
|
+
- 对潜在冲突返回 advisory warning,而不是一上来做硬锁
|
|
524
|
+
- 为每个会话创建 `refs/guard/pre-edit/*` 恢复点,做到"按会话回退"而不是只按项目回退
|
|
525
|
+
|
|
526
|
+
### V5 主线 B:变更影响分析(判断层)
|
|
527
|
+
|
|
528
|
+
```
|
|
529
|
+
现在:cursor-guard 知道 src/auth.ts 被修改了
|
|
530
|
+
V5:cursor-guard 还知道 validateToken 签名变了,
|
|
531
|
+
src/api.ts、src/middleware.ts、tests/auth.test.ts 可能被波及
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
目标不是做另一个 lint / language server,而是只回答**和 AI 变更安全直接相关**的问题:
|
|
535
|
+
|
|
536
|
+
- 本次 AI 变更影响了哪些文件、符号、测试和构建入口
|
|
537
|
+
- 哪些恢复操作应该按"变更集"而不是单文件执行
|
|
538
|
+
- doctor / dashboard 能否指出"最近一次 AI 编辑可能导致的引用断裂、类型错误、测试波及"
|
|
539
|
+
- 在审计记录中保存 `impact_set`,让排查和恢复不再只看单个文件
|
|
540
|
+
|
|
541
|
+
边界要明确:
|
|
542
|
+
|
|
543
|
+
- 不做通用静态分析平台
|
|
544
|
+
- 不替代 lint / typecheck / language server
|
|
545
|
+
- 只服务于"这次 AI 代码变更是否安全、可恢复、可解释"
|
|
546
|
+
|
|
547
|
+
### V5 主线 C:AI 编辑审计链(证据层)
|
|
548
|
+
|
|
549
|
+
每次 AI 修改都留下结构化、可查询、可恢复的审计记录(示例为未来格式,`refs/guard/pre-edit/*` 为 V5+ 新增路径,不影响现有 `refs/guard/snapshot` 和 `refs/guard/pre-restore/*`):
|
|
550
|
+
|
|
551
|
+
```yaml
|
|
552
|
+
event_id: evt_20260321_143205_001
|
|
553
|
+
session_id: sess_auth_refactor_01
|
|
554
|
+
agent_id: cursor/background-claude
|
|
555
|
+
action: edit
|
|
556
|
+
intent: "添加 JWT 过期检查"
|
|
557
|
+
risk_level: medium
|
|
558
|
+
files:
|
|
559
|
+
- path: src/auth.ts
|
|
560
|
+
lines_changed: 12-28
|
|
561
|
+
before_ref: refs/guard/pre-edit/sess_auth_refactor_01/0001
|
|
562
|
+
restore_ref: refs/guard/pre-restore/20260321_143401
|
|
563
|
+
impact_set:
|
|
564
|
+
- src/api.ts
|
|
565
|
+
- src/middleware.ts
|
|
566
|
+
- tests/auth.test.ts
|
|
567
|
+
user_confirmed: true
|
|
568
|
+
timestamp: 2026-03-21T14:32:05+08:00
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
V5 的关键不是"多打一行日志",而是建立完整证据链:
|
|
572
|
+
|
|
573
|
+
- 事后追溯"这段代码何时、被谁、因何改的"
|
|
574
|
+
- 支持按文件 / Agent / 会话 / 时间 / 风险级别查询
|
|
575
|
+
- 支持从审计事件直接跳到恢复点,做到 `restore_from_event`
|
|
576
|
+
- 让团队 code review、事故排查、恢复决策都有统一依据
|
|
577
|
+
|
|
578
|
+
### V5 核心事件
|
|
579
|
+
|
|
580
|
+
| 事件名 | 何时产生 | 最少字段 |
|
|
581
|
+
|---|---|---|
|
|
582
|
+
| `intent_registered` | AI 在高风险写入前注册意图 | `event_id` `session_id` `agent_id` `files[]` `risk_level` `timestamp` |
|
|
583
|
+
| `conflict_detected` | 当前意图与活跃会话发生重叠 | `event_id` `session_id` `conflict_with[]` `files[]` `severity` `timestamp` |
|
|
584
|
+
| `edit_applied` | AI 写入已落盘且写前快照完成 | `event_id` `session_id` `before_ref` `files[]` `intent` `impact_set[]` `timestamp` |
|
|
585
|
+
| `restore_executed` | 用户或 Agent 按事件执行恢复 | `event_id` `restored_from_event` `restore_ref` `files[]` `timestamp` |
|
|
586
|
+
| `intent_released` | 会话结束或冲突解除 | `event_id` `session_id` `timestamp` |
|
|
587
|
+
|
|
588
|
+
### V5 标准事件结构
|
|
589
|
+
|
|
590
|
+
> 首版建议统一为一个可 append-only 的结构,默认落本地 `JSONL`。
|
|
591
|
+
> 如后续需要更强查询性能,再平滑升级到 `SQLite`。
|
|
592
|
+
|
|
593
|
+
```json
|
|
594
|
+
{
|
|
595
|
+
"event_id": "evt_20260321_143205_001",
|
|
596
|
+
"session_id": "sess_auth_refactor_01",
|
|
597
|
+
"agent_id": "cursor/background-claude",
|
|
598
|
+
"event_type": "edit_applied",
|
|
599
|
+
"action": "edit",
|
|
600
|
+
"intent": "添加 JWT 过期检查",
|
|
601
|
+
"risk_level": "medium",
|
|
602
|
+
"files": [
|
|
603
|
+
{ "path": "src/auth.ts", "lines_changed": "12-28" }
|
|
604
|
+
],
|
|
605
|
+
"before_ref": "refs/guard/pre-edit/sess_auth_refactor_01/0001",
|
|
606
|
+
"restore_ref": "refs/guard/pre-restore/20260321_143401",
|
|
607
|
+
"impact_set": [
|
|
608
|
+
"src/api.ts",
|
|
609
|
+
"src/middleware.ts",
|
|
610
|
+
"tests/auth.test.ts"
|
|
611
|
+
],
|
|
612
|
+
"user_confirmed": true,
|
|
613
|
+
"timestamp": "2026-03-21T14:32:05+08:00"
|
|
614
|
+
}
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### V5 的代表性价值
|
|
618
|
+
|
|
619
|
+
- 对个人开发者:知道上一次 AI 大改到底动了什么,能按事件回退,而不是盲猜
|
|
620
|
+
- 对重度 AI 用户:background agent、多工具协作时,能提前看到覆盖风险
|
|
621
|
+
- 对团队:可以讨论"这次 AI 改动值不值得保留",而不是只讨论"代码现在长什么样"
|
|
622
|
+
|
|
623
|
+
### V5 不做的事
|
|
624
|
+
|
|
625
|
+
- 不做跨机器同步(那是 git remote 的事)
|
|
626
|
+
- 不做通用静态分析平台(不取代 lint / typecheck / language server)
|
|
627
|
+
- 不做云端控制平面(核心能力仍然本地优先)
|
|
628
|
+
- 不做通用版本控制(不取代 git)
|
|
629
|
+
- 不在 V5 首版强制所有 Agent 写入走硬锁(先 advisory,后增强)
|
|
630
|
+
|
|
631
|
+
### V5 完成标志(Definition of Done)
|
|
632
|
+
|
|
633
|
+
- AI 能在高风险写入前注册意图并创建 `pre-edit` 快照
|
|
634
|
+
- 用户能查询最近一次 AI 编辑的完整上下文
|
|
635
|
+
- 给定 `event_id` 能找到对应快照并执行恢复
|
|
636
|
+
- 两个活跃会话改同一文件时,系统能稳定给出冲突告警
|
|
637
|
+
- dashboard / doctor 能展示最近 AI 事件、活跃会话和未解决冲突
|
|
638
|
+
|
|
639
|
+
### 进入 V6 的衡量标准
|
|
640
|
+
|
|
641
|
+
- V5 已能稳定回答四个核心问题:谁改的、为什么改、影响哪、怎么恢复
|
|
642
|
+
- `intent / impact / audit / restore` 数据模型稳定
|
|
643
|
+
- V5 在真实多 Agent / 多工具工作流中验证过,冲突检测准确率可接受
|
|
644
|
+
- cursor-guard 有一定的用户基数和社区认可度
|
|
645
|
+
- 社区开始出现"跨工具复用审计链与恢复语义"的真实需求
|
|
646
|
+
|
|
647
|
+
---
|
|
648
|
+
|
|
649
|
+
## V6 — 开放协议 + 团队工作流
|
|
650
|
+
|
|
651
|
+
| 项目 | 内容 |
|
|
652
|
+
|---|---|
|
|
653
|
+
| 状态 | 中长期主线 🚀🚀 |
|
|
654
|
+
| 定位 | 从 Cursor 内的安全技能,升级为跨工具的 AI 代码变更控制协议、参考实现与团队工作流入口。 |
|
|
655
|
+
| 产出定位 | `协议` + `适配器` + `CI 查询报告` |
|
|
656
|
+
|
|
657
|
+
### 为什么会走到这一步
|
|
658
|
+
|
|
659
|
+
到 V5,cursor-guard 已经积累了:
|
|
660
|
+
- 一套经过验证的安全规则体系(Skill 层)
|
|
661
|
+
- 一个稳定的核心引擎(Core 层)
|
|
662
|
+
- 一组标准化的工具接口(MCP 层)
|
|
663
|
+
- 一套面向 AI 代码变更的控制闭环(意图 / 影响 / 审计 / 恢复)
|
|
664
|
+
|
|
665
|
+
这些能力并不是 Cursor 独有的需求。任何 AI 编码工具(Windsurf、Copilot Workspace、未来的新工具)都面临同样的问题:
|
|
666
|
+
|
|
667
|
+
> AI 改了代码,如何确保这次改动可预防、可追溯、可恢复、可审计?
|
|
668
|
+
|
|
669
|
+
V6 的核心判断是:
|
|
670
|
+
|
|
671
|
+
- **护城河不只是"能备份"**,而是"协议 + 数据模型 + 查询接口 + 工作流集成"
|
|
672
|
+
- Cursor 只是第一个适配器,不是最终形态
|
|
673
|
+
- 如果 V5 做成了控制闭环,V6 就应把它升级成跨工具标准和团队基础设施
|
|
674
|
+
|
|
675
|
+
### V6.0 可执行功能清单
|
|
676
|
+
|
|
677
|
+
| 模块 / 能力 | AI 要做什么 | 建议产物 | 完成标准 |
|
|
678
|
+
|---|---|---|---|
|
|
679
|
+
| `protocol spec` | 把 snapshot / intent / audit / restore 语义写成正式协议 | `AI Code Change Control Protocol v1.0` 文档 | 第三方仅靠文档就能实现兼容版本 |
|
|
680
|
+
| `event schemas` | 发布事件、查询、覆盖率报告的结构定义 | `intent.schema.json` `edit_event.schema.json` `restore_event.schema.json` `coverage_report.schema.json` | 所有接口都能按 schema 校验 |
|
|
681
|
+
| `conformance suite` | 提供最小一致性测试套件和 fixtures | conformance tests + fixtures | 第三方实现能跑出 pass / fail 结果 |
|
|
682
|
+
| `adapter API` | 定义 IDE / Agent 接入层的最小接口 | Adapter API 文档 | 新工具可通过统一接口接入 intent / audit / restore |
|
|
683
|
+
| `query API` | 定义跨工具可复用的查询能力 | `list_events` / `get_event` / `list_sessions` / `get_restore_chain` / `get_coverage_report` | 团队工具和 CI 能稳定消费这些查询 |
|
|
684
|
+
| `CI reporter` | 把 AI 编辑审计链转成 PR / 流水线报告 | GitHub / CI reporter | 团队能在 PR 中看到 AI 编辑安全报告 |
|
|
685
|
+
| `module boundaries` | 明确 core、audit、coordinator、adapter、reporter 的边界 | 模块边界文档 | 不同实现可以复用同一协议而不强耦合 |
|
|
686
|
+
|
|
687
|
+
### V6 主线 A:协议规范化
|
|
688
|
+
|
|
689
|
+
把 V2-V5 积累的变更控制能力提炼成一份正式规范:
|
|
690
|
+
|
|
691
|
+
```
|
|
692
|
+
AI Code Change Control Protocol v1.0
|
|
693
|
+
|
|
694
|
+
1. Pre-Write Snapshot
|
|
695
|
+
- MUST create recoverable snapshot before destructive operations
|
|
696
|
+
- Snapshot MUST NOT pollute user's staging area or branch history
|
|
697
|
+
|
|
698
|
+
2. Edit Intent
|
|
699
|
+
- Agent MUST register intent before high-risk writes
|
|
700
|
+
- Intent SHOULD be queryable during an active session
|
|
701
|
+
|
|
702
|
+
3. Impact Set
|
|
703
|
+
- High-risk edits SHOULD emit affected files / symbols / tests
|
|
704
|
+
|
|
705
|
+
4. Audit Trail
|
|
706
|
+
- Structured record format for all AI-initiated edits
|
|
707
|
+
|
|
708
|
+
5. Restore by Event
|
|
709
|
+
- Any recorded AI edit SHOULD be restorable through linked snapshot refs
|
|
710
|
+
```
|
|
711
|
+
|
|
712
|
+
这份规范应该是 IDE 无关、传输无关的:可以跑在 MCP、CLI、HTTP、IDE adapter 上。
|
|
713
|
+
cursor-guard 自身则变成"这份规范的参考实现"。
|
|
714
|
+
|
|
715
|
+
配套产出:**协议一致性测试套件(conformance suite)**——第三方实现可以跑这套测试来验证自己是否符合协议。
|
|
716
|
+
|
|
717
|
+
### V6 主线 B:模块化与适配器架构
|
|
718
|
+
|
|
719
|
+
把 cursor-guard 的核心能力拆成可复用模块,并围绕"适配器"而不是"杂项插件"扩张:
|
|
720
|
+
|
|
721
|
+
```
|
|
722
|
+
@cursor-guard/core → 核心引擎(备份/恢复/诊断)
|
|
723
|
+
@cursor-guard/mcp → MCP Server
|
|
724
|
+
@cursor-guard/watcher → 后台自动备份
|
|
725
|
+
@cursor-guard/coordinator → 编辑意图 / 冲突告警(V5)
|
|
726
|
+
@cursor-guard/audit → 审计链 / 查询 / 按事件恢复(V5)
|
|
727
|
+
@cursor-guard/adapter-cursor
|
|
728
|
+
@cursor-guard/adapter-windsurf
|
|
729
|
+
@cursor-guard/reporter-github
|
|
730
|
+
|
|
731
|
+
社区扩展的重点不是"再发明一个备份后端",而是:
|
|
732
|
+
|
|
733
|
+
- 适配其他 IDE / Agent
|
|
734
|
+
- 输出到不同的团队查询界面和报告载体
|
|
735
|
+
- 对接不同的审计存储和可视化层
|
|
736
|
+
- 让更多工具复用同一套变更控制语义
|
|
737
|
+
|
|
738
|
+
需要定义清晰的 Adapter API,例如:
|
|
739
|
+
|
|
740
|
+
- `registerIntent`
|
|
741
|
+
- `recordEditEvent`
|
|
742
|
+
- `queryAudit`
|
|
743
|
+
- `restoreFromEvent`
|
|
744
|
+
- `reportCoverage`
|
|
745
|
+
|
|
746
|
+
### V6 主线 C:CI/CD 集成
|
|
747
|
+
|
|
748
|
+
把 AI 编辑审计链对接到开发流程中,让团队在 PR 和流水线里真正用起来:
|
|
749
|
+
|
|
750
|
+
```
|
|
751
|
+
AI 编辑 → cursor-guard 记录审计链
|
|
752
|
+
↓
|
|
753
|
+
git push → CI 流水线
|
|
754
|
+
↓
|
|
755
|
+
cursor-guard CI check:
|
|
756
|
+
- 本次 PR 中有 N 处 AI 编辑
|
|
757
|
+
- 其中 M 处已有 pre-edit snapshot
|
|
758
|
+
- 覆盖率:M/N = 95%
|
|
759
|
+
- 风险评估:2 处高风险变更(大面积重写)
|
|
760
|
+
- 是否存在未解决冲突告警
|
|
761
|
+
- 是否可从事件直接恢复
|
|
762
|
+
↓
|
|
763
|
+
PR Review 中展示 AI 编辑报告
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
价值不只是"做个报表",而是把 cursor-guard 从个人安全网升级为团队工作流的一部分:
|
|
767
|
+
|
|
768
|
+
- 团队层面看见 AI 编辑的影响范围和安全覆盖率
|
|
769
|
+
- code review 不再只看 diff,也能看审计上下文
|
|
770
|
+
- 事故发生后,可以从 PR / CI 报告直接追到具体事件与恢复点
|
|
771
|
+
|
|
772
|
+
### V6 协议对象
|
|
773
|
+
|
|
774
|
+
| 对象 | 用途 | 备注 |
|
|
775
|
+
|---|---|---|
|
|
776
|
+
| `intent` | 描述一次待执行的 AI 修改意图 | 事前预防 |
|
|
777
|
+
| `edit_event` | 描述一次已落盘 AI 修改 | 事后追溯 |
|
|
778
|
+
| `restore_event` | 描述一次按事件恢复 | 恢复审计 |
|
|
779
|
+
| `session` | 聚合同一 Agent 会话中的多次事件 | 查询入口 |
|
|
780
|
+
| `coverage_report` | 给 CI / PR 展示安全覆盖率和风险摘要 | 团队工作流 |
|
|
781
|
+
|
|
782
|
+
### V6 不做的事
|
|
783
|
+
|
|
784
|
+
- **不做商业化平台** —— cursor-guard 保持开源,协议保持开放
|
|
785
|
+
- **不做强依赖云端的服务** —— 核心能力永远是本地优先
|
|
786
|
+
- **不做 IDE 本体** —— 只做安全层,不越界
|
|
787
|
+
- **不做通用工程观测平台** —— 只围绕 AI 代码变更安全
|
|
788
|
+
- **不做强制标准** —— 协议是"推荐遵循",不是"不遵循就不能用"
|
|
789
|
+
|
|
790
|
+
### V6 完成标志(Definition of Done)
|
|
791
|
+
|
|
792
|
+
- 协议文档、schema、conformance suite 三件套齐全
|
|
793
|
+
- 至少两个不同入口能接入同一套 intent / audit / restore 语义
|
|
794
|
+
- CI / PR 能稳定展示 AI 编辑安全报告
|
|
795
|
+
- 团队可以查询"这次 PR 里哪些改动由 AI 产生、是否有快照、是否可恢复"
|
|
796
|
+
|
|
797
|
+
### 进入 V7 的衡量标准
|
|
798
|
+
|
|
799
|
+
- V6 协议规范已有至少两个独立实现(cursor-guard 自身 + 至少一个第三方)
|
|
800
|
+
- conformance suite 测试套件稳定
|
|
801
|
+
- 企业或团队场景出现"能不能证明 AI 编辑走了安全流程"的需求
|
|
802
|
+
- 审计链数据格式经社区验证
|
|
803
|
+
|
|
804
|
+
---
|
|
805
|
+
|
|
806
|
+
## V7 — 可验证信任 / 治理层
|
|
807
|
+
|
|
808
|
+
| 项目 | 内容 |
|
|
809
|
+
|---|---|
|
|
810
|
+
| 状态 | 远期愿景 🔭🔭🔭 |
|
|
811
|
+
| 定位 | 不只是"有备份、有恢复",而是"能证明这次 AI 改动是在安全链路下完成的"。 |
|
|
812
|
+
|
|
813
|
+
### 为什么需要这一步
|
|
814
|
+
|
|
815
|
+
V6 定义了协议,但协议被遵守了吗?没人能证明。
|
|
816
|
+
|
|
817
|
+
在团队和企业场景中,"我们用了 cursor-guard"不等于"每次 AI 编辑都走了安全流程"。管理者需要的不是承诺,是**证据**。
|
|
818
|
+
|
|
819
|
+
V7 的核心转变:
|
|
820
|
+
|
|
821
|
+
```
|
|
822
|
+
V6:定义了"AI 编辑应该怎么才算安全"
|
|
823
|
+
V7:能证明"这次 AI 编辑确实走了安全流程"
|
|
824
|
+
```
|
|
825
|
+
|
|
826
|
+
类比:ISO 27001 定义信息安全标准,审计/认证证明你遵守了。标准有价值,但**可验证**才是企业买单的原因。
|
|
827
|
+
|
|
828
|
+
### 核心能力
|
|
829
|
+
|
|
830
|
+
#### 7.1 审计记录签名化
|
|
831
|
+
|
|
832
|
+
为每次 AI 编辑操作生成带签名的审计记录,保证记录不可篡改。
|
|
833
|
+
|
|
834
|
+
```jsonc
|
|
835
|
+
{
|
|
836
|
+
"event_id": "a3f2c1d4",
|
|
837
|
+
"timestamp": "2026-03-21T14:32:05Z",
|
|
838
|
+
"agent": "claude-4",
|
|
839
|
+
"action": "edit",
|
|
840
|
+
"file": "src/auth.ts",
|
|
841
|
+
"pre_snapshot_ref": "refs/guard/pre-edit/a3f2c1", // V5+ 新增 ref 路径
|
|
842
|
+
"risk_level": "medium",
|
|
843
|
+
"user_confirmed": true,
|
|
844
|
+
"content_hash": "sha256:e3b0c44298fc...",
|
|
845
|
+
"signature": "ed25519:Kx8dG9f...(基于项目密钥对 content_hash 的签名)"
|
|
846
|
+
}
|
|
847
|
+
```
|
|
848
|
+
|
|
849
|
+
> **注**:`refs/guard/pre-edit/*` 是 V5+ 规划的新增引用路径,用于细粒度审计。不改变现有 `refs/guard/snapshot`(写前快照)和 `refs/guard/pre-restore/*`(恢复前快照)的语义。
|
|
850
|
+
|
|
851
|
+
- 本地签名(基于项目密钥或机器指纹),不依赖外部服务
|
|
852
|
+
- 签名链:每条记录的签名包含前一条记录的哈希,形成可验证链
|
|
853
|
+
- 审计记录存储在 `.cursor-guard-audit/` 或 Git notes 中
|
|
854
|
+
|
|
855
|
+
#### 7.2 CI 安全覆盖率校验
|
|
856
|
+
|
|
857
|
+
在 CI 流水线中验证"本次 PR 的 AI 编辑是否都有安全保护":
|
|
858
|
+
|
|
859
|
+
```
|
|
860
|
+
cursor-guard ci-check --base=main --head=feature-branch
|
|
861
|
+
|
|
862
|
+
AI Edit Safety Report:
|
|
863
|
+
Total AI edits: 12
|
|
864
|
+
With pre-snapshot: 11 (91.7%)
|
|
865
|
+
With audit record: 12 (100%)
|
|
866
|
+
High-risk edits: 2 (both user-confirmed)
|
|
867
|
+
Unsigned records: 0
|
|
868
|
+
|
|
869
|
+
Status: PASS (threshold: 90%)
|
|
870
|
+
```
|
|
871
|
+
|
|
872
|
+
- 作为 CI step 或 GitHub Action 运行
|
|
873
|
+
- 可配置通过阈值(安全覆盖率百分比)
|
|
874
|
+
- 输出格式兼容 PR Review comment
|
|
875
|
+
|
|
876
|
+
#### 7.3 团队策略包(Policy Packs)
|
|
877
|
+
|
|
878
|
+
可复用的团队级安全策略定义:
|
|
879
|
+
|
|
880
|
+
```json
|
|
881
|
+
{
|
|
882
|
+
"policy": "strict-production",
|
|
883
|
+
"rules": {
|
|
884
|
+
"pre_snapshot": "required",
|
|
885
|
+
"user_confirmation": "required_for_high_risk",
|
|
886
|
+
"audit_signing": "required",
|
|
887
|
+
"ci_coverage_threshold": 95,
|
|
888
|
+
"allowed_restore_sources": ["guard-ref", "shadow-copy"]
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
```
|
|
892
|
+
|
|
893
|
+
- 策略包可导出、导入、版本化
|
|
894
|
+
- 团队管理者定义统一策略,成员项目自动继承
|
|
895
|
+
- 与 CI 校验联动——不满足策略的 PR 被标记
|
|
896
|
+
|
|
897
|
+
#### 7.4 安全操作证明(Attestation)
|
|
898
|
+
|
|
899
|
+
最终形态:为一次完整的 AI 编辑会话生成可验证的"安全操作证明"。
|
|
900
|
+
|
|
901
|
+
```
|
|
902
|
+
Attestation: session-20260321-143205
|
|
903
|
+
Agent: claude-4
|
|
904
|
+
Session: 14:32:05 - 14:47:22
|
|
905
|
+
Files edited: 8
|
|
906
|
+
All pre-snapshots: ✓
|
|
907
|
+
All audit signed: ✓
|
|
908
|
+
Policy compliance: strict-production ✓
|
|
909
|
+
Attestation hash: sha256:abc123...
|
|
910
|
+
|
|
911
|
+
This session's AI edits were performed under
|
|
912
|
+
cursor-guard safety protocol v1.0 with full compliance.
|
|
913
|
+
```
|
|
914
|
+
|
|
915
|
+
- 可独立验证(给定 attestation,任何人可以校验)
|
|
916
|
+
- 不依赖 cursor-guard 服务——纯本地密码学验证
|
|
917
|
+
|
|
918
|
+
### V7 的实施节奏
|
|
919
|
+
|
|
920
|
+
```
|
|
921
|
+
V7.0 审计记录签名化 + CI 安全覆盖率校验
|
|
922
|
+
V7.1 团队策略包
|
|
923
|
+
V7.2 完整 attestation(安全操作证明链)
|
|
924
|
+
```
|
|
925
|
+
|
|
926
|
+
### V7 不做的事
|
|
927
|
+
|
|
928
|
+
- 不做中心化证书颁发(签名基于本地密钥,不引入 CA)
|
|
929
|
+
- 不做实时监控平台(cursor-guard 不是 SIEM)
|
|
930
|
+
- 不做合规认证业务(cursor-guard 提供证据,不做审计结论)
|
|
931
|
+
|
|
932
|
+
---
|
|
933
|
+
|
|
934
|
+
## 全版本对比
|
|
935
|
+
|
|
936
|
+
| | V2 | V3 | V4 | V5 | V6 | V7 |
|
|
937
|
+
|---|---|---|---|---|---|---|
|
|
938
|
+
| **一句话** | 能恢复 | 更稳更省 | 主动提醒 | 变更闭环 | 跨工具标准 | 可证明 |
|
|
939
|
+
| **核心架构** | Skill + Script | + Core + MCP | + 智能检测 | + 变更控制层 | + 开放协议 + 适配器 | + 治理层 |
|
|
940
|
+
| **Agent 调用** | 拼 shell | 优先 MCP | MCP + 主动建议 | MCP + 意图 / 审计 / 恢复 | 标准接口 + 适配器 | 标准接口 + 审计 |
|
|
941
|
+
| **安装门槛** | 最低 | 不变 | 不变 | 略增 | 看具体实现 | 看具体实现 |
|
|
942
|
+
| **适合谁** | 所有人 | 所有人 | 所有人 | 重度 AI 用户 + 团队试点 | 工具开发者 + 团队 | 企业 + 合规场景 |
|
|
943
|
+
| **状态** | ✅ 已发布 | ✅ 已完成 | ✅ 已完成 | 🚀 中期主线 | 🚀🚀 中长期 | 🔭🔭🔭 愿景 |
|
|
944
|
+
|
|
945
|
+
---
|
|
946
|
+
|
|
947
|
+
## 版本推进节奏
|
|
948
|
+
|
|
949
|
+
```
|
|
950
|
+
V2.x ────── ✅ 已完成
|
|
951
|
+
│
|
|
952
|
+
V3.0 ────── ✅ Core 抽取(6 模块,83 测试)
|
|
953
|
+
V3.1 ────── ✅ MCP Server 首版(7 工具)
|
|
954
|
+
V3.2 ────── ✅ restore_project 执行模式 + doctor_fix
|
|
955
|
+
V3.3 ────── ✅ backup_status
|
|
956
|
+
V3.4 ────── ✅ MCP 自检
|
|
957
|
+
│
|
|
958
|
+
│ 前提:MCP 调用成功率 > 95%,token 消耗可观测下降
|
|
959
|
+
▼
|
|
960
|
+
V4.0 ────── ✅ 智能恢复建议 + 备份健康看板 + 4 轮代码审查加固(138 测试) ← 当前版本
|
|
961
|
+
V4.x ────── 候选支线(完整性校验 / 多项目概览)
|
|
962
|
+
│
|
|
963
|
+
│ 前提:AI 编辑需要更强的追溯 / 恢复 / 查询闭环
|
|
964
|
+
│ 前提:多 Agent / 多工具协作成为真实场景
|
|
965
|
+
▼
|
|
966
|
+
V5.0 ────── 编辑意图 + pre-edit 审计链基础版
|
|
967
|
+
V5.x ────── 影响分析 / 冲突告警 / 按事件恢复
|
|
968
|
+
│
|
|
969
|
+
│ 前提:cursor-guard 有社区认可度
|
|
970
|
+
│ 前提:跨工具复用审计链与恢复语义有真实需求
|
|
971
|
+
▼
|
|
972
|
+
V6.0 ────── 协议规范 + conformance suite
|
|
973
|
+
V6.x ────── 适配器架构 / CI 查询报告 / 团队工作流
|
|
974
|
+
│
|
|
975
|
+
│ 前提:协议有多个独立实现
|
|
976
|
+
│ 前提:企业场景需要可验证证据
|
|
977
|
+
▼
|
|
978
|
+
V7.0 ────── 审计签名 + CI 安全覆盖率
|
|
979
|
+
V7.1 ────── 团队策略包
|
|
980
|
+
V7.2 ────── attestation(安全操作证明)
|
|
981
|
+
```
|
|
982
|
+
|
|
983
|
+
**关键原则:每个版本只有在前一版稳定、且前提条件满足后才推进。不为远期版本提前做设计妥协。**
|
|
984
|
+
|
|
985
|
+
---
|
|
986
|
+
|
|
987
|
+
## Beyond V7
|
|
988
|
+
|
|
989
|
+
V7 的"可验证治理"是这条产品线的逻辑终点——该保护的都保护了、该标准化的都标准化了、该证明的都能证明。再往上加版本号,只有量变(更多平台适配、更多语言支持),没有质变。
|
|
990
|
+
|
|
991
|
+
这不是说项目到此结束,而是说 cursor-guard 作为**一个项目**的功能边界到此收敛。
|
|
992
|
+
|
|
993
|
+
但它推动的东西才刚开始——
|
|
994
|
+
|
|
995
|
+
如果 V6 的协议被采纳、V7 的治理层被验证,那么"AI 编辑前必须有安全快照"会像"代码必须有版本控制"一样成为行业共识。到那时候,这个能力可能已经被 IDE 原生实现、被 CI 平台内置、被开发者视为理所当然。
|
|
996
|
+
|
|
997
|
+
**cursor-guard 最好的终局不是所有人都在用 cursor-guard,而是所有人都在用 cursor-guard 定义的范式。**
|
|
998
|
+
|
|
999
|
+
就像 jQuery 推动了浏览器原生实现更好的 DOM API,最终让自己变得不再必要——那不是失败,那是赢了。
|
|
1000
|
+
|
|
1001
|
+
---
|
|
1002
|
+
|
|
1003
|
+
## 给用户说的话
|
|
1004
|
+
|
|
1005
|
+
### 现在(V4)
|
|
1006
|
+
|
|
1007
|
+
> cursor-guard 已经能保护你的代码,而且越来越聪明。
|
|
1008
|
+
> 自动备份、写前快照、确定性恢复——开箱即用。
|
|
1009
|
+
> V3 新增:MCP 工具调用(可选)让 AI 操作更稳、更快、更省 token。
|
|
1010
|
+
> V4 新增:系统会主动监测异常变更并提醒你,一个 `dashboard` 就能看全局健康状态。
|
|
1011
|
+
> 经过 4 轮代码审查,138 个测试覆盖所有核心路径。
|
|
1012
|
+
|
|
1013
|
+
### 未来
|
|
1014
|
+
|
|
1015
|
+
> 后续版本会让这个保护形成变更闭环、升级为跨工具标准。
|
|
1016
|
+
> 但你现在用的功能,永远不会被废弃。
|
|
1017
|
+
> 每一层新能力都是可选增强,不是强制升级。
|
|
1018
|
+
|
|
1019
|
+
---
|
|
1020
|
+
|
|
1021
|
+
## 附录:不做清单(全版本通用)
|
|
1022
|
+
|
|
1023
|
+
无论演进到哪个版本,以下事项明确不做:
|
|
1024
|
+
|
|
1025
|
+
| 不做 | 原因 |
|
|
1026
|
+
|---|---|
|
|
1027
|
+
| 自动恢复(无人确认) | 恢复操作必须有人确认,这是产品底线 |
|
|
1028
|
+
| 自动 push 到远程 | 本地优先,push 需用户明确指令 |
|
|
1029
|
+
| 云端备份服务 | cursor-guard 的定位是本地安全网 |
|
|
1030
|
+
| Web 仪表盘 | 投入产出比不合理 |
|
|
1031
|
+
| 取代 Git | cursor-guard 是 Git 的增强,不是替代 |
|
|
1032
|
+
| AI 行为限制 | cursor-guard 是安全网,不是笼子 |
|
|
1033
|
+
| 多 IDE 全面适配 | 聚焦 Cursor,其他 IDE 由社区或 V6 协议解决 |
|
|
1034
|
+
| 商业化封闭 | 保持开源,协议保持开放 |
|
|
1035
|
+
| 中心化认证服务 | 签名和验证基于本地,不引入外部依赖 |
|
|
1036
|
+
|
|
1037
|
+
---
|
|
1038
|
+
|
|
1039
|
+
*最后更新:2026-03-21*
|
|
1040
|
+
*版本:v1.2(V4.0 最终交付,含 4 轮代码审查加固)*
|