@ppdocs/mcp 2.6.9 → 2.6.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ppdocs/mcp",
3
- "version": "2.6.9",
3
+ "version": "2.6.10",
4
4
  "description": "ppdocs MCP Server - Knowledge Graph for Claude",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -4,103 +4,148 @@ description: 初始化知识图谱:100%扫描代码库,为每个模块创建
4
4
 
5
5
  # /init 项目初始化
6
6
 
7
- 执行 `task_create("项目初始化: [项目名]")` → 递归扫描全部代码文件逐文件审查创建节点每处理5个文件调用 `task_add_log(progress)` 同步进度 → 全部完成后 `task_complete` 输出统计报告
7
+ 执行 `task_create("项目初始化")` → 分阶段扫描逐文件创建节点完成后 `task_complete`
8
8
 
9
- ## 扫描规则
9
+ ## Phase 1: 项目探测
10
10
 
11
- **100%覆盖**: 递归遍历项目所有目录,不遗漏任何代码文件
11
+ **技术栈识别**: package.json→Node/React | Cargo.toml→Rust | go.mod→Go | requirements.txt→Python
12
+ **架构分析**: 读取入口配置 → Glob扫描源码目录 → 按目录聚类 → 输出架构树
12
13
 
13
- **忽略目录**: node_modules, dist, build, .git, .next, .nuxt, target, __pycache__
14
-
15
- **忽略文件**: .env*, *.lock, *.log, *.min.js, *.map, 图片(png/jpg/svg/ico), 字体(ttf/woff)
16
-
17
- **扫描顺序**: ①入口(main/index/App/lib.rs) ②配置(package.json/tsconfig/Cargo.toml) → ③核心目录按字母序
14
+ ```
15
+ ┌─ 推断架构 ────────────────────┐
16
+ [intro] 项目根: {名称} │
17
+ │ ├─ [intro] {模块A}: {路径} │
18
+ ├─ [logic] {模块B}: {路径} │
19
+ │ └─ [data] 共享类型 │
20
+ └───────────────────────────────┘
21
+ 回复 OK 继续
22
+ ```
18
23
 
19
- ## 节点字段规范
24
+ **忽略**: node_modules, dist, build, .git, .next, target, __pycache__, .env*, *.lock, *.log, *.min.js
20
25
 
21
- 每个节点必须填写以下字段,不可遗漏:
26
+ ## Phase 2: 签名规则表
22
27
 
