@hupan56/wlkj 2.7.11 → 3.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.
Files changed (152) hide show
  1. package/bin/cli.js +375 -78
  2. package/package.json +29 -29
  3. package/templates/.qoder/.runtime/ctx-cache-5660152f1d6dd819.md +23 -0
  4. package/templates/.qoder/.runtime/ctx-cache-afdce0dac06b25b0.md +23 -0
  5. package/templates/.qoder/.runtime/search-cache-eae7644e7b122f35.txt +1 -0
  6. package/templates/.qoder/learning/eval-history.jsonl +28 -0
  7. package/templates/data/index/wiki-index.json +8 -0
  8. package/templates/qoder/agents/insight-planning.md +1 -1
  9. package/templates/qoder/agents/insight-research.md +28 -15
  10. package/templates/qoder/commands/optional/wl-insight.md +159 -161
  11. package/templates/qoder/commands/optional/wl-report.md +4 -4
  12. package/templates/qoder/commands/optional/wl-status.md +2 -2
  13. package/templates/qoder/commands/wl-code.md +2 -2
  14. package/templates/qoder/commands/wl-design.md +2 -2
  15. package/templates/qoder/commands/wl-init.md +3 -3
  16. package/templates/qoder/commands/wl-prd.md +2 -2
  17. package/templates/qoder/commands/wl-req.md +43 -0
  18. package/templates/qoder/commands/wl-search.md +8 -8
  19. package/templates/qoder/commands/wl-task.md +17 -17
  20. package/templates/qoder/commands/wl-test.md +41 -15
  21. package/templates/qoder/config.yaml +17 -1
  22. package/templates/qoder/hooks/session-start.py +12 -22
  23. package/templates/qoder/nul +4 -0
  24. package/templates/qoder/rules/wl-pipeline.md +22 -48
  25. package/templates/qoder/scripts/README.md +139 -0
  26. package/templates/qoder/scripts/common/autotest_auth.py +109 -0
  27. package/templates/qoder/scripts/common/bootstrap.py +145 -0
  28. package/templates/qoder/scripts/common/check_publish.py +98 -0
  29. package/templates/qoder/scripts/common/cmd_registry.py +112 -0
  30. package/templates/qoder/scripts/common/config.py +187 -0
  31. package/templates/qoder/scripts/common/contract.py +317 -0
  32. package/templates/qoder/scripts/common/developer.py +2 -1
  33. package/templates/qoder/scripts/common/feishu.py +10 -9
  34. package/templates/qoder/scripts/common/guard.py +159 -0
  35. package/templates/qoder/scripts/common/identity.py +121 -2
  36. package/templates/qoder/scripts/common/kg_capabilities.py +182 -0
  37. package/templates/qoder/scripts/common/mcp_base.py +268 -0
  38. package/templates/qoder/scripts/common/paths.py +187 -1
  39. package/templates/qoder/scripts/common/result.py +223 -0
  40. package/templates/qoder/scripts/common/roles.py +60 -0
  41. package/templates/qoder/scripts/common/task_utils.py +21 -9
  42. package/templates/qoder/scripts/common/test_extract.py +115 -0
  43. package/templates/qoder/scripts/kg/__init__.py +11 -0
  44. package/templates/qoder/scripts/kg/build_entity_registry.py +196 -0
  45. package/templates/qoder/scripts/kg/build_relations.py +127 -0
  46. package/templates/qoder/scripts/{build_style_index.py → kg/build_style_index.py} +39 -10
  47. package/templates/qoder/scripts/kg/build_workflows.py +144 -0
  48. package/templates/qoder/scripts/{context_pack.py → kg/context_pack.py} +18 -11
  49. package/templates/qoder/scripts/{enrich_prompt.py → kg/enrich_prompt.py} +232 -226
  50. package/templates/qoder/scripts/{extract_api_params.py → kg/extract.py} +398 -246
  51. package/templates/qoder/scripts/{kg.py → kg/kg.py} +638 -708
  52. package/templates/qoder/scripts/{kg_build.py → kg/kg_build.py} +618 -612
  53. package/templates/qoder/scripts/{kg_build_db.py → kg/kg_build_db.py} +333 -327
  54. package/templates/qoder/scripts/{kg_duckdb.py → kg/kg_duckdb.py} +38 -37
  55. package/templates/qoder/scripts/{kg_incremental.py → kg/kg_incremental.py} +420 -393
  56. package/templates/qoder/scripts/{kg_link_db.py → kg/kg_link_db.py} +230 -224
  57. package/templates/qoder/scripts/{kg_semantic.py → kg/kg_semantic.py} +156 -150
  58. package/templates/qoder/scripts/kg/prefetch.py +359 -0
  59. package/templates/qoder/scripts/{search_index.py → kg/search_index.py} +70 -14
  60. package/templates/qoder/scripts/mcp/__init__.py +11 -0
  61. package/templates/qoder/scripts/{kg_mcp_server.py → mcp/kg_mcp_server.py} +77 -272
  62. package/templates/qoder/scripts/{lanhu_stdio_wrapper.py → mcp/lanhu_stdio_wrapper.py} +125 -119
  63. package/templates/qoder/scripts/{check_mcp.py → mcp/mcp_doctor.py} +515 -298
  64. package/templates/qoder/scripts/{mcp_launcher.py → mcp/mcp_launcher.py} +442 -414
  65. package/templates/qoder/scripts/{mysql_mcp_server.py → mcp/mysql_mcp_server.py} +347 -396
  66. package/templates/qoder/scripts/{zentao_mcp_server.py → mcp/zentao_mcp_server.py} +384 -424
  67. package/templates/qoder/scripts/report/__init__.py +11 -0
  68. package/templates/qoder/scripts/{add_session.py → report/add_session.py} +250 -244
  69. package/templates/qoder/scripts/{archive_prd.py → report/archive_prd.py} +383 -377
  70. package/templates/qoder/scripts/{eval_prd.py → report/eval_prd.py} +73 -11
  71. package/templates/qoder/scripts/{export.py → report/export.py} +63 -0
  72. package/templates/qoder/scripts/{fill_prototype.py → report/fill_prototype.py} +6 -0
  73. package/templates/qoder/scripts/{gen_design_doc.py → report/gen_design_doc.py} +400 -394
  74. package/templates/qoder/scripts/{learn.py → report/learn.py} +152 -146
  75. package/templates/qoder/scripts/{learn_aggregate.py → report/learn_aggregate.py} +207 -201
  76. package/templates/qoder/scripts/{report.py → report/report.py} +287 -281
  77. package/templates/qoder/scripts/report/req.py +222 -0
  78. package/templates/qoder/scripts/report/role.py +33 -0
  79. package/templates/qoder/scripts/{status.py → report/status.py} +634 -628
  80. package/templates/qoder/scripts/setup/__init__.py +11 -0
  81. package/templates/qoder/scripts/setup/carriers.py +662 -0
  82. package/templates/qoder/scripts/{init_doctor.py → setup/init_doctor.py} +63 -26
  83. package/templates/qoder/scripts/{install_qoderwork.py → setup/install_qoderwork.py} +36 -26
  84. package/templates/qoder/scripts/{platform_doctor.py → setup/platform_doctor.py} +265 -259
  85. package/templates/qoder/scripts/{repo_root.py → setup/repo_root.py} +112 -106
  86. package/templates/qoder/scripts/{setup.py → setup/setup.py} +147 -0
  87. package/templates/qoder/scripts/{setup_lanhu.py → setup/setup_lanhu.py} +973 -963
  88. package/templates/qoder/scripts/task/__init__.py +11 -0
  89. package/templates/qoder/scripts/{git_sync.py → task/git_sync.py} +52 -31
  90. package/templates/qoder/scripts/{syncgate.py → task/syncgate.py} +6 -0
  91. package/templates/qoder/scripts/task/task.py +221 -0
  92. package/templates/qoder/scripts/task/task_lifecycle.py +596 -0
  93. package/templates/qoder/scripts/task/task_query.py +161 -0
  94. package/templates/qoder/scripts/task/task_relations.py +424 -0
  95. package/templates/qoder/scripts/{team_sync.py → task/team_sync.py} +93 -20
  96. package/templates/qoder/scripts/test/__init__.py +11 -0
  97. package/templates/qoder/scripts/{autotest.py → test/autotest.py} +1174 -1751
  98. package/templates/qoder/scripts/{autotest_batch.py → test/autotest_batch.py} +242 -224
  99. package/templates/qoder/scripts/test/autotest_data.py +675 -0
  100. package/templates/qoder/scripts/{autotest_run.py → test/autotest_run.py} +309 -297
  101. package/templates/qoder/scripts/{benchmark.py → test/benchmark.py} +6 -0
  102. package/templates/qoder/scripts/{kg_auto_login.py → test/kg_auto_login.py} +202 -196
  103. package/templates/qoder/scripts/{kg_test_runner.py → test/kg_test_runner.py} +7 -1
  104. package/templates/qoder/scripts/{page_probe.py → test/page_probe.py} +465 -459
  105. package/templates/qoder/scripts/wlkj.py +116 -0
  106. package/templates/qoder/settings.json +1 -10
  107. package/templates/qoder/skills/design-import/SKILL.md +226 -226
  108. package/templates/qoder/skills/design-review/SKILL.md +82 -82
  109. package/templates/qoder/skills/prd-generator/SKILL.md +26 -16
  110. package/templates/qoder/skills/prd-review/SKILL.md +5 -5
  111. package/templates/qoder/skills/prototype-generator/SKILL.md +256 -256
  112. package/templates/qoder/skills/spec-coder/SKILL.md +4 -4
  113. package/templates/qoder/skills/spec-generator/SKILL.md +4 -4
  114. package/templates/qoder/skills/test-generator/SKILL.md +5 -5
  115. package/templates/qoder/skills/wl-code/SKILL.md +4 -4
  116. package/templates/qoder/skills/wl-commit/SKILL.md +4 -4
  117. package/templates/qoder/skills/wl-design/SKILL.md +3 -3
  118. package/templates/qoder/skills/wl-init/SKILL.md +8 -8
  119. package/templates/qoder/skills/wl-insight/SKILL.md +5 -5
  120. package/templates/qoder/skills/wl-prd-full/SKILL.md +6 -6
  121. package/templates/qoder/skills/wl-prd-quick/SKILL.md +6 -6
  122. package/templates/qoder/skills/wl-prd-review/SKILL.md +4 -4
  123. package/templates/qoder/skills/wl-report/SKILL.md +7 -7
  124. package/templates/qoder/skills/wl-search/SKILL.md +13 -13
  125. package/templates/qoder/skills/wl-spec/SKILL.md +5 -5
  126. package/templates/qoder/skills/wl-status/SKILL.md +5 -5
  127. package/templates/qoder/skills/wl-task/SKILL.md +6 -6
  128. package/templates/qoder/skills/wl-test/SKILL.md +102 -39
  129. package/templates/root/AGENTS.md +39 -40
  130. package/templates/qoder/hooks/inject-workflow-state.py +0 -169
  131. package/templates/qoder/scripts/__pycache__/check_mcp_launch.cpython-39.pyc +0 -0
  132. package/templates/qoder/scripts/__pycache__/install_qoderwork.cpython-39.pyc +0 -0
  133. package/templates/qoder/scripts/__pycache__/mcp_launcher.cpython-39.pyc +0 -0
  134. package/templates/qoder/scripts/__pycache__/platform_doctor.cpython-39.pyc +0 -0
  135. package/templates/qoder/scripts/check_carriers.py +0 -238
  136. package/templates/qoder/scripts/check_mcp_launch.py +0 -183
  137. package/templates/qoder/scripts/check_qoderwork_consistency.py +0 -166
  138. package/templates/qoder/scripts/collect_prds.py +0 -31
  139. package/templates/qoder/scripts/common/mentions.py +0 -134
  140. package/templates/qoder/scripts/common/utf8.py +0 -38
  141. package/templates/qoder/scripts/extract_routes.py +0 -54
  142. package/templates/qoder/scripts/extract_routes_tree.py +0 -78
  143. package/templates/qoder/scripts/handoff.py +0 -22
  144. package/templates/qoder/scripts/init_developer.py +0 -76
  145. package/templates/qoder/scripts/parse_prds.py +0 -33
  146. package/templates/qoder/scripts/role.py +0 -51
  147. package/templates/qoder/scripts/sync_carriers.py +0 -259
  148. package/templates/qoder/scripts/task.py +0 -1261
  149. package/templates/qoder/scripts/workspace_init.py +0 -102
  150. package/templates/qoder/skills/prompt-enrich/SKILL.md +0 -90
  151. package/templates/qoder/skills/prototype-generator/SKILL.md.zcode-79180-2af4721f-f9a6-412c-88db-c0af680d211b.tmp +0 -0
  152. /package/templates/qoder/scripts/{secure-ls.js → test/secure-ls.js} +0 -0
