@hupan56/wlkj 3.4.6 → 3.4.8

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.
@@ -1,212 +1,218 @@
1
- ---
2
- name: wl-search
3
- description: "查代码/业务/API/字段/PRD + 知识图谱(影响分析/覆盖矩阵/功能画像/业务流程/多跳遍历)的唯一入口。"
4
- trigger: "用户显式打 /wl-search; 代码/业务/API搜索专用"
5
- ---
6
-
7
-
8
- # wl-search — 代码 / 知识图谱搜索
9
-
10
- ## 执行方式(宿主无关,自动路由)
11
-
12
- ```python
13
- from capability import resolve
14
- cap = resolve()
15
- result = cap.mcp.call("search_code", {"keyword": "保险", "platform": "web"})
16
- ```
17
-
18
- 自动路由:有 MCP 走 MCP(快),无 MCP 走 wlkj.py(CLI 降级)。零宿主感知。
19
-
20
- > ⚠️ 这是查代码、业务、知识图谱的**唯一入口**。禁止直接 grep `data/code/` 全库。
21
-
22
- > 🚫 **绝对禁止**用 `findstr /s` / `grep -r` / `os.walk` / `subprocess` 全盘递归扫
23
- > data/code(8973+ 文件)——Windows 下会**卡死 + 疯狂弹 cmd 子进程窗口**。中文文案/报错
24
- > 溯源(如"车辆不存在")只能用 `grep-text`(单进程、范围限定、不弹窗)。
25
-
26
- ## ⚙️ 自取上下文
27
-
28
- - `data/index/.index-meta.json` — 图谱新鲜度;若 >7 天或不存在,提示用户
29
- "知识图谱可能过期,建议先说'初始化'(/wl-init)刷新",但不要阻塞本次搜索
30
- - 平台意图:用户提到"Web/PC/管理端"→ `platform: "web"`;
31
- "APP/H5/移动端"→ `platform: "app"`;不明确就不加
32
-
33
- ## ⚡⚡ 第一步永远是 context(强制 — 反碎片化命门)
34
-
35
- **实测:旧版 AI 在十几个子命令间试错,单次搜索连调 5 次、6 轮迭代。
36
- 本规则把这压成 1 次调用、1-2 轮。**
37
-
38
- ```python
39
- cap.mcp.call("context_pack", {"keyword": "<业务词>", "role": "<pm|dev|design|test>"})
40
- ```
41
-
42
- **除非用户明确要"影响分析/覆盖矩阵/多跳遍历"等图谱高级能力(见下方后备表),
43
- 否则第一步且唯一一步就是 `context_pack`。** 它一次返回:代码文件 + 字段 + API + PRD + Repo Wiki。
44
- 拿到后直接 Read 2-3 个核心文件回答,**绝大多数情况禁止再跑第二个子命令。**
45
-
46
- 角色裁剪:
47
- - `role: "pm"`:字段+PRD+API(PM 首选)
48
- - `role: "dev"`:代码+字段+API+Wiki(开发首选)
49
- - `role: "design"`:页面示例+风格
50
- - `role: "test"`:代码+PRD+API
51
-
52
- > **纠偏(唯一允许追加 search 的情形)**:若 context 返回的前几个文件明显跑偏
53
- > (如搜"考勤"却全是二维码模块),**最多**补 1 次 `search_code` 用精确关键词定位,
54
- > 然后直接 Read。禁止搜超过 2 次。
55
-
56
- ### 能并发的工具调用必须并发,别串行等(性能命门)
57
-
58
- **串行执行是工作流慢的最大原因。** 每次工具调用要等返回(图谱查询 2-3 秒、读文件 1 秒),
59
- 串行 10 步 = 白等 30 秒。MCP 工具调用**支持在同一回合并发**,务必利用:
60
-
61
- **并发规则(强制):**
62
- 1. **多个独立的 search/Read 同一回合一起发**。
63
- 2. **搜索 + 搜索 可并发**:要同时搜 `OSS` `upload`,一次发 2 个 search_code。
64
- 3. **只有"后一步依赖前一步结果"时才串行**。
65
- 4. **一轮思考里尽量塞满**:能同回合发的全发出去,等它们一起回来。
66
-
67
- **反例(慢,禁止)**:search A Read X search B → 等 → Read Y → 等 ...
68
- **正例(快,正确)**:[search A + search B] 并发 → 等 → [Read X + Read Y + Read Z] 并发 → 答
69
-
70
- ---
71
-
72
- ## 🔧 后备能力表(仅当 context 不够用时)
73
-
74
- > 以下子命令是 **context 的补充**,不是默认起点。先用 context,不够再查这里。
75
- > **禁止"先翻这张表挑命令"——那是旧版连调 5 次的根因。**
76
-
77
- ### A. 基础搜索(context 跑偏时才用)
78
-
79
- | 用户问法 | 调用方式 |
80
- |---------|---------|
81
- | "考勤代码在哪""搜保险" | `cap.mcp.call("search_code", {"keyword": "考勤", "platform": "web"})` |
82
- | "薪资 API""有哪些接口" | `cap.mcp.call("search_api", {"keyword": "salary"})` |
83
- | "保险相关的 PRD"(防重复造轮子) | `cap.mcp.call("search_prd", {"keyword": "保险"})` |
84
-
85
- ### A++. 中文文案/报错溯源(findstr 安全替代)
86
-
87
- 用户查的是中文短语(报错文案"车辆不存在"、字段标签"项目车号"、业务词),代码标识符
88
- 索引天然查不到。**这时只能用 grep-text**(单进程、限定 data/code、限定扩展名、不弹窗):
89
-
90
- ```bash
91
- # grep-text CLI 降级(不是 MCP 工具)
92
- python "$R/.qoder/scripts/orchestration/wlkj.py" kg grep-text 车辆不存在 --ext java --limit 20
93
- ```
94
-
95
- > 🚫 这是中文文案搜索的**唯一合法通道**。绝不用 `findstr /s`/`grep -r`/`os.walk` 全盘扫。
96
-
97
- ### 🔴 DB. 数据库查询(表结构/数据/枚举)— 查库前必须先问环境,不可跳过
98
-
99
- 当用户意图涉及**数据库 / 表结构 / 字段 / 枚举值 / 真实数据**,走 `cap.mcp.call("list_envs")` 等,**不走知识图谱**。
100
-
101
- **🚫 安全红线(最高优先级):查任何数据库之前,必须先问用户选哪个环境。
102
- 绝不能自动判断、绝不能默认走 test 就不问。**
103
-
104
- **强制流程(每轮对话首次查库时执行,不可省略):**
105
-
106
- 1. **先调 `cap.mcp.call("list_envs", {})`** 拿到所有环境标签;
107
- 2. **把环境列给用户,问"要查哪个环境",然后停下等用户选**;
108
- 3. **用户明确选定后**,后续查询都带 `env=<用户选的标签>`。
109
-
110
- 可用工具(全部带可选 `env` 参数):
111
- - `cap.mcp.call("list_envs", {})` — 列出环境(**第一步必调**)
112
- - `cap.mcp.call("query_schema", {"table": "t_xxx", "env": "test"})` — 表结构
113
- - `cap.mcp.call("query_data", {"table": "t_xxx", "env": "test"})` — 数据
114
- - `cap.mcp.call("query_distinct", {"table": "t_xxx", "column": "status", "env": "test"})` — 枚举值
115
-
116
- ### A+. 语义检索补充(中→英跨语言,自动触发)
117
-
118
- 关键词精确匹配查不到时,**自动**用语义向量补一轮——查"报销"能命中 `expense`/`reimburse`。
119
-
120
- - 触发条件:`search` / `context` 关键词命中 ≤2 个文件时自动叠加「语义补充」段
121
- - 模型未装时静默跳过,不报错
122
- - 管理员构建向量:`python "$R/.qoder/scripts/orchestration/wlkj.py" semantic build-embeddings`
123
-
124
- ### B. 知识图谱高级能力
125
-
126
- | 用户问法 | 调用方式 | 谁最该用 |
127
- |---------|---------|---------|
128
- | "/asset 影响哪些页面" | `cap.mcp.call("get_impact", {"endpoint": "/asset"})` | 开发改接口前 |
129
- | "handleExport 的完整关联" | `cap.mcp.call("context_360", {"symbol": "handleExport"})` | 开发/测试 |
130
- | "哪些功能没测试""回归盲区" | `cap.mcp.call("coverage_matrix", {})` | **PM/测试/管理** |
131
- | "资产管理功能画像" | `cap.mcp.call("feature_overview", {"feature": "资产管理"})` | **PM 写 PRD 前** |
132
- | "资产盘点有几步" | `cap.mcp.call("get_workflow", {"module": "assets"})` | **PM/测试** |
133
- | "从资产管理能到哪些实体" | `cap.mcp.call("multi_hop", {"symbol": "资产管理", "depth": 3})` | 开发/架构 |
134
- | "考勤的 Wiki 文档" | `cap.mcp.call("search_wiki", {"keyword": "考勤"})` | 所有人 |
135
-
136
- ### C. 设计/原型辅助
137
-
138
- | 用户问法 | 调用方式 |
139
- |---------|---------|
140
- | "用真实数据预填原型" | `cap.mcp.call("fill_prototype", {"keyword": "车辆", "platform": "web"})` |
141
- | "项目设计规范" | `cap.mcp.call("get_design_system", {"platform": "web"})` |
142
-
143
- ### D. 字段 / 页面风格 / 组件
144
-
145
- 这些走 CLI 降级(不是 MCP 工具):
146
-
147
- ```bash
148
- python "$R/.qoder/scripts/orchestration/wlkj.py" search --field <字段名>
149
- python "$R/.qoder/scripts/orchestration/wlkj.py" search --style <类型> [--platform web|app]
150
- python "$R/.qoder/scripts/orchestration/wlkj.py" search --list
151
- python "$R/.qoder/scripts/orchestration/wlkj.py" search --modules
152
- python "$R/.qoder/scripts/orchestration/wlkj.py" search --components
153
- ```
154
-
155
- ## 一次取全(推荐写 PRD/Spec 前)
156
-
157
- ```python
158
- cap.mcp.call("context_pack", {"keyword": "<业务词>", "platform": "web", "role": "pm"})
159
- ```
160
-
161
- 角色裁剪:
162
- - `role: "pm"`:只看字段+PRD+API(**PM 首选**)
163
- - `role: "design"`:只看页面示例+布局指纹+风格速查
164
- - `role: "dev"`:只看代码+字段+API+Wiki
165
- - `role: "test"`:只看代码+PRD+API
166
-
167
- ## 决策树:该用哪个能力?
168
-
169
- ```
170
- 用户想查什么?
171
- ├─ "这个东西有了吗/在哪" → search_code / search_prd / search_api
172
- ├─ "这个功能现在啥样" → feature_overview + context_pack --role pm
173
- ├─ "改这个会影响谁" → get_impact
174
- ├─ "这个流程有几步" → get_workflow
175
- ├─ "哪些功能缺测试" → coverage_matrix
176
- ├─ "XX 谁调用/调用链" → context_360 或 multi_hop
177
- └─ 要出原型/查风格get_design_system + fill_prototype
178
- ```
179
-
180
- ## 结果使用规则
181
-
182
- 1. 从结果里挑最相关的 2-3 个文件
183
- 2. **只读这几个文件**(用 Read 工具)
184
- 3. 基于读到的真实代码/数据回答用户问题
185
- 4. 不要把脚本原始输出整个贴给用户 —— 提炼后再回答
186
-
187
- ### Glob/文件找不到怎么办
188
-
189
- context/search 已给出文件路径时,直接 Read 那个路径。若 Glob 报"未找到文件",
190
- **不要**去跑 `find`/`findstr`/`dir /s` 命令行兜底。正确做法:
191
- - 用 `cap.mcp.call("search_code", {"keyword": "ServiceImpl"})` 在索引里搜
192
- - 或用 `wlkj.py kg grep-text ServiceImpl --ext java` 单进程搜文案
193
-
194
- ## 索引/图谱缺失怎么办
195
-
196
- 遇到"知识图谱未构建"类提示:
197
- - AI 说「初始化」(/wl-init)自动刷新
198
- - `python "$R/.qoder/scripts/orchestration/wlkj.py" kg-build` 手动构建
199
- - 或 `python "$R/.qoder/scripts/orchestration/wlkj.py" doctor --fix` 自检修复
200
-
201
- ## 高频场景对照
202
-
203
- | 用户问法 | 调用方式 |
204
- |---------|---------|
205
- | "考勤代码在哪" | `cap.mcp.call("search_code", {"keyword": "考勤"})` |
206
- | "改 /asset 接口影响谁" | `cap.mcp.call("get_impact", {"endpoint": "/asset"})` |
207
- | "哪些功能没测试覆盖" | `cap.mcp.call("coverage_matrix", {})` |
208
- | "资产管理功能完整吗" | `cap.mcp.call("feature_overview", {"feature": "资产管理"})` |
209
- | "资产盘点业务流程" | `cap.mcp.call("get_workflow", {"module": "assets"})` |
210
- | "nickName 字段在哪用" | `wlkj.py search --field nickName` |
211
- | "列表页有哪些例子(Web)" | `wlkj.py search --style table --platform web` |
212
- | " PRD 前一次取全" | `cap.mcp.call("context_pack", {"keyword": "车辆", "role": "pm"})` |
1
+ ---
2
+ n## 🚨 铁律:MCP工具优先,禁跑本地脚本
3
+ 所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
4
+ name: wl-search
5
+ description: "查代码/业务/API/字段/PRD + 知识图谱(影响分析/覆盖矩阵/功能画像/业务流程/多跳遍历)的唯一入口。"
6
+ trigger: "用户显式打 /wl-search; 代码/业务/API搜索专用"
7
+ ---
8
+ n## 🚨 铁律:MCP工具优先,禁跑本地脚本
9
+ 所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
10
+
11
+
12
+ # wl-search — 代码 / 知识图谱搜索
13
+
14
+ ## 执行方式(宿主无关,自动路由)
15
+
16
+ ```python
17
+ from capability import resolve
18
+ cap = resolve()
19
+ result = cap.mcp.call("search_code", {"keyword": "保险", "platform": "web"})
20
+ ```
21
+
22
+ 自动路由:有 MCP MCP(快),无 MCP wlkj.py(CLI 降级)。零宿主感知。
23
+
24
+ > ⚠️ 这是查代码、业务、知识图谱的**唯一入口**。禁止直接 grep `data/code/` 全库。
25
+
26
+ > 🚫 **绝对禁止**用 `findstr /s` / `grep -r` / `os.walk` / `subprocess` 全盘递归扫
27
+ > data/code(8973+ 文件)——Windows 下会**卡死 + 疯狂弹 cmd 子进程窗口**。中文文案/报错
28
+ > 溯源(如"车辆不存在")只能用 `grep-text`(单进程、范围限定、不弹窗)。
29
+
30
+ ## ⚙️ 自取上下文
31
+
32
+ - `data/index/.index-meta.json` — 图谱新鲜度;若 >7 天或不存在,提示用户
33
+ "知识图谱可能过期,建议先说'初始化'(/wl-init)刷新",但不要阻塞本次搜索
34
+ - 平台意图:用户提到"Web/PC/管理端"→ `platform: "web"`;
35
+ "APP/H5/移动端"→ `platform: "app"`;不明确就不加
36
+
37
+ ## ⚡⚡ 第一步永远是 context(强制 — 反碎片化命门)
38
+
39
+ **实测:旧版 AI 在十几个子命令间试错,单次搜索连调 5 次、6 轮迭代。
40
+ 本规则把这压成 1 次调用、1-2 轮。**
41
+
42
+ ```python
43
+ cap.mcp.call("context_pack", {"keyword": "<业务词>", "role": "<pm|dev|design|test>"})
44
+ ```
45
+
46
+ **除非用户明确要"影响分析/覆盖矩阵/多跳遍历"等图谱高级能力(见下方后备表),
47
+ 否则第一步且唯一一步就是 `context_pack`。** 它一次返回:代码文件 + 字段 + API + PRD + Repo Wiki。
48
+ 拿到后直接 Read 2-3 个核心文件回答,**绝大多数情况禁止再跑第二个子命令。**
49
+
50
+ 角色裁剪:
51
+ - `role: "pm"`:字段+PRD+API(PM 首选)
52
+ - `role: "dev"`:代码+字段+API+Wiki(开发首选)
53
+ - `role: "design"`:页面示例+风格
54
+ - `role: "test"`:代码+PRD+API
55
+
56
+ > **纠偏(唯一允许追加 search 的情形)**:若 context 返回的前几个文件明显跑偏
57
+ > (如搜"考勤"却全是二维码模块),**最多**补 1 次 `search_code` 用精确关键词定位,
58
+ > 然后直接 Read。禁止搜超过 2 次。
59
+
60
+ ### 能并发的工具调用必须并发,别串行等(性能命门)
61
+
62
+ **串行执行是工作流慢的最大原因。** 每次工具调用要等返回(图谱查询 2-3 秒、读文件 1 秒),
63
+ 串行 10 = 白等 30 秒。MCP 工具调用**支持在同一回合并发**,务必利用:
64
+
65
+ **并发规则(强制):**
66
+ 1. **多个独立的 search/Read → 同一回合一起发**。
67
+ 2. **搜索 + 搜索 可并发**:要同时搜 `OSS` `upload`,一次发 2 search_code。
68
+ 3. **只有"后一步依赖前一步结果"时才串行**。
69
+ 4. **一轮思考里尽量塞满**:能同回合发的全发出去,等它们一起回来。
70
+
71
+ **反例(慢,禁止)**:search A → 等 → Read X → 等 → search B → 等 → Read Y → 等 ...
72
+ **正例(快,正确)**:[search A + search B] 并发 → 等 → [Read X + Read Y + Read Z] 并发 → 答
73
+
74
+ ---
75
+ n## 🚨 铁律:MCP工具优先,禁跑本地脚本
76
+ 所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
77
+
78
+ ## 🔧 后备能力表(仅当 context 不够用时)
79
+
80
+ > 以下子命令是 **context 的补充**,不是默认起点。先用 context,不够再查这里。
81
+ > **禁止"先翻这张表挑命令"——那是旧版连调 5 次的根因。**
82
+
83
+ ### A. 基础搜索(context 跑偏时才用)
84
+
85
+ | 用户问法 | 调用方式 |
86
+ |---------|---------|
87
+ | "考勤代码在哪""搜保险" | `cap.mcp.call("search_code", {"keyword": "考勤", "platform": "web"})` |
88
+ | "薪资 API""有哪些接口" | `cap.mcp.call("search_api", {"keyword": "salary"})` |
89
+ | "保险相关的 PRD"(防重复造轮子) | `cap.mcp.call("search_prd", {"keyword": "保险"})` |
90
+
91
+ ### A++. 中文文案/报错溯源(findstr 安全替代)
92
+
93
+ 用户查的是中文短语(报错文案"车辆不存在"、字段标签"项目车号"、业务词),代码标识符
94
+ 索引天然查不到。**这时只能用 grep-text**(单进程、限定 data/code、限定扩展名、不弹窗):
95
+
96
+ ```bash
97
+ # grep-text CLI 降级(不是 MCP 工具)
98
+ python "$R/.qoder/scripts/orchestration/wlkj.py" kg grep-text 车辆不存在 --ext java --limit 20
99
+ ```
100
+
101
+ > 🚫 这是中文文案搜索的**唯一合法通道**。绝不用 `findstr /s`/`grep -r`/`os.walk` 全盘扫。
102
+
103
+ ### 🔴 DB. 数据库查询(表结构/数据/枚举)— 查库前必须先问环境,不可跳过
104
+
105
+ 当用户意图涉及**数据库 / 表结构 / 字段 / 枚举值 / 真实数据**,走 `cap.mcp.call("list_envs")` 等,**不走知识图谱**。
106
+
107
+ **🚫 安全红线(最高优先级):查任何数据库之前,必须先问用户选哪个环境。
108
+ 绝不能自动判断、绝不能默认走 test 就不问。**
109
+
110
+ **强制流程(每轮对话首次查库时执行,不可省略):**
111
+
112
+ 1. **先调 `cap.mcp.call("list_envs", {})`** 拿到所有环境标签;
113
+ 2. **把环境列给用户,问"要查哪个环境",然后停下等用户选**;
114
+ 3. **用户明确选定后**,后续查询都带 `env=<用户选的标签>`。
115
+
116
+ 可用工具(全部带可选 `env` 参数):
117
+ - `cap.mcp.call("list_envs", {})` — 列出环境(**第一步必调**)
118
+ - `cap.mcp.call("query_schema", {"table": "t_xxx", "env": "test"})` — 表结构
119
+ - `cap.mcp.call("query_data", {"table": "t_xxx", "env": "test"})` — 数据
120
+ - `cap.mcp.call("query_distinct", {"table": "t_xxx", "column": "status", "env": "test"})` 枚举值
121
+
122
+ ### A+. 语义检索补充(中→英跨语言,自动触发)
123
+
124
+ 关键词精确匹配查不到时,**自动**用语义向量补一轮——查"报销"能命中 `expense`/`reimburse`。
125
+
126
+ - 触发条件:`search` / `context` 关键词命中 ≤2 个文件时自动叠加「语义补充」段
127
+ - 模型未装时静默跳过,不报错
128
+ - 管理员构建向量:`python "$R/.qoder/scripts/orchestration/wlkj.py" semantic build-embeddings`
129
+
130
+ ### B. 知识图谱高级能力
131
+
132
+ | 用户问法 | 调用方式 | 谁最该用 |
133
+ |---------|---------|---------|
134
+ | " /asset 影响哪些页面" | `cap.mcp.call("get_impact", {"endpoint": "/asset"})` | 开发改接口前 |
135
+ | "handleExport 的完整关联" | `cap.mcp.call("context_360", {"symbol": "handleExport"})` | 开发/测试 |
136
+ | "哪些功能没测试""回归盲区" | `cap.mcp.call("coverage_matrix", {})` | **PM/测试/管理** |
137
+ | "资产管理功能画像" | `cap.mcp.call("feature_overview", {"feature": "资产管理"})` | **PM 写 PRD 前** |
138
+ | "资产盘点有几步" | `cap.mcp.call("get_workflow", {"module": "assets"})` | **PM/测试** |
139
+ | "从资产管理能到哪些实体" | `cap.mcp.call("multi_hop", {"symbol": "资产管理", "depth": 3})` | 开发/架构 |
140
+ | "考勤的 Wiki 文档" | `cap.mcp.call("search_wiki", {"keyword": "考勤"})` | 所有人 |
141
+
142
+ ### C. 设计/原型辅助
143
+
144
+ | 用户问法 | 调用方式 |
145
+ |---------|---------|
146
+ | "用真实数据预填原型" | `cap.mcp.call("fill_prototype", {"keyword": "车辆", "platform": "web"})` |
147
+ | "项目设计规范" | `cap.mcp.call("get_design_system", {"platform": "web"})` |
148
+
149
+ ### D. 字段 / 页面风格 / 组件
150
+
151
+ 这些走 CLI 降级(不是 MCP 工具):
152
+
153
+ ```bash
154
+ python "$R/.qoder/scripts/orchestration/wlkj.py" search --field <字段名>
155
+ python "$R/.qoder/scripts/orchestration/wlkj.py" search --style <类型> [--platform web|app]
156
+ python "$R/.qoder/scripts/orchestration/wlkj.py" search --list
157
+ python "$R/.qoder/scripts/orchestration/wlkj.py" search --modules
158
+ python "$R/.qoder/scripts/orchestration/wlkj.py" search --components
159
+ ```
160
+
161
+ ## 一次取全(推荐写 PRD/Spec 前)
162
+
163
+ ```python
164
+ cap.mcp.call("context_pack", {"keyword": "<业务词>", "platform": "web", "role": "pm"})
165
+ ```
166
+
167
+ 角色裁剪:
168
+ - `role: "pm"`:只看字段+PRD+API(**PM 首选**)
169
+ - `role: "design"`:只看页面示例+布局指纹+风格速查
170
+ - `role: "dev"`:只看代码+字段+API+Wiki
171
+ - `role: "test"`:只看代码+PRD+API
172
+
173
+ ## 决策树:该用哪个能力?
174
+
175
+ ```
176
+ 用户想查什么?
177
+ ├─ "这个东西有了吗/在哪"search_code / search_prd / search_api
178
+ ├─ "这个功能现在啥样" → feature_overview + context_pack --role pm
179
+ ├─ "改这个会影响谁" → get_impact
180
+ ├─ "这个流程有几步" → get_workflow
181
+ ├─ "哪些功能缺测试" → coverage_matrix
182
+ ├─ "XX 谁调用/调用链" → context_360 或 multi_hop
183
+ └─ 要出原型/查风格 get_design_system + fill_prototype
184
+ ```
185
+
186
+ ## 结果使用规则
187
+
188
+ 1. 从结果里挑最相关的 2-3 个文件
189
+ 2. **只读这几个文件**(用 Read 工具)
190
+ 3. 基于读到的真实代码/数据回答用户问题
191
+ 4. 不要把脚本原始输出整个贴给用户 —— 提炼后再回答
192
+
193
+ ### Glob/文件找不到怎么办
194
+
195
+ context/search 已给出文件路径时,直接 Read 那个路径。若 Glob 报"未找到文件",
196
+ **不要**去跑 `find`/`findstr`/`dir /s` 命令行兜底。正确做法:
197
+ - `cap.mcp.call("search_code", {"keyword": "ServiceImpl"})` 在索引里搜
198
+ - 或用 `wlkj.py kg grep-text ServiceImpl --ext java` 单进程搜文案
199
+
200
+ ## 索引/图谱缺失怎么办
201
+
202
+ 遇到"知识图谱未构建"类提示:
203
+ - AI 说「初始化」(/wl-init)自动刷新
204
+ - 或 `python "$R/.qoder/scripts/orchestration/wlkj.py" kg-build` 手动构建
205
+ - `python "$R/.qoder/scripts/orchestration/wlkj.py" doctor --fix` 自检修复
206
+
207
+ ## 高频场景对照
208
+
209
+ | 用户问法 | 调用方式 |
210
+ |---------|---------|
211
+ | "考勤代码在哪" | `cap.mcp.call("search_code", {"keyword": "考勤"})` |
212
+ | " /asset 接口影响谁" | `cap.mcp.call("get_impact", {"endpoint": "/asset"})` |
213
+ | "哪些功能没测试覆盖" | `cap.mcp.call("coverage_matrix", {})` |
214
+ | "资产管理功能完整吗" | `cap.mcp.call("feature_overview", {"feature": "资产管理"})` |
215
+ | "资产盘点业务流程" | `cap.mcp.call("get_workflow", {"module": "assets"})` |
216
+ | "nickName 字段在哪用" | `wlkj.py search --field nickName` |
217
+ | "列表页有哪些例子(Web)" | `wlkj.py search --style table --platform web` |
218
+ | "写 PRD 前一次取全" | `cap.mcp.call("context_pack", {"keyword": "车辆", "role": "pm"})` |
@@ -1,52 +1,56 @@
1
- ---
2
- name: wl-spec
3
- description: "从已确认 PRD 生成开发 Spec(技术规格)。默认生成; 带 review 评审现有 spec。/wl-code 按此 spec 实现。"
4
- trigger: "用户显式打 /wl-spec; PRD→技术规格"
5
- ---
6
-
7
-
8
- ## 🔧 仓库根定位(QoderWork 桌面端 vs Qoder IDE/CLI)
9
-
10
- **后续脚本里的 `$R` 代表仓库根**,先确定它(QoderWork 桌面端工作目录不是仓库根,相对路径会失效):
11
- ```bash
12
- R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.
13
- PY=$(python --version >/dev/null 2>&1 && echo python || echo python3)
14
- ```
15
- > `repo_root.py` 从 `~/.qoderwork/mcp.json` 反推仓库根;失败回退 `.`(IDE/CLI 工作目录即仓库根)。找不到时先跑 `$PY "$R/.qoder/scripts/orchestration/wlkj.py" install-qw`。
16
-
17
- # wl-spec 生成开发 Spec(/wl-spec 命令入口)
18
-
19
- > 这是 `/wl-spec` 命令的 skill 入口。让 QoderWork `/` 列表也能用 `/wl-spec`。
20
- > 完整规则见功能型 skill `.qoder/skills/spec-generator/SKILL.md`
21
- > 和命令 `.qoder/commands/optional/wl-spec.md`。
22
- > **模块契约**(输入/输出/校验):`.qoder/contracts/spec.md`
23
-
24
- ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
25
-
26
- - **当前身份**:当前开发者。读法:先 `R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.` 定位仓库根,
27
- 再 `$PY "$R/.qoder/scripts/foundation/core/paths.py" whoami`(输出开发者名;空=未初始化)。
28
- ⚠️ 勿用裸相对路径 `.qoder/.developer`(QoderWork 桌面端 cwd 不在仓库根,会读不到而误报未初始化)。
29
- - **活动任务**:当前任务(决定 spec 存哪个 task 目录)。读法 `$PY "$R/.qoder/scripts/foundation/core/paths.py" current-task`(输出任务路径;空=无活动任务)。
30
- - 扫描 PRD 来源:`data/docs/prd/`(已发布)+
31
- `workspace/members/{dev}/drafts/REQ-*.md`(草稿),找出还没 Spec 的 PRD
32
- - 字段命名约定:`$PY "$R/.qoder/scripts/orchestration/wlkj.py" search --field <字段名>`
33
- - 团队 Java 约定(MyBatis Plus + RESTful + BigDecimal 金额)见
34
- `.qoder/skills/spec-generator/SKILL.md` Step 3
35
-
36
- ## 执行
37
-
38
- 1. 定位 PRD(按 REQ-ID 或最新发布的)
39
- 2. 读 PRD + 相关代码(用 search_index.py 找现有实现模式)
40
- 3. 按 spec-generator skill 生成 spec.md(接口/字段/数据模型/验收标准)
41
- 4. 存到 `workspace/specs/REQ-{ID}-{module}.spec.md`(命名与 PRD 的 REQ-ID 一致,便于贯穿检索)
42
- 5. 通知开发评审
43
- 6. 发布后自动同步:
44
- ```bash
45
- cap.mcp.call("sync", {"direction": "push"})
46
- ```
47
-
48
- ## Review 模式
49
-
50
- 带 `review` 参数 → 读现有 spec 做评审,给出改进建议,不重新生成。
51
-
52
- 详细生成规则见 `.qoder/skills/spec-generator/SKILL.md`。
1
+ ---
2
+ n## 🚨 铁律:MCP工具优先,禁跑本地脚本
3
+ 所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
4
+ name: wl-spec
5
+ description: "从已确认 PRD 生成开发 Spec(技术规格)。默认生成; 带 review 评审现有 spec。/wl-code 按此 spec 实现。"
6
+ trigger: "用户显式打 /wl-spec; PRD→技术规格"
7
+ ---
8
+ n## 🚨 铁律:MCP工具优先,禁跑本地脚本
9
+ 所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
10
+
11
+
12
+ ## 🔧 仓库根定位(QoderWork 桌面端 vs Qoder IDE/CLI)
13
+
14
+ **后续脚本里的 `$R` 代表仓库根**,先确定它(QoderWork 桌面端工作目录不是仓库根,相对路径会失效):
15
+ ```bash
16
+ R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.
17
+ PY=$(python --version >/dev/null 2>&1 && echo python || echo python3)
18
+ ```
19
+ > `repo_root.py` `~/.qoderwork/mcp.json` 反推仓库根;失败回退 `.`(IDE/CLI 工作目录即仓库根)。找不到时先跑 `$PY "$R/.qoder/scripts/orchestration/wlkj.py" install-qw`。
20
+
21
+ # wl-spec — 生成开发 Spec(/wl-spec 命令入口)
22
+
23
+ > 这是 `/wl-spec` 命令的 skill 入口。让 QoderWork 的 `/` 列表也能用 `/wl-spec`。
24
+ > 完整规则见功能型 skill `.qoder/skills/spec-generator/SKILL.md`
25
+ > 和命令 `.qoder/commands/optional/wl-spec.md`。
26
+ > **模块契约**(输入/输出/校验):`.qoder/contracts/spec.md`
27
+
28
+ ## ⚙️ 自取上下文(Quest / QoderWork hook 注入,必须自读)
29
+
30
+ - **当前身份**:当前开发者。读法:先 `R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.` 定位仓库根,
31
+ 再 `$PY "$R/.qoder/scripts/foundation/core/paths.py" whoami`(输出开发者名;空=未初始化)。
32
+ ⚠️ 勿用裸相对路径 `.qoder/.developer`(QoderWork 桌面端 cwd 不在仓库根,会读不到而误报未初始化)。
33
+ - **活动任务**:当前任务(决定 spec 存哪个 task 目录)。读法 `$PY "$R/.qoder/scripts/foundation/core/paths.py" current-task`(输出任务路径;空=无活动任务)。
34
+ - 扫描 PRD 来源:`data/docs/prd/`(已发布)+
35
+ `workspace/members/{dev}/drafts/REQ-*.md`(草稿),找出还没 Spec 的 PRD
36
+ - 字段命名约定:`$PY "$R/.qoder/scripts/orchestration/wlkj.py" search --field <字段名>`
37
+ - 团队 Java 约定(MyBatis Plus + RESTful + BigDecimal 金额)见
38
+ `.qoder/skills/spec-generator/SKILL.md` Step 3
39
+
40
+ ## 执行
41
+
42
+ 1. 定位 PRD(按 REQ-ID 或最新发布的)
43
+ 2. 读 PRD + 相关代码(用 search_index.py 找现有实现模式)
44
+ 3. 按 spec-generator skill 生成 spec.md(接口/字段/数据模型/验收标准)
45
+ 4. 存到 `workspace/specs/REQ-{ID}-{module}.spec.md`(命名与 PRD 的 REQ-ID 一致,便于贯穿检索)
46
+ 5. 通知开发评审
47
+ 6. 发布后自动同步:
48
+ ```bash
49
+ cap.mcp.call("sync", {"direction": "push"})
50
+ ```
51
+
52
+ ## Review 模式
53
+
54
+ 带 `review` 参数 → 读现有 spec 做评审,给出改进建议,不重新生成。
55
+
56
+ 详细生成规则见 `.qoder/skills/spec-generator/SKILL.md`。