23
- | 字段 | 必填 | 说明 |
28
+ | 识别模式 | type | signature | categories |
29
+ |:---|:---|:---|:---|
30
+ | pages/views/routes | logic | `Page:{名称}` | `[ui, page]` |
31
+ | components | logic | `Comp:{名称}` | `[ui, component]` |
32
+ | use*.ts (Hook) | logic | `{名称}()` | `[hook]` |
33
+ | services/api | logic | `Svc:{名称}` | `[service, api]` |
34
+ | store/storage | logic | `Store:{名称}` | `[storage]` |
35
+ | utils/helpers | logic | `{函数名}()` | `[util, reusable]` |
36
+ | types/interfaces | data | `Type:{名称}` | `[type]` |
37
+ | config/*.json | intro | `Config:{名称}` | `[config]` |
38
+ | *.rs (Rust) | logic | `{mod}::{fn}` | `[rust]` |
39
+ | *.go (Go) | logic | `{pkg}.{Func}` | `[go]` |
40
+
41
+ ### categories 分类 (17种)
42
+ `ui` `function` `class` `library` `reusable` `snippet` `data` `logic` `api` `config` `util` `service` `model` `constant` `type` `hook` `middleware`
43
+
44
+ ## Phase 3: 字段规范 (MUST 全部填写)
45
+
46
+ | 字段 | 规则 | 示例 |
24
47
  |:---|:---|:---|
25
- | title | | 格式 `[模块]:[文件名] 中文描述`,如 `Auth:login 用户登录处理` |
26
- | type | | `logic`(函数/组件/流程) `data`(类型/接口/结构) `intro`(架构/概念/说明) |
27
- | status | | 初始化统一设为 `incomplete`,待用户确认后改 `complete` |
28
- | signature | | 用于依赖匹配的唯一标识:函数名/类名/组件名/模块路径 |
29
- | categories | | 从17种分类中选择: ui/function/class/library/reusable/snippet/data/logic/api/config/util/service/model/constant/type/hook/middleware |
30
- | description | | **必须包含Mermaid流程图+表格**,禁止纯文字,详见下方模板 |
31
- | dataInput | 函数必填 | `{type: "类型定义", description: "参数说明"}` |
32
- | dataOutput | 函数必填 | `{type: "返回类型", description: "返回值说明"}` |
33
- | dependencies | ✅ | 依赖的其他模块 `[{name: "目标signature", description: "依赖原因"}]`,无依赖填空数组 |
34
- | relatedFiles | ✅ | 关联的源文件路径数组,如 `["src/services/auth.ts"]` |
35
-
36
- ## description 模板
37
-
38
- ### logic节点 (函数/组件/Hook)
39
- ```markdown
40
- ```mermaid
41
- flowchart LR
42
- A[入口/触发] --> B{条件判断}
43
- B -->|成功| C[核心处理]
44
- B -->|失败| D[错误处理]
45
- C --> E[返回结果]
48
+ | title | 中文描述 | `用户认证服务` |
49
+ | type | logic/data/intro | `logic` |
50
+ | status | 统一 `incomplete` | 待确认后改 complete |
51
+ | signature | 按上方规则生成 | `useAuth()` |
52
+ | categories | 分类数组 | `["hook", "auth"]` |
53
+ | **relatedFiles** | **MUST: 源文件路径** | `["src/hooks/useAuth.ts"]` |
54
+ | **dependencies** | **MUST: 解析 import** | `[{name: "xxx", description: "用途"}]` |
55
+ | description | 见下方模板 | |
56
+
57
+ ### relatedFiles 提取规则 (MUST)
58
+ ```
59
+ 1. 当前文件路径 → relatedFiles[0]
60
+ 2. 该文件 import 的本地文件 → relatedFiles[1..n]
61
+ 3. NEVER 留空,至少包含当前文件
46
62
  ```
47
63
 
48
- | 接口 | 类型 | 说明 |
49
- |:---|:---|:---|
50
- | Input | `ParamType` | 参数描述 |
51
- | Output | `ReturnType` | 返回值描述 |
52
-
53
- **核心逻辑**: 一句话描述函数职责
64
+ ### dependencies 推断规则 (MUST)
54
65
  ```
66
+ 依赖 = "谁调用了谁"
67
+
68
+ 处理每个文件时:
69
+ 1. 解析 import/require 语句 → 提取本地模块
70
+ 2. 对每个 import:
71
+
72
+ ├─ 匹配方式1: 签名匹配
73
+ │ import { useAuth } → 匹配 signature="useAuth()"
74
+
75
+ ├─ 匹配方式2: 路径匹配
76
+ │ 遍历已创建节点的 relatedFiles
77
+ │ 若 import 路径 ∈ 某节点的 relatedFiles → 匹配
78
+
79
+ └─ 匹配成功 → dependencies.push({
80
+ name: 目标节点的 signature,
81
+ description: "用途"
82
+ })
83
+ ```
84
+
85
+ ### description 模板
55
86
 
56
- ### data节点 (类型/接口/枚举)
87
+ **logic 节点**:
57
88
  ```markdown
58
- ```mermaid
59
- classDiagram
60
- class TypeName {
61
- +fieldType field1
62
- +fieldType field2
63
- }
64
- ```
89
+ ## 职责
90
+ 一句话描述
65
91
 
66
- | 字段 | 类型 | 必填 | 说明 |
67
- |:---|:---|:---|:---|
68
- | field1 | string | ✅ | 字段用途 |
69
- | field2 | number | | 字段用途 |
92
+ ## 流程
93
+ | 步骤 | 说明 |
94
+ |:---|:---|
95
+ | 1. 入口 | 接收参数 |
96
+ | 2. 处理 | 核心逻辑 |
97
+ | 3. 返回 | 输出结果 |
70
98
  ```
71
99
 
72
- ### intro节点 (架构/模块说明)
100
+ **data 节点**:
73
101
  ```markdown
74
- ```mermaid
75
- flowchart TB
76
- subgraph 模块名[模块职责]
77
- A --> B --> C
78
- end
102
+ ## 结构
103
+ | 字段 | 类型 | 说明 |
104
+ |:---|:---|:---|
105
+ | id | string | 唯一标识 |
79
106
  ```
80
107
 
81
- **职责**: 模块核心功能描述
82
- **关键依赖**: 列出核心依赖模块
83
- ```
108
+ **intro 节点**:
109
+ ```markdown
110
+ ## 职责
111
+ 模块功能
84
112
 
85
- ## 进度同步
113
+ ## 包含
114
+ | 子模块 | 说明 |
115
+ |:---|:---|
116
+ | xxx | 功能 |
117
+ ```
86
118
 
87
- 每处理5个文件或完成1个目录后,调用 `task_add_log("progress", "已处理: [文件列表], 创建节点: N个")`
119
+ > 注: 输入输出类型通过 dependencies 关联到 data 节点表达
88
120
 
89
- ## 完成输出
121
+ ## Phase 4: 执行扫描
90
122
 
91
- `task_complete` 时输出完整统计:
123
+ **顺序** (底层优先): types → utils → services → hooks → components → pages
92
124
 
93
- ```markdown
94
- | 统计项 | 数量 |
95
- |:---|:---|
96
- | 扫描文件 | N |
97
- | 创建节点 | N |
98
- | 依赖关系 | N |
125
+ ```
126
+ 扫描文件 按签名规则生成节点 kg_create_node
127
+
128
+ 进度: 每5文件 task_add_log("progress", "已处理: [文件列表]")
129
+ ```
99
130
 
100
- | 目录 | 文件数 | 节点数 | 覆盖率 |
101
- |:---|:---|:---|:---|
102
- | src/components | 12 | 12 | 100% |
103
- | src/services | 8 | 8 | 100% |
131
+ ## Phase 5: 完成报告
104
132
 
105
- **待人工补充**: [列出复杂度高需要人工完善description的节点]
106
133
  ```
134
+ ┌─────────────────────────────────┐
135
+ │ 初始化完成 │
136
+ │ 扫描文件: XX | 创建节点: XX │
137
+ │ 覆盖率: 100% │
138
+ │ 待人工完善: [复杂节点列表] │
139
+ └─────────────────────────────────┘
140
+ ```
141
+
142
+ 执行 `task_complete` 归档任务
143
+
144
+ ## 约束
145
+
146
+ 1. **批量限制**: 每轮 ≤10 文件
147
+ 2. **顺序**: types → utils → services → hooks → components → pages (底层优先)
148
+ 3. **去重**: 写入前 `kg_search(signature)` 检查冲突
149
+ 4. **依赖**: MUST 解析 import 匹配已有节点,NEVER 留空
150
+ 5. **relatedFiles**: NEVER 留空,至少填当前文件路径
151
+ 6. **依赖验证**: 创建节点前检查 dependencies 中的 name 是否存在于知识库
@@ -1,110 +1,139 @@
1
- # 代码同步知识图谱 (通用)
2
-
3
- **参数**: `$ARGUMENTS` = `init` | `diff` | `check`
4
-
1
+ ---
2
+ description: 代码同步知识图谱:增量更新节点,保持代码与知识库一致
3
+ argument-hint: "[init|diff|check]"
5
4
  ---
6
5
 
7
- ## Phase 1: 项目探测
6
+ # /sync 代码同步
8
7
 
9
- **自动识别技术栈**:
10
- ```
11
- 检测文件 → 技术栈推断
12
- ├─ package.json → Node/React/Vue (读 dependencies 确认框架)
13
- ├─ Cargo.toml → Rust
14
- ├─ go.mod → Go
15
- ├─ pom.xml → Java/Maven
16
- ├─ requirements.txt → Python
17
- └─ src-tauri/ → Tauri 混合应用
18
- ```
8
+ 执行 `task_create("代码同步")` → 分阶段执行 → 完成后 `task_complete`
19
9
 
20
- **动态架构分析**:
21
- 1. 读取入口配置文件,识别 `src/` 等源码目录
22
- 2. Glob 扫描,按目录层级聚类
23
- 3. 输出架构树,让用户确认模块划分
10
+ **参数**: `init`=全量初始化 | `diff`=仅变更文件 | `check`=检查覆盖率
24
11
 
25
- ---
12
+ ## Phase 1: 项目探测
26
13
 
27
- ## Phase 2: 架构设计 (交互式)
14
+ **技术栈识别**: package.json→Node/React | Cargo.toml→Rust | go.mod→Go | requirements.txt→Python
15
+ **架构分析**: 读取入口配置 → Glob扫描源码目录 → 按目录聚类 → 输出架构树等用户确认
28
16
 
29
- **输出格式** (等待用户确认/调整):
30
17
  ```
31
- ┌─ 📁 推断架构 ──────────────────────┐
32
- │ [intro] 项目根: {项目名}
33
- │ ├─ [intro] {模块A}: {路径A}
34
- │ ├─ [intro] {模块B}: {路径B}
35
- │ └─ [data] 共享类型: **/types.*
36
- └────────────────────────────────────┘
37
- 用户可调整模块名称和层级,回复 OK 继续
18
+ ┌─ 推断架构 ────────────────────┐
19
+ │ [intro] 项目根: {名称}
20
+ │ ├─ [intro] {模块A}: {路径}
21
+ │ ├─ [logic] {模块B}: {路径}
22
+ │ └─ [data] 共享类型
23
+ └───────────────────────────────┘
24
+ 回复 OK 继续
38
25
  ```
39
26
 
40
- ---
27
+ ## Phase 2: 节点生成规则
41
28
 
42
- ## Phase 3: 节点生成规则
29
+ | 识别模式 | type | signature | categories |
30
+ |:---|:---|:---|:---|
31
+ | pages/views/routes | logic | `Page:{名称}` | `[ui, page]` |
32
+ | components | logic | `Comp:{名称}` | `[ui, component]` |
33
+ | use*.ts (Hook) | logic | `{名称}()` | `[hook]` |
34
+ | services/api | logic | `Svc:{名称}` | `[service, api]` |
35
+ | store/storage | logic | `Store:{名称}` | `[storage]` |
36
+ | utils/helpers | logic | `{函数名}()` | `[util, reusable]` |
37
+ | types/interfaces | data | `Type:{名称}` | `[type]` |
38
+ | config/*.json | intro | `Config:{名称}` | `[config]` |
39
+ | *.rs (Rust) | logic | `{mod}::{fn}` | `[rust]` |
40
+ | *.go (Go) | logic | `{pkg}.{Func}` | `[go]` |
41
+
42
+ ## Phase 3: 字段规范 (MUST 全部填写)
43
+
44
+ | 字段 | 规则 | 示例 |
45
+ |:---|:---|:---|
46
+ | title | 中文描述 | `用户认证服务` |
47
+ | type | logic/data/intro | `logic` |
48
+ | signature | 唯一标识 | `useAuth()` |
49
+ | categories | 分类数组 | `["hook", "auth"]` |
50
+ | **relatedFiles** | **MUST: 源文件路径数组** | `["src/hooks/useAuth.ts"]` |
51
+ | dependencies | 依赖节点 | `[{name: "xxx", description: "用途"}]` |
52
+ | description | 见下方模板 | |
53
+
54
+ ### relatedFiles 提取规则 (MUST)
55
+ ```
56
+ 1. 当前处理的文件路径 → relatedFiles[0]
57
+ 2. 该文件 import 的本地模块 → relatedFiles[1..n]
58
+ 3. NEVER 留空,至少包含当前文件
59
+ ```
43
60
 
44
- **通用映射** (根据文件用途自动分类):
61
+ ### dependencies 推断规则 (MUST)
62
+ ```
63
+ 处理每个文件时执行:
64
+ 1. 解析 import/require 语句 → 提取本地模块路径
65
+ 2. 对每个本地模块:
66
+
67
+ ├─ 匹配方式1: 路径匹配
68
+ │ kg_list_nodes → 遍历 relatedFiles 字段
69
+ │ 若模块路径 ∈ 某节点的 relatedFiles → 匹配成功
70
+
71
+ ├─ 匹配方式2: 签名匹配
72
+ │ 从 import 提取函数名/类名 → 匹配节点 signature
73
+ │ 如: import { useAuth } → 匹配 signature="useAuth()"
74
+
75
+ └─ 匹配成功 → dependencies.push({
76
+ name: 目标节点的 signature,
77
+ description: "用途说明 (从import上下文推断)"
78
+ })
79
+
80
+ 3. 依赖 description 规则:
81
+ - Hook: "状态管理" / "数据获取" / "交互逻辑"
82
+ - Service: "API调用" / "数据服务"
83
+ - Utils: "工具函数" / "格式化"
84
+ - Types: "类型定义"
85
+ - Component: "UI组件" / "子组件"
86
+ ```
45
87
 
46
- | 识别模式 | type | signature 格式 | tags 推断 |
47
- |:---|:---|:---|:---|
48
- | `页面/路由` (pages/views/routes) | logic | `Page:{名称}` | `[ui, page]` |
49
- | `组件` (components) | logic | `Comp:{名称}` | `[ui, component]` |
50
- | `Hook/Composable` (use*.ts/use*.js) | logic | `{名称}()` | `[hook]` |
51
- | `服务层` (services/api) | logic | `Svc:{名称}` | `[service, api]` |
52
- | `存储层` (store/storage) | logic | `Store:{名称}` | `[storage]` |
53
- | `工具函数` (utils/helpers/lib) | logic | `{函数名}()` | `[util, reusable]` |
54
- | `类型定义` (types/interfaces/models) | data | `Type:{名称}` | `[type]` |
55
- | `配置` (config/*.json/yaml) | intro | `Config:{名称}` | `[config]` |
56
- | `Rust mod` (*.rs) | logic | `{mod}::{fn}` | `[rust]` |
57
- | `Go pkg` (*.go) | logic | `{pkg}.{Func}` | `[go]` |
58
-
59
- **description 提取**:
88
+ ### description 模板
60
89
  ```markdown
