homegraph 1.1.2 → 1.1.3
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/LICENSE +21 -21
- package/README.md +243 -243
- package/dist/bin/homegraph.js +371 -9
- package/dist/bin/homegraph.js.map +1 -1
- package/dist/db/migrations.js +18 -18
- package/dist/db/queries.js +140 -140
- package/dist/db/schema.sql +152 -152
- package/dist/directory.js +5 -5
- package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/installer/instructions-template.js +9 -9
- package/dist/installer/targets/shared.d.ts +5 -6
- package/dist/installer/targets/shared.d.ts.map +1 -1
- package/dist/installer/targets/shared.js +5 -6
- package/dist/installer/targets/shared.js.map +1 -1
- package/dist/mcp/liveness-watchdog.js +16 -16
- package/dist/mcp/server-instructions.js +69 -69
- package/dist/mcp/tools.d.ts +17 -4
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +192 -22
- package/dist/mcp/tools.js.map +1 -1
- package/dist/reasoning/reasoner.js +32 -32
- package/dist/spec/config.d.ts +43 -0
- package/dist/spec/config.d.ts.map +1 -0
- package/dist/spec/config.js +275 -0
- package/dist/spec/config.js.map +1 -0
- package/dist/spec/db/commit-node.d.ts +23 -0
- package/dist/spec/db/commit-node.d.ts.map +1 -0
- package/dist/spec/db/commit-node.js +62 -0
- package/dist/spec/db/commit-node.js.map +1 -0
- package/dist/spec/db/fragment-node.d.ts +23 -0
- package/dist/spec/db/fragment-node.d.ts.map +1 -0
- package/dist/spec/db/fragment-node.js +120 -0
- package/dist/spec/db/fragment-node.js.map +1 -0
- package/dist/spec/db/fts.d.ts +60 -0
- package/dist/spec/db/fts.d.ts.map +1 -0
- package/dist/spec/db/fts.js +285 -0
- package/dist/spec/db/fts.js.map +1 -0
- package/dist/spec/db/index.d.ts +13 -0
- package/dist/spec/db/index.d.ts.map +1 -0
- package/dist/spec/db/index.js +50 -0
- package/dist/spec/db/index.js.map +1 -0
- package/dist/spec/db/relations.d.ts +55 -0
- package/dist/spec/db/relations.d.ts.map +1 -0
- package/dist/spec/db/relations.js +158 -0
- package/dist/spec/db/relations.js.map +1 -0
- package/dist/spec/db/schema.d.ts +30 -0
- package/dist/spec/db/schema.d.ts.map +1 -0
- package/dist/spec/db/schema.js +87 -0
- package/dist/spec/db/schema.js.map +1 -0
- package/dist/spec/db/schema.sql +107 -0
- package/dist/spec/db/spec-node.d.ts +41 -0
- package/dist/spec/db/spec-node.d.ts.map +1 -0
- package/dist/spec/db/spec-node.js +114 -0
- package/dist/spec/db/spec-node.js.map +1 -0
- package/dist/spec/evolve/impact-locator.d.ts +13 -0
- package/dist/spec/evolve/impact-locator.d.ts.map +1 -0
- package/dist/spec/evolve/impact-locator.js +25 -0
- package/dist/spec/evolve/impact-locator.js.map +1 -0
- package/dist/spec/evolve/llm-client.d.ts +50 -0
- package/dist/spec/evolve/llm-client.d.ts.map +1 -0
- package/dist/spec/evolve/llm-client.js +176 -0
- package/dist/spec/evolve/llm-client.js.map +1 -0
- package/dist/spec/evolve/logic-checker.d.ts +12 -0
- package/dist/spec/evolve/logic-checker.d.ts.map +1 -0
- package/dist/spec/evolve/logic-checker.js +48 -0
- package/dist/spec/evolve/logic-checker.js.map +1 -0
- package/dist/spec/evolve/pipeline.d.ts +40 -0
- package/dist/spec/evolve/pipeline.d.ts.map +1 -0
- package/dist/spec/evolve/pipeline.js +314 -0
- package/dist/spec/evolve/pipeline.js.map +1 -0
- package/dist/spec/evolve/spec-rewriter.d.ts +42 -0
- package/dist/spec/evolve/spec-rewriter.d.ts.map +1 -0
- package/dist/spec/evolve/spec-rewriter.js +254 -0
- package/dist/spec/evolve/spec-rewriter.js.map +1 -0
- package/dist/spec/graph/queries.d.ts +58 -0
- package/dist/spec/graph/queries.d.ts.map +1 -0
- package/dist/spec/graph/queries.js +215 -0
- package/dist/spec/graph/queries.js.map +1 -0
- package/dist/spec/mining/diff-parser.d.ts +33 -0
- package/dist/spec/mining/diff-parser.d.ts.map +1 -0
- package/dist/spec/mining/diff-parser.js +166 -0
- package/dist/spec/mining/diff-parser.js.map +1 -0
- package/dist/spec/mining/git-scanner.d.ts +91 -0
- package/dist/spec/mining/git-scanner.d.ts.map +1 -0
- package/dist/spec/mining/git-scanner.js +266 -0
- package/dist/spec/mining/git-scanner.js.map +1 -0
- package/dist/spec/mining/pipeline.d.ts +53 -0
- package/dist/spec/mining/pipeline.d.ts.map +1 -0
- package/dist/spec/mining/pipeline.js +165 -0
- package/dist/spec/mining/pipeline.js.map +1 -0
- package/dist/spec/mining/scope-resolver.d.ts +45 -0
- package/dist/spec/mining/scope-resolver.d.ts.map +1 -0
- package/dist/spec/mining/scope-resolver.js +103 -0
- package/dist/spec/mining/scope-resolver.js.map +1 -0
- package/dist/spec/mining/spec-extractor.d.ts +69 -0
- package/dist/spec/mining/spec-extractor.d.ts.map +1 -0
- package/dist/spec/mining/spec-extractor.js +369 -0
- package/dist/spec/mining/spec-extractor.js.map +1 -0
- package/dist/spec/types.d.ts +149 -0
- package/dist/spec/types.d.ts.map +1 -0
- package/dist/spec/types.js +15 -0
- package/dist/spec/types.js.map +1 -0
- package/dist/spec/utils.d.ts +166 -0
- package/dist/spec/utils.d.ts.map +1 -0
- package/dist/spec/utils.js +461 -0
- package/dist/spec/utils.js.map +1 -0
- package/package.json +58 -57
- package/scripts/add-lang/bench.sh +60 -60
- package/scripts/add-lang/check-grammar.mjs +75 -75
- package/scripts/add-lang/dump-ast.mjs +103 -103
- package/scripts/add-lang/verify-extraction.mjs +70 -70
- package/scripts/agent-eval/ab-adoption.sh +91 -91
- package/scripts/agent-eval/ab-hook.sh +86 -86
- package/scripts/agent-eval/ab-impl.sh +78 -78
- package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -102
- package/scripts/agent-eval/ab-sufficiency.sh +78 -78
- package/scripts/agent-eval/arms-F.sh +21 -21
- package/scripts/agent-eval/arms-matrix.sh +37 -37
- package/scripts/agent-eval/audit.sh +68 -68
- package/scripts/agent-eval/bench-readme.sh +28 -28
- package/scripts/agent-eval/bench-why-repo.sh +22 -22
- package/scripts/agent-eval/block-read-hook.sh +19 -19
- package/scripts/agent-eval/hook-settings.json +15 -15
- package/scripts/agent-eval/itrun.sh +120 -120
- package/scripts/agent-eval/offload-eval-3arm.sh +72 -72
- package/scripts/agent-eval/offload-eval-cost.mjs +133 -133
- package/scripts/agent-eval/offload-eval-effort.mjs +108 -108
- package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -25
- package/scripts/agent-eval/offload-eval-frontload.sh +47 -47
- package/scripts/agent-eval/offload-eval-ground-truth.json +18 -18
- package/scripts/agent-eval/offload-eval-hook.mjs +84 -84
- package/scripts/agent-eval/offload-eval-judge.mjs +103 -103
- package/scripts/agent-eval/offload-eval-matrix.sh +20 -20
- package/scripts/agent-eval/offload-eval-metrics.mjs +94 -94
- package/scripts/agent-eval/offload-eval-refs1.sh +50 -50
- package/scripts/agent-eval/offload-eval-setup.sh +24 -24
- package/scripts/agent-eval/offload-eval-styles.sh +71 -71
- package/scripts/agent-eval/offload-eval-summarize.mjs +68 -68
- package/scripts/agent-eval/offload-eval.md +76 -76
- package/scripts/agent-eval/parse-arms.mjs +116 -116
- package/scripts/agent-eval/parse-bench-readme.mjs +84 -84
- package/scripts/agent-eval/parse-run.mjs +45 -45
- package/scripts/agent-eval/parse-session.mjs +93 -93
- package/scripts/agent-eval/probe-context.mjs +21 -21
- package/scripts/agent-eval/probe-explore.mjs +40 -40
- package/scripts/agent-eval/probe-node.mjs +20 -20
- package/scripts/agent-eval/probe-sweep.mjs +119 -119
- package/scripts/agent-eval/probe-trace.mjs +20 -20
- package/scripts/agent-eval/redirect-read-hook.sh +38 -38
- package/scripts/agent-eval/run-agent.sh +34 -34
- package/scripts/agent-eval/run-all.sh +69 -69
- package/scripts/agent-eval/run-arms.sh +56 -56
- package/scripts/agent-eval/seq-matrix.mjs +137 -137
- package/scripts/build-bundle.sh +118 -118
- package/scripts/extract-release-notes.mjs +130 -130
- package/scripts/local-install.sh +41 -41
- package/scripts/npm-sdk.js +75 -75
- package/scripts/npm-shim.js +246 -246
- package/scripts/pack-npm.sh +119 -119
- package/scripts/prepare-release.mjs +270 -270
- package/scripts/qa_eval/README.md +407 -404
- package/scripts/qa_eval/_test_deveco_probe.py +41 -41
- package/scripts/qa_eval/agent_runner.py +526 -526
- package/scripts/qa_eval/data/.gitignore +4 -4
- package/scripts/qa_eval/data/test-set.jsonl +2 -22
- package/scripts/qa_eval/eval_metrics.py +274 -233
- package/scripts/qa_eval/external_agent.py +976 -671
- package/scripts/qa_eval/llm_config.py +92 -92
- package/scripts/qa_eval/memory_monitor.py +132 -132
- package/scripts/qa_eval/my_answer_accuracy.py +187 -187
- package/scripts/qa_eval/requirements.txt +2 -2
- package/scripts/qa_eval/run_pipeline.py +804 -711
- package/scripts/qa_eval/stats_efficiency.py +279 -279
- package/scripts/qa_eval/stats_scores.py +207 -207
|
@@ -1,404 +1,407 @@
|
|
|
1
|
-
# QA Eval — 四段式 A/B 评测流水线
|
|
2
|
-
|
|
3
|
-
内置多轮 Agent + Judge + 统计 + 报告,对齐 CodeGenie / Trae 评测框架:**Agent 跑题 → Judge 打分 → 分数统计 → 效率统计 → A/B 对比**。
|
|
4
|
-
|
|
5
|
-
- **国内可用**:Agent / Judge
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
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
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
### `
|
|
285
|
-
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
|
341
|
-
|
|
|
342
|
-
|
|
|
343
|
-
|
|
|
344
|
-
|
|
|
345
|
-
|
|
|
346
|
-
|
|
|
347
|
-
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
|
354
|
-
|
|
355
|
-
| `
|
|
356
|
-
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
|
388
|
-
| `
|
|
389
|
-
| `
|
|
390
|
-
|
|
|
391
|
-
|
|
|
392
|
-
|
|
|
393
|
-
| `
|
|
394
|
-
|
|
|
395
|
-
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
1
|
+
# QA Eval — 四段式 A/B 评测流水线
|
|
2
|
+
|
|
3
|
+
内置多轮 Agent + Judge + 统计 + 报告,对齐 CodeGenie / Trae 评测框架:**Agent 跑题 → Judge 打分 → 分数统计 → 效率统计 → A/B 对比**。
|
|
4
|
+
|
|
5
|
+
- **国内可用**:builtin Agent / Judge 走 OpenAI 兼容接口(DashScope Qwen 或智谱 GLM)
|
|
6
|
+
- **多 Agent 宿主**:builtin Python Agent、Claude Code CLI、DevEco Code CLI
|
|
7
|
+
- **不依赖** ragas / langchain
|
|
8
|
+
- **被测仓库**:运行时用 `--repo` / `-r` 指定,无默认路径
|
|
9
|
+
|
|
10
|
+
## 测试输入
|
|
11
|
+
|
|
12
|
+
**格式**:JSONL,一行一条,UTF-8。
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
{
|
|
16
|
+
"id": "R01",
|
|
17
|
+
"query": "...",
|
|
18
|
+
"reference_answer": "...",
|
|
19
|
+
"category_l1": "检索",
|
|
20
|
+
"category_l2": "函数"
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
| 字段 | 必填 | 说明 |
|
|
25
|
+
|------|------|------|
|
|
26
|
+
| `id` | 是 | 题号,如 `R01` / `E03` / `D05` |
|
|
27
|
+
| `query` | 是 | 给 Agent 的问题 |
|
|
28
|
+
| `reference_answer` | 是 | 参考答案(Judge 对照) |
|
|
29
|
+
| `category_l1` | 建议 | 一级分类:`检索` / `解读` / `依赖`(仅报告分组) |
|
|
30
|
+
| `category_l2` | 可选 | 二级分类(仅报告分组) |
|
|
31
|
+
| `level0` / `level1` / `difficulty` / `language` | 可选 | 元数据,Judge 不读取 |
|
|
32
|
+
|
|
33
|
+
**默认测试集**:`scripts/qa_eval/data/test-set.jsonl`(完整集 20 条:检索 7 + 解读 7 + 依赖 6;可按需增删行)。
|
|
34
|
+
|
|
35
|
+
## 目录结构
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
scripts/qa_eval/
|
|
39
|
+
├── agent_runner.py # Stage 1a:builtin 多轮 Agent(with / without)
|
|
40
|
+
├── external_agent.py # Stage 1b:Claude Code / DevEco Code 外部 Agent
|
|
41
|
+
├── my_answer_accuracy.py # Judge 指标(双 prompt 0–5 归一化)
|
|
42
|
+
├── eval_metrics.py # Stage 2:对 JSONL 批量打分
|
|
43
|
+
├── stats_scores.py # Stage 3:answer_accuracy_score 汇总
|
|
44
|
+
├── stats_efficiency.py # Stage 4:解析 Agent 日志(首响应/轮次/耗时/Token/内存)
|
|
45
|
+
├── memory_monitor.py # 进程树 RSS 采样(Linux /proc;WSL 可用)
|
|
46
|
+
├── llm_config.py # DashScope / 智谱 provider 预设
|
|
47
|
+
├── run_pipeline.py # 编排 Stage 1–4 + A/B 报告
|
|
48
|
+
├── _test_deveco_probe.py # DevEco 单题探测脚本(开发调试用)
|
|
49
|
+
├── requirements.txt
|
|
50
|
+
├── data/ # 测试集 + 报告(报告不入库)
|
|
51
|
+
│ ├── test-set.jsonl # 测试集(入库)
|
|
52
|
+
│ └── report-{host}.txt # 完整 A/B 报告(gitignore,留在 data/)
|
|
53
|
+
└── log/ # 流水线中间产物(整目录 gitignore)
|
|
54
|
+
├── result-with-{host}.jsonl
|
|
55
|
+
├── result-without-{host}.jsonl
|
|
56
|
+
├── result-*-{host}-scored.jsonl
|
|
57
|
+
├── agent-with-{host}.log
|
|
58
|
+
├── agent-without-{host}.log
|
|
59
|
+
├── eval_metrics.log # Judge 运行日志(若有)
|
|
60
|
+
└── traces/ # DevEco session 导出(仅 deveco-code 宿主)
|
|
61
|
+
├── with-deveco/
|
|
62
|
+
│ └── R01-ses_*.json
|
|
63
|
+
└── without-deveco/
|
|
64
|
+
└── R01-ses_*.json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Git 入库规则**
|
|
68
|
+
|
|
69
|
+
| 路径 | 是否提交 |
|
|
70
|
+
|------|----------|
|
|
71
|
+
| `scripts/qa_eval/*.py`、`README.md`、`requirements.txt` | 是 |
|
|
72
|
+
| `data/test-set.jsonl` | 是 |
|
|
73
|
+
| `data/report*.txt` | 否 |
|
|
74
|
+
| `log/` 下全部 | 否 |
|
|
75
|
+
| `__pycache__/` | 否 |
|
|
76
|
+
|
|
77
|
+
**与旧版路径对照**(若你手头是早期文档):
|
|
78
|
+
|
|
79
|
+
| 旧路径 | 现路径 |
|
|
80
|
+
|--------|--------|
|
|
81
|
+
| `data/test.jsonl` | `data/test-set.jsonl` |
|
|
82
|
+
| `data/result-*.jsonl` | `log/result-*-{host}.jsonl` |
|
|
83
|
+
| `data/agent-*.log` | `log/agent-*-{host}.log` |
|
|
84
|
+
| `data/report.txt` | `data/report-{host}.txt` |
|
|
85
|
+
|
|
86
|
+
## 测试流程
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
test-set.jsonl
|
|
90
|
+
↓
|
|
91
|
+
Stage 1 agent_runner.py / external_agent.py(run_pipeline ab 内置)
|
|
92
|
+
with : homegraph MCP / HomegraphQuery + ReadFile
|
|
93
|
+
without : grep/rg + read(无 homegraph)
|
|
94
|
+
产出: log/result-*-{host}.jsonl + log/agent-*-{host}.log
|
|
95
|
+
(deveco-code 额外产出 log/traces/{arm}-deveco/*.json)
|
|
96
|
+
↓
|
|
97
|
+
Stage 2 eval_metrics.py → log/result-*-{host}-scored.jsonl
|
|
98
|
+
↓
|
|
99
|
+
Stage 3 stats_scores.py → 准确率汇总(并入 report-{host}.txt)
|
|
100
|
+
Stage 4 stats_efficiency.py → 效率 + 内存汇总(终端 + report-{host}.txt)
|
|
101
|
+
↓
|
|
102
|
+
run_pipeline.py ab → data/report-{host}.txt
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**A/B 唯一变量**:Agent 是否可用 homegraph。两臂使用**同一 Agent 宿主、同一 max_turns(builtin)**;without **不是裸 LLM**,仍是多轮 grep/read Agent。
|
|
106
|
+
|
|
107
|
+
### Stage 1 工具对照
|
|
108
|
+
|
|
109
|
+
| 臂 | builtin 工具 | Claude / DevEco |
|
|
110
|
+
|----|--------------|-----------------|
|
|
111
|
+
| **with** | `HomegraphQuery`、`ReadFile` | MCP `homegraph_explore` / `homegraph_node` 等 + 内置 read/grep |
|
|
112
|
+
| **without** | `SearchText`(rg)、`FindFiles`、`ReadFile` | 仅内置 grep/read;DevEco 在 `.deveco/deveco.jsonc` 中 deny homegraph 工具 |
|
|
113
|
+
|
|
114
|
+
## 测试输出
|
|
115
|
+
|
|
116
|
+
### 核心指标(`report-{host}.txt` 末尾【A/B 汇总表】)
|
|
117
|
+
|
|
118
|
+
| 指标 | 含义 | A/B 怎么看 |
|
|
119
|
+
|------|------|------------|
|
|
120
|
+
| 准确率 均值 | Judge 的 `answer_accuracy_score`(0–1)全题平均 | Δ > 0 表示 with 答案质量更高 |
|
|
121
|
+
| 准确率 中位数 | 同上,中位数(抗极端值) | 与均值交叉验证 |
|
|
122
|
+
| Judge 成功/总数 | 成功打分数 / 总题数 | 应接近 100%;失败查 API/JSONL |
|
|
123
|
+
| 平均轮次 | 每题 LLM 工具循环次数(日志 `the N turn` 最大 N)再平均 | **越低越好**;with 理想上更低 |
|
|
124
|
+
| 平均耗时 (秒) | 每题从 `Evaluate N:` 到下一题开始的端到端时间再平均 | **越短越好** |
|
|
125
|
+
| 平均 Token (k) | 每题 `totalTokenCount` 累加再平均,单位 k | **越少越好** |
|
|
126
|
+
| 平均首响应 (秒) | 每题从 `Evaluate N:` 到第一次 LLM 返回再平均 | 参考项 |
|
|
127
|
+
| 平均峰值内存 (MB) | Agent + MCP 子进程树 RSS 峰值再平均 | **越低越好**;Linux/WSL 才有数 |
|
|
128
|
+
| 最大峰值内存 (MB) | 单题 RSS 峰值最大值 | 观察 OOM 风险 |
|
|
129
|
+
|
|
130
|
+
Δ 列均为 **with − without**。
|
|
131
|
+
|
|
132
|
+
### JSONL 产出字段(Stage 1)
|
|
133
|
+
|
|
134
|
+
每条在测试集字段基础上追加:
|
|
135
|
+
|
|
136
|
+
```json
|
|
137
|
+
{
|
|
138
|
+
"output_answer": "---\nHomegraphQuery\n...\n---\n\n最终自然语言答案…",
|
|
139
|
+
"agent_status": "success",
|
|
140
|
+
"agent_error": null,
|
|
141
|
+
"agent_backend": "deveco-code-with-homegraph",
|
|
142
|
+
"agent_host": "deveco-code",
|
|
143
|
+
"agent_model": "glm-4.5-flash",
|
|
144
|
+
"agent_turns": 2,
|
|
145
|
+
"agent_duration_ms": 73200,
|
|
146
|
+
"agent_usage": { "total_tokens": 9249 },
|
|
147
|
+
"agent_memory_mb": { "peak_rss_mb": 412.5, "avg_rss_mb": 380.2 },
|
|
148
|
+
"ab_arm": "with-homegraph",
|
|
149
|
+
"deveco_session_id": "ses_101dd0359ffeWUPIajCOuBEQtx",
|
|
150
|
+
"agent_trace_file": "log/traces/with-deveco/R02-ses_101dd0359ffeWUPIajCOuBEQtx.json",
|
|
151
|
+
"agent_tools_used": ["homegraph_homegraph_explore", "read"],
|
|
152
|
+
"agent_used_homegraph": true,
|
|
153
|
+
"agent_answer_source": "session_export"
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
| 字段 | 说明 |
|
|
158
|
+
|------|------|
|
|
159
|
+
| `output_answer` | 工具调用块(`---` 包裹)+ 最终答案;Judge 会剥工具块再打分 |
|
|
160
|
+
| `agent_status` | `success` / `error` |
|
|
161
|
+
| `agent_memory_mb` | 答题期间进程树 RSS(见「内存采样」) |
|
|
162
|
+
| `deveco_session_id` | DevEco 会话 ID(`deveco-code` 宿主) |
|
|
163
|
+
| `agent_trace_file` | 相对 `scripts/qa_eval/` 的 session 导出 JSON 路径 |
|
|
164
|
+
| `agent_used_homegraph` | with 臂是否实际调用了 homegraph MCP 工具 |
|
|
165
|
+
|
|
166
|
+
Judge 追加:`answer_accuracy_score`(0–1)、`evaluation_status`(`success` / `failed`)。
|
|
167
|
+
|
|
168
|
+
### Agent 日志格式(`agent-*-{host}.log`)
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
2026-06-23 09:25:21.052447 Evaluate 1:
|
|
172
|
+
2026-06-23 09:25:21.052571 the 1 turn
|
|
173
|
+
2026-06-23 09:25:22.321954 first token ← 第一次 LLM API 返回
|
|
174
|
+
2026-06-23 09:25:22.321954 totalTokenCount = 349
|
|
175
|
+
2026-06-23 09:25:27.771606 the 2 turn
|
|
176
|
+
2026-06-23 09:25:28.861895 totalTokenCount = 947
|
|
177
|
+
2026-06-23 09:25:30.102441 sessionID = ses_... ← DevEco 专有
|
|
178
|
+
2026-06-23 09:25:30.102441 tools = homegraph_homegraph_explore, read
|
|
179
|
+
2026-06-23 09:25:30.102441 session export → log/traces/with-deveco/R01-ses_....json
|
|
180
|
+
2026-06-23 09:25:30.102441 peakRssMb = 412.5
|
|
181
|
+
2026-06-23 09:25:30.102441 avgRssMb = 380.2
|
|
182
|
+
2026-06-23 09:25:30.102441 completed (73200ms)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Agent 轨迹(Trace)
|
|
186
|
+
|
|
187
|
+
**适用宿主**:主要为 `deveco-code`(每题自动 `deveco export <session_id>`)。
|
|
188
|
+
|
|
189
|
+
| 查看方式 | 命令 / 路径 |
|
|
190
|
+
|----------|-------------|
|
|
191
|
+
| 导出 JSON | `log/traces/{with\|without}-deveco/<ID>-ses_<session>.json` |
|
|
192
|
+
| DevEco CLI | `deveco export <session_id>` 或 `deveco session list`(标题 `qa-eval-{arm}-{id}`) |
|
|
193
|
+
| 报告索引 | `report-{host}.txt` 中【Agent 轨迹 / DevEco Session】表 |
|
|
194
|
+
|
|
195
|
+
轨迹 JSON 含完整 `messages` / `parts`(用户问题、工具 input/output、assistant 文本、token 统计),用于人工复盘 Agent 是否按预期调用 `homegraph_explore`。
|
|
196
|
+
|
|
197
|
+
`claude-code` 宿主将 stream-json 解析进 `output_answer`,不单独落 trace 文件。
|
|
198
|
+
|
|
199
|
+
## 内存采样
|
|
200
|
+
|
|
201
|
+
- **实现**:`memory_monitor.py` 在 Agent 子进程存活期间每 0.25s 采样进程树 RSS(Linux `/proc`)。
|
|
202
|
+
- **写入**:JSONL `agent_memory_mb`;日志 `peakRssMb` / `avgRssMb`;报告「平均/最大峰值内存」。
|
|
203
|
+
- **平台**:**Linux 原生 / WSL** 有数据;**Windows 原生** 无 `/proc`,显示 `N/A`,不影响跑题与准确率/耗时/Token 指标。
|
|
204
|
+
- **采样范围**:builtin / 外部 CLI 的 **子进程树**(含 homegraph MCP 子进程)。
|
|
205
|
+
|
|
206
|
+
## Agent 宿主(`--agent-host`)
|
|
207
|
+
|
|
208
|
+
| 宿主 | 说明 | Agent 前置条件 | 报告文件 |
|
|
209
|
+
|------|------|----------------|----------|
|
|
210
|
+
| `builtin`(默认) | Python 内置多轮 Agent + 智谱/DashScope | `ZHIPU_API_KEY` 或 `DASHSCOPE_API_KEY` | `report-builtin.txt` |
|
|
211
|
+
| `claude-code` | Claude Code CLI(`claude -p` + MCP) | `claude login` 已登录 | `report-claude.txt` |
|
|
212
|
+
| `deveco-code` | DevEco Code / opencode CLI | `deveco` 在 PATH,DevEco provider 已配置 | `report-deveco.txt` |
|
|
213
|
+
|
|
214
|
+
**注意**:`--provider zhipu` 只影响 **builtin Agent** 和 **Judge**;`deveco-code` / `claude-code` 使用各自 CLI 的账号,不读 `ZHIPU_API_KEY`。
|
|
215
|
+
|
|
216
|
+
### DevEco Code 配置要点
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
deveco providers login # 选 Zhipu AI,输入 API Key
|
|
220
|
+
# 凭证目录(Windows): C:\Users\<你>\.config\deveco
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
- pipeline 会在被测仓库写入 `.deveco/deveco.jsonc`(with 臂挂 homegraph MCP + agent prompt;without 臂 deny homegraph 工具)。
|
|
224
|
+
- TUI 若提示 **DEVECO_HOME**,那是 DevEco **Studio** 安装路径(编译用);**跑 qa_eval 可跳过**。
|
|
225
|
+
- 可选 `--deveco-model zhipuai/glm-4.5-flash`(格式 `provider/model`,用 `deveco models` 查看)。
|
|
226
|
+
- 可选 `--deveco-attach http://127.0.0.1:4096` 或 `QA_EVAL_DEVECO_ATTACH` 复用已运行的 `deveco serve`,减少冷启动。
|
|
227
|
+
|
|
228
|
+
Judge(Stage 2)三种宿主共用,仍需 `ZHIPU_API_KEY` 或 `DASHSCOPE_API_KEY`。
|
|
229
|
+
|
|
230
|
+
## 快速开始
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
pip install -r scripts/qa_eval/requirements.txt \
|
|
234
|
+
-i https://pypi.tuna.tsinghua.edu.cn/simple
|
|
235
|
+
|
|
236
|
+
export DASHSCOPE_API_KEY="sk-xxxxxxxx"
|
|
237
|
+
# 或智谱(Key 格式 id.secret,不要加 sk- 前缀):
|
|
238
|
+
# export ZHIPU_API_KEY="xxxxxxxx.yyyyyyyy"
|
|
239
|
+
|
|
240
|
+
cd /path/to/homegraph && npm run build
|
|
241
|
+
node dist/bin/homegraph.js sync /path/to/your/repo
|
|
242
|
+
|
|
243
|
+
python scripts/qa_eval/run_pipeline.py ab -r /path/to/your/repo
|
|
244
|
+
# 智谱:
|
|
245
|
+
# python scripts/qa_eval/run_pipeline.py ab -r /path/to/your/repo --provider zhipu
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### 三种宿主示例
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# ① builtin
|
|
252
|
+
export ZHIPU_API_KEY="your-id.your-secret"
|
|
253
|
+
python scripts/qa_eval/run_pipeline.py ab -r /path/to/repo --provider zhipu --agent-host builtin
|
|
254
|
+
|
|
255
|
+
# ② Claude Code(Agent 用 Claude 账号,Judge 仍用 ZHIPU_API_KEY)
|
|
256
|
+
claude login
|
|
257
|
+
python scripts/qa_eval/run_pipeline.py ab -r /path/to/repo --provider zhipu --agent-host claude-code
|
|
258
|
+
|
|
259
|
+
# ③ DevEco Code
|
|
260
|
+
deveco providers login
|
|
261
|
+
python scripts/qa_eval/run_pipeline.py ab -r /path/to/repo --provider zhipu --agent-host deveco-code
|
|
262
|
+
# python scripts/qa_eval/run_pipeline.py ab -r /path/to/repo --provider zhipu --agent-host deveco-code --deveco-model zhipuai/glm-4.5-flash
|
|
263
|
+
|
|
264
|
+
# ④ 三种依次跑(各写各的报告)
|
|
265
|
+
python scripts/qa_eval/run_pipeline.py hosts -r /path/to/repo --provider zhipu
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
产出示例(每种宿主一套,互不覆盖):
|
|
269
|
+
|
|
270
|
+
| 宿主 | JSONL / 日志(`log/`) | 报告(`data/`) |
|
|
271
|
+
|------|------------------------|-----------------|
|
|
272
|
+
| builtin | `result-with-builtin.jsonl`、`agent-with-builtin.log` | `report-builtin.txt` |
|
|
273
|
+
| claude-code | `result-with-claude.jsonl`、`agent-with-claude.log` | `report-claude.txt` |
|
|
274
|
+
| deveco-code | `result-with-deveco.jsonl`、`agent-with-deveco.log`、`traces/` | `report-deveco.txt` |
|
|
275
|
+
|
|
276
|
+
只重打报告、不重跑 Agent/Judge(无需 `--repo`):
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
python scripts/qa_eval/run_pipeline.py ab --no-agent --no-judge
|
|
280
|
+
# 保留上次 log 中间文件:
|
|
281
|
+
python scripts/qa_eval/run_pipeline.py ab -r /path/to/repo --keep-log
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### `report-{host}.txt` 结构
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
################################################################################
|
|
288
|
+
# A/B 完整评测报告 #
|
|
289
|
+
################################################################################
|
|
290
|
+
|
|
291
|
+
【输入文件】
|
|
292
|
+
【WITH homegraph】效率明细 ← 逐题 + 汇总(首响应/轮次/耗时/Token/内存)
|
|
293
|
+
【WITHOUT homegraph】效率明细
|
|
294
|
+
【WITH / WITHOUT homegraph】准确率统计
|
|
295
|
+
按类别准确率 ← category_l1 分组 with/without 均分与 Δ
|
|
296
|
+
逐题对比 ← 得分、答案摘要;with 赢/平/输 计数
|
|
297
|
+
【Agent 轨迹 / DevEco Session】 ← deveco-code 专有(session_id + 轨迹路径)
|
|
298
|
+
【A/B 汇总表】 ← 两臂核心指标并排 + Δ
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Stage 2 — Judge(`eval_metrics.py`)
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
python scripts/qa_eval/eval_metrics.py \
|
|
305
|
+
-i scripts/qa_eval/log/result-with-builtin.jsonl \
|
|
306
|
+
-o scripts/qa_eval/log/result-with-builtin-scored.jsonl \
|
|
307
|
+
-w 2 --provider zhipu
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
| 参数 | 默认 | 说明 |
|
|
311
|
+
|------|------|------|
|
|
312
|
+
| `-i` / `--input` | — | Agent 产出 JSONL |
|
|
313
|
+
| `-o` / `--output` | `*-scored.jsonl` | 打分结果 |
|
|
314
|
+
| `-w` / `--workers` | `1` | 并发线程数 |
|
|
315
|
+
| `-m` / `--model` | 随 provider | Judge 模型 |
|
|
316
|
+
| `--provider` | 自动检测 | `dashscope` / `zhipu` |
|
|
317
|
+
|
|
318
|
+
## Stage 3 / 4 — 统计脚本
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
python scripts/qa_eval/stats_scores.py \
|
|
322
|
+
-i scripts/qa_eval/log/result-with-builtin-scored.jsonl
|
|
323
|
+
|
|
324
|
+
python scripts/qa_eval/stats_efficiency.py \
|
|
325
|
+
-l scripts/qa_eval/log/agent-with-builtin.log
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
`stats_efficiency.py` 输出逐题首响应、轮次、总时间、总 Token、**峰值内存**;日志缺失时回退 JSONL `agent_usage`(无轮次/耗时/首响应)。
|
|
329
|
+
|
|
330
|
+
## `run_pipeline.py` 命令
|
|
331
|
+
|
|
332
|
+
### `ab` — A/B 全流程
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
python scripts/qa_eval/run_pipeline.py ab -r /path/to/your/repo [选项]
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
| 参数 | 默认 | 说明 |
|
|
339
|
+
|------|------|------|
|
|
340
|
+
| `--repo`, `-r` | — | **被测仓库**(跑 Agent 时必填) |
|
|
341
|
+
| `--dataset`, `-d` | `data/test-set.jsonl` | 测试集 |
|
|
342
|
+
| `--with-jsonl` / `--without-jsonl` | `log/result-*.jsonl` | Agent 产出 |
|
|
343
|
+
| `--with-scored` / `--without-scored` | `log/result-*-scored.jsonl` | Judge 产出 |
|
|
344
|
+
| `--with-log` / `--without-log` | `log/agent-*.log` | Agent 日志 |
|
|
345
|
+
| `--report` | `data/report-{host}.txt` | 完整报告路径 |
|
|
346
|
+
| `--model`, `-m` | 随 provider | builtin Agent + Judge 模型 |
|
|
347
|
+
| `--provider` | 自动检测 | `dashscope` / `zhipu` |
|
|
348
|
+
| `--workers`, `-w` | `1` | Judge 并发 |
|
|
349
|
+
| `--max-turns` | `8` | builtin Agent 最多工具轮次 |
|
|
350
|
+
| `--agent-host` | `builtin` | `builtin` / `claude-code` / `deveco-code` / `all` |
|
|
351
|
+
| `--homegraph-bin` | 自动检测 | 优先本地 `dist/bin/homegraph.js` |
|
|
352
|
+
| `--deveco-model` | `zhipuai/glm-4.5-flash` | DevEco Agent 模型(仅 deveco-code) |
|
|
353
|
+
| `--deveco-attach` | `$QA_EVAL_DEVECO_ATTACH` | 复用 `deveco serve` 地址 |
|
|
354
|
+
| `--no-agent` | — | 跳过 Stage 1 |
|
|
355
|
+
| `--no-judge` | — | 跳过 Stage 2 |
|
|
356
|
+
| `--keep-log` | — | 跑 Agent 前**不清空** `log/` |
|
|
357
|
+
|
|
358
|
+
### `hosts` — 多宿主依次跑
|
|
359
|
+
|
|
360
|
+
等价于对 `builtin,claude-code,deveco-code` 各跑一遍 `ab`:
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
python scripts/qa_eval/run_pipeline.py hosts -r /path/to/repo --provider zhipu
|
|
364
|
+
python scripts/qa_eval/run_pipeline.py hosts -r /path/to/repo --agent-hosts claude-code,deveco-code
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### `score` — 单路 Judge + 统计
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
python scripts/qa_eval/run_pipeline.py score \
|
|
371
|
+
-i scripts/qa_eval/log/result-with-builtin.jsonl \
|
|
372
|
+
-l scripts/qa_eval/log/agent-with-builtin.log
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
## 外部 Agent 产出(可选)
|
|
376
|
+
|
|
377
|
+
若用 CodeGenie / Trae 等外部系统产出**同格式** JSONL + 日志:
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
python scripts/qa_eval/run_pipeline.py ab --no-agent -r /path/to/repo
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
## 常见问题
|
|
384
|
+
|
|
385
|
+
| 现象 | 处理 |
|
|
386
|
+
|------|------|
|
|
387
|
+
| Claude 准确率全低 / `Not logged in` | `claude login` 后重跑;pipeline 首题会 fail-fast |
|
|
388
|
+
| `deveco-code` exit 1 / `Model not found` | 用 `deveco models` 里的 `zhipuai/...` 名,或 `--deveco-model zhipuai/glm-4.5-flash` |
|
|
389
|
+
| DevEco `ServeError` / 端口占用 | `netstat -ano \| findstr :4096` 后结束进程,或不加 `--deveco-attach` |
|
|
390
|
+
| DevEco 凭证损坏 | `deveco providers reset` 后重新 login |
|
|
391
|
+
| `401` / Judge 全失败 | 检查 Key;智谱用 `--provider zhipu`,Key 格式 `id.secret` |
|
|
392
|
+
| `Cannot find module 'arkanalyzer'` | `npm run build`,用 `node dist/bin/homegraph.js sync` |
|
|
393
|
+
| `rg not found on PATH` | 安装 ripgrep(without 臂 builtin 需要) |
|
|
394
|
+
| 日志解析 0 条任务 | 确认 log 含 `Evaluate N:` 行 |
|
|
395
|
+
| 内存全为 N/A | Windows 原生无 `/proc`;用 WSL/Linux 测内存,或忽略该列 |
|
|
396
|
+
| with 臂未用 homegraph | 看报告轨迹表 `HG` 列或 `agent_used_homegraph`;DevEco with 臂有专用 prompt |
|
|
397
|
+
| 分数偏低但答案看起来对 | 检查 `output_answer` 是否只剩工具块、无最终自然语言答案 |
|
|
398
|
+
| pip 慢 | 清华镜像(见快速开始) |
|
|
399
|
+
|
|
400
|
+
## 最小通路(仅 Judge 单条)
|
|
401
|
+
|
|
402
|
+
```bash
|
|
403
|
+
export DASHSCOPE_API_KEY="sk-xxx"
|
|
404
|
+
head -1 scripts/qa_eval/log/result-with-builtin.jsonl > /tmp/one.jsonl
|
|
405
|
+
python scripts/qa_eval/eval_metrics.py -i /tmp/one.jsonl -o /tmp/one-scored.jsonl
|
|
406
|
+
python scripts/qa_eval/stats_scores.py -i /tmp/one-scored.jsonl
|
|
407
|
+
```
|