@hupan56/wlkj 3.4.6 → 3.4.7

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": "@hupan56/wlkj",
3
- "version": "3.4.6",
3
+ "version": "3.4.7",
4
4
  "description": "AI Product R&D Workflow - PRD/Prototype/Search/Task/Report",
5
5
  "bin": {
6
6
  "wlkj": "bin/cli.js"
@@ -1,241 +1,245 @@
1
- ---
2
- name: prd-generator
3
- description: "/wl-prd 完整档/快速档的实现层。生成 PRD + 平台匹配的原型,带 EVA 质量门禁。"
4
- trigger: "被 /wl-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
- # PRD Generator Skill
18
-
19
- > 📌 **主入口:`/wl-prd` 命令(完整档 / 快速档 / 评审 三模式)。** 本 skill 是完整/快速模式的实现层 + Quest/QoderWork 自然语言路由。
20
- > 命令见 `.qoder/commands/wl-prd.md`(参数提示更全、更稳定)。
21
- > **模块契约**(输入/输出/校验):`.qoder/contracts/prd.md`
22
- > **第一性原理:又快又准**(快=并行+砍模式,准=语义归档+质量锁)
23
- > **定位:专注"已确定需求"的落地。** 探索/调研/规划/对标已移交 `/wl-insight`,
24
- > skill 不做 web 搜索、不派多 agent、不做 Gap 分析。基于 context_pack 现状做轻反思 + 跟用户确认。
25
-
26
- ## 🔒 语言锁(最高优先级)
27
-
28
- **全部输出必须简体中文。** PRD 标题、章节名、字段名、表格内容、原型文案、注释。
29
- 禁止任何英文句子(技术专有名词如 API/REQ-ID 可保留英文缩写)。
30
- 违反此锁 = 产出不合格,必须重写。
31
-
32
- ## 性能原则(最重要的规则 —— 治"太慢/轮次太多")
33
-
34
- 1. **轮次硬上限**:快档 ≤3 轮,完整档 ≤6 轮。超了就是流程跑偏
35
- 2. **一次取全**:context_pack 一次拿全上下文,不要逐个 search(5-6 次变 1 次)
36
- 3. **并行调用**:独立操作放**同一条消息**里并行(取上下文+读历史+读草稿一起发),不要串行
37
- 4. **批量生成**:PRD + 原型一次 Write 写完,不分两轮
38
- 5. **不重复读**:模板已有正确颜色(vben-style / Vant),不要单独读 style JSON
39
- 6. **少打断**:context_pack 已取全 AI 自己判断,**不要动不动停下来逐条确认**
40
-
41
- ## 自取上下文(Quest / QoderWork hook,必须自读)
42
-
43
- - **当前身份**:当前开发者名。读法:先 `R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.` 定位仓库根,
44
- 再 `$PY "$R/.qoder/scripts/foundation/core/paths.py" whoami`(输出开发者名;空=未初始化)。
45
- ⚠️ 勿用裸相对路径 `.qoder/.developer`(QoderWork 桌面端 cwd 不在仓库根,会读不到而误报未初始化)。
46
- - **活动任务**:当前活动任务。读法 `$PY "$R/.qoder/scripts/foundation/core/paths.py" current-task`(输出任务路径;空=无活动任务)。
47
- - `data/index/.index-meta.json` 知识图谱新鲜度
48
-
49
- ### PRD 前:一次取全(prefetch 预测 + 批量预取)
50
-
51
- **写 PRD 第一件事:调 1 次 `prefetch`**(它会预测业务词 + 批量取多词上下文,合并去重):
52
- ```bash
53
- ROLE=$($PY "$R/.qoder/scripts/orchestration/wlkj.py" role 2>/dev/null || echo pm)
54
- $PY "$R/.qoder/scripts/orchestration/wlkj.py" kg prefetch "<需求描述>" --platform <p>
55
- ```
56
- 或直接:`$PY "$R/.qoder/scripts/orchestration/wlkj.py" prefetch "<需求描述>" --platform <p>`
57
-
58
- prefetch 一次返回 8 段(含历史PRD/数据库表/真实字段/API/Wiki),等于把多个业务词的查询合并。**prefetch 之后严禁再串行 search/find/grep**(这是轮次爆炸的根因——查一个词不命中就换词再查 6+ 次)。
59
-
60
- **仅当 prefetch 明确没覆盖到时才补调一次**(极少):
61
- > 以下两个 MCP 工具自动路由(有 MCP 走 MCP,无 MCP 走 CLI);Qoder IDE/Quest/CLI 无 MCP 时跳过即可,靠 prefetch 已返回的数据足够。
62
-
63
- - 字段枚举值:`cap.mcp.call("query_distinct", {"table": "表名", "column": "状态列"})` — prefetch 给了表结构但没给枚举取值,需要时才调
64
- - 改表影响:`cap.mcp.call("table_impact", {"table": "表名"})` — 评估改动范围时才调
65
-
66
- ## STEP 0: 必须先问平台
67
-
68
- ```
69
- 这个需求是针对哪个平台?
70
- 1. Web 管理端 (fywl-ui) - Ant Design Vue + VxeGrid 风格
71
- 2. APP 移动端 (Carmg-H5) - Vant 风格
72
- 3. 两端都要
73
- 请选择 (1/2/3):
74
- ```
75
- 等用户回答。绝不自动判断。
76
-
77
- ## STEP 1: 归档(两档制 —— PM 只需判断"小改动还是正经需求")
78
-
79
- **prd 只管"已确定需求"的落地。探索类请走 /wl-insight。**
80
-
81
- ### 归档三道保险
82
-
83
- **① 显式关键词**
84
- | 用户说 | 走哪档 |
85
- |--------|--------|
86
- | `快速`/`quick`/`加个字段`/`小改动` | 快档 |
87
- | (默认/无关键词) | 完整档 |
88
- | `深度`/`调研`/`对标`/`规划`/`路线图`/`探讨` | **不归 prd** → 提示走 `/wl-insight`(探索已外迁) |
89
-
90
- **② AI 语义自动归档(默认)**
91
- - "加/改/删一个具体小点" **快档**
92
- - "新做一个模块/能力/流程"**完整档**
93
-
94
- **③ 歧义必问(拿不准绝不猜)**
95
- ```
96
- 这个需求有两种走法:
97
- 1. 【快档】当小改动,3 步极速出 Mini-PRD(约 2-3 轮)
98
- 2. 【完整档】当正经需求,完整 PRD + 原型(约 4-6 轮)
99
- 你要哪种?(1/2)
100
- ```
101
- > 需求方向本身没定("想做但不知道做什么")→ 提示走 `/wl-insight discover` 先探索。
102
-
103
- ## STEP 2: 三步流程
104
-
105
- ### 快档(3 步极速,目标 2-3 轮)
106
- ```
107
- context_pack.py 一次取全(1 次调用)
108
- ② 一次 Write:Mini-PRD(prd-quick-template.md) + 微型原型(只画 diff)
109
- "出好了,确认发布吗?" 确认后归档+push
110
- 跳过:EVA完整检查 / 历史 PRD / style JSON
111
- ```
112
-
113
- ### 完整档(3 步并行,目标 4-6 轮)
114
-
115
- **第 1 步|并行取全(同一条消息并发,别串行)**
116
- ```
117
- 同一条消息里并行发:
118
- ① kg.py prefetch "<需求描述原句>" --platform <p> ← 多词预测一次取全: 代码+页面+字段+API+样式+历史PRD标题
119
- Read 业务草稿(workspace/members/{dev}/drafts/ 下相关草稿)
120
- (若衔接了 insight 报告:同时 Read 该报告,作为现状背景输入)
121
- ```
122
- 然后只读 prefetch 列出的最相关 1-2 Vue 文件。
123
- > 历史相关 PRD:prefetch 第4段已返回标题列表。**只有要参考某篇历史 PRD 的写法/结构时,才额外 Read 那一篇**,不要每次都读。
124
- > ⚠️ 探索/调研/对标已归 /wl-insight,第 1 步**不派多 agent、不做 web 搜索**。
125
-
126
- **第 2 步|轻反思 + 批量确认(核心:基于现状反思,重点是跟用户确认)**
127
- - AI 先用上下文**自动补全** PRD 的背景/目标/指标/用户画像
128
- - **基于现状做轻反思**:现状怎么做、本次改什么、预期效果——写进"需求背景/产品现状"章节
129
- - 只把"上下文真没有、必须 PM 拍板"的 1-2 点,**一次性**问完(编号列表)
130
- - **不再逐条确认** context_pack 已取全的现有行为/页面/字段 —— AI 自己判断
131
- - 确认用批量方式(一个编号列表一轮)
132
-
133
- **第 3 步|一次生成 + 3 道质量锁 + 发布**
134
- ```
135
- 一次 Write 写完 PRD + 原型 → 跑 3 道质量锁 → 不过自动修 → 问"发布吗?"
136
- ```
137
-
138
- ## 🔒 3 道质量锁(治"产出质量不稳",完整档全跑,快档只跑锁②)
139
-
140
- **"准"的保障。eval_prd.py 的 A1/A2/A3 已实现大半,这里提升为流程强制门。**
141
-
142
- 生成后、发布前,**先跑角色+契约前置门,再跑质量分**:
143
- ```bash
144
- # 1+2: 角色边界(当前角色能否产 prd?) + 契约校验(@contract 头是否合规?)
145
- # 软提示不阻塞, 越权/无契约头会提示但仍可发布
146
- $PY "$R/.qoder/scripts/foundation/identity/check_publish.py" prd <draft-prd.md>
147
-
148
- # 门 3: 质量分 (eval_prd 内部也会跑契约校验, 这里是质量评分)
149
- $PY "$R/.qoder/scripts/orchestration/wlkj.py" eval <draft-prd.md> <prototype.html>
150
- ```
151
- - check_publish 越权提示 → 软提示(如 dev 产 prd 会提示"建议产品经理"),不阻塞
152
- - eval_prd < 80% 不准发布,按报告修到 PASS
153
-
154
- AI 在跑 eval_prd 前,自己先做内容自检(快档只查锁②):
155
-
156
- | | 查什么 | 不过怎么办 |
157
- |----|--------|-----------|
158
- | **锁① 背景锁** | 背景回答了"为什么做 + 目标指标"?非空泛? | 打回,补"业务驱动力 + 可量化目标" |
159
- | **锁② 字段锁** | PRD 字段都来自 context_pack 真实字段清单?无发明字段? | 标红发明字段,对照真实代码替换/删除 |
160
- | **锁③ 闭环锁** | 每个功能点都有验收标准(Given-When-Then)? | 缺验收的功能点补全 |
161
-
162
- > 锁② 直接复用 eval_prd A1 结果(A1 已校验字段真实性)。AI A1 报告的"可疑字段"在发布前显式标给 PM 确认,不重复造校验。
163
-
164
- ### 锁② 零命中时的降级(全新功能,索引无现成字段)
165
-
166
- context_pack 字段段返回"无直接相关字段"时,**字段锁不报错,降级为显式声明**:
167
- - 字段规格表每个字段标来源:`既有`(context_pack)/ `复用`(同类页同名字段)/ `新增`(本次定义)。
168
- - eval_prd A1 会跳过 `新增` 行不扣分 —— **新增字段必须打标记**,否则被当可疑字段。
169
- - `新增` 字段仍要写全:字段名(camelCase)/中文标题/类型/校验规则。
170
-
171
- ### 🛡️ 故障降级(脚本崩了怎么走)
172
-
173
- **脚本崩 PRD 写不了。** 索引/工具是"准"的加速器,不是写 PRD 的前提。常见异常及降级:
174
-
175
- | 故障 | 降级动作 |
176
- |------|---------|
177
- | context_pack 零命中(全新业务) | 照常写,字段标 `新增`,诚实告诉 PM"索引无先例,字段需确认"。**绝不编字段** |
178
- | 索引文件缺失(A1=0 分) | 提示 `/wl-init --fix`;仍可出 PRD,锁②改人工标注 |
179
- | eval_prd 缺原型 | 只评 A1+A3,A2 跳过。快档允许只出 PRD |
180
- | eval_prd 本身崩 | 不阻塞,用 3 道锁自检代替,记"自动评分暂不可用" |
181
- | eval_prd <80% | 完整档修到 ≥80%;快档只看锁②,不阻塞 |
182
- | fill_prototype | 读模板手写起步,颜色只取 context_pack 第6段真源 |
183
- | REQ-ID 分配器失败 | 扫最大号+1,文件名带 `-manual`,push team_sync 校验唯一 |
184
- | team_sync SYNC_CONFLICT | AI 按脚本给的命令自行解决,不让用户碰 git |
185
-
186
- > 完整降级表(含平台答错、归档失败等)见 `.qoder/commands/wl-prd.md` 的「故障降级表」。
187
-
188
- ## 取上下文 一次取全(不要逐个搜)
189
-
190
- ```bash
191
- $PY "$R/.qoder/scripts/orchestration/wlkj.py" context <关键词> --platform <web|app>
192
- ```
193
- 返回 7 章节(代码+页面+字段+PRD+API+样式+Wiki)。**只读最相关 1-2 个 Vue 文件**。
194
-
195
- ## PRD 模板
196
-
197
- | 档位 | 模板 | mode 标记 |
198
- |------|------|----------|
199
- | 快档 | `.qoder/templates/prd-quick-template.md` | `<!-- mode: quick -->` |
200
- | 完整档(默认) | `.qoder/templates/prd-full-template.md` | `<!-- mode: reference -->` |
201
-
202
- > planning/brainstorm 两个 mode 标记**已随探索能力迁至 /wl-insight**,prd 不再主动产出。
203
- > 模板头部已含 mode 标记。生成时**只改 mode 值,别删标记**——
204
- > syncgate/eval_prd 靠它识别模式(quick 跳过 EVA 完整检查,其余全跑)。
205
-
206
- ## 质量自检(10 项,快档跳过)
207
- 1. 背景回答"为什么" 2. 目标可量化 3. 用户画像具体
208
- 4. 业务规则完整 5. 异常覆盖(2+) 6. 验收可测(Given-When-Then)
209
- 7. 数据事件完整 8. PRD 无技术实现 9. 优先级标注 10. 排期合理
210
-
211
- ## 原型规则
212
-
213
- - 从模板开始(`.qoder/templates/prototype-{web|app}.html`),模板已有正确颜色与 mixed-nav 多级菜单骨架
214
- - 先跑 `$PY "$R/.qoder/scripts/orchestration/wlkj.py" fill-prototype <关键词> --platform <web|app>` 拿 80% 草稿;
215
- 它会按目标项目的 `layout_fingerprint` 自动填示例菜单骨架和真实字段,你只微调 20%
216
- - 颜色/布局指纹见 fill_prototype 输出的"设计 Token"段(布局模式/主色/侧边栏宽度)
217
- - **菜单层级**: 若需求描述了侧边栏/菜单结构(如"一级→二级,右侧三四级"),
218
- 严格按它填 `{{TOP_MENU}}`/`{{SIDEBAR_MENU}}`/`{{TABS}}` —— 模板是 mixed-nav
219
- 多级骨架,不要退化成扁平单级 sidebar
220
- - 只改 diff 部分,新功能高亮
221
- - HTML 文件,可交互
222
- - Web: mixed-nav(顶部一级+左侧二级三级+标签页);APP: 375px + 底部 tab
223
-
224
- ## STEP:自动归档到个人时间线(可选增强 · 失败不影响 PRD)
225
-
226
- PRD 写入 drafts 后,**顺手归档一份**到当前成员的按时间文件夹,方便人翻查"我那天做了啥":
227
-
228
- ```bash
229
- $PY "$R/.qoder/scripts/orchestration/wlkj.py" archive-prd <刚生成的PRD文件路径>
230
- ```
231
-
232
- > 归档产物:`workspace/members/{你的名字}/archive/{YYYY-MM-DD}/REQ-{编号}-{中文标题}.md`
233
- > 同时更新 `archive/_index.md`(按周/月汇总)和当天 `_index.md`。
234
-
235
- **规则:**
236
- - 只**复制**不移动,drafts 原件保留,data/docs/prd/ 完全不碰 → 不影响搜索/撞号检测
237
- - 归属看当前操作者(.developer),不看"产品负责人"字段 开发/测试/产品都能用
238
- - 脚本内部全程 try/except,**失败只 print 一句,绝不阻塞 PRD 生成**
239
- - 多端 PRD(Web + APP 各一份)可一次传多个路径批量归档
240
-
241
- **非侵入**:用户没用 PRD 命令时本步骤完全不触发,QODER 原生流程零影响。
1
+ ---
2
+ n## 🚨 铁律:MCP工具优先,禁跑本地脚本
3
+ 所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
4
+ name: prd-generator
5
+ description: "/wl-prd 完整档/快速档的实现层。生成 PRD + 平台匹配的原型,带 EVA 质量门禁。"
6
+ trigger: "被 /wl-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
+ # PRD Generator Skill
22
+
23
+ > 📌 **主入口:`/wl-prd` 命令(完整档 / 快速档 / 评审 三模式)。** 本 skill 是完整/快速模式的实现层 + Quest/QoderWork 自然语言路由。
24
+ > 命令见 `.qoder/commands/wl-prd.md`(参数提示更全、更稳定)。
25
+ > **模块契约**(输入/输出/校验):`.qoder/contracts/prd.md`
26
+ > **第一性原理:又快又准**(快=并行+砍模式,准=语义归档+质量锁)
27
+ > **定位:专注"已确定需求"的落地。** 探索/调研/规划/对标已移交 `/wl-insight`,
28
+ > skill 不做 web 搜索、不派多 agent、不做 Gap 分析。基于 context_pack 现状做轻反思 + 跟用户确认。
29
+
30
+ ## 🔒 语言锁(最高优先级)
31
+
32
+ **全部输出必须简体中文。** PRD 标题、章节名、字段名、表格内容、原型文案、注释。
33
+ 禁止任何英文句子(技术专有名词如 API/REQ-ID 可保留英文缩写)。
34
+ 违反此锁 = 产出不合格,必须重写。
35
+
36
+ ## 性能原则(最重要的规则 —— 治"太慢/轮次太多")
37
+
38
+ 1. **轮次硬上限**:快档 ≤3 轮,完整档 ≤6 轮。超了就是流程跑偏
39
+ 2. **一次取全**:context_pack 一次拿全上下文,不要逐个 search(5-6 次变 1 次)
40
+ 3. **并行调用**:独立操作放**同一条消息**里并行(取上下文+读历史+读草稿一起发),不要串行
41
+ 4. **批量生成**:PRD + 原型一次 Write 写完,不分两轮
42
+ 5. **不重复读**:模板已有正确颜色(vben-style / Vant),不要单独读 style JSON
43
+ 6. **少打断**:context_pack 已取全 AI 自己判断,**不要动不动停下来逐条确认**
44
+
45
+ ## 自取上下文(Quest / QoderWork hook,必须自读)
46
+
47
+ - **当前身份**:当前开发者名。读法:先 `R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.` 定位仓库根,
48
+ 再 `$PY "$R/.qoder/scripts/foundation/core/paths.py" whoami`(输出开发者名;空=未初始化)。
49
+ ⚠️ 勿用裸相对路径 `.qoder/.developer`(QoderWork 桌面端 cwd 不在仓库根,会读不到而误报未初始化)。
50
+ - **活动任务**:当前活动任务。读法 `$PY "$R/.qoder/scripts/foundation/core/paths.py" current-task`(输出任务路径;空=无活动任务)。
51
+ - `data/index/.index-meta.json` 知识图谱新鲜度
52
+
53
+ ### PRD 前:一次取全(prefetch 预测 + 批量预取)
54
+
55
+ **写 PRD 第一件事:调 1 次 `prefetch`**(它会预测业务词 + 批量取多词上下文,合并去重):
56
+ ```bash
57
+ ROLE=$($PY "$R/.qoder/scripts/orchestration/wlkj.py" role 2>/dev/null || echo pm)
58
+ $PY "$R/.qoder/scripts/orchestration/wlkj.py" kg prefetch "<需求描述>" --platform <p>
59
+ ```
60
+ 或直接:`$PY "$R/.qoder/scripts/orchestration/wlkj.py" prefetch "<需求描述>" --platform <p>`
61
+
62
+ prefetch 一次返回 8 段(含历史PRD/数据库表/真实字段/API/Wiki),等于把多个业务词的查询合并。**prefetch 之后严禁再串行 search/find/grep**(这是轮次爆炸的根因——查一个词不命中就换词再查 6+ 次)。
63
+
64
+ **仅当 prefetch 明确没覆盖到时才补调一次**(极少):
65
+ > 以下两个 MCP 工具自动路由(有 MCP 走 MCP,无 MCP 走 CLI);Qoder IDE/Quest/CLI 无 MCP 时跳过即可,靠 prefetch 已返回的数据足够。
66
+
67
+ - 字段枚举值:`cap.mcp.call("query_distinct", {"table": "表名", "column": "状态列"})` — prefetch 给了表结构但没给枚举取值,需要时才调
68
+ - 改表影响:`cap.mcp.call("table_impact", {"table": "表名"})` — 评估改动范围时才调
69
+
70
+ ## STEP 0: 必须先问平台
71
+
72
+ ```
73
+ 这个需求是针对哪个平台?
74
+ 1. Web 管理端 (fywl-ui) - Ant Design Vue + VxeGrid 风格
75
+ 2. APP 移动端 (Carmg-H5) - Vant 风格
76
+ 3. 两端都要
77
+ 请选择 (1/2/3):
78
+ ```
79
+ 等用户回答。绝不自动判断。
80
+
81
+ ## STEP 1: 归档(两档制 —— PM 只需判断"小改动还是正经需求")
82
+
83
+ **prd 只管"已确定需求"的落地。探索类请走 /wl-insight。**
84
+
85
+ ### 归档三道保险
86
+
87
+ **① 显式关键词**
88
+ | 用户说 | 走哪档 |
89
+ |--------|--------|
90
+ | `快速`/`quick`/`加个字段`/`小改动` | 快档 |
91
+ | (默认/无关键词) | 完整档 |
92
+ | `深度`/`调研`/`对标`/`规划`/`路线图`/`探讨` | **不归 prd** 提示走 `/wl-insight`(探索已外迁) |
93
+
94
+ **② AI 语义自动归档(默认)**
95
+ - "加/改/删一个具体小点" → **快档**
96
+ - "新做一个模块/能力/流程" → **完整档**
97
+
98
+ **③ 歧义必问(拿不准绝不猜)**
99
+ ```
100
+ 这个需求有两种走法:
101
+ 1. 【快档】当小改动,3 步极速出 Mini-PRD(约 2-3 轮)
102
+ 2. 【完整档】当正经需求,完整 PRD + 原型(约 4-6 轮)
103
+ 你要哪种?(1/2)
104
+ ```
105
+ > 需求方向本身没定("想做但不知道做什么")→ 提示走 `/wl-insight discover` 先探索。
106
+
107
+ ## STEP 2: 三步流程
108
+
109
+ ### 快档(3 步极速,目标 2-3 轮)
110
+ ```
111
+ ① context_pack.py 一次取全(1 次调用)
112
+ ② 一次 Write:Mini-PRD(prd-quick-template.md) + 微型原型(只画 diff)
113
+ "出好了,确认发布吗?" 确认后归档+push
114
+ 跳过:EVA完整检查 / 历史 PRD / style JSON
115
+ ```
116
+
117
+ ### 完整档(3 步并行,目标 4-6 轮)
118
+
119
+ **第 1 步|并行取全(同一条消息并发,别串行)**
120
+ ```
121
+ 同一条消息里并行发:
122
+ kg.py prefetch "<需求描述原句>" --platform <p> ← 多词预测一次取全: 代码+页面+字段+API+样式+历史PRD标题
123
+ Read 业务草稿(workspace/members/{dev}/drafts/ 下相关草稿)
124
+ (若衔接了 insight 报告:同时 Read 该报告,作为现状背景输入)
125
+ ```
126
+ 然后只读 prefetch 列出的最相关 1-2 Vue 文件。
127
+ > 历史相关 PRD:prefetch 第4段已返回标题列表。**只有要参考某篇历史 PRD 的写法/结构时,才额外 Read 那一篇**,不要每次都读。
128
+ > ⚠️ 探索/调研/对标已归 /wl-insight,第 1 步**不派多 agent、不做 web 搜索**。
129
+
130
+ **第 2 步|轻反思 + 批量确认(核心:基于现状反思,重点是跟用户确认)**
131
+ - AI 先用上下文**自动补全** PRD 的背景/目标/指标/用户画像
132
+ - **基于现状做轻反思**:现状怎么做、本次改什么、预期效果——写进"需求背景/产品现状"章节
133
+ - 只把"上下文真没有、必须 PM 拍板"的 1-2 点,**一次性**问完(编号列表)
134
+ - **不再逐条确认** context_pack 已取全的现有行为/页面/字段 —— AI 自己判断
135
+ - 确认用批量方式(一个编号列表一轮)
136
+
137
+ **第 3 步|一次生成 + 3 道质量锁 + 发布**
138
+ ```
139
+ 一次 Write 写完 PRD + 原型 → 跑 3 道质量锁 → 不过自动修 → 问"发布吗?"
140
+ ```
141
+
142
+ ## 🔒 3 道质量锁(治"产出质量不稳",完整档全跑,快档只跑锁②)
143
+
144
+ **"准"的保障。eval_prd.py A1/A2/A3 已实现大半,这里提升为流程强制门。**
145
+
146
+ 生成后、发布前,**先跑角色+契约前置门,再跑质量分**:
147
+ ```bash
148
+ # 门 1+2: 角色边界(当前角色能否产 prd?) + 契约校验(@contract 头是否合规?)
149
+ # 软提示不阻塞, 越权/无契约头会提示但仍可发布
150
+ $PY "$R/.qoder/scripts/foundation/identity/check_publish.py" prd <draft-prd.md>
151
+
152
+ # 3: 质量分 (eval_prd 内部也会跑契约校验, 这里是质量评分)
153
+ $PY "$R/.qoder/scripts/orchestration/wlkj.py" eval <draft-prd.md> <prototype.html>
154
+ ```
155
+ - check_publish 越权提示 → 软提示(如 dev 产 prd 会提示"建议产品经理"),不阻塞
156
+ - eval_prd < 80% 不准发布,按报告修到 PASS
157
+
158
+ AI 在跑 eval_prd 前,自己先做内容自检(快档只查锁②):
159
+
160
+ | | 查什么 | 不过怎么办 |
161
+ |----|--------|-----------|
162
+ | **锁① 背景锁** | 背景回答了"为什么做 + 目标指标"?非空泛? | 打回,补"业务驱动力 + 可量化目标" |
163
+ | **锁② 字段锁** | PRD 字段都来自 context_pack 真实字段清单?无发明字段? | 标红发明字段,对照真实代码替换/删除 |
164
+ | **锁③ 闭环锁** | 每个功能点都有验收标准(Given-When-Then)? | 缺验收的功能点补全 |
165
+
166
+ > 锁② 直接复用 eval_prd 的 A1 结果(A1 已校验字段真实性)。AI 把 A1 报告的"可疑字段"在发布前显式标给 PM 确认,不重复造校验。
167
+
168
+ ### 锁② 零命中时的降级(全新功能,索引无现成字段)
169
+
170
+ context_pack 字段段返回"无直接相关字段"时,**字段锁不报错,降级为显式声明**:
171
+ - 字段规格表每个字段标来源:`既有`(context_pack)/ `复用`(同类页同名字段)/ `新增`(本次定义)。
172
+ - eval_prd A1 会跳过 `新增` 行不扣分 —— **新增字段必须打标记**,否则被当可疑字段。
173
+ - `新增` 字段仍要写全:字段名(camelCase)/中文标题/类型/校验规则。
174
+
175
+ ### 🛡️ 故障降级(脚本崩了怎么走)
176
+
177
+ **脚本崩 PRD 写不了。** 索引/工具是""的加速器,不是写 PRD 的前提。常见异常及降级:
178
+
179
+ | 故障 | 降级动作 |
180
+ |------|---------|
181
+ | context_pack 零命中(全新业务) | 照常写,字段标 `新增`,诚实告诉 PM"索引无先例,字段需确认"。**绝不编字段** |
182
+ | 索引文件缺失(A1=0 分) | 提示 `/wl-init --fix`;仍可出 PRD,锁②改人工标注 |
183
+ | eval_prd 缺原型 | 只评 A1+A3,A2 跳过。快档允许只出 PRD |
184
+ | eval_prd 本身崩 | 不阻塞,用 3 道锁自检代替,记"自动评分暂不可用" |
185
+ | eval_prd <80% | 完整档修到 ≥80%;快档只看锁②,不阻塞 |
186
+ | fill_prototype | 读模板手写起步,颜色只取 context_pack 第6段真源 |
187
+ | REQ-ID 分配器失败 | 扫最大号+1,文件名带 `-manual`,push 时 team_sync 校验唯一 |
188
+ | team_sync SYNC_CONFLICT | AI 按脚本给的命令自行解决,不让用户碰 git |
189
+
190
+ > 完整降级表(含平台答错、归档失败等)见 `.qoder/commands/wl-prd.md` 的「故障降级表」。
191
+
192
+ ## 取上下文 — 一次取全(不要逐个搜)
193
+
194
+ ```bash
195
+ $PY "$R/.qoder/scripts/orchestration/wlkj.py" context <关键词> --platform <web|app>
196
+ ```
197
+ 返回 7 章节(代码+页面+字段+PRD+API+样式+Wiki)。**只读最相关 1-2 Vue 文件**。
198
+
199
+ ## PRD 模板
200
+
201
+ | 档位 | 模板 | mode 标记 |
202
+ |------|------|----------|
203
+ | 快档 | `.qoder/templates/prd-quick-template.md` | `<!-- mode: quick -->` |
204
+ | 完整档(默认) | `.qoder/templates/prd-full-template.md` | `<!-- mode: reference -->` |
205
+
206
+ > planning/brainstorm 两个 mode 标记**已随探索能力迁至 /wl-insight**,prd 不再主动产出。
207
+ > 模板头部已含 mode 标记。生成时**只改 mode 值,别删标记**——
208
+ > syncgate/eval_prd 靠它识别模式(quick 跳过 EVA 完整检查,其余全跑)。
209
+
210
+ ## 质量自检(10 项,快档跳过)
211
+ 1. 背景回答"为什么" 2. 目标可量化 3. 用户画像具体
212
+ 4. 业务规则完整 5. 异常覆盖(2+) 6. 验收可测(Given-When-Then)
213
+ 7. 数据事件完整 8. PRD 无技术实现 9. 优先级标注 10. 排期合理
214
+
215
+ ## 原型规则
216
+
217
+ - 从模板开始(`.qoder/templates/prototype-{web|app}.html`),模板已有正确颜色与 mixed-nav 多级菜单骨架
218
+ - 先跑 `$PY "$R/.qoder/scripts/orchestration/wlkj.py" fill-prototype <关键词> --platform <web|app>` 拿 80% 草稿;
219
+ 它会按目标项目的 `layout_fingerprint` 自动填示例菜单骨架和真实字段,你只微调 20%
220
+ - 颜色/布局指纹见 fill_prototype 输出的"设计 Token"段(布局模式/主色/侧边栏宽度)
221
+ - **菜单层级**: 若需求描述了侧边栏/菜单结构(如"一级→二级,右侧三四级"),
222
+ 严格按它填 `{{TOP_MENU}}`/`{{SIDEBAR_MENU}}`/`{{TABS}}` —— 模板是 mixed-nav
223
+ 多级骨架,不要退化成扁平单级 sidebar
224
+ - 只改 diff 部分,新功能高亮
225
+ - 单 HTML 文件,可交互
226
+ - Web: mixed-nav(顶部一级+左侧二级三级+标签页);APP: 375px + 底部 tab
227
+
228
+ ## STEP:自动归档到个人时间线(可选增强 · 失败不影响 PRD)
229
+
230
+ PRD 写入 drafts 后,**顺手归档一份**到当前成员的按时间文件夹,方便人翻查"我那天做了啥":
231
+
232
+ ```bash
233
+ $PY "$R/.qoder/scripts/orchestration/wlkj.py" archive-prd <刚生成的PRD文件路径>
234
+ ```
235
+
236
+ > 归档产物:`workspace/members/{你的名字}/archive/{YYYY-MM-DD}/REQ-{编号}-{中文标题}.md`
237
+ > 同时更新 `archive/_index.md`(按周/月汇总)和当天 `_index.md`。
238
+
239
+ **规则:**
240
+ - 只**复制**不移动,drafts 原件保留,data/docs/prd/ 完全不碰 → 不影响搜索/撞号检测
241
+ - 归属看当前操作者(.developer),不看"产品负责人"字段 开发/测试/产品都能用
242
+ - 脚本内部全程 try/except,**失败只 print 一句,绝不阻塞 PRD 生成**
243
+ - 多端 PRD(Web + APP 各一份)可一次传多个路径批量归档
244
+
245
+ **非侵入**:用户没用 PRD 命令时本步骤完全不触发,QODER 原生流程零影响。