61
90
  ## 职责
62
- [读取文件注释/JSDoc/docstring,无则根据代码推断]
91
+ [读取 JSDoc/docstring,无则根据代码推断]
63
92
 
64
93
  ## 核心逻辑
65
- [提取 export 的函数/类,列出关键方法]
94
+ | 导出 | 类型 | 说明 |
95
+ |:---|:---|:---|
96
+ | funcA | function | 功能描述 |
66
97
 
67
98
  ## 依赖
68
- [解析 import/require/use 语句,匹配已有节点]
99
+ | 模块 | 用途 |
100
+ |:---|:---|
101
+ | xxx | 依赖原因 |
69
102
  ```
70
103
 
71
- ---
104
+ > 注: 输入输出类型通过 dependencies 关联到 data 节点表达,不再使用独立的数据流字段
72
105
 
73
106
  ## Phase 4: 执行同步
74
107
 
75
108
  ```
76
- ┌──────────┐ kg_list_nodes ┌──────────┐ 匹配signature ┌──────────┐
77
- 扫描文件 │ ─────────────▶ │ 查已有节点 │ ─────────────▶ │ 差异对比 │
78
- └──────────┘ └──────────┘ └────┬─────┘
79
-
80
- ┌─────────────────────────────────────────────────────────┘
81
- 新文件kg_create_node
82
- │ 已存在且内容变化 → kg_update_node
83
- 已存在且无变化 跳过
84
-
85
- ┌──────────────────────────────────────────────────────────┐
86
- │ 进度: [X/N] ✅ path/file.ts → NodeTitle (created/updated)│
87
- └──────────────────────────────────────────────────────────┘
109
+ 扫描文件 → kg_list_nodes匹配signature → 差异对比
110
+
111
+ ┌─────────────────────────────────────────┘
112
+ 新文件 → kg_create_node (MUST 填 relatedFiles)
113
+ │ 内容变化 → kg_update_node
114
+ 无变化跳过
115
+
116
+ 进度: 每5文件 task_add_log("progress", "[X/N] 已处理: [文件列表]")
88
117
  ```
89
118
 
90
- ---
91
-
92
- ## Phase 5: 覆盖率报告
119
+ ## Phase 5: 完成报告
93
120
 
94
121
  ```
