@ppdocs/mcp 3.2.26 → 3.2.28
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/dist/cli.js +77 -43
- package/dist/tools/flowchart.js +5 -2
- package/package.json +1 -1
- package/templates/commands/pp/diagnose.md +174 -82
- package/templates/commands/pp/discuss.md +4 -4
- package/templates/commands/pp/execute.md +151 -84
- package/templates/commands/pp/init.md +200 -123
- package/templates/commands/pp/protocol.md +181 -0
- package/templates/commands/pp/review.md +158 -55
- package/templates/commands/pp/sync.md +229 -178
|
@@ -1,178 +1,229 @@
|
|
|
1
|
-
**角色**: Knowledge Graph Synchronization Architect
|
|
2
|
-
|
|
3
|
-
## 同步宪法
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
| `
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
1
|
+
**角色**: Knowledge Graph Synchronization Architect — 维护代码与知识图谱的绝对一致性
|
|
2
|
+
|
|
3
|
+
## 同步宪法
|
|
4
|
+
|
|
5
|
+
| 原则 | 要求 |
|
|
6
|
+
|:---|:---|
|
|
7
|
+
| **代码即真理** | 代码与图谱冲突时以 Git 状态为准, 强制覆写 |
|
|
8
|
+
| **层级感知** | 变更定位到具体子图层级, 逐层向上验证影响链 |
|
|
9
|
+
| **最小变更** | 只更新有差异的节点/文档, 不做无意义的全量覆写 |
|
|
10
|
+
| **创建即关联** | 新增节点必须 bind 源码 + 创建/关联文档, 无孤立资产 |
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 同步模式
|
|
15
|
+
|
|
16
|
+
用户触发时选择模式 (或由 AI 根据上下文判断):
|
|
17
|
+
|
|
18
|
+
| 模式 | 触发 | 扫描范围 |
|
|
19
|
+
|:---|:---|:---|
|
|
20
|
+
| `recent` (默认) | `/pp:sync` 或 `/pp:sync recent` | `git diff --name-only HEAD~3` 近期变更文件 |
|
|
21
|
+
| `all` | `/pp:sync all` | `code_scan(force:true)` 全量重扫 |
|
|
22
|
+
| `check` | `/pp:sync check` | 仅对比, 输出差异报告, 不执行写入 |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 标准流程
|
|
27
|
+
|
|
28
|
+
### Phase 1: 变更检测
|
|
29
|
+
|
|
30
|
+
**1.1 获取图谱现状**
|
|
31
|
+
```
|
|
32
|
+
kg_init() → 确保项目连接
|
|
33
|
+
kg_tree() → 文档全景
|
|
34
|
+
kg_flowchart(action:"list") → 所有流程图
|
|
35
|
+
kg_flowchart(action:"get") → 主图节点+连线
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**1.2 获取代码变更**
|
|
39
|
+
```
|
|
40
|
+
recent 模式:
|
|
41
|
+
Bash: git diff --name-only HEAD~3 → 变更文件列表
|
|
42
|
+
Bash: git log --oneline -5 → 近期提交摘要
|
|
43
|
+
code_scan() → 增量更新索引
|
|
44
|
+
|
|
45
|
+
all 模式:
|
|
46
|
+
code_scan(force:true) → 全量重建索引
|
|
47
|
+
Glob: src/**/*.{ts,tsx,rs} → 全部源文件
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**1.3 逐文件交叉比对**
|
|
51
|
+
```
|
|
52
|
+
对每个变更文件 (或全量文件):
|
|
53
|
+
1. code_context(filePath) → 该文件的符号/依赖/被引用
|
|
54
|
+
2. kg_flowchart(action:"get", chartId:对应子图) → 图谱中该区域的节点
|
|
55
|
+
3. 对比:
|
|
56
|
+
- 文件中有导出, 图谱无节点 → [NEW]
|
|
57
|
+
- 文件已修改, 图谱节点描述/连线过时 → [MOD]
|
|
58
|
+
- 图谱节点绑定的文件已删除/移动 → [DEL/DRIFT]
|
|
59
|
+
- 图谱与代码一致 → [OK]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**输出变更清单** (等待用户确认):
|
|
63
|
+
```
|
|
64
|
+
├─ 🟢 [NEW] src/hooks/useTheme.ts → 需创建节点+文档
|
|
65
|
+
├─ 🟡 [MOD] src-tauri/src/storage/graph_store.rs → 节点描述需更新
|
|
66
|
+
├─ 🔴 [DEL] src/legacy/oldHelper.ts → 节点需废弃/删除
|
|
67
|
+
├─ 🟠 [DRIFT] src/utils/format.ts → moved to src/utils/formatter.ts → 需 unbind+rebind
|
|
68
|
+
└─ ✅ [OK] src/hooks/useProjectData.ts → 无变化
|
|
69
|
+
|
|
70
|
+
统计: NEW 2 | MOD 5 | DEL 1 | DRIFT 1 | OK 15
|
|
71
|
+
```
|
|
72
|
+
→ 用户确认 `OK` 后进入 Phase 2
|
|
73
|
+
|
|
74
|
+
### Phase 2: 影响链分析
|
|
75
|
+
|
|
76
|
+
**2.1 定位子图层级**
|
|
77
|
+
```
|
|
78
|
+
对每个 [NEW]/[MOD] 文件:
|
|
79
|
+
1. 确定它属于哪张子图 (通过目录映射或 bind 记录)
|
|
80
|
+
2. code_impact(symbolName) → 该符号的爆炸半径
|
|
81
|
+
- L1 直接引用 = 必须检查
|
|
82
|
+
- L2 间接引用 = 建议检查
|
|
83
|
+
3. 影响是否跨子图? → 标记需要检查的父图连线
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**2.2 拓扑排序**
|
|
87
|
+
```
|
|
88
|
+
按依赖关系排序变更:
|
|
89
|
+
底层变更先处理 (types/store) → 上层后处理 (hooks/components)
|
|
90
|
+
避免更新上层节点时底层依赖还未就绪
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Phase 3: 原子化执行
|
|
94
|
+
|
|
95
|
+
**3.1 处理 [NEW] — 新增节点**
|
|
96
|
+
```
|
|
97
|
+
1. 判断深度: 该文件是否需要独立子图?
|
|
98
|
+
- 导出 ≥5 个符号 → create_chart + batch_add
|
|
99
|
+
- 导出 <5 个符号 → 在父子图中添加节点
|
|
100
|
+
|
|
101
|
+
2. 创建节点:
|
|
102
|
+
kg_flowchart(action:"batch_add", chartId:目标子图,
|
|
103
|
+
nodes:[{id:"n_xxx", label:"xxx", nodeType:"process", domain:"...", description:"..."}],
|
|
104
|
+
edges:[{from:"n_xxx", to:"n_依赖", edgeType:"call"}])
|
|
105
|
+
|
|
106
|
+
3. 绑定源码:
|
|
107
|
+
kg_flowchart(action:"bind", nodeId:"n_xxx", files:["src/..."])
|
|
108
|
+
|
|
109
|
+
4. 创建文档 (遵循5分类):
|
|
110
|
+
kg_doc(action:"create",
|
|
111
|
+
path:"/模块/前端/xxx",
|
|
112
|
+
summary:"一句话职责",
|
|
113
|
+
content:"## 职责\n...\n## 公开API\n...\n## 文件路径\n...",
|
|
114
|
+
bindTo:"n_xxx")
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**3.2 处理 [MOD] — 更新节点**
|
|
118
|
+
```
|
|
119
|
+
1. 读取现有节点:
|
|
120
|
+
kg_flowchart(action:"get_node", nodeId:"n_xxx", includeDoc:true)
|
|
121
|
+
|
|
122
|
+
2. 对比差异, 更新变动部分:
|
|
123
|
+
kg_flowchart(action:"update_node", nodeId:"n_xxx",
|
|
124
|
+
description:"新的一句话描述",
|
|
125
|
+
docContent:"更新后的文档内容",
|
|
126
|
+
docSummary:"更新后的摘要")
|
|
127
|
+
|
|
128
|
+
3. 追加版本记录:
|
|
129
|
+
kg_doc(action:"update", path:"/模块/.../xxx",
|
|
130
|
+
versions:[{version:当前+0.1, date:"ISO日期", changes:"变更摘要"}])
|
|
131
|
+
|
|
132
|
+
4. 检查连线是否需要更新:
|
|
133
|
+
code_context(filePath) → 新的import列表
|
|
134
|
+
对比图谱中现有连线 → 增删连线
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**3.3 处理 [DEL] — 废弃/删除**
|
|
138
|
+
```
|
|
139
|
+
选项A - 标记废弃 (推荐):
|
|
140
|
+
kg_flowchart(action:"update_node", nodeId:"n_xxx", description:"[DEPRECATED] 原描述")
|
|
141
|
+
kg_flowchart(action:"unbind", nodeId:"n_xxx", files:["已删文件"])
|
|
142
|
+
|
|
143
|
+
选项B - 彻底删除:
|
|
144
|
+
kg_flowchart(action:"delete_node", nodeId:"n_xxx")
|
|
145
|
+
kg_doc(action:"delete", path:"/模块/.../xxx")
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**3.4 处理 [DRIFT] — 路径漂移**
|
|
149
|
+
```
|
|
150
|
+
kg_flowchart(action:"unbind", nodeId:"n_xxx", files:["旧路径"])
|
|
151
|
+
kg_flowchart(action:"bind", nodeId:"n_xxx", files:["新路径"])
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**进度记录** (每处理5个文件):
|
|
155
|
+
```
|
|
156
|
+
kg_task(action:"update", taskId:"当前任务", log_type:"progress",
|
|
157
|
+
content:"已处理 N/M | NEW:a MOD:b DEL:c")
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Phase 4: 层级验证
|
|
161
|
+
|
|
162
|
+
**4.1 子图内部验证**
|
|
163
|
+
```
|
|
164
|
+
对每个受影响的子图:
|
|
165
|
+
kg_flowchart(action:"orphans", chartId:"sub_xxx") → 该子图内孤立节点
|
|
166
|
+
kg_flowchart(action:"get", chartId:"sub_xxx") → 检查连线完整性
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**4.2 跨层验证**
|
|
170
|
+
```
|
|
171
|
+
如果变更影响了跨子图的连线:
|
|
172
|
+
kg_flowchart(action:"get_node", nodeId:父节点, expand:2)
|
|
173
|
+
→ 验证父子图之间的连线是否仍然正确
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**4.3 全局健康检查**
|
|
177
|
+
```
|
|
178
|
+
kg_flowchart(action:"orphans") → 全局孤立节点 (应为0)
|
|
179
|
+
kg_flowchart(action:"health") → 冷热分布
|
|
180
|
+
kg_tree() → 文档覆盖确认
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Phase 5: 交付报告
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
| 维度 | 数量 | 状态 |
|
|
187
|
+
|:---|:---|:---|
|
|
188
|
+
| 新增节点 | N | ✅ |
|
|
189
|
+
| 更新节点 | M | ✅ |
|
|
190
|
+
| 废弃/删除 | K | ⚠️/✅ |
|
|
191
|
+
| 路径修复 | P | ✅ |
|
|
192
|
+
| 新增文档 | D | ✅ |
|
|
193
|
+
| 更新文档 | U | ✅ |
|
|
194
|
+
| 新增连线 | E | ✅ |
|
|
195
|
+
| 孤立节点 | 0 | 🟢 |
|
|
196
|
+
| 受影响子图 | S 张 | 🟢 |
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
如有任务:
|
|
200
|
+
```
|
|
201
|
+
kg_task(action:"archive", taskId:"当前任务",
|
|
202
|
+
summary:"同步完成...",
|
|
203
|
+
difficulties:["遇到的问题"],
|
|
204
|
+
solutions:["解决方案"])
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 目录→子图映射规则
|
|
210
|
+
|
|
211
|
+
| 源码目录 | 子图 | 父节点 |
|
|
212
|
+
|:---|:---|:---|
|
|
213
|
+
| src-tauri/src/storage/ | sub_storage | n_storage |
|
|
214
|
+
| src-tauri/src/models/ | sub_kg (内) | n_kg |
|
|
215
|
+
| src-tauri/src/server/ | sub_entry | n_entry |
|
|
216
|
+
| src-tauri/src/commands/ | sub_entry (内) | n_entry |
|
|
217
|
+
| mcp-server/src/tools/ | sub_mcp | n_mcp |
|
|
218
|
+
| src/components/ | sub_frontend | n_frontend |
|
|
219
|
+
| src/hooks/ | sub_frontend (内) | n_frontend |
|
|
220
|
+
|
|
221
|
+
## 异常处理
|
|
222
|
+
|
|
223
|
+
| 场景 | 处理 |
|
|
224
|
+
|:---|:---|
|
|
225
|
+
| git 有未提交变更 | 警告 + 展示 diff, 询问是否继续 |
|
|
226
|
+
| 节点绑定的文件不存在 | 标记 [DRIFT], 搜索新位置, 建议 rebind |
|
|
227
|
+
| 同一符号映射多个节点 | 暂停, 列出候选, 请求用户选择 |
|
|
228
|
+
| code_scan 索引过旧 | 自动 code_scan() 增量更新后重试 |
|
|
229
|
+
| 子图嵌套变更 (新文件导出≥5) | 建议 create_chart 升级为子图 |
|