@hupan56/wlkj 2.7.12 → 3.1.2
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/bin/cli.js +1435 -1107
- package/package.json +29 -29
- package/templates/qoder/agents/insight-planning.md +1 -1
- package/templates/qoder/agents/insight-research.md +28 -15
- package/templates/qoder/commands/optional/wl-insight.md +161 -161
- package/templates/qoder/commands/optional/wl-report.md +20 -39
- package/templates/qoder/commands/optional/wl-status.md +4 -4
- package/templates/qoder/commands/wl-code.md +2 -2
- package/templates/qoder/commands/wl-design.md +6 -6
- package/templates/qoder/commands/wl-init.md +3 -3
- package/templates/qoder/commands/wl-prd.md +26 -13
- package/templates/qoder/commands/wl-req.md +43 -0
- package/templates/qoder/commands/wl-search.md +78 -47
- package/templates/qoder/commands/wl-task.md +343 -40
- package/templates/qoder/commands/wl-test.md +43 -17
- package/templates/qoder/config.yaml +52 -14
- package/templates/qoder/hooks/post-tool-use.py +181 -0
- package/templates/qoder/hooks/session-start.py +94 -23
- package/templates/qoder/hooks/stop-eval.py +207 -0
- package/templates/qoder/hooks/user-prompt-submit.py +139 -0
- package/templates/qoder/rules/wl-pipeline.md +85 -49
- package/templates/qoder/scripts/README.md +102 -0
- package/templates/qoder/scripts/capability/__init__.py +26 -0
- package/templates/qoder/scripts/capability/__main__.py +72 -0
- package/templates/qoder/scripts/capability/adapters/__init__.py +29 -0
- package/templates/qoder/scripts/capability/adapters/cli.py +316 -0
- package/templates/qoder/scripts/capability/adapters/mcp.py +334 -0
- package/templates/qoder/scripts/capability/adapters/qw.py +271 -0
- package/templates/qoder/scripts/capability/caps/__init__.py +27 -0
- package/templates/qoder/scripts/capability/caps/context.py +36 -0
- package/templates/qoder/scripts/capability/caps/cron.py +50 -0
- package/templates/qoder/scripts/capability/caps/identity.py +43 -0
- package/templates/qoder/scripts/capability/caps/memory.py +71 -0
- package/templates/qoder/scripts/capability/caps/notify.py +41 -0
- package/templates/qoder/scripts/capability/caps/present.py +48 -0
- package/templates/qoder/scripts/capability/caps/repo.py +31 -0
- package/templates/qoder/scripts/capability/caps/sandbox.py +43 -0
- package/templates/qoder/scripts/capability/chain.py +92 -0
- package/templates/qoder/scripts/capability/memory_chain.py +41 -0
- package/templates/qoder/scripts/capability/registry.py +246 -0
- package/templates/qoder/scripts/capability/registry_mcp.py +250 -0
- package/templates/qoder/scripts/capability/smoke_test.py +211 -0
- package/templates/qoder/scripts/capability/smoke_test_report.json +94 -0
- package/templates/qoder/scripts/deployment/setup/__init__.py +11 -0
- package/templates/qoder/scripts/deployment/setup/carriers.py +669 -0
- package/templates/qoder/scripts/deployment/setup/carriers_verify.py +148 -0
- package/templates/qoder/scripts/{init_doctor.py → deployment/setup/init_doctor.py} +100 -39
- package/templates/qoder/scripts/{install_qoderwork.py → deployment/setup/install_qoderwork.py} +48 -30
- package/templates/qoder/scripts/{platform_doctor.py → deployment/setup/platform_doctor.py} +271 -259
- package/templates/qoder/scripts/{repo_root.py → deployment/setup/repo_root.py} +9 -2
- package/templates/qoder/scripts/{setup.py → deployment/setup/setup.py} +143 -14
- package/templates/qoder/scripts/{setup_lanhu.py → deployment/setup/setup_lanhu.py} +979 -963
- package/templates/qoder/scripts/domain/design/__init__.py +0 -0
- package/templates/qoder/scripts/{fill_prototype.py → domain/design/fill_prototype.py} +17 -5
- package/templates/qoder/scripts/{gen_design_doc.py → domain/design/gen_design_doc.py} +406 -394
- package/templates/qoder/scripts/domain/kg/__init__.py +11 -0
- package/templates/qoder/scripts/domain/kg/build/__init__.py +0 -0
- package/templates/qoder/scripts/domain/kg/build/build_entity_registry.py +201 -0
- package/templates/qoder/scripts/domain/kg/build/build_relations.py +132 -0
- package/templates/qoder/scripts/{build_style_index.py → domain/kg/build/build_style_index.py} +50 -15
- package/templates/qoder/scripts/domain/kg/build/build_workflows.py +149 -0
- package/templates/qoder/scripts/{kg_build.py → domain/kg/build/kg_build.py} +685 -612
- package/templates/qoder/scripts/{kg_build_db.py → domain/kg/build/kg_build_db.py} +338 -327
- package/templates/qoder/scripts/{kg_incremental.py → domain/kg/build/kg_incremental.py} +425 -393
- package/templates/qoder/scripts/{learn_aggregate.py → domain/kg/build/learn_aggregate.py} +212 -201
- package/templates/qoder/scripts/domain/kg/extract/__init__.py +0 -0
- package/templates/qoder/scripts/{common → domain/kg/extract}/extract.py +430 -419
- package/templates/qoder/scripts/domain/kg/extract/test_extract.py +115 -0
- package/templates/qoder/scripts/{common → domain/kg/extract}/ts_extract.py +614 -536
- package/templates/qoder/scripts/domain/kg/graph/__init__.py +0 -0
- package/templates/qoder/scripts/{kg_link_db.py → domain/kg/graph/kg_link_db.py} +235 -224
- package/templates/qoder/scripts/domain/kg/graph/kg_semantic.py +683 -0
- package/templates/qoder/scripts/{kg.py → domain/kg/kg.py} +871 -708
- package/templates/qoder/scripts/domain/kg/kg_capabilities.py +182 -0
- package/templates/qoder/scripts/domain/kg/search/__init__.py +0 -0
- package/templates/qoder/scripts/{context_pack.py → domain/kg/search/context_pack.py} +45 -17
- package/templates/qoder/scripts/{enrich_prompt.py → domain/kg/search/enrich_prompt.py} +238 -226
- package/templates/qoder/scripts/domain/kg/search/prefetch.py +384 -0
- package/templates/qoder/scripts/{common → domain/kg/search}/search_engine.py +207 -205
- package/templates/qoder/scripts/{search_index.py → domain/kg/search/search_index.py} +210 -88
- package/templates/qoder/scripts/domain/kg/server/__init__.py +0 -0
- package/templates/qoder/scripts/domain/kg/server/kgd.py +549 -0
- package/templates/qoder/scripts/domain/kg/server/perf_bench.py +197 -0
- package/templates/qoder/scripts/domain/kg/storage/__init__.py +0 -0
- package/templates/qoder/scripts/{kg_duckdb.py → domain/kg/storage/kg_duckdb.py} +70 -45
- package/templates/qoder/scripts/domain/learning/__init__.py +0 -0
- package/templates/qoder/scripts/{learn.py → domain/learning/learn.py} +157 -146
- package/templates/qoder/scripts/domain/report/__init__.py +11 -0
- package/templates/qoder/scripts/{add_session.py → domain/report/add_session.py} +256 -244
- package/templates/qoder/scripts/{export.py → domain/report/export.py} +72 -4
- package/templates/qoder/scripts/{report.py → domain/report/report.py} +292 -281
- package/templates/qoder/scripts/domain/report/report_snapshot.py +261 -0
- package/templates/qoder/scripts/domain/report/role.py +39 -0
- package/templates/qoder/scripts/{status.py → domain/report/status.py} +737 -628
- package/templates/qoder/scripts/domain/report/status_snapshot.py +191 -0
- package/templates/qoder/scripts/domain/requirement/__init__.py +0 -0
- package/templates/qoder/scripts/{archive_prd.py → domain/requirement/archive_prd.py} +389 -377
- package/templates/qoder/scripts/domain/requirement/req.py +228 -0
- package/templates/qoder/scripts/domain/task/__init__.py +11 -0
- package/templates/qoder/scripts/{git_sync.py → domain/task/git_sync.py} +90 -50
- package/templates/qoder/scripts/{syncgate.py → domain/task/syncgate.py} +18 -7
- package/templates/qoder/scripts/domain/task/task.py +229 -0
- package/templates/qoder/scripts/domain/task/task_lifecycle.py +606 -0
- package/templates/qoder/scripts/domain/task/task_query.py +162 -0
- package/templates/qoder/scripts/domain/task/task_relations.py +425 -0
- package/templates/qoder/scripts/{team_sync.py → domain/task/team_sync.py} +101 -23
- package/templates/qoder/scripts/domain/task/zentao_sync.py +370 -0
- package/templates/qoder/scripts/foundation/__init__.py +0 -0
- package/templates/qoder/scripts/foundation/bootstrap.py +145 -0
- package/templates/qoder/scripts/foundation/core/__init__.py +0 -0
- package/templates/qoder/scripts/foundation/core/cmd_registry.py +112 -0
- package/templates/qoder/scripts/foundation/core/config.py +187 -0
- package/templates/qoder/scripts/{common → foundation/core}/paths.py +706 -400
- package/templates/qoder/scripts/foundation/data/__init__.py +0 -0
- package/templates/qoder/scripts/foundation/data/contract.py +317 -0
- package/templates/qoder/scripts/{common → foundation/data}/events.py +2 -2
- package/templates/qoder/scripts/foundation/data/result.py +223 -0
- package/templates/qoder/scripts/{common → foundation/data}/task_utils.py +427 -392
- package/templates/qoder/scripts/foundation/identity/__init__.py +0 -0
- package/templates/qoder/scripts/foundation/identity/check_publish.py +103 -0
- package/templates/qoder/scripts/{common → foundation/identity}/developer.py +239 -238
- package/templates/qoder/scripts/foundation/identity/guard.py +159 -0
- package/templates/qoder/scripts/{common → foundation/identity}/identity.py +132 -9
- package/templates/qoder/scripts/foundation/identity/roles.py +60 -0
- package/templates/qoder/scripts/foundation/integrations/__init__.py +0 -0
- package/templates/qoder/scripts/{common → foundation/integrations}/active_task.py +30 -15
- package/templates/qoder/scripts/{common → foundation/integrations}/feishu.py +11 -10
- package/templates/qoder/scripts/{common → foundation/integrations}/terms.py +3 -3
- package/templates/qoder/scripts/foundation/integrations/zentao_client.py +220 -0
- package/templates/qoder/scripts/foundation/io/__init__.py +0 -0
- package/templates/qoder/scripts/{common → foundation/io}/filelock.py +1 -1
- package/templates/qoder/scripts/{common → foundation/io}/reqid.py +1 -1
- package/templates/qoder/scripts/foundation/protocol/__init__.py +0 -0
- package/templates/qoder/scripts/foundation/protocol/duckdb_conn.py +39 -0
- package/templates/qoder/scripts/foundation/protocol/mcp_base.py +268 -0
- package/templates/qoder/scripts/foundation/utils/__init__.py +0 -0
- package/templates/qoder/scripts/{common → foundation/utils}/eval_api.py +12 -1
- package/templates/qoder/scripts/{common → foundation/utils}/pip_install.py +23 -6
- package/templates/qoder/scripts/{common → foundation/utils}/platform_guard.py +1 -1
- package/templates/qoder/scripts/orchestration/__init__.py +0 -0
- package/templates/qoder/scripts/orchestration/wlkj.py +185 -0
- package/templates/qoder/scripts/protocol/__init__.py +0 -0
- package/templates/qoder/scripts/protocol/browser/README.md +207 -0
- package/templates/qoder/scripts/protocol/browser/SKILL.md +265 -0
- package/templates/qoder/scripts/protocol/browser/config.env +9 -0
- package/templates/qoder/scripts/protocol/browser/references/cdp-api.md +110 -0
- package/templates/qoder/scripts/protocol/browser/references/migration-2.5.3.md +72 -0
- package/templates/qoder/scripts/protocol/browser/references/site-patterns/.gitkeep +0 -0
- package/templates/qoder/scripts/protocol/browser/scripts/browser-discovery.mjs +138 -0
- package/templates/qoder/scripts/protocol/browser/scripts/cdp-proxy.mjs +672 -0
- package/templates/qoder/scripts/protocol/browser/scripts/check-deps.mjs +206 -0
- package/templates/qoder/scripts/protocol/browser/scripts/find-url.mjs +253 -0
- package/templates/qoder/scripts/protocol/browser/scripts/match-site.mjs +46 -0
- package/templates/qoder/scripts/protocol/browser/templates/config.env.template +9 -0
- package/templates/qoder/scripts/protocol/mcp/__init__.py +11 -0
- package/templates/qoder/scripts/protocol/mcp/kg_mcp_server.py +478 -0
- package/templates/qoder/scripts/{lanhu_stdio_wrapper.py → protocol/mcp/lanhu_stdio_wrapper.py} +131 -119
- package/templates/qoder/scripts/protocol/mcp/mcp_doctor.py +548 -0
- package/templates/qoder/scripts/protocol/mcp/mcp_launcher.py +600 -0
- package/templates/qoder/scripts/protocol/mcp/mysql_mcp_server.py +461 -0
- package/templates/qoder/scripts/protocol/mcp/zentao_mcp_server.py +1920 -0
- package/templates/qoder/scripts/protocol/transports/__init__.py +56 -0
- package/templates/qoder/scripts/protocol/transports/base.py +87 -0
- package/templates/qoder/scripts/protocol/transports/cli.py +132 -0
- package/templates/qoder/scripts/protocol/transports/http.py +141 -0
- package/templates/qoder/scripts/protocol/transports/stdio.py +293 -0
- package/templates/qoder/scripts/run_weekly_update.bat +27 -18
- package/templates/qoder/scripts/run_weekly_update.sh +22 -13
- package/templates/qoder/scripts/validation/__init__.py +0 -0
- package/templates/qoder/scripts/validation/eval/__init__.py +0 -0
- package/templates/qoder/scripts/validation/eval/perf-report-2026-06-24.md +139 -0
- package/templates/qoder/scripts/validation/eval/qwork_harness.py +617 -0
- package/templates/qoder/scripts/validation/eval/report-commands.md +220 -0
- package/templates/qoder/scripts/validation/eval/transcript_timing.py +386 -0
- package/templates/qoder/scripts/validation/metrics/__init__.py +0 -0
- package/templates/qoder/scripts/{eval_prd.py → validation/metrics/eval_prd.py} +84 -15
- package/templates/qoder/scripts/validation/metrics/usability_score.py +750 -0
- package/templates/qoder/scripts/validation/test/__init__.py +11 -0
- package/templates/qoder/scripts/validation/test/assertion_gen.py +551 -0
- package/templates/qoder/scripts/{autotest.py → validation/test/autotest.py} +1234 -1751
- package/templates/qoder/scripts/validation/test/autotest_auth.py +109 -0
- package/templates/qoder/scripts/{autotest_batch.py → validation/test/autotest_batch.py} +255 -224
- package/templates/qoder/scripts/validation/test/autotest_data.py +680 -0
- package/templates/qoder/scripts/validation/test/autotest_opencli.py +646 -0
- package/templates/qoder/scripts/{autotest_run.py → validation/test/autotest_run.py} +323 -297
- package/templates/qoder/scripts/validation/test/autotest_webaccess.py +571 -0
- package/templates/qoder/scripts/{benchmark.py → validation/test/benchmark.py} +17 -5
- package/templates/qoder/scripts/{kg_auto_login.py → validation/test/kg_auto_login.py} +208 -196
- package/templates/qoder/scripts/{kg_test_runner.py → validation/test/kg_test_runner.py} +13 -2
- package/templates/qoder/scripts/{page_probe.py → validation/test/page_probe.py} +470 -459
- package/templates/qoder/scripts/validation/test/smoke_all_commands.py +170 -0
- package/templates/qoder/settings.json +23 -2
- package/templates/qoder/skills/design-import/SKILL.md +235 -226
- package/templates/qoder/skills/design-review/SKILL.md +91 -82
- package/templates/qoder/skills/prd-generator/SKILL.md +38 -24
- package/templates/qoder/skills/prd-review/SKILL.md +8 -6
- package/templates/qoder/skills/prototype-generator/SKILL.md +296 -247
- package/templates/qoder/skills/spec-coder/SKILL.md +24 -15
- package/templates/qoder/skills/spec-generator/SKILL.md +24 -12
- package/templates/qoder/skills/test-generator/SKILL.md +9 -7
- package/templates/qoder/skills/wl-code/SKILL.md +25 -13
- package/templates/qoder/skills/wl-commit/SKILL.md +10 -9
- package/templates/qoder/skills/wl-design/SKILL.md +7 -5
- package/templates/qoder/skills/wl-init/SKILL.md +8 -8
- package/templates/qoder/skills/wl-insight/SKILL.md +25 -12
- package/templates/qoder/skills/wl-prd-full/SKILL.md +59 -8
- package/templates/qoder/skills/wl-prd-quick/SKILL.md +7 -7
- package/templates/qoder/skills/wl-prd-review/SKILL.md +18 -6
- package/templates/qoder/skills/wl-report/SKILL.md +27 -25
- package/templates/qoder/skills/wl-search/SKILL.md +151 -80
- package/templates/qoder/skills/wl-spec/SKILL.md +9 -7
- package/templates/qoder/skills/wl-status/SKILL.md +50 -18
- package/templates/qoder/skills/wl-task/SKILL.md +94 -12
- package/templates/qoder/skills/wl-test/SKILL.md +154 -45
- package/templates/qoder/templates/prd-full-template.md +7 -0
- package/templates/root/AGENTS.md +275 -237
- package/templates/root/requirements.txt +3 -0
- package/templates/root//344/275/277/347/224/250/350/257/264/346/230/216.md +3 -3
- package/templates/root//346/226/260/346/211/213/346/214/207/345/215/227.md +2 -2
- package/templates/qoder/hooks/inject-workflow-state.py +0 -169
- package/templates/qoder/scripts/__pycache__/check_mcp_launch.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/__pycache__/install_qoderwork.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/__pycache__/mcp_launcher.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/__pycache__/platform_doctor.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/check_carriers.py +0 -238
- package/templates/qoder/scripts/check_mcp.py +0 -298
- package/templates/qoder/scripts/check_mcp_launch.py +0 -183
- package/templates/qoder/scripts/check_qoderwork_consistency.py +0 -166
- package/templates/qoder/scripts/collect_prds.py +0 -31
- package/templates/qoder/scripts/common/mentions.py +0 -134
- package/templates/qoder/scripts/common/utf8.py +0 -38
- package/templates/qoder/scripts/extract_api_params.py +0 -246
- package/templates/qoder/scripts/extract_routes.py +0 -54
- package/templates/qoder/scripts/extract_routes_tree.py +0 -78
- package/templates/qoder/scripts/handoff.py +0 -22
- package/templates/qoder/scripts/init_developer.py +0 -76
- package/templates/qoder/scripts/kg_mcp_server.py +0 -801
- package/templates/qoder/scripts/kg_semantic.py +0 -150
- package/templates/qoder/scripts/mcp_launcher.py +0 -414
- package/templates/qoder/scripts/mysql_mcp_server.py +0 -396
- package/templates/qoder/scripts/parse_prds.py +0 -33
- package/templates/qoder/scripts/role.py +0 -51
- package/templates/qoder/scripts/sync_carriers.py +0 -259
- package/templates/qoder/scripts/task.py +0 -1261
- package/templates/qoder/scripts/workspace_init.py +0 -102
- package/templates/qoder/scripts/zentao_mcp_server.py +0 -424
- package/templates/qoder/skills/prompt-enrich/SKILL.md +0 -90
- /package/templates/qoder/scripts/{common → deployment}/__init__.py +0 -0
- /package/templates/qoder/{skills/prototype-generator/SKILL.md.zcode-79180-2af4721f-f9a6-412c-88db-c0af680d211b.tmp → scripts/domain/__init__.py} +0 -0
- /package/templates/qoder/scripts/{common → domain/kg/graph}/graph_traverse.py +0 -0
- /package/templates/qoder/scripts/{common → domain/kg/server}/repowiki.py +0 -0
- /package/templates/qoder/scripts/{common → foundation/io}/atomicio.py +0 -0
- /package/templates/qoder/scripts/{secure-ls.js → validation/test/secure-ls.js} +0 -0
package/templates/root/AGENTS.md
CHANGED
|
@@ -1,237 +1,275 @@
|
|
|
1
|
-
|
|
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
|
-
3
|
|
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
|
-
python .qoder/scripts/
|
|
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
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
206
|
-
-
|
|
207
|
-
|
|
208
|
-
-
|
|
209
|
-
|
|
210
|
-
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
`
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
##
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
1
|
+
# QODER Pipeline
|
|
2
|
+
|
|
3
|
+
## 🏗️ 架构: 引擎与数据分离 (Trellis 化)
|
|
4
|
+
|
|
5
|
+
`.qoder/` 一分为二 (v2.8.0+):
|
|
6
|
+
|
|
7
|
+
| 类别 | 内容 | 来源 | 进团队 git? |
|
|
8
|
+
|------|------|------|------------|
|
|
9
|
+
| **引擎代码** | `.qoder/scripts/` `skills/` `commands/` `agents/` `contracts/` `hooks/` `templates/` `rules/` | `npx @hupan56/wlkj init/update` 生成 | ❌ gitignore |
|
|
10
|
+
| **团队数据** | `.qoder/config.yaml` `config.toml` `settings.json` `learning/` + `data/` (kg.duckdb/索引) + `workspace/` (PRD/任务) | git 跟踪, 团队共享 | ✅ |
|
|
11
|
+
|
|
12
|
+
- 引擎代码**只由 npm 包生成**, 不再进团队 git → 彻底消除"引擎更新污染团队 git"和"新机 init 产生 unrelated histories"。
|
|
13
|
+
- Qoder 全系列仍读 `.qoder/` (路径不变), 只是引擎来源从 git 变成 npm 生成。
|
|
14
|
+
- 老团队升级 (管理员跑一次): `npx @hupan56/wlkj migrate`, 然后团队成员各自 `npx @hupan56/wlkj update`。
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## ⚠️ CRITICAL RULE #1: ALWAYS ASK PLATFORM FIRST
|
|
19
|
+
|
|
20
|
+
**When user asks for PRD or prototype, you MUST ask this question FIRST:**
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
这个需求是针对哪个平台?
|
|
24
|
+
|
|
25
|
+
1. **Web 管理端** (fywl-ui) - Ant Design Vue + VxeGrid 风格
|
|
26
|
+
2. **APP 移动端** (Carmg-H5) - Vant 风格
|
|
27
|
+
3. **两端都要**
|
|
28
|
+
|
|
29
|
+
请选择 (1/2/3):
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**DO NOT skip this question. DO NOT auto-detect. ALWAYS ASK.**
|
|
33
|
+
**Wait for user answer before doing ANYTHING else.**
|
|
34
|
+
**DO NOT search/read/analyze in the same turn as asking — the reply MUST end after the question.**
|
|
35
|
+
Asking platform + simultaneously searching code in the same response is a VIOLATION.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## CRITICAL RULE #2: Use /wl-search to find code
|
|
40
|
+
|
|
41
|
+
When user asks about code, business, API, feature:
|
|
42
|
+
1. **ALWAYS** use `/wl-search <keyword>` command first
|
|
43
|
+
2. Then read only the specific files returned
|
|
44
|
+
3. **NEVER** grep the entire codebase directly
|
|
45
|
+
|
|
46
|
+
Examples:
|
|
47
|
+
- "考勤代码在哪" -> /wl-search attendance
|
|
48
|
+
- "保险定时任务" -> /wl-search insurance
|
|
49
|
+
- "薪资API" -> /wl-search --api salary
|
|
50
|
+
|
|
51
|
+
## CRITICAL RULE #2.5: 触发方式(非侵入式 — v3.0)
|
|
52
|
+
|
|
53
|
+
工作流**只在显式调用时启动**,不主动干预普通对话。
|
|
54
|
+
|
|
55
|
+
**两种触发方式(且仅此两种):**
|
|
56
|
+
1. **斜杠命令**:`/wl-prd` `/wl-search` `/wl-req` 等 → 启动工作流
|
|
57
|
+
2. **npx**:`npx @hupan56/wlkj init/update` → 安装/同步
|
|
58
|
+
|
|
59
|
+
**自然语言不触发工作流。** 用户说"写个需求""查下代码"等,AI 正常回答,不自动拉入工作流。
|
|
60
|
+
(工作流启动后的过程内交互 — 如选平台、确认需求 — 仍可用自然语言。)
|
|
61
|
+
|
|
62
|
+
### 禅道自然查询(非命令,直接回答)
|
|
63
|
+
|
|
64
|
+
用户随口问禅道("我的任务""看下#301""Bug 状态""我的需求")—— **直接用禅道 MCP 工具自然回答**,
|
|
65
|
+
不拉入 `/wl-task` 工作流:
|
|
66
|
+
- QoderWork: `qw_mcp_call("my_workbench", {})` 一行看全(任务+需求+Bug)
|
|
67
|
+
- CLI/其他: `cap.mcp.call("my_workbench")`
|
|
68
|
+
|
|
69
|
+
只有**显式工序**(`/wl-task` 建需求/记工时/改状态)才走工作流。
|
|
70
|
+
> 工具用真实工具名,别拿需求冒充任务回答(问任务查 task 域,查不到如实说"没有")。
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
注意区分:"同步/保存产出" = team_sync(push);"提交/commit 代码" = wl-commit。
|
|
74
|
+
|
|
75
|
+
## CRITICAL RULE #3: User NEVER touches git
|
|
76
|
+
|
|
77
|
+
PMs on this team do not know git. ALL git operations are invisible:
|
|
78
|
+
- After any publish/save action (/wl-prd publish, /wl-task create/finish,
|
|
79
|
+
/wl-report save), run: `python .qoder/scripts/task/team_sync.py push`
|
|
80
|
+
- To get teammates' latest work: `python .qoder/scripts/task/team_sync.py pull`
|
|
81
|
+
- If team_sync prints SYNC_CONFLICT, YOU (the AI) resolve the conflict
|
|
82
|
+
yourself (it tells you the commands). NEVER ask the user to run git.
|
|
83
|
+
- When the user says 同步/保存/提交 in natural language -> team_sync, not raw git.
|
|
84
|
+
|
|
85
|
+
## Platform Filtering
|
|
86
|
+
|
|
87
|
+
After user selects platform, use it for search:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Search by platform
|
|
91
|
+
/wl-search 保险 --platform web # Only fywl-ui (PC)
|
|
92
|
+
/wl-search 保险 --platform app # Only Carmg-H5 (Mobile)
|
|
93
|
+
/wl-search 保险 # Both platforms
|
|
94
|
+
|
|
95
|
+
# Platform shortcuts
|
|
96
|
+
web/pc/管理端 -> fywl-ui
|
|
97
|
+
app/mobile/h5/移动端 -> Carmg-H5
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Commands: 7 Core (小而美) + Optional
|
|
101
|
+
|
|
102
|
+
> 认知面只暴露 7 个核心命令,每个是一道工序站,每个带模式参数。
|
|
103
|
+
> **一个命令当多个用**——记不住参数也没关系,自然语言一样路由。
|
|
104
|
+
> 模块契约(输入/输出/校验)见 `.qoder/contracts/`。
|
|
105
|
+
|
|
106
|
+
### 7 Core Commands(记住这 7 个就够)
|
|
107
|
+
|
|
108
|
+
| Command | 工序站 | 模式参数(第一个词路由) | Auto | 背后 skill |
|
|
109
|
+
|---------|--------|------------------------|------|-----------|
|
|
110
|
+
| `/wl-init` | 身份 | (无) | YES | wl-init |
|
|
111
|
+
| `/wl-prd` | 需求 | 语义路由: 完整档/小改动/评审 (原 wl-prd-full/quick/review 合并) | YES | prd-generator/prd-review |
|
|
112
|
+
| `/wl-design` | 设计 | `import`/`generate`/`review` 或默认(import) | YES | design-import/prototype-generator/design-review |
|
|
113
|
+
| `/wl-task` | 任务 | `create`/`list`/`start`/`finish` | YES | wl-task |
|
|
114
|
+
| `/wl-code` | 编码 | (无,按 spec 实现) | NO | spec-coder |
|
|
115
|
+
| `/wl-test` | 测试 | `quick`/`browser`/`unit` 或默认(quick) | NO | wl-test / test-generator |
|
|
116
|
+
| `/wl-commit` | 提交 | (无) | NO | wl-commit |
|
|
117
|
+
|
|
118
|
+
### Optional Commands(长大了再开,非执行链路必经)
|
|
119
|
+
|
|
120
|
+
> 物理上归在 `.qoder/commands/optional/` 子目录(Qoder IDE 会按子目录归类显示),
|
|
121
|
+
> QoderWork 安装脚本已支持递归扫描,4 个照样能装到用户级。
|
|
122
|
+
|
|
123
|
+
| Command | 用途 | 何时用 |
|
|
124
|
+
|---------|------|--------|
|
|
125
|
+
| `/wl-search` | 代码索引搜索 | 全员工具,按需,非工序站(物理在 `commands/` 顶层) |
|
|
126
|
+
| `/wl-req` | 需求 CRUD + 发布 | 需求生命周期管理(创建/编辑/发布/归档) |
|
|
127
|
+
| `/wl-spec` | PRD→技术规格 | 需求复杂时(小团队可直接 `/wl-code`) |
|
|
128
|
+
| `/wl-status` | 项目健康度/路线图 | 需要 PMO/汇报时 |
|
|
129
|
+
| `/wl-report` | 日报周报 | 需要向上汇报时 |
|
|
130
|
+
| `/wl-insight` | 需求澄清对焦(默认)/调研/规划 | 需求模糊听不懂、要做调研或规划时(位于 /wl-prd 之前)。最高频:产品听不懂用户时快速对焦(必要时出原型图帮助理解),对齐后再问要不要调研 |
|
|
131
|
+
|
|
132
|
+
> **新人只需记 7 个核心命令**,能把活从需求干到提交。可选 6 个按场景启用。
|
|
133
|
+
|
|
134
|
+
## Knowledge Index
|
|
135
|
+
|
|
136
|
+
3 projects: Carmg-H5(1378 files), fywl-ics(8973 files, 3903 APIs), fywl-ui(3270 files)
|
|
137
|
+
Search: /wl-search <keyword> returns compact results (~200 bytes)
|
|
138
|
+
Weekly sync: python .qoder/scripts/task/git_sync.py
|
|
139
|
+
|
|
140
|
+
### MCP Servers (QoderWork / Qoder IDE)
|
|
141
|
+
注册在 `~/.qoderwork/mcp.json`,setup.py 一键配齐:
|
|
142
|
+
- `qoder-knowledge-graph` (stdio) — 本仓库知识图谱,13 个工具 (search_code/api, get_impact, context_360, fill_prototype, get_design_system...)。自动拉起。
|
|
143
|
+
- `playwright` (stdio) — 浏览器自动化,快且稳。自动拉起。
|
|
144
|
+
- `qoder-mysql` (stdio) — 只读查真实数据库结构/数据。自动拉起。
|
|
145
|
+
- `lanhu` (STDIO) — 蓝湖设计稿直读,设计师发链接 AI 提取颜色/尺寸/字体/切图。
|
|
146
|
+
**STDIO 模式:开 QoderWork 自动起、关自动停**(QoderWork 原生进程管理,无需手动 start)。
|
|
147
|
+
cookie 按角色隔离(UI 能改稿/PM 只读):wrapper 读当前 `.developer` → 该角色的 `workspace/members/{dev}/.secrets/lanhu.env`(gitignored)。换角色改 `.developer` + 配该角色 cookie → 重启 QoderWork。首次配置跑 `python .qoder/scripts/setup/setup_lanhu.py`。
|
|
148
|
+
|
|
149
|
+
### Style Index (Prototype Reference)
|
|
150
|
+
UI patterns from Vue files: Tables(718), Forms(301), Detail(129), Dashboard(90)
|
|
151
|
+
Top components: Space(583), Modal(270), Select(172), Input(134)
|
|
152
|
+
Form components: Input(2262), Select(1049), ApiSelect(725), DatePicker(265)
|
|
153
|
+
Field map: 2383 entries
|
|
154
|
+
|
|
155
|
+
Style search:
|
|
156
|
+
python .qoder/scripts/kg/search_index.py --style table/form/modal/dashboard
|
|
157
|
+
python .qoder/scripts/kg/search_index.py --field <field_name>
|
|
158
|
+
python .qoder/scripts/kg/search_index.py --components
|
|
159
|
+
python .qoder/scripts/kg/search_index.py --vben # Vben Admin CSS variables
|
|
160
|
+
|
|
161
|
+
Prototype templates:
|
|
162
|
+
.qoder/templates/prototype-web.html # Web管理端 (Vben Admin + Ant Design)
|
|
163
|
+
.qoder/templates/prototype-app.html # APP移动端 (Vant)
|
|
164
|
+
|
|
165
|
+
Prototype output: workspace/members/{dev}/drafts/prototype-{feature}.html
|
|
166
|
+
Style priority: Code > PDF > Default
|
|
167
|
+
|
|
168
|
+
## Workflow: 契约网(非强制流水线)
|
|
169
|
+
|
|
170
|
+
模块间**不强制顺序**,靠标准契约文件对接(详见 `.qoder/contracts/`)。
|
|
171
|
+
完整链路**可以**这么走,但任何模块都能独立开机:
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
/wl-init → /wl-prd (ASK PLATFORM!) → /wl-design → /wl-task → /wl-code → /wl-test → /wl-commit
|
|
175
|
+
身份 需求 设计 任务 编码 测试 提交
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**独立性**:每个模块认文件不认流程。缺上游 → 手动喂个契约文件,或用自然语言 +
|
|
179
|
+
`context_pack.py` 让 AI 自检索补全(见 `.qoder/contracts/fallback.md`)。
|
|
180
|
+
|
|
181
|
+
## Qoder 全系列兼容(IDE / Quest / CLI / QoderWork)
|
|
182
|
+
|
|
183
|
+
This pipeline works on Windows + macOS, across the **whole Qoder family**.
|
|
184
|
+
Each product loads rules from a different carrier — keep them in sync:
|
|
185
|
+
|
|
186
|
+
| 产品/模式 | 规则载体 | 命令载体 |
|
|
187
|
+
|-----------|---------|---------|
|
|
188
|
+
| Qoder IDE 默认编辑器 | .qoder/rules/wl-pipeline.md (always_on) | .qoder/commands/wl-*.md |
|
|
189
|
+
| Qoder Quest 模式 | .qoder/rules/ + .qoder/skills/ + .qoder/agents/ | 自然语言 -> skills |
|
|
190
|
+
| Qoder CLI (qodercli) | 本文件 AGENTS.md | 自然语言 -> scripts |
|
|
191
|
+
| QoderWork 桌面 Agent | 安装 .qoder/skills/ 下的技能 | 自然语言 -> skills |
|
|
192
|
+
|
|
193
|
+
> 本流水线聚焦 Qoder 全系列,4 种载体功能等价。知识图谱 13 个能力(影响分析/
|
|
194
|
+
> 覆盖矩阵/功能画像/业务流程/多跳遍历…)通过统一 CLI `python .qoder/scripts/kg/kg.py`
|
|
195
|
+
> 全系列触达;QoderWork 环境也可直接调 MCP 工具。
|
|
196
|
+
|
|
197
|
+
## QoderWork Integration: Optional Enhancement Only (Progressive Enhancement)
|
|
198
|
+
|
|
199
|
+
> 🔒 **核心原则:本流水线绝不强依赖 QoderWork。**
|
|
200
|
+
> 团队里有人用 Qoder IDE、有人用 Qoder CLI、有人用 QoderWork —— 必须保证前两者开箱即用、功能完整。
|
|
201
|
+
> QoderWork 的「连接器 / 专家套件 / 定时任务」只能是**可选增强**:有就锦上添花,没有就静默回退,绝不报错、绝不阻塞。
|
|
202
|
+
|
|
203
|
+
具体落实:
|
|
204
|
+
- **本地数据是唯一事实源**:task.json / git log / drafts / index 永远是真相,连接器只是它的"投影/补充"
|
|
205
|
+
- **增强段统一标记 `🧩 QoderWork 增强(可选)`**:出现在 wl-report / wl-task / wl-status 三个 skill 里,每段都明确写"无连接器则自动回退 + 不影响纯 Qoder 使用"
|
|
206
|
+
- **探测而非假设**:只在运行环境真正提供了「日历/待办/邮件」工具可读时才启用增强;看不到就跳过,补一句 `[xx 未启用:非 QoderWork 或未授权连接器]`
|
|
207
|
+
- 已接入的增强点:
|
|
208
|
+
- `/wl-report` 读日历补"会议/评审"到日报(补 PM/设计岗无提交的空窗)
|
|
209
|
+
- `/wl-task` 把任务同步为待办 + finish 后标记完成(本地仍为准)
|
|
210
|
+
- `/wl-status` 用真实日历节点校准"按时交付""团队同步"两维健康度
|
|
211
|
+
- 未来加任何 QoderWork 增强都必须遵循同样原则:**先保证纯 Qoder 可跑,再叠加可选层。**
|
|
212
|
+
|
|
213
|
+
- THE rule file: `.qoder/rules/wl-pipeline.md` — 修改流程规则时同步更新它和本文件
|
|
214
|
+
- Quest 修改 agents/skills 后需重启 Quest 窗口/新建对话才能生效(Qoder 已知限制)
|
|
215
|
+
- **Repo Wiki** (`.qoder/repowiki/`, Qoder IDE 生成): 存在则作为模块级知识源,
|
|
216
|
+
写 PRD 前优先查相关模块页。索引管"定位", Wiki 管"理解"。
|
|
217
|
+
⚠️ Wiki 由宿主从代码自动生成、会被重生成覆盖, **且 .gitignore 已排除** → 不可手写、不进团队 git
|
|
218
|
+
(团队共享知识走 `data/learning/patterns/` 和 `data/docs/`, 那里可写且进 git)。
|
|
219
|
+
- All scripts are pure Python 3 + git, path-autodetecting (no hardcoded
|
|
220
|
+
drive letters). Invoke as `python` (Windows) or `python3` (macOS).
|
|
221
|
+
- Weekly update: Windows -> scripts/setup_weekly_cron.bat,
|
|
222
|
+
macOS/Linux -> scripts/setup_weekly_cron.sh. Only ONE machine per team
|
|
223
|
+
needs this; everyone else gets the graph via /wl-init's auto pull.
|
|
224
|
+
- Environment problems of any kind -> run:
|
|
225
|
+
`python .qoder/scripts/setup/init_doctor.py` (add --fix to auto-repair).
|
|
226
|
+
|
|
227
|
+
## Fast Path: one call to get all context
|
|
228
|
+
|
|
229
|
+
`python .qoder/scripts/kg/context_pack.py <业务词> --platform <web|app>` returns
|
|
230
|
+
code files + page examples + field specs + PRDs + APIs + style/icon pointers
|
|
231
|
+
in ONE call. Use it FIRST; fall back to search_index.py for drill-down.
|
|
232
|
+
|
|
233
|
+
## Icons: NEVER emoji
|
|
234
|
+
|
|
235
|
+
Prototypes use the projects' real icon systems (data/index/icon-reference.json):
|
|
236
|
+
Web = Ant Design inline SVG, APP = Vant font icons. Emoji in a prototype = FAIL.
|
|
237
|
+
|
|
238
|
+
## Quality Gate (EVA)
|
|
239
|
+
|
|
240
|
+
Before publishing any PRD: `python .qoder/scripts/report/eval_prd.py <prd> [prototype]`
|
|
241
|
+
must PASS (>=80%). Metrics definition: data/docs/constitution/eva-metrics.md
|
|
242
|
+
|
|
243
|
+
## Workflow Usability (可用性)
|
|
244
|
+
|
|
245
|
+
回答"这套工作流对真实团队用不用得起来"——EVA 管 PRD 写得好不好, 本指标管工作流有没有人用。
|
|
246
|
+
```bash
|
|
247
|
+
python .qoder/scripts/orchestration/wlkj.py usability [--days N] # 或 --json
|
|
248
|
+
```
|
|
249
|
+
- 采纳(主): U1流程采纳率/U2一次过审率/U3返工轮数/U4规则违反率/U5绕过率/U6活跃度
|
|
250
|
+
- 流程(辅): F1端到端闭环率/F2转化漏斗/F3单命令效率/F4流程断点
|
|
251
|
+
- 每条指标标【自动/半自动/待埋点】, 算不了的明说不编造
|
|
252
|
+
- `/wl-status health` 的健康分含「工作流采纳」维度(权重10%)
|
|
253
|
+
- 指标定义 + 公式 + 阈值: `data/docs/constitution/workflow-usability-metrics.md`
|
|
254
|
+
- **交互看板**: `wlkj.py usability --html` → QoderWork 嵌入对话流 / CLI 落盘 dashboard.html
|
|
255
|
+
- **红灯自动沉淀**: 评测红/黄项自动 append 到 `data/learning/patterns/usability-patterns.md`(进 git 团队共享)
|
|
256
|
+
|
|
257
|
+
## Deterministic Hooks (确定性钩子 · 吸收宿主能力)
|
|
258
|
+
|
|
259
|
+
把"靠 AI 自觉"的规则升级为"宿主确定性执行"(不漂移、不依赖 LLM 服从性)。配置在 `.qoder/settings.json`:
|
|
260
|
+
|
|
261
|
+
| Hook | 时机 | 作用 | 阻断? |
|
|
262
|
+
|------|------|------|-------|
|
|
263
|
+
| `SessionStart` | 开会话 | 注入项目上下文 + 可用性红灯到 `<qoder-context>` | 否 |
|
|
264
|
+
| `UserPromptSubmit` | 用户提交 | `/wl-prd-*` 未带平台 → **exit 2 阻断**, 强制先问平台(治违规率) | 是 |
|
|
265
|
+
| `PostToolUse` | 工具执行后 | 写完 PRD/建完任务 → **自动埋点**(治漏斗断链) | 否 |
|
|
266
|
+
| `Stop` | Agent 说完成 | 产出 PRD 未跑 eval → **exit 2 阻断**, 强制 eval≥80%(带防递归) | 是 |
|
|
267
|
+
|
|
268
|
+
> 钩子契约: `exit 0` 放行 / `exit 2` 阻断(原因写 stderr) / 失败绝不崩会话。脚本草稿在 `.qoder/hooks/`。
|
|
269
|
+
|
|
270
|
+
## Permission Model
|
|
271
|
+
|
|
272
|
+
| Level | Commands | Auto |
|
|
273
|
+
|-------|---------|------|
|
|
274
|
+
| SAFE | /wl-init, /wl-prd, /wl-design, /wl-task, /wl-search, /wl-req, /wl-spec, /wl-status, /wl-insight, /wl-report | YES |
|
|
275
|
+
| DANGEROUS | /wl-code, /wl-test, /wl-commit | NO |
|
|
@@ -19,3 +19,6 @@ playwright>=1.40.0 # 浏览器自动化测试
|
|
|
19
19
|
# ── 可选增强 (按需装) ──
|
|
20
20
|
ddddocr>=1.4.7 # 验证码识别 (登录测试用)
|
|
21
21
|
cryptography>=37.0.0 # 飞书集成加密 (用飞书通知才装)
|
|
22
|
+
python-docx>=0.8.11 # PRD 导出 Word (export.py docx)
|
|
23
|
+
markdown>=3.5 # PRD 导出 (md→html→pdf 的 md→html 步骤)
|
|
24
|
+
sentence-transformers>=2.2.0 # 语义检索 (管理员装, 概念搜索"报销"命中 expense)
|
|
@@ -108,7 +108,7 @@ npx @hupan56/wlkj init
|
|
|
108
108
|
- "写个保险异常筛选的需求"
|
|
109
109
|
- "查一下考勤代码在哪"
|
|
110
110
|
- "建个任务:登录优化"
|
|
111
|
-
3. 或输入 `/` 看所有命令(`/wl-prd
|
|
111
|
+
3. 或输入 `/` 看所有命令(`/wl-prd` `/wl-search` 等)
|
|
112
112
|
|
|
113
113
|
**看不到 `/` 命令?**
|
|
114
114
|
- Quest 模式:新建一个对话
|
|
@@ -130,8 +130,8 @@ python .qoder/scripts/report.py daily
|
|
|
130
130
|
|
|
131
131
|
| 做什么 | 说什么 / 命令 |
|
|
132
132
|
|--------|-------------|
|
|
133
|
-
| 写完整需求 | "写个 XXX 的需求" 或 `/wl-prd
|
|
134
|
-
| 写小改动 | "快速写个 XXX" |
|
|
133
|
+
| 写完整需求 | "写个 XXX 的需求" 或 `/wl-prd` |
|
|
134
|
+
| 写小改动 | "快速写个 XXX" (自动走 `/wl-prd` 快速档) |
|
|
135
135
|
| 头脑风暴 | "脑暴一下 XXX" |
|
|
136
136
|
| 画原型 | 随需求自动生成 |
|
|
137
137
|
| 评审 PRD | "评审这个 PRD" |
|
|
@@ -72,7 +72,7 @@ npx wlkj init
|
|
|
72
72
|
|
|
73
73
|
| 命令 | 作用 |
|
|
74
74
|
|------|------|
|
|
75
|
-
| `/wl-prd
|
|
75
|
+
| `/wl-prd` | 写需求 (完整/快速/评审自动路由) |
|
|
76
76
|
| `/wl-search` | 查代码 |
|
|
77
77
|
| `/wl-task` | 管任务 |
|
|
78
78
|
| `/wl-status` | 看进度 |
|
|
@@ -174,7 +174,7 @@ npx wlkj init 你的名字
|
|
|
174
174
|
|
|
175
175
|
```
|
|
176
176
|
新项目 → mkdir 文件夹 && cd 文件夹 && npx wlkj init
|
|
177
|
-
写需求 → /wl-prd
|
|
177
|
+
写需求 → /wl-prd
|
|
178
178
|
查代码 → /wl-search
|
|
179
179
|
建任务 → /wl-task
|
|
180
180
|
看进度 → /wl-status
|