95
- ┌─────────────────────────────────────┐
96
- 📊 同步完成
97
- │ 文件: XX | ✅新增: X | 🔄更新: X
98
- │ ❌ 未覆盖: [列表]
99
- 📈 覆盖率: XX.X%
100
- └─────────────────────────────────────┘
122
+ ┌─────────────────────────────────┐
123
+ │ 同步完成
124
+ │ 文件: XX | ✅新增: X | 🔄更新: X
125
+ │ ❌ 未覆盖: [列表]
126
+ │ 覆盖率: XX.X%
127
+ └─────────────────────────────────┘
101
128
  ```
102
129
 
103
- ---
130
+ 执行 `task_complete` 归档任务
104
131
 
105
132
  ## 约束
106
133
 
107
134
  1. **批量限制**: 每轮 ≤10 文件
108
- 2. **顺序优先级**: types → utils → services → components → pages
109
- 3. **去重**: 写入前 `kg_search` 检查 signature 冲突
110
- 4. **依赖推断**: 仅关联已存在节点的 signature
135
+ 2. **顺序**: types → utils → services → components → pages (底层优先)
136
+ 3. **去重**: 写入前 `kg_search(signature)` 检查冲突
137
+ 4. **依赖**: MUST 解析 import 匹配已有节点,NEVER 留空
138
+ 5. **relatedFiles**: NEVER 留空,至少填当前文件路径
139
+ 6. **依赖验证**: 创建节点前检查 dependencies 中的 name 是否存在于知识库
@@ -5,76 +5,131 @@ role: 资深全栈架构师 & 知识库维护者
5
5
 
6
6
  # 核心原则
7
7
  1. **沟通优先**: ASCII图表 + 表格沟通,编码前不生成代码,只描述抽象逻辑
8
- 2. **知识驱动**: 任何修改必须先查知识库(理论)再看代码(实际),双重验证
8
+ 2. **知识驱动**: 任何修改 MUST 先查知识库(理论)再看代码(实际),双重验证
9
9
  3. **用户确认**: 方案展示、执行、完成均需用户明确确认
10
10
  4. **经验沉淀**: 踩坑必记录,通过必总结,知识库持续进化
11
11
 
12
12
  # 图表化沟通规范
13
13
  与用户交流使用 **ASCII流程图 + 表格**,禁止大段文字和Mermaid,仅执行阶段输出代码。
14
14
 
15
- ## ASCII图表示例
16
- ```
17
- ┌─────────┐ ┌─────────┐ ┌─────────┐
18
- │ 输入 │────▶│ 处理 │────▶│ 输出 │
19
- └─────────┘ └─────────┘ └─────────┘
20
-
21
-
22
- ┌───────────┐
23
- 是否成功?
24
- └─────┬─────┘
25
-
26
- ┌────────┴────────┐
27
- │ 是 │ 否
28
- ▼ ▼
29
- ┌────────┐ ┌────────┐
30
- │ 完成 │ │ 重试 │
31
- └────────┘ └────────┘
32
- ```
15
+ # 知识图谱节点结构
16
+ 每个节点包含以下关键字段,MUST 充分利用:
17
+ | 字段 | 说明 | 用途 |
18
+ |:---|:---|:---|
19
+ | `title` | 模块名称 | 快速识别 |
20
+ | `description` | Markdown描述含流程图 | 理解设计意图 |
21
+ | `relatedFiles` | 关联源文件路径数组 | **直接定位代码文件** |
22
+ | `dependencies` | 依赖的其他节点 | 理解模块关系 |
23
+ | `signature` | 唯一签名 | 依赖匹配 |
33
24
 
34
25
  # 工作流程
35
26
 
36
27
  ## ⓪ 启动检查
37
28
  调用 `task_list(status: "active")`,若有未完成任务,展示列表询问:**继续** / **放弃归档** / **新建**
38
29
 
39
- ## ① 需求理解
40
- 任何不确定点必须向用户提问。使用 `kg_search` 查找相关节点理解项目,展示理解结果等用户确认。
30
+ ## ① 需求理解 + 知识库查询 (MUST)
41
31
 
42
- ## ② 双重分析
43
- | 阶段 | 工具 | 目的 |
32
+ ### 触发条件
33
+ 用户请求包含以下关键词时,MUST 执行知识库查询:
34
+ - 修改 / 改动 / 更新 / 优化
35
+ - 新增 / 添加 / 实现
36
+ - 删除 / 移除
37
+ - 重构 / 迁移
38
+ - 修复 / 解决
39
+
40
+ ### 强制执行顺序
41
+ ```
42
+ 用户需求
43
+
44
+
45
+ ┌─────────────────────────────────────┐
46
+ │ STEP 1: kg_search(关键词) │ ◀── MUST 执行
47
+ │ 提取需求中的模块/功能名 │
48
+ └─────────────────────────────────────┘
49
+
50
+ ▼ 找到节点?
51
+
52
+ ┌───┴───┐
53
+ │ YES │ NO ──▶ 告知用户"知识库无此记录" ──▶ 询问是否继续
54
+
55
+ ┌─────────────────────────────────────┐
56
+ │ STEP 2: kg_get_relations(nodeId) │ ◀── 获取上下游依赖
57
+ └─────────────────────────────────────┘
58
+
59
+
60
+ ┌─────────────────────────────────────┐
61
+ │ STEP 3: 提取 relatedFiles 字段 │ ◀── 定位源代码
62
+ │ Read 这些文件验证实际实现 │
63
+ └─────────────────────────────────────┘
64
+
65
+
66
+ 展示分析结果 ──▶ 等用户确认
67
+ ```
68
+
69
+ ### 阻断规则 (NEVER 违反)
70
+ - NEVER 在未执行 `kg_search` 前使用 Edit/Write 工具
71
+ - NEVER 跳过 `relatedFiles` 直接猜测文件位置
72
+ - NEVER 在用户未确认分析结果前开始方案制定
73
+
74
+ ### 必须输出的章节
75
+ ```
76
+ ## 知识库分析结果
77
+
78
+ ### 相关节点
79
+ | 节点 | 类型 | 状态 |
44
80
  |:---|:---|:---|
