@hupan56/wlkj 3.3.7 → 3.3.9
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 +1 -1
- package/templates/qoder/commands/optional/wl-spec.md +12 -2
- package/templates/qoder/commands/optional/wl-status.md +8 -0
- package/templates/qoder/commands/wl-code.md +8 -0
- package/templates/qoder/commands/wl-commit.md +11 -1
- package/templates/qoder/commands/wl-data.md +46 -0
- package/templates/qoder/commands/wl-fix.md +47 -0
- package/templates/qoder/commands/wl-init.md +2 -2
- package/templates/qoder/commands/wl-knowledge.md +41 -0
- package/templates/qoder/commands/wl-prd.md +23 -22
- package/templates/qoder/commands/wl-review.md +49 -0
- package/templates/qoder/commands/wl-search.md +23 -27
- package/templates/qoder/commands/wl-task.md +11 -1
- package/templates/qoder/commands/wl-test.md +8 -0
- package/templates/qoder/contracts/insight.md +55 -0
- package/templates/qoder/hooks/__pycache__/pre-tool-use-commit.cpython-39.pyc +0 -0
- package/templates/qoder/hooks/__pycache__/pre-tool-use.cpython-39.pyc +0 -0
- package/templates/qoder/hooks/__pycache__/session-start.cpython-39.pyc +0 -0
- package/templates/qoder/hooks/__pycache__/stop-eval.cpython-39.pyc +0 -0
- package/templates/qoder/hooks/pre-tool-use-commit.py +124 -0
- package/templates/qoder/hooks/session-start.py +20 -1
- package/templates/qoder/hooks/stop-eval.py +129 -0
- package/templates/qoder/scripts/capability/adapters/mcp.py +1 -0
- package/templates/qoder/scripts/capability/registry.py +0 -3
- package/templates/qoder/scripts/domain/integration/return_to_platform.py +1 -0
- package/templates/qoder/scripts/domain/integration/spec_upload.py +3 -3
- package/templates/qoder/scripts/domain/kg/build/build_entity_registry.py +12 -12
- package/templates/qoder/scripts/domain/kg/build/build_relations.py +12 -12
- package/templates/qoder/scripts/foundation/__pycache__/__init__.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/foundation/io/__pycache__/__init__.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/foundation/io/__pycache__/context_cache.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/foundation/io/context_cache.py +94 -0
- package/templates/qoder/scripts/orchestration/__pycache__/wlkj.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/orchestration/wlkj.py +95 -0
- package/templates/qoder/scripts/tool_guide.md +70 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/alignment_matrix.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/bf2_content_fidelity.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/bf2_llmjudge.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/bf_score.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/code_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/dispatcher_ab.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/feature_fidelity_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/gradient_matrix.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/metrics_dashboard.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/multi_turn_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/prd_fidelity_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/prd_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/prototype_fidelity_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/recall_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/robustness_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/speed_accuracy_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/task_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/__pycache__/token_flywheel.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/eval/alignment_matrix.py +176 -0
- package/templates/qoder/scripts/validation/eval/bf2_content_fidelity.py +110 -0
- package/templates/qoder/scripts/validation/eval/bf2_llmjudge.py +104 -0
- package/templates/qoder/scripts/validation/eval/bf_score.py +218 -0
- package/templates/qoder/scripts/validation/eval/code_flywheel.py +150 -0
- package/templates/qoder/scripts/validation/eval/dispatcher_ab.py +156 -0
- package/templates/qoder/scripts/validation/eval/dispatcher_ab_2026-07-21.json +23 -0
- package/templates/qoder/scripts/validation/eval/feature_fidelity_flywheel.py +143 -0
- package/templates/qoder/scripts/validation/eval/gradient_matrix.py +261 -0
- package/templates/qoder/scripts/validation/eval/gradient_matrix_baseline_2026-07-21.json +33 -0
- package/templates/qoder/scripts/validation/eval/metrics_dashboard.py +105 -0
- package/templates/qoder/scripts/validation/eval/multi_turn_flywheel.py +118 -0
- package/templates/qoder/scripts/validation/eval/prd_fidelity_flywheel.py +128 -0
- package/templates/qoder/scripts/validation/eval/prd_flywheel.py +148 -0
- package/templates/qoder/scripts/validation/eval/prototype_fidelity_flywheel.py +166 -0
- package/templates/qoder/scripts/validation/eval/recall_flywheel.py +148 -0
- package/templates/qoder/scripts/validation/eval/robustness_flywheel.py +139 -0
- package/templates/qoder/scripts/validation/eval/speed_accuracy_flywheel.py +188 -0
- package/templates/qoder/scripts/validation/eval/task_flywheel.py +124 -0
- package/templates/qoder/scripts/validation/eval/token_flywheel.py +88 -0
- package/templates/qoder/scripts/validation/metrics/__pycache__/lint_cases.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/metrics/eval_code_ac.py +177 -0
- package/templates/qoder/scripts/validation/metrics/lint_cases.py +170 -0
- package/templates/qoder/scripts/validation/test/__pycache__/test_context_cache.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/validation/test/test_context_cache.py +78 -0
- package/templates/qoder/scripts/validation/test/test_lint_cases.py +60 -0
- package/templates/qoder/scripts/validation/test/test_pre_tool_use_commit.py +70 -0
- package/templates/qoder/settings.json +8 -0
- package/templates/qoder/skills/wl-spec/SKILL.md +1 -1
- package/templates/workspace/specs/REQ-TEST-CTX/.context-cache.json +1 -0
- package/templates/qoder/agents/design-agent.md +0 -20
- package/templates/qoder/agents/spec-generator.md +0 -21
- package/templates/qoder/scripts/capability/smoke_test_report.json.new +0 -94
- package/templates/qoder/scripts/domain/kg/extract/asset/__init__.py +0 -10
- package/templates/qoder/scripts/domain/kg/extract/asset/asset_tree.py +0 -57
- package/templates/qoder/scripts/domain/kg/extract/asset/discussion_importer.py +0 -62
- package/templates/qoder/scripts/domain/kg/extract/asset/prd_importer.py +0 -146
- package/templates/qoder/scripts/domain/kg/extract/asset/prototype_importer.py +0 -64
- package/templates/qoder/scripts/domain/kg/extract/asset/returns_importer.py +0 -52
- package/templates/qoder/scripts/domain/kg/extract/build_goal3.py +0 -104
- package/templates/qoder/scripts/domain/kg/extract/build_goal4.py +0 -55
- package/templates/qoder/scripts/domain/kg/extract/build_goal5.py +0 -95
- package/templates/qoder/scripts/domain/kg/extract/db/__init__.py +0 -8
- package/templates/qoder/scripts/domain/kg/extract/db/data_profile.py +0 -22
- package/templates/qoder/scripts/domain/kg/extract/db/fk_extractor.py +0 -55
- package/templates/qoder/scripts/domain/kg/extract/db/schema_extractor.py +0 -90
- package/templates/qoder/scripts/domain/kg/extract/inference/__init__.py +0 -9
- package/templates/qoder/scripts/domain/kg/extract/inference/community_summarizer.py +0 -206
- package/templates/qoder/scripts/domain/kg/extract/inference/embed_builder.py +0 -132
- package/templates/qoder/scripts/domain/kg/extract/inference/naming_matcher.py +0 -80
- package/templates/qoder/scripts/domain/kg/extract/inference/promote.py +0 -59
- package/templates/qoder/scripts/domain/kg/extract/inference/recompute.py +0 -93
- package/templates/qoder/scripts/domain/kg/extract/inference/weak_link.py +0 -421
- package/templates/qoder/scripts/domain/kg/extract/mybatis/__init__.py +0 -9
- package/templates/qoder/scripts/domain/kg/extract/mybatis/all.py +0 -79
- package/templates/qoder/scripts/domain/kg/extract/mybatis/mapper_parser.py +0 -99
- package/templates/qoder/scripts/domain/kg/extract/mybatis/relation_builder.py +0 -69
- package/templates/qoder/scripts/domain/kg/extract/mybatis/sql_extractor.py +0 -78
- package/templates/qoder/scripts/domain/kg/extract/prd/__init__.py +0 -8
- package/templates/qoder/scripts/domain/kg/extract/prd/prd_chunk_embed.py +0 -105
- package/templates/qoder/scripts/domain/kg/extract/prd/prd_llm_extract.py +0 -153
- package/templates/qoder/scripts/domain/kg/extract/prd/req_anchor.py +0 -120
- package/templates/qoder/scripts/domain/kg/graph/kg_link_db.py +0 -235
- package/templates/qoder/scripts/domain/kg/search/enrich_prompt.py +0 -238
- package/templates/qoder/scripts/domain/kg/server/perf_bench.py +0 -197
- package/templates/qoder/scripts/domain/kg/sync_repowiki.py +0 -109
- package/templates/qoder/scripts/engine/poller.py +0 -219
package/package.json
CHANGED
|
@@ -12,7 +12,7 @@ User input:
|
|
|
12
12
|
|
|
13
13
|
## Auto Generate Spec
|
|
14
14
|
1. Read current task PRD and design artifacts
|
|
15
|
-
2.
|
|
15
|
+
2. dispatch 到 `qoder-spec-gen` sub-agent(.qoder/agents/qoder-spec-gen.toml — 它读 spec-generator skill + spec 契约自动生成)
|
|
16
16
|
3. Generate spec.md based on PRD + Design
|
|
17
17
|
4. ★ 契约头**必须**写 `status: draft`(wl-code gate 依据):
|
|
18
18
|
```markdown
|
|
@@ -26,7 +26,9 @@ User input:
|
|
|
26
26
|
6. Notify dev to review — 提示用户审阅后回复"确认",确认后改 `status: confirmed`
|
|
27
27
|
7. ★ 用户确认后,上传 spec 到平台(按 zentao_id 反查需求挂载 → 资产中心随需求可见,无需发布):
|
|
28
28
|
```bash
|
|
29
|
-
python
|
|
29
|
+
R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.
|
|
30
|
+
PY=$(python --version >/dev/null 2>&1 && echo python || echo python3)
|
|
31
|
+
$PY "$R/.qoder/scripts/orchestration/wlkj.py" spec-upload <spec.md> --zentao-id <禅道story号> [--code-targets CtrlA,SvcB]
|
|
30
32
|
```
|
|
31
33
|
- 契约头无 `platform_spec_id` → `create_spec(zentao_id,...)` 新建 + 平台反查 Requirement 挂上 → `confirm_spec` 进 confirmed → 回写 `platform_spec_id`(幂等锚)
|
|
32
34
|
- 契约头有 `platform_spec_id` → 自动走 `update_spec`(version+1,不重复建)
|
|
@@ -36,3 +38,11 @@ User input:
|
|
|
36
38
|
## 下一步
|
|
37
39
|
- spec 已 confirmed → `/wl-code <REQ-ID>` 按 spec 严格实现(spec gate 放行)
|
|
38
40
|
- 实现完 → `/wl-test` 验证 → `/wl-commit` 提交回流
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
44
|
+
|
|
45
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
46
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
47
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
48
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -89,3 +89,11 @@ $PY "$R/.qoder/scripts/validation/metrics/usability_score.py" --html
|
|
|
89
89
|
- **CLI/IDE**(NoOp 自动降级):落盘 `workspace/members/{dev}/journal/dashboard-{时间戳}.html`,输出路径供打开
|
|
90
90
|
|
|
91
91
|
不用 cap.present 也能跑——上面的 Health Score 维度表本身是纯文本,富展示只是增强可视化(T244 cap.present 接入点)。
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
95
|
+
|
|
96
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
97
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
98
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
99
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -216,3 +216,11 @@ cap.mcp.call("learn", {
|
|
|
216
216
|
})
|
|
217
217
|
```
|
|
218
218
|
- 至少写 1 条最有价值的认知。try/except 不阻塞。
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
222
|
+
|
|
223
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
224
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
225
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
226
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -22,7 +22,9 @@ User input: $ARGUMENTS (commit message)
|
|
|
22
22
|
7. Push to remote
|
|
23
23
|
8. 回流平台:提交 + push 后执行回流,把本次 commit 沉淀到平台知识层
|
|
24
24
|
```bash
|
|
25
|
-
python
|
|
25
|
+
R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.
|
|
26
|
+
PY=$(python --version >/dev/null 2>&1 && echo python || echo python3)
|
|
27
|
+
$PY "$R/.qoder/scripts/orchestration/wlkj.py" return commit --last
|
|
26
28
|
```
|
|
27
29
|
- 自动取 HEAD commit(sha/message/author/时间)→ POST 平台 `/api/git/commits/record`
|
|
28
30
|
- message 里的 `[#REQ-xxx]` / `[#<禅道号>]` 平台自动解析,建 commit→需求 边
|
|
@@ -39,3 +41,11 @@ Before committing, check:
|
|
|
39
41
|
## 下一步
|
|
40
42
|
- 提交回流成功后,更新任务状态:`/wl-task finish <REQ-ID>`(标记开发完成,同步禅道)
|
|
41
43
|
- 查看本次提交在需求链路的位置:平台资产中心 → 需求 → 变更史
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
47
|
+
|
|
48
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
49
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
50
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
51
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wl-data
|
|
3
|
+
description: "数据分析: 自然语言→语义层声明metric→接地SQL→保形门禁→执行渲染。不裸NL2SQL盲猜。"
|
|
4
|
+
argument-hint: "[自然语言数据问题] 如:统计各公司资产原值"
|
|
5
|
+
auto-approve: true
|
|
6
|
+
allowed-tools: [Read, Glob, Grep, Bash, Write, Edit]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /wl-data - 数据分析工序站
|
|
10
|
+
|
|
11
|
+
User input: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
> **问库不乱猜,声明 metric 优先于裸 SQL。** 对齐 dbt 语义层 + conformal 保形门禁。
|
|
14
|
+
|
|
15
|
+
## 🔧 工具优先级(宿主能力 × 知识层分工)
|
|
16
|
+
| 步骤 | 用谁 | 原因 |
|
|
17
|
+
|------|------|------|
|
|
18
|
+
| 选表选列 | **MCP schema_link** | 确定性概念→真表+列(dbt级,非LLM猜) |
|
|
19
|
+
| join 路径 | **MCP semantic/mapper_joins** | Dijkstra 最高置信 join 路径(RAT-SQL对齐) |
|
|
20
|
+
| NL→metric | **MCP nl2ontology** | 语义层路由:NL→声明metric→grounded SQL(非裸NL2SQL) |
|
|
21
|
+
| 保形门禁 | **MCP gate_check** | conformal coverage≥1-α,低置信拒答 |
|
|
22
|
+
| 执行+渲染 | **Qoder AI** | 执行 SQL + 渲染业务答案 |
|
|
23
|
+
|
|
24
|
+
## 🧠 流程(确定性语义层 + 保形)
|
|
25
|
+
1. **schema linking**:`schema_link(concept=<问题>)` → 真表+列+join候选
|
|
26
|
+
2. **语义层路由**:`nl2ontology(question=<问题>)` → 命中声明 metric(如 asset_total_cost)→ grounded SQL;未命中走 LLM NL2SQL(只用 schema_link 选表列,禁全表 schema_text 注入=负贡献)
|
|
27
|
+
3. **保形门禁**:`gate_check(sql, confidence, risk_strategy=v2, alpha=0.1)` → pass/abstain;abstain 诚实拒答(不硬编)
|
|
28
|
+
4. **执行+渲染**:执行 SQL(只读)→ Qoder AI 渲染业务答案(表/图)
|
|
29
|
+
|
|
30
|
+
## 🚨 铁律
|
|
31
|
+
1. **声明优先**:NL 命中声明 metric → 用其 grounded SQL(确定性);未命中才 LLM 生成
|
|
32
|
+
2. **schema_text 禁注入**:全表 schema 注入 prompt 是负贡献(实测 L1 38→63 是禁 schema 后),只用 schema_link 选表列
|
|
33
|
+
3. **保形拒答**:置信度 < 阈值诚实 abstain,不硬编答案(selective 价值:pass 集准 vs abstain 集)
|
|
34
|
+
4. **只读执行**:SQL 只 SELECT,禁 DDL/DML(data/security.py 白名单 + executor READ ONLY)
|
|
35
|
+
|
|
36
|
+
## 📊 对齐
|
|
37
|
+
- dbt Semantic Layer(声明 metric)/ MetricFlow(多跳 join)/ conformal prediction(保形 coverage)
|
|
38
|
+
- 平台 workflow_sim WL_WL_DATA_GRAPH(schema_link→LINK→ONTO→SQLGEN→GATE→ANSWER)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
42
|
+
|
|
43
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
44
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
45
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
46
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wl-fix
|
|
3
|
+
description: "修bug: 症状→根因(不治标)→爆炸半径(防回归)→最小侵入修复。"
|
|
4
|
+
argument-hint: "[bug症状/报错] 如:保险导出报空指针"
|
|
5
|
+
auto-approve: true
|
|
6
|
+
allowed-tools: [Read, Glob, Grep, Bash, Write, Edit]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /wl-fix - bug 修复工序站
|
|
10
|
+
|
|
11
|
+
User input: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
> **治根因不治标,先量爆炸半径防回归。**
|
|
14
|
+
|
|
15
|
+
## 🔧 工具优先级
|
|
16
|
+
| 步骤 | 用谁 | 原因 |
|
|
17
|
+
|------|------|------|
|
|
18
|
+
| 定位缺陷站点 | **MCP search_code** | 精确符号定位(疑似缺陷文件/符号) |
|
|
19
|
+
| 相似bug模式 | **MCP rag_search** | 历史相似缺陷/修复(kind=code) |
|
|
20
|
+
| 变更史 | **MCP code_history** | regression 根因(该文件历史变更) |
|
|
21
|
+
| 爆炸半径 | **MCP get_impact** | 改一处影响谁(upstream/downstream) |
|
|
22
|
+
| 修复方案 | **Qoder AI** | 综合→最小侵入修复 |
|
|
23
|
+
|
|
24
|
+
## 🧠 流程
|
|
25
|
+
1. **定位**:`search_code(query=<症状>, focus=symbol)` → 疑似缺陷符号(带 repo 前缀,避 CTRL 双格式坑)
|
|
26
|
+
2. **相似模式**:`rag_search(query=<症状>, kind=code)` → 相似 bug/历史修复
|
|
27
|
+
3. **根因假设**:derive → suspected_location + root_cause + evidence + confidence(<0.5 回扩词重搜)
|
|
28
|
+
4. **爆炸半径**:`get_impact(entity=<suspected_location>, depth=2)` → 影响面(防回归)
|
|
29
|
+
5. **修复方案**:Qoder AI 综合 → 最小侵入修复 + 回归防护
|
|
30
|
+
|
|
31
|
+
## 🚨 铁律
|
|
32
|
+
1. **根因非症状**:区分表面报错点 vs 真根因,不治标
|
|
33
|
+
2. **爆炸半径**:改前必 get_impact,影响大→人工确认
|
|
34
|
+
3. **最小侵入**:修复尽量小,附带回归测试建议
|
|
35
|
+
4. **置信度诚实**:confidence<0.5 标"根因不确定,建议人工核实"
|
|
36
|
+
|
|
37
|
+
## 📊 对齐
|
|
38
|
+
- 平台 workflow_sim WL_WL_FIX_GRAPH(search_code→rag→derive根因→get_impact→synth修复)
|
|
39
|
+
- _UNDERUTILIZED_PRE 补 code_history 节点(regression 根因)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
43
|
+
|
|
44
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
45
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
46
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
47
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -70,7 +70,7 @@ grep -l WLKJ_PROJECT_ID "$R/.qoder/mcp_config.json" 2>/dev/null && echo "已绑
|
|
|
70
70
|
|
|
71
71
|
### 未绑定或要切换?一行命令:
|
|
72
72
|
```bash
|
|
73
|
-
$PY "$R/.qoder/scripts/
|
|
73
|
+
$PY "$R/.qoder/scripts/orchestration/wlkj.py" switch-project
|
|
74
74
|
```
|
|
75
75
|
脚本会:
|
|
76
76
|
1. 问邮箱+密码(或用 --email/--pw 参数)
|
|
@@ -80,7 +80,7 @@ $PY "$R/.qoder/scripts/domain/kg/switch_project.py"
|
|
|
80
80
|
|
|
81
81
|
非交互模式(CI/自动化):
|
|
82
82
|
```bash
|
|
83
|
-
$PY "$R/.qoder/scripts/
|
|
83
|
+
$PY "$R/.qoder/scripts/orchestration/wlkj.py" switch-project --email a@b.c --pw xxx --project-uuid <UUID>
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
**之后所有命令自动用该项目的知识层、token、回流地址。不同人选不同项目 = 完全隔离。**
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wl-knowledge
|
|
3
|
+
description: "知识问答: 理解一个对象/概念。三支柱接地(代码+流程+字段)+可溯源答案。"
|
|
4
|
+
argument-hint: "[概念/符号/字段] 如:保险单是什么 / vehicle_no 含义"
|
|
5
|
+
auto-approve: true
|
|
6
|
+
allowed-tools: [Read, Glob, Grep, Bash, Write, Edit]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /wl-knowledge - 知识问答工序站
|
|
10
|
+
|
|
11
|
+
User input: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
> **理解一个对象,三支柱接地(代码实体 + 业务流程 + 字段schema)。** 与 wl-search(定位/路由) 区别:wl-knowledge 聚焦"讲清一个对象是什么"。
|
|
14
|
+
|
|
15
|
+
## 🔧 工具优先级
|
|
16
|
+
| 步骤 | 用谁 | 原因 |
|
|
17
|
+
|------|------|------|
|
|
18
|
+
| 提炼概念+意图 | **Qoder AI** | 拆四路:concept/search_query/intent/field_candidates |
|
|
19
|
+
| 代码实体 | **MCP rag_search** | 语义召回相关代码/字段/API |
|
|
20
|
+
| 概念画像 | **MCP context_360** | 实体的代码+API+字段+测试全貌 |
|
|
21
|
+
| 业务流程 | **MCP graphrag_ask** | GraphRAG 社区摘要(全局流程) |
|
|
22
|
+
| 字段schema | **MCP schema_link/query_schema** | 真表结构/字段含义 |
|
|
23
|
+
| 综合答案 | **Qoder AI** | 三支柱接地综合 |
|
|
24
|
+
|
|
25
|
+
## 🧠 流程
|
|
26
|
+
1. **提炼**:derive → concept(核心对象) + search_query(干净检索词) + intent(concept_explain/business_flow/code_locate/field_schema) + field_candidates
|
|
27
|
+
2. **代码召回**:`rag_search(query=<search_query>)` → 相关代码/字段
|
|
28
|
+
3. **概念画像**:`context_360(query=<concept>)` → 实体全貌
|
|
29
|
+
4. **业务流程**:`graphrag_ask(q=<问题>)` → 全局流程(社区摘要支撑)
|
|
30
|
+
5. **字段schema**:`query_schema(field=<candidate>)` → 真表字段含义
|
|
31
|
+
6. **综合答案**:Qoder AI → 三支柱接地的知识答案
|
|
32
|
+
|
|
33
|
+
## 🚨 铁律
|
|
34
|
+
1. **三支柱接地**:代码实体 + 业务流程 + 字段schema 都基于真实召回
|
|
35
|
+
2. **意图定重心**:intent=concept_explain 讲概念;business_flow 讲流程;code_locate 定位;field_schema 讲字段
|
|
36
|
+
3. **可溯源**:引用真实符号/表/字段,禁编造
|
|
37
|
+
4. **诚实**:召回不足标"知识层未覆盖"
|
|
38
|
+
|
|
39
|
+
## 📊 对齐
|
|
40
|
+
- 平台 workflow_sim WL_WL_KNOWLEDGE_GRAPH(derive→rag→context_360→graphrag_ask→query_schema→synth)
|
|
41
|
+
- graphrag_ask 依赖社区摘要(FW17-B1 已修:并发+向量化+pgvector解析)
|
|
@@ -23,28 +23,10 @@ User input: $ARGUMENTS
|
|
|
23
23
|
| 生成 PRD 正文 | **Qoder AI** | 宿主 AI 比我们调 qwen-plus 更强 |
|
|
24
24
|
| 写文件 | **Qoder Write** | 原生文件操作 |
|
|
25
25
|
|
|
26
|
-
## 🚨
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|---|---|---|---|
|
|
31
|
-
| 搜代码 | `wlkj.py search <词>` | `kg.py search <词>` | search_code |
|
|
32
|
-
| 搜 API | `wlkj.py search <词>` | `kg.py api <词>` | search_api |
|
|
33
|
-
| 语义检索 | `wlkj.py semantic <词>` | `kg.py semantic <词>` | rag_search |
|
|
34
|
-
| 上下文打包 | `wlkj.py context <词>` | `kg.py context <词>` | context_pack |
|
|
35
|
-
> 用哪个名都行(`kg.py search_code` 也认)。**别再因"未知子命令"慌张**。
|
|
36
|
-
|
|
37
|
-
**② 中文歧义词先提炼再查**(否则 context "保险" 命中的是社保不是车险):
|
|
38
|
-
- 保险 → 车辆保险 / 商业险 / 交强险 / 保险异常
|
|
39
|
-
- 异常 → 告警 alarmType / 报错 / 校验失败
|
|
40
|
-
- 计划 → 作业计划 / 养护计划 / 计划任务
|
|
41
|
-
- 列表/记录 → 带具体业务对象(车辆保险记录、考勤记录)
|
|
42
|
-
> 拿不准时先 `kg.py search <具体词>` 看返回的控制器/实体名,再用全名 `kg.py context <全名>`。
|
|
43
|
-
|
|
44
|
-
**③ 禁止跌入手动 grep/find 读源码。** 知识层有就拿知识层;**只有**以下情况才用 Grep/Read 读源码:
|
|
45
|
-
- 知识层确实没建(search 返 0 条,且换词仍 0)
|
|
46
|
-
- 要看某个具体文件的实现细节(已定位到文件)
|
|
47
|
-
> ❌ 不要 `find data/code` / `grep -r` 找模块——那是知识层 search 的活,手动做=思考链跑飞。
|
|
26
|
+
## 🚨 工具接口铁律(见 tool_guide · 会话已注入精简版)
|
|
27
|
+
|
|
28
|
+
**单一信源** `.qoder/scripts/tool_guide.md`(SessionStart 已注入精简版:repo_root 定位 / 三套名 wlkj·kg·MCP 互通 / 中文歧义词提炼 / 优先级口诀)。需完整三套名映射表或歧义词清单时 Read 它。
|
|
29
|
+
**两条红线常记**:① 三套名字都认(`search`/`semantic`/`context`),别因"未知子命令"慌张;② 禁 `find data/code` / `grep -r` 找模块——那是知识层 search 的活,手动做=思考链跑飞;只有 search 换词仍返 0 或已定位到具体文件时才 Grep/Read。
|
|
48
30
|
|
|
49
31
|
## 🧠 Planning Agent(完整模式强制前置 · 非建议)
|
|
50
32
|
|
|
@@ -155,7 +137,12 @@ if schema and schema.get("columns"):
|
|
|
155
137
|
```
|
|
156
138
|
等价 CLI(脚本兜底):
|
|
157
139
|
```bash
|
|
140
|
+
# ★ 有 REQ-ID 用 ctx-cache:PRD→spec→code 链路同 REQ 复用上下文(T1.3,省 2 次往返)
|
|
141
|
+
$PY "$R/.qoder/scripts/orchestration/wlkj.py" ctx-cache <REQ-ID> <业务词> --platform <web|app>
|
|
142
|
+
# 无 REQ-ID / 首次取:普通 context
|
|
158
143
|
$PY "$R/.qoder/scripts/orchestration/wlkj.py" context <业务词> --platform <web|app>
|
|
144
|
+
# PRD/spec 改动后失效该 REQ 缓存重来:
|
|
145
|
+
$PY "$R/.qoder/scripts/orchestration/wlkj.py" ctx-cache <REQ-ID> --clear
|
|
159
146
|
```
|
|
160
147
|
- 第 4 段 = 历史 PRD(防重复)
|
|
161
148
|
- 第 5 段 = 相关 API
|
|
@@ -194,6 +181,20 @@ $PY "$R/.qoder/scripts/orchestration/wlkj.py" eval <prd.md> [原型.html]
|
|
|
194
181
|
```
|
|
195
182
|
≥ 80% 才 PASS。完整模板见 `.qoder/templates/prd-full-template.md`。
|
|
196
183
|
|
|
184
|
+
### 业务保真打分(接真命令产物 · BF1/BF2)
|
|
185
|
+
|
|
186
|
+
> EVA 结构分(章齐)≠业务保真。PRD 出来后打业务保真分:产物是不是真 ICS 业务(真表/真写法)。
|
|
187
|
+
```python
|
|
188
|
+
from capability import resolve
|
|
189
|
+
cap = resolve()
|
|
190
|
+
# BF1 schema保真(提的表是真 ICS 业务表) + BF2 内容保真(LLM-judge vs 真 PRD, 是不是 ICS 写法非通用文)
|
|
191
|
+
r = cap.mcp.call("bf_score", {"kind": "prd", "content": "<PRD 正文>", "feature": "<业务主题如 保险>"})
|
|
192
|
+
# → BF1_schema.score(目标≥0.85) + BF2_content.score(目标≥4/5)
|
|
193
|
+
```
|
|
194
|
+
- BF1 低 → PRD 提了编造/非 ICS 表 → 补真表(query_schema/db_tables)。
|
|
195
|
+
- BF2 低 → 内容是通用产品文非 ICS 写法 → 参考 rag_search(kind=prd) 真 PRD 范本重写。
|
|
196
|
+
- 原型保真(BF3 组件/BF4 颜色):`cap.mcp.call("bf_score", {"kind":"proto","content":"<原型 HTML>"})` → 用真 fywl-ui 设计系统核。
|
|
197
|
+
|
|
197
198
|
---
|
|
198
199
|
|
|
199
200
|
## 快速模式(6 章 Mini-PRD)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wl-review
|
|
3
|
+
description: "代码审查: 改动影响半径+需求对齐+安全/质量/业务多维审查报告。"
|
|
4
|
+
argument-hint: "[变更实体/diff/分支] 如:CostApplyController"
|
|
5
|
+
auto-approve: true
|
|
6
|
+
allowed-tools: [Read, Glob, Grep, Bash, Write, Edit]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /wl-review - 代码审查工序站
|
|
10
|
+
|
|
11
|
+
User input: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
> **影响半径 + 需求对齐 + 多维审查,给通过/打回结论。**
|
|
14
|
+
|
|
15
|
+
## 🔧 工具优先级
|
|
16
|
+
| 步骤 | 用谁 | 原因 |
|
|
17
|
+
|------|------|------|
|
|
18
|
+
| 变更实体 | **Qoder AI 解析** | 从 diff/分支/文件集解析变更符号 |
|
|
19
|
+
| 影响半径 | **MCP get_impact** | 改动影响谁(upstream/downstream) |
|
|
20
|
+
| 全上下文 | **MCP context_360** | 变更实体的代码/API/字段画像 |
|
|
21
|
+
| 需求对齐 | **MCP aggregate_requirement** | 关联需求的 PRD/AC(业务覆盖) |
|
|
22
|
+
| 安全门禁 | **MCP gate_check** | conformal/risk 裁决 |
|
|
23
|
+
| 审查报告 | **Qoder AI** | 多维综合→通过/打回 |
|
|
24
|
+
|
|
25
|
+
## 🧠 流程
|
|
26
|
+
1. **提取变更**:derive → changed_entities + change_intent + req_key
|
|
27
|
+
2. **影响半径**:`get_impact(entity=<changed>, depth=3)` → 影响面
|
|
28
|
+
3. **全上下文**:`context_360(query=<changed>)` → 实体画像
|
|
29
|
+
4. **需求对齐**:`aggregate_requirement(req_key=<req>)` → PRD/AC(业务覆盖)
|
|
30
|
+
5. **相似实现**:`rag_search(query=<intent>)` → 相似/缺陷模式
|
|
31
|
+
6. **审查焦点**:derive → risk_areas + security + quality + business_gaps + regression_scope
|
|
32
|
+
7. **审查报告**:Qoder AI 综合 → ① 变更范围 ② 安全 ③ 精准度 ④ 需求覆盖 ⑤ 通过/打回
|
|
33
|
+
|
|
34
|
+
## 🚨 铁律
|
|
35
|
+
1. **只评真实**:变更范围只评 get_impact 命中的真实实体
|
|
36
|
+
2. **PascalCase 引用**:审查实体用原名(CostApplyController),非中文描述(溯源)
|
|
37
|
+
3. **门禁量化**:gate_check 裁决 block/warn/pass
|
|
38
|
+
4. **结论明确**:通过/打回二选一 + 理由
|
|
39
|
+
|
|
40
|
+
## 📊 对齐
|
|
41
|
+
- 平台 workflow_sim WL_WL_REVIEW_GRAPH(extract→impact→context→requirement→search→focus→report)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
45
|
+
|
|
46
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
47
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
48
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
49
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -20,39 +20,27 @@ result = cap.mcp.call("rag_search", {"query": "车辆保养", "top_k": 8})
|
|
|
20
20
|
|
|
21
21
|
自动路由:有 MCP 走 MCP(直连平台知识层,快),无 MCP 走 wlkj.py(CLI 降级)。零宿主感知。
|
|
22
22
|
|
|
23
|
-
## 🚨
|
|
23
|
+
## 🚨 接口铁律(见 tool_guide · 会话已注入精简版)
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|---|---|---|
|
|
28
|
-
| 搜代码 | `search <词>` | search_code |
|
|
29
|
-
| 搜 API | `api <词>`(kg.py)/ `search <词>`(wlkj.py)| search_api |
|
|
30
|
-
| 语义检索 | `semantic <词>` | rag_search |
|
|
31
|
-
| 上下文 | `context <词>` | context_pack |
|
|
32
|
-
| 影响分析 | `impact <实体>` | get_impact |
|
|
33
|
-
> `kg.py search_code 保险` = `kg.py search 保险`,都认。
|
|
34
|
-
|
|
35
|
-
**② 中文歧义词先提炼**(否则"保险"命中社保不是车险):
|
|
36
|
-
保险→车辆保险/商业险/交强险 · 异常→告警alarmType/报错 · 计划→作业/养护计划 · 列表→带业务对象(车辆保险记录)。
|
|
37
|
-
拿不准先 `search <具体词>` 看返回的控制器名,再用全名 `context <全名>`。
|
|
25
|
+
**单一信源** `.qoder/scripts/tool_guide.md`(SessionStart 已注入精简版:repo_root 定位 / 三套名 wlkj·kg·MCP 互通 / 中文歧义词提炼 / 优先级口诀)。需完整三套名映射表或歧义词清单时 Read 它。
|
|
26
|
+
**两条红线常记**:① 三套名字都认(`search`/`semantic`/`context`/`impact`),别因"未知子命令"慌;② 禁 `find`/`grep -r`/`findstr /s` 全盘扫 `data/code`——那是 search 的活,手动做=思考链跑飞。
|
|
38
27
|
|
|
39
|
-
**③ 禁止 find/grep 手动找模块**——那是 search 的活。只有 search 换词仍返 0 或要看具体文件实现时,才用 Grep/Read。
|
|
40
28
|
|
|
29
|
+
## ⚡ 第一步:确定性路由(按顺序匹配第一个命中信号,零猜测)
|
|
41
30
|
|
|
42
|
-
|
|
31
|
+
**差模型也走得对:逐条检查 `$ARGUMENTS`,第一个命中的信号决定检索通道——不要"判断问题类型",按表查。**
|
|
43
32
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
|
47
|
-
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
33
|
+
| # | 信号(`$ARGUMENTS` 含这些词) | 走这个通道(直达,先调一次) |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| 1 | "影响谁" / "改 XX 影响" / "波及" | `get_impact`(影响分析) |
|
|
36
|
+
| 2 | "表结构" / "字段" / "枚举" / "真实数据" / "查库" | DB 通道:**先 `list_envs` 问环境**(见下「数据库查询」) |
|
|
37
|
+
| 3 | "哪些没测" / "覆盖" / "盲区" / "测试矩阵" | `coverage_matrix` |
|
|
38
|
+
| 4 | "业务流程" / "整体怎么运转" / "是干嘛的" | `ask_corpus`(GraphRAG 问答),再叠 `rag_search` 补事实 |
|
|
39
|
+
| 5 | "盘点" / "有哪些代码" / "一次取全" | `context_pack`(8 段一次拿全) |
|
|
40
|
+
| 6 | 精确符号(camelCase / 下划线 / 路径,如 `handleExport`、`/asset`) | `search_code`(精确关键词) |
|
|
41
|
+
| 7 | **(以上都没命中)默认** | **`rag_search`(语义召回最全,top_k=8)** |
|
|
53
42
|
|
|
54
|
-
>
|
|
55
|
-
> Glob 找不到文件时用 search_code 兜底,**不准跑 find/findstr/dir /s**。
|
|
43
|
+
> **铁律**:理解/盘点类问题默认 `rag_search`(语义召回最全,能找到没共享词的相关代码,如"车辆保养"→"维修记录");只在精确找符号时用 `search_code`;Glob 找不到文件用 `search_code` 兜底,**不准 find/findstr/dir /s 全盘扫**。
|
|
56
44
|
|
|
57
45
|
### 三路检索详解(RAG 升级核心)
|
|
58
46
|
|
|
@@ -225,3 +213,11 @@ $PY "$R/.qoder/scripts/orchestration/wlkj.py" kg grep-text 车辆不存在 --ext
|
|
|
225
213
|
- `/wl-search t_quality_case 表结构` → 先 `list_envs()` 问环境 → `query_schema`
|
|
226
214
|
- `/wl-search 资产管理功能画像` → `cap.mcp.call("feature_overview", {"feature": "资产管理"})`
|
|
227
215
|
- `/wl-search 车辆不存在报错从哪来` → `wlkj.py kg grep-text 车辆不存在 --ext java`
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
219
|
+
|
|
220
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
221
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
222
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
223
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -35,7 +35,9 @@ PY=$(python --version >/dev/null 2>&1 && echo python || echo python3)
|
|
|
35
35
|
|
|
36
36
|
禅道是**每人一个账号**(凭据在 `workspace/members/{我}/.private/secrets/zentao.env`,gitignore),归属靠 member.json 的 `zentao_account` 映射 + 工具默认行为兜底:
|
|
37
37
|
|
|
38
|
-
- **看任务**:`my_workbench` / `list_my_tasks` / `list_execution_tasks` **默认只返回指派给我的**(assignedTo=我),不会看到队友。要看全队排期才传 `all=true
|
|
38
|
+
- **看任务**:`my_workbench` / `list_my_tasks` / `list_execution_tasks` **默认只返回指派给我的**(assignedTo=我),不会看到队友。要看全队排期才传 `all=true`。本地流最快,优先走它。
|
|
39
|
+
- **看我的活**:本地 `qw_mcp_call("my_workbench")` **优先**(快);本地不可得(无凭据/进程没起)再降级平台 `cap.mcp.call("get_my_zentao_panel")`(凭据走平台 per-user 配置,云防火墙时 `get_zentao_creds` 取凭据本机直连)。
|
|
40
|
+
- **Bug→需求反查**:`cap.mcp.call("bug_trace", {"bug_id": X})` 查"这个 Bug 是哪个需求引入的"。
|
|
39
41
|
- **空账号直接拒绝**:member.json 没配 `zentao_account` 时,"看我的"工具返回 `🚫 未识别禅道身份`(不再静默降级返回全队)。原样转述,引导 `/wl-init`。
|
|
40
42
|
- **改任务前必校验**:start/finish/assign/update 拿到 task_id 后,**先 `get_task(id)` 看 assignedTo**:
|
|
41
43
|
- `assignedTo == 我` → 正常执行;
|
|
@@ -615,3 +617,11 @@ prd ──create(带REQ-ID)──→ task ──start──→ code/test ──f
|
|
|
615
617
|
```
|
|
616
618
|
|
|
617
619
|
> 完整执行规则见 `.qoder/skills/wl-task/SKILL.md`(Quest/QoderWork 自然语言入口)。
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
623
|
+
|
|
624
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
625
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
626
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
627
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -154,3 +154,11 @@ JUnit 测试(Mock + MockMvc,Given-When-Then)→ 输出 `tests/{package}/{C
|
|
|
154
154
|
## 报告
|
|
155
155
|
- quick:用例表 + 执行结果(pass/fail),全过建议继续别的,失败列原因
|
|
156
156
|
- browser:同上 + 建议修复重跑或 `/wl-commit`
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
## 🚨 接地铁律(防幻觉/保真,Qoder AI 必须遵守)
|
|
160
|
+
|
|
161
|
+
1. **溯源**:引用代码符号/表名/接口用**真实原名**(如 `CostApplyController`、`base_asset`),非中文描述——只引 MCP 工具(rag_search/schema_link/context_360/get_impact 等)召回的真实符号,提升可溯源性
|
|
162
|
+
2. **禁编**:不编造未在召回里出现的类名/表名/字段/接口;召回不足时标"待确认(知识层未召回)",**诚实优于编造**
|
|
163
|
+
3. **接地(数据表)**:涉及数据表/字段时,先调 MCP `schema_link`/`query_schema` 取真表真列;未召回真表禁编 t_xxx 表名+字段充数
|
|
164
|
+
4. **完整**:产物详尽展开(每节实质内容,不一行带过)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 模块契约:insight(需求探索)
|
|
2
|
+
|
|
3
|
+
> 需求上游探索站。在写 PRD 之前把"该做什么、为什么做"想清楚。
|
|
4
|
+
> 四模式:clarify(默认,产品听不懂时对焦)/ discover(发现机会)/ research(调研竞品)/ plan(规划 roadmap)。
|
|
5
|
+
> 与 prd 的分工:insight 想清楚方向,prd 落地怎么做。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Input(吃什么)
|
|
10
|
+
|
|
11
|
+
| 优先级 | 输入 | 怎么用 |
|
|
12
|
+
|--------|------|--------|
|
|
13
|
+
| **完整** | 一个模糊需求/产品想法 | 先 clarify 对焦,再按需 discover/research/plan |
|
|
14
|
+
| 参考 | 现状代码/业务 | `context_pack` / `feature_overview` 锚定现状,禁止编造 |
|
|
15
|
+
| 参考 | 竞品/外部信息 | research 模式走 WebSearch + 多 agent 调研 |
|
|
16
|
+
|
|
17
|
+
**第一性原理**:看未来,不编造。结论必须锚定现状(context_pack)。
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Output(吐什么)
|
|
22
|
+
|
|
23
|
+
### 探索产物
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
路径:data/docs/drafts/
|
|
27
|
+
内含(按模式产出):
|
|
28
|
+
insight-plan-{topic}-{date}.md ← plan 模式:OST/Gap 分析 + MVP + Roadmap
|
|
29
|
+
research-agent-{N}-{视角}.md ← research 模式:多视角调研中间产物
|
|
30
|
+
insight-research-{topic}-{date}.md ← research 模式:汇总报告
|
|
31
|
+
clarify-prototype-*.html ← clarify 模式:帮产品理解的原型(可选)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 核心方法
|
|
35
|
+
|
|
36
|
+
- **OST**(Objective-Strategy-Tactic):目标→策略→战术拆解
|
|
37
|
+
- **JTBD**(Jobs-to-be-done):用户要完成的"任务"
|
|
38
|
+
- **Gap 分析**:现状 vs 目标的差距 → 机会
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 校验(合格标准)
|
|
43
|
+
|
|
44
|
+
- [ ] 结论锚定现状(引用了 context_pack / 真实代码),非空中楼阁
|
|
45
|
+
- [ ] 全中文输出(语言锁)
|
|
46
|
+
- [ ] 有明确"转 PRD"或"放弃"的建议,不悬空
|
|
47
|
+
- [ ] research 模式:调研有来源,不是泛泛而谈
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 不做(边界)
|
|
52
|
+
|
|
53
|
+
- 不写实现级 PRD(那是 prd 模块的活)
|
|
54
|
+
- 不直接改代码(那是 code 模块的活)
|
|
55
|
+
- discover/research 是辅助决策,**最终是否落地由人决定**
|
|
Binary file
|
|
Binary file
|
|
Binary file
|