package/package.json CHANGED
@@ -1,29 +1,29 @@
1
- {
2
- "name": "@hupan56/wlkj",
3
- "version": "2.7.11",
4
- "description": "AI Product R&D Workflow - PRD/Prototype/Search/Task/Report",
5
- "bin": {
6
- "wlkj": "bin/cli.js"
7
- },
8
- "files": [
9
- "bin/",
10
- "templates/",
11
- "MAC-VERIFY.md"
12
- ],
13
- "keywords": [
14
- "workflow",
15
- "ai",
16
- "prd",
17
- "pipeline",
18
- "qoder",
19
- "product",
20
- "team"
21
- ],
22
- "license": "MIT",
23
- "publishConfig": {
24
- "access": "public"
25
- },
26
- "engines": {
27
- "node": ">=16"
28
- }
29
- }
1
+ {
2
+ "name": "@hupan56/wlkj",
3
+ "version": "3.0.0",
4
+ "description": "AI Product R&D Workflow - PRD/Prototype/Search/Task/Report",
5
+ "bin": {
6
+ "wlkj": "bin/cli.js"
7
+ },
8
+ "files": [
9
+ "bin/",
10
+ "templates/",
11
+ "MAC-VERIFY.md"
12
+ ],
13
+ "keywords": [
14
+ "workflow",
15
+ "ai",
16
+ "prd",
17
+ "pipeline",
18
+ "qoder",
19
+ "product",
20
+ "team"
21
+ ],
22
+ "license": "MIT",
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "engines": {
27
+ "node": ">=16"
28
+ }
29
+ }
@@ -0,0 +1,23 @@
1
+ # Context Pack: 考勤 (platform: web)
2
+ 搜索词扩展: attendance clock time/clock timeclock
3
+
4
+ ## 1. 相关代码文件 (0 个, 取前 12)
5
+ - (无命中 — 换业务词重试, 或该功能为全新)
6
+
7
+ ## 2. 同类页面示例 (风格锚点, 读 1-2 个)
8
+
9
+ ## 3. 相关字段 (真实字段名->中文标题)
10
+ - (无直接相关字段)
11
+
12
+ ## 4. 相关历史 PRD (data/docs/prd/)
13
+ - (无相关 PRD)
14
+
15
+ ## 5. 相关 API (取前 8 / 共 0)
16
+ - (无相关 API)
17
+
18
+ ## 6. 风格真源速查
19
+ - Web Token: data/index/ref-vben-style.json (primary=hsl(214.58 86.34% 59.8%))
20
+ - 看板/大屏: data/index/ref-chart-style.json (大屏深蓝风 monitor / 浅色卡片风 workbench)
21
+ - 图标 (禁 emoji): data/index/ref-icon.json (Web=antd 内联SVG, APP=vant 字体)
22
+ - 模板: .qoder/templates/prototype-web.html / prototype-app.html
23
+ - PRD 模板: .qoder/templates/prd-full-template.md / prd-quick-template.md
@@ -0,0 +1,23 @@
1
+ # Context Pack: 保险 (platform: web)
2
+ 搜索词扩展: ins insurance vehlife/insurance
3
+
4
+ ## 1. 相关代码文件 (0 个, 取前 12)
5
+ - (无命中 — 换业务词重试, 或该功能为全新)
6
+
7
+ ## 2. 同类页面示例 (风格锚点, 读 1-2 个)
8
+
9
+ ## 3. 相关字段 (真实字段名->中文标题)
10
+ - (无直接相关字段)
11
+
12
+ ## 4. 相关历史 PRD (data/docs/prd/)
13
+ - (无相关 PRD)
14
+
15
+ ## 5. 相关 API (取前 8 / 共 0)
16
+ - (无相关 API)
17
+
18
+ ## 6. 风格真源速查
19
+ - Web Token: data/index/ref-vben-style.json (primary=hsl(214.58 86.34% 59.8%))
20
+ - 看板/大屏: data/index/ref-chart-style.json (大屏深蓝风 monitor / 浅色卡片风 workbench)
21
+ - 图标 (禁 emoji): data/index/ref-icon.json (Web=antd 内联SVG, APP=vant 字体)
22
+ - 模板: .qoder/templates/prototype-web.html / prototype-app.html
23
+ - PRD 模板: .qoder/templates/prd-full-template.md / prd-quick-template.md
@@ -0,0 +1 @@
1
+ code-keyword.json not found. Run: python git_sync.py
@@ -0,0 +1,28 @@
1
+ {"a1_reality": 0.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 0.0, "time": "2026-06-23T15:06:47.512881"}
2
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:06:48.151944"}
3
+ {"a1_reality": 0.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 0.0, "time": "2026-06-23T15:07:06.380363"}
4
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:07:20.277445"}
5
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T15:08:26.677411"}
6
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:08:27.209288"}
7
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T15:08:55.802944"}
8
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:08:56.234057"}
9
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T15:11:32.306461"}
10
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:11:32.761987"}
11
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T15:19:28.644771"}
12
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:19:29.240469"}
13
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T15:26:51.416116"}
14
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:26:52.129295"}
15
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T15:32:16.110663"}
16
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:32:16.669572"}
17
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T15:35:31.618489"}
18
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:35:32.085857"}
19
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T15:44:50.176279"}
20
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:44:50.849511"}
21
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T15:49:54.375114"}
22
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T15:49:54.852542"}
23
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T16:09:00.572162"}
24
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T16:09:01.184157"}
25
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T16:28:54.661703"}
26
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T16:28:55.227433"}
27
+ {"a1_reality": 0.5, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-good.md", "score_pct": 28.6, "time": "2026-06-23T16:46:57.600191"}
28
+ {"a1_reality": 1.0, "a2_style": null, "a3_template": 0.0, "passed": false, "prd": "req-poor.md", "score_pct": 57.1, "time": "2026-06-23T16:46:58.135094"}
@@ -0,0 +1,8 @@
1
+ {
2
+ "index": {},
3
+ "stats": {
4
+ "projects": 0,
5
+ "pages": 0,
6
+ "keywords": 0
7
+ }
8
+ }
@@ -23,7 +23,7 @@ You are the insight-planning sub-agent. Do NOT spawn another insight-planning ag
23
23
 
24
24
  ## Phase 1: 取现状(输入,不是本 agent 的活)
25
25
  - 从 dispatch prompt 或 context_pack 结果读现状摘要
26
- - 若现状信息不足 → 回报 caller"现状锚定不全,建议先跑 context_pack 或先做 discover"
26
+ - 若现状信息不足 → 回报 caller"现状锚定不全,建议先跑 context_pack 或先做 clarify 对焦"
27
27
 
28
28
  ## Phase 2: 理想态(如果有 research 报告)
29
29
  1. 读最近一份 `workspace/members/{dev}/drafts/insight-research-*.md`
@@ -1,12 +1,13 @@
1
- # Insight Research Agent(外部调研 · 多视角脑暴)
1
+ # Insight Research Agent(外部调研 · 多视角 + 方法论框架)
2
2
 
3
- > 本 agent 服务于 `/wl-insight research` 类型。完整规则见 `.qoder/commands/optional/wl-insight.md`。
4
- > 来源:整体从 prd-research.md 搬迁而来(脑暴 + web 搜索能力归 insight)。
3
+ > 本 agent 服务于 `/wl-insight` research 段。完整规则见 `.qoder/commands/optional/wl-insight.md`。
4
+ > ⚠️ **research 段只在用户明确同意"要调研"后才触发**(见 skill 2 段)。
5
+ > 绝不擅自调研——那是上一版的毛病。
5
6
 
6
7
  ## Required: Load Context First (Pull-Based)
7
8
  This platform does NOT auto-inject context. Before doing anything else:
8
- 1. Read the dispatch prompt to get: assigned perspective, topic,
9
- current state summary (from context_pack), developer name
9
+ 1. Read the dispatch prompt to get: assigned perspective, **assigned methodology**,
10
+ topic, current state summary (from context_pack), developer name
10
11
  2. If perspective is missing from dispatch prompt, STOP and report back:
11
12
  "perspective not specified - caller must assign one of: 竞品对标/行业趋势/技术方案/用户场景"
12
13
 
@@ -18,16 +19,25 @@ Do NOT spawn another insight-research agent.
18
19
  **全部输出必须简体中文。**(技术专有名词可保留英文)
19
20
 
20
21
  ## Your Role
21
- 你是 N 个调研 agent 中的一个,负责**一个特定视角**的外部调研。
22
- 你的视角在 dispatch prompt 里指定。你的产出是**中间产物**——
23
- caller(/wl-insight research)会把所有 agent 的报告合并成一份调研报告,
24
- 然后删除中间产物。
22
+ 你是 N 个调研 agent 中的一个,负责**一个特定视角**的外部调研,
23
+ 并用**指定的方法论框架**组织分析(让结论结构化、可对比,不是散点罗列)。
24
+ 你的视角和方法论在 dispatch prompt 里指定。你的产出是**中间产物**——
25
+ caller 会把所有 agent 的报告合并成一份调研报告,然后删除中间产物。
26
+
27
+ ## 方法论框架(按视角,dispatch 会指定用哪个)
28
+
29
+ | 视角 | 方法论 | 输出形态 |
30
+ |------|--------|---------|
31
+ | 竞品对标 | **竞品矩阵** | 功能对比表(我们 vs 竞品A vs B)+ 差异化机会 |
32
+ | 技术方案 | **技术选型对比** | 方案A vs B(成本/风险/成熟度/社区)矩阵 + 推荐 |
33
+ | 用户场景 | **JTBD + Kano** | "用户在完成什么 job" + 需求分类(基础/期望/兴奋) |
34
+ | 行业趋势 | **趋势时间线** | 过去→现在→未来节点 + 机会窗口 |
25
35
 
26
36
  ## Workflow
27
- 1. 从 dispatch prompt 读你的视角:竞品对标 / 行业趋势 / 技术方案 / 用户场景 之一
37
+ 1. 从 dispatch prompt 读你的**视角 + 方法论**
28
38
  2. 读 dispatch prompt 里的**本项目现状摘要**(让调研有针对性,不泛泛而谈)
29
39
  3. 用 WebSearch 搜 3-5 个权威源(官方文档 / 行业报告 / 技术博客 / 公开案例)
30
- 4. 从你的视角分析,重点找:**外部做得好而我们没做的**(Gap 信号)
40
+ 4. **用指定的方法论框架**组织分析,重点找:**外部做得好而我们没做的**(Gap 信号)
31
41
  5. 写到 `workspace/members/{dev}/drafts/research-agent-{N}-{视角}.md`
32
42
 
33
43
  > ⚠️ **不要凭训练记忆编数据**。搜不到就标"【待验证】",不要编竞品功能/数据。
@@ -35,14 +45,17 @@ caller(/wl-insight research)会把所有 agent 的报告合并成一份调
35
45
 
36
46
  ## Output Format
37
47
  ```markdown
38
- # 调研报告(中间产物):{视角}
48
+ # 调研报告(中间产物):{视角} · {方法论}
39
49
 
40
- ## 视角
41
- {你负责的视角}
50
+ ## 视角与方法论
51
+ {视角},用 {方法论} 框架分析
42
52
 
43
53
  ## 本项目现状(来自 dispatch)
44
54
  {一句话摘要,让读者知道对标基准}
45
55
 
56
+ ## 分析(用方法论框架组织)
57
+ {竞品矩阵 / 技术选型对比表 / JTBD+Kano 分类 / 趋势时间线}
58
+
46
59
  ## 关键发现
47
60
  1. {发现} —— 来源:{链接}
48
61
  - 对本项目的启发:{...}
@@ -57,5 +70,5 @@ caller(/wl-insight research)会把所有 agent 的报告合并成一份调
57
70
  ```
58
71
 
59
72
  > ⚠️ **本 agent 不生成 PRD。** 你是 research 类型的子 agent,产出中间产物。
60
- > 合并后的调研报告也不带 mode 标记(它不是 PRD)。
73
+ > 合并后的调研报告也不带 mode 根记(它不是 PRD)。
61
74
  > caller 合并后会删除所有 `research-agent-*.md` 中间产物。