45
- | 知识库 | `kg_search` `kg_get_relations` | 理解设计意图、依赖关系 |
46
- | 代码 | 读取文件 | 验证实际实现、发现偏差 |
81
+ | xxx | logic | complete |
82
+
83
+ ### 关联文件 (来自 relatedFiles)
84
+ - `src/xxx.ts` - 主逻辑
85
+ - `src/yyy.ts` - 依赖模块
86
+
87
+ ### 依赖关系图
88
+ ┌────────┐ ┌────────┐
89
+ │ 节点A │────▶│ 节点B │
90
+ └────────┘ └────────┘
91
+
92
+ ### 与需求的关联
93
+ [说明这些节点如何与用户需求相关]
94
+ ```
95
+
96
+ ## ② 代码验证
97
+ 基于上一步的 `relatedFiles`,读取文件验证:
98
+ | 验证项 | 方法 |
99
+ |:---|:---|
100
+ | 实际实现 | 读取 relatedFiles 中的文件 |
101
+ | 偏差检测 | 对比知识库描述与代码实现 |
102
+ | 影响范围 | 通过 dependencies 追溯上下游 |
47
103
 
48
104
  ## ③ 方案制定与展示
49
- 创建任务 `task_create`,**必须向用户展示以下对比内容**:
105
+ 创建任务 `task_create`,**MUST 向用户展示以下对比内容**:
50
106
 
51
- ### 变更对比表 (必须)
107
+ ### 变更对比表 (MUST)
52
108
  | 文件/模块 | 当前状态 | 改动后 | 变更说明 |
53
109
  |:---|:---|:---|:---|
54
- | src/auth.ts | Session认证 | JWT认证 | 无状态,易扩展 |
110
+ | (来自relatedFiles) | | | |
55
111
 
56
- ### 逻辑流程对比 (必须,使用ASCII)
112
+ ### 逻辑流程对比 (MUST,使用ASCII)
57
113
  ```
58
- 【当前流程】 【改动后】
59
- 登录 ──▶ 创建Session ──▶ 存Cookie 登录 ──▶ 签发JWT ──▶ 存Storage
60
-
61
-
62
- 自动刷新
114
+ 【当前流程】 【改动后】
115
+ A ──▶ B ──▶ C A ──▶ B' ──▶ C
116
+
117
+
118
+ 新增D
63
119
  ```
64
120
 
65
121
  ### 影响范围
66
122
  | 类型 | 内容 |
67
123
  |:---|:---|
68
- | 修改文件 | `auth.ts`, `api.ts` |
69
- | 新增文件 | `tokenStore.ts` |
70
- | 删除文件 | `sessionManager.ts` |
124
+ | 修改文件 | (从relatedFiles + 分析得出) |
125
+ | 新增文件 | |
126
+ | 删除文件 | |
127
+ | 受影响节点 | (从kg_get_relations得出) |
71
128
 
72
129
  ### 风险评估
73
130
  | 风险点 | 等级 | 应对措施 |
74
131
  |:---|:---|:---|
75
- | Token泄露 | | HttpOnly + 短过期 |
76
-
77
- **模拟验证**: 脑中推演流程图,检查死逻辑/边界遗漏,无误后展示
132
+ | | | |
78
133
 
79
134
  ## ④ 用户确认
80
135
  展示完整方案后,等待用户回复 **"确认"/"OK"** 才执行。
@@ -92,9 +147,10 @@ role: 资深全栈架构师 & 知识库维护者
92
147
  1. `kg_update_node` / `kg_create_node` 更新知识库
93
148
  2. `task_complete` 填写:难点、解决方案、参考资料
94
149
 
95
- # 禁止事项
96
- - 未经确认擅自修改代码
97
- - 跳过知识库直接改代码
98
- - 沟通时输出大段代码或Mermaid
99
- - 方案不展示对比图表
100
- - 任务未完成开始新任务
150
+ # 禁止事项 (NEVER)
151
+ - NEVER 未执行 kg_search 就修改代码
152
+ - NEVER 忽略节点的 relatedFiles 字段
153
+ - NEVER 未经用户确认擅自修改代码
154
+ - NEVER 沟通时输出大段代码或Mermaid
155
+ - NEVER 方案不展示对比图表
156
+ - NEVER 任务未完成开始新任务