oh-my-knowledge 0.28.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -0
- package/README.zh.md +39 -0
- package/dist/src/analysis/failure-clusterer.js +1 -1
- package/dist/src/analysis/failure-clusterer.js.map +1 -1
- package/dist/src/analysis/gap-analyzer.d.ts +8 -1
- package/dist/src/analysis/gap-analyzer.d.ts.map +1 -1
- package/dist/src/analysis/gap-analyzer.js +65 -33
- package/dist/src/analysis/gap-analyzer.js.map +1 -1
- package/dist/src/analysis/sample-diagnostics.js +14 -14
- package/dist/src/analysis/sample-diagnostics.js.map +1 -1
- package/dist/src/cli/commands/observe.d.ts.map +1 -1
- package/dist/src/cli/commands/observe.js +169 -0
- package/dist/src/cli/commands/observe.js.map +1 -1
- package/dist/src/cli/commands/registry.d.ts.map +1 -1
- package/dist/src/cli/commands/registry.js +9 -1
- package/dist/src/cli/commands/registry.js.map +1 -1
- package/dist/src/cli/commands/studio.d.ts.map +1 -1
- package/dist/src/cli/commands/studio.js +8 -0
- package/dist/src/cli/commands/studio.js.map +1 -1
- package/dist/src/cli/i18n-dict.d.ts +1 -1
- package/dist/src/cli/i18n-dict.d.ts.map +1 -1
- package/dist/src/cli/i18n-dict.js +125 -11
- package/dist/src/cli/i18n-dict.js.map +1 -1
- package/dist/src/grading/debias-validate.js +4 -4
- package/dist/src/grading/debias-validate.js.map +1 -1
- package/dist/src/grading/gold-cli.js +2 -2
- package/dist/src/grading/gold-cli.js.map +1 -1
- package/dist/src/observability/inbox-view-model.d.ts +17 -0
- package/dist/src/observability/inbox-view-model.d.ts.map +1 -0
- package/dist/src/observability/inbox-view-model.js +62 -0
- package/dist/src/observability/inbox-view-model.js.map +1 -0
- package/dist/src/observability/inbox.d.ts +100 -0
- package/dist/src/observability/inbox.d.ts.map +1 -0
- package/dist/src/observability/inbox.js +703 -0
- package/dist/src/observability/inbox.js.map +1 -0
- package/dist/src/observability/trace-adapter.d.ts +12 -64
- package/dist/src/observability/trace-adapter.d.ts.map +1 -1
- package/dist/src/observability/trace-adapter.js +9 -355
- package/dist/src/observability/trace-adapter.js.map +1 -1
- package/dist/src/observability/trace-attribution.d.ts +28 -0
- package/dist/src/observability/trace-attribution.d.ts.map +1 -0
- package/dist/src/observability/trace-attribution.js +104 -0
- package/dist/src/observability/trace-attribution.js.map +1 -0
- package/dist/src/observability/trace-segmenter.d.ts +42 -0
- package/dist/src/observability/trace-segmenter.d.ts.map +1 -0
- package/dist/src/observability/trace-segmenter.js +231 -0
- package/dist/src/observability/trace-segmenter.js.map +1 -0
- package/dist/src/observability/trace-source.d.ts +72 -0
- package/dist/src/observability/trace-source.d.ts.map +1 -0
- package/dist/src/observability/trace-source.js +142 -0
- package/dist/src/observability/trace-source.js.map +1 -0
- package/dist/src/renderer/html-renderer.d.ts.map +1 -1
- package/dist/src/renderer/html-renderer.js +107 -59
- package/dist/src/renderer/html-renderer.js.map +1 -1
- package/dist/src/renderer/layout.d.ts.map +1 -1
- package/dist/src/renderer/layout.js +58 -21
- package/dist/src/renderer/layout.js.map +1 -1
- package/dist/src/renderer/observation-inbox-renderer.d.ts +4 -0
- package/dist/src/renderer/observation-inbox-renderer.d.ts.map +1 -0
- package/dist/src/renderer/observation-inbox-renderer.js +900 -0
- package/dist/src/renderer/observation-inbox-renderer.js.map +1 -0
- package/dist/src/renderer/summary.d.ts +17 -0
- package/dist/src/renderer/summary.d.ts.map +1 -1
- package/dist/src/renderer/summary.js +277 -33
- package/dist/src/renderer/summary.js.map +1 -1
- package/dist/src/renderer/trends.d.ts.map +1 -1
- package/dist/src/renderer/trends.js +3 -1
- package/dist/src/renderer/trends.js.map +1 -1
- package/dist/src/server/report-server.d.ts +3 -1
- package/dist/src/server/report-server.d.ts.map +1 -1
- package/dist/src/server/report-server.js +35 -4
- package/dist/src/server/report-server.js.map +1 -1
- package/dist/src/shared/tool-search.d.ts +9 -0
- package/dist/src/shared/tool-search.d.ts.map +1 -0
- package/dist/src/shared/tool-search.js +104 -0
- package/dist/src/shared/tool-search.js.map +1 -0
- package/dist/src/types/executor.d.ts +4 -0
- package/dist/src/types/executor.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observation-inbox-renderer.js","sourceRoot":"","sources":["../../../src/renderer/observation-inbox-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,23 @@ export declare function renderHumanAgreement(agreement: ReportHumanAgreement | u
|
|
|
30
30
|
*/
|
|
31
31
|
export declare function renderSaturationCurve(saturation: SaturationData | undefined, variants: string[], lang: Lang): string;
|
|
32
32
|
export declare function renderSummaryCards(variants: string[], summary: Record<string, VariantSummary>, lang: Lang, variance?: VarianceData): string;
|
|
33
|
+
/**
|
|
34
|
+
* 评分说明 modal — 公开 composite 计算方式 + 局限,所有展示综合分的地方都通向同一份说明
|
|
35
|
+
* (六维对比表头 / 列表页 score 列 / 趋势页 chart caption)。
|
|
36
|
+
*
|
|
37
|
+
* 测量学诚实性 ≠ 藏起来怕用户误用,而是展示 + 说清楚边界。这个 modal 是简版 (~10 行),
|
|
38
|
+
* 完整推导 (五层评分管道架构 / ratioToScore 公式 / 多层 gate 与 composite 关系)
|
|
39
|
+
* 在 docs/zh/scoring.md。
|
|
40
|
+
*/
|
|
41
|
+
export declare function renderScoringModal(id: string, lang: Lang): string;
|
|
42
|
+
/**
|
|
43
|
+
* Cross-sample inter-judge agreement table — only renders when at least one variant
|
|
44
|
+
* has multi-judge ensemble data. This is the v0.20.2 "blog headline" view: shows
|
|
45
|
+
* Pearson + MAD across the whole sample set, the metric that refutes "Claude judge
|
|
46
|
+
* Claude same-modality bias".
|
|
47
|
+
*/
|
|
48
|
+
export declare function renderJudgeAgreementBlock(variants: string[], summary: Record<string, VariantSummary>, lang: Lang): string;
|
|
49
|
+
export declare function renderMethodologyAudit(report: Report, variants: string[], summary: Record<string, VariantSummary>, lang: Lang): string;
|
|
33
50
|
export declare function renderVarianceComparisons(variance: VarianceData | undefined, lang: Lang, layeredStatsOpen?: boolean, summary?: Record<string, VariantSummary>): string;
|
|
34
51
|
export declare function renderAnalysis(report: Report | undefined, lang: Lang): string;
|
|
35
52
|
export declare function renderAgentOverview(variants: string[], summary: Record<string, VariantSummary>, lang: Lang): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/renderer/summary.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,YAAY,EAAsB,MAAM,yBAAyB,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAyB,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,cAAc,EAAgD,YAAY,EAAoB,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAyCtQ,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAYlE;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAmBpE;
|
|
1
|
+
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/renderer/summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,11 +20,11 @@ function verdictOneLine(level, lang, treatment, control) {
|
|
|
20
20
|
const c = control ?? (lang === 'zh' ? '对照组' : 'control');
|
|
21
21
|
if (lang === 'zh') {
|
|
22
22
|
switch (level) {
|
|
23
|
-
case 'PROGRESS': return `${t} 比 ${c}
|
|
24
|
-
case 'CAUTIOUS': return `${t} 比 ${c}
|
|
25
|
-
case 'REGRESS': return `${t} 比 ${c}
|
|
26
|
-
case 'NOISE': return `${t} 和 ${c}
|
|
27
|
-
case 'UNDERPOWERED': return
|
|
23
|
+
case 'PROGRESS': return `${t} 比 ${c} 明显更好——可以发布`;
|
|
24
|
+
case 'CAUTIOUS': return `${t} 比 ${c} 略好——但建议再仔细看,差距很小或某层未达标`;
|
|
25
|
+
case 'REGRESS': return `${t} 比 ${c} 明显更差——不要发布`;
|
|
26
|
+
case 'NOISE': return `${t} 和 ${c} 没看出明显差别——可以多加几条用例再试`;
|
|
27
|
+
case 'UNDERPOWERED': return `评测用例数太少,看不出 ${t} 和 ${c} 的差别——多跑几个再看`;
|
|
28
28
|
case 'SOLO': return `只跑了一组,需要加对照组才能对比`;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -76,17 +76,38 @@ export function levelTooltip(level, lang) {
|
|
|
76
76
|
case 'SOLO': return 'Single variant — no comparison';
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
//
|
|
80
|
-
// 1
|
|
81
|
-
// 2
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
79
|
+
// Verdict hero — verdict 是报告的「答案」,应在头部抢眼可读:
|
|
80
|
+
// 行 1: 状态 badge (明显进步 / PROGRESS) + 自然语言句子 (含 ship action)
|
|
81
|
+
// 行 2: 分差 + 评测规模 — 最直观的两个数字, "差多少 / 跑了多少"
|
|
82
|
+
// machine-readable enum 通过 data-verdict-level 属性挂在 section 上,给 CI/工具用;
|
|
83
|
+
// ship-action token 写进 aria-label 给 screen reader,但不放进 badge 显示文字 ——
|
|
84
|
+
// 因为 verdictOneLine 的中文句子已经包含 "可以发布 / 不要发布" 这类 action,
|
|
85
|
+
// badge 再放一遍是重复。CI / CV 这种统计学专名挪到 variance 表 + tooltip,hero
|
|
86
|
+
// 不堆 jargon. 想看精确边界值的工程师下滑到下方的配对对比 / 波动检验表里看。
|
|
87
|
+
// computeVerdict 在历史混合批量 report 上有 NPE 风险,try/catch 让 renderer 不 crash。
|
|
88
|
+
const SHIP_LABEL = {
|
|
89
|
+
PROGRESS: { zh: '可发布', en: 'SHIP' },
|
|
90
|
+
CAUTIOUS: { zh: '需排查', en: 'INVESTIGATE' },
|
|
91
|
+
REGRESS: { zh: '勿发布', en: 'DO NOT SHIP' },
|
|
92
|
+
NOISE: { zh: '不下结论', en: 'NO CALL' },
|
|
93
|
+
UNDERPOWERED: { zh: '数据不足', en: 'INSUFFICIENT DATA' },
|
|
94
|
+
SOLO: { zh: '缺对照', en: 'ADD CONTROL' },
|
|
95
|
+
};
|
|
96
|
+
function computeMedianCVPercent(report) {
|
|
97
|
+
const variance = report.variance;
|
|
98
|
+
if (!variance || (variance.runs ?? 0) < 2)
|
|
99
|
+
return null;
|
|
100
|
+
const cvs = [];
|
|
101
|
+
for (const v of Object.values(variance.perVariant ?? {})) {
|
|
102
|
+
if (typeof v.stddev === 'number' && typeof v.mean === 'number' && v.mean > 0) {
|
|
103
|
+
cvs.push((v.stddev / v.mean) * 100);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (cvs.length === 0)
|
|
107
|
+
return null;
|
|
108
|
+
cvs.sort((a, b) => a - b);
|
|
109
|
+
return cvs[Math.floor(cvs.length / 2)];
|
|
110
|
+
}
|
|
90
111
|
export function renderVerdictPill(report, lang) {
|
|
91
112
|
let result;
|
|
92
113
|
try {
|
|
@@ -100,13 +121,39 @@ export function renderVerdictPill(report, lang) {
|
|
|
100
121
|
const oneLine = verdictOneLine(level, lang, pair?.treatment, pair?.control);
|
|
101
122
|
const tooltip = levelTooltip(level, lang);
|
|
102
123
|
const prefix = lang === 'zh' ? '测评结论' : 'Verdict';
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
124
|
+
// 机器可读 enum 永远是 level token; 显示给用户的文字按 lang i18n.
|
|
125
|
+
const levelDisplay = lang === 'zh' ? levelLabel(level, lang) : level;
|
|
126
|
+
const shipAria = lang === 'zh' ? SHIP_LABEL[level].zh : SHIP_LABEL[level].en;
|
|
127
|
+
// hero 只放「答案」: 分差是 verdict 的核心证据数字, 单独一枚 chip。
|
|
128
|
+
// 评测规模 (用例数 × 轮次) 走「实验配置」section 的 subtitle 那条 canonical 路径,
|
|
129
|
+
// 不在 hero 里重复; CV / CI 走 chip tooltip + 方法学审计 / 波动表。
|
|
130
|
+
const ci = report.meta?.pairComparisons?.[0]?.diffBootstrapCI;
|
|
131
|
+
const cvPct = computeMedianCVPercent(report);
|
|
132
|
+
const metrics = [];
|
|
133
|
+
if (ci) {
|
|
134
|
+
const sign = ci.estimate >= 0 ? '+' : '';
|
|
135
|
+
const cvSuffix = cvPct != null
|
|
136
|
+
? (lang === 'zh' ? `;多轮稳定性 CV=${cvPct.toFixed(1)}% (${cvPct < 5 ? '稳' : cvPct < 15 ? '中' : '不稳'})` : `; CV=${cvPct.toFixed(1)}% (${cvPct < 5 ? 'stable' : cvPct < 15 ? 'moderate' : 'unstable'})`)
|
|
137
|
+
: '';
|
|
138
|
+
const ciTipBase = lang === 'zh'
|
|
139
|
+
? `实验组与对照组综合分均值差(Δ)。bootstrap 95% 可信区间 [${ci.low}, ${ci.high}],${ci.significant ? '不含 0 = 差异显著' : '跨过 0 = 差异不显著'}${cvSuffix}`
|
|
140
|
+
: `Treatment minus control mean composite score (Δ). Bootstrap 95% CI [${ci.low}, ${ci.high}], ${ci.significant ? 'excludes 0 ⇒ significant' : 'spans 0 ⇒ not significant'}${cvSuffix}`;
|
|
141
|
+
metrics.push({
|
|
142
|
+
label: lang === 'zh' ? '分差' : 'Δ',
|
|
143
|
+
value: `${sign}${ci.estimate}`,
|
|
144
|
+
tip: ciTipBase,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const metricChips = metrics.map((m) => `<span class="verdict-metric"${m.tip ? ` title="${e(m.tip)}"` : ''}>` +
|
|
148
|
+
`<span class="verdict-metric-label">${e(m.label)}</span>` +
|
|
149
|
+
`<span class="verdict-metric-value">${e(m.value)}</span></span>`).join('');
|
|
150
|
+
return `<section class="page-verdict verdict-${level}" role="status" data-verdict-level="${e(level)}" aria-label="${e(prefix)}: ${e(levelDisplay)} · ${e(shipAria)} · ${e(oneLine)}" title="${e(tooltip)}">
|
|
151
|
+
<div class="page-verdict-head">
|
|
152
|
+
<span class="page-verdict-badge"><span class="page-verdict-badge-dot" aria-hidden="true">●</span>${e(levelDisplay)}</span>
|
|
153
|
+
<span class="page-verdict-text">${e(oneLine)}</span>
|
|
154
|
+
</div>
|
|
155
|
+
${metricChips ? `<div class="page-verdict-metrics">${metricChips}</div>` : ''}
|
|
156
|
+
</section>`;
|
|
110
157
|
}
|
|
111
158
|
/**
|
|
112
159
|
* Pairwise diff (treatment vs control) bootstrap CI table — populated only when
|
|
@@ -170,11 +217,11 @@ export function renderHumanAgreement(agreement, lang) {
|
|
|
170
217
|
const interpret = lang === 'zh'
|
|
171
218
|
? (Number.isNaN(a.alpha)
|
|
172
219
|
? '评分多样性不足,α 未定义'
|
|
173
|
-
: a.alpha >= 0.8 ? '
|
|
174
|
-
: a.alpha >= 0.667 ? '
|
|
175
|
-
: a.alpha >= 0.4 ? '
|
|
176
|
-
: a.alpha >= 0 ? '
|
|
177
|
-
: '
|
|
220
|
+
: a.alpha >= 0.8 ? '高度一致——结论可放心使用'
|
|
221
|
+
: a.alpha >= 0.667 ? '可接受——谨慎结论'
|
|
222
|
+
: a.alpha >= 0.4 ? '较弱一致——结论需配合 CI 与人工抽检'
|
|
223
|
+
: a.alpha >= 0 ? '偏差较大——排查 rubric / prompt'
|
|
224
|
+
: '系统性反向——重新审视判分逻辑')
|
|
178
225
|
: (Number.isNaN(a.alpha)
|
|
179
226
|
? 'insufficient rating variance for α'
|
|
180
227
|
: a.alpha >= 0.8 ? 'high agreement — conclusions trustworthy'
|
|
@@ -323,7 +370,10 @@ export function renderSummaryCards(variants, summary, lang, variance) {
|
|
|
323
370
|
//
|
|
324
371
|
// composite 合成分 (= (fact + behavior + judge) / 3) 从 v0.16 起不再在此表主视觉呈现,
|
|
325
372
|
// 仅保留在 report JSON 数据层 + Variance & Significance 表顶层 flat 字段(legacy)。
|
|
326
|
-
//
|
|
373
|
+
// 综合分放在第一列, 紧贴 实验分组. 它是 fact/behavior/judge 三层的等权均值,
|
|
374
|
+
// 在 omk 内部承担「跨 run 排序 / bootstrap CI / verdict 比较信号」三个角色 ——
|
|
375
|
+
// 这里展示 + 表头 ? button 弹 modal 公开计算方式 + 局限, 让用户知情消费。
|
|
376
|
+
// 其余六列保持 layer-first (fact / behavior / judge / cost / efficiency / stability)。
|
|
327
377
|
const headerCols = [
|
|
328
378
|
{ key: 'dimFact', label: t('dimFact', lang) },
|
|
329
379
|
{ key: 'dimBehavior', label: t('dimBehavior', lang) },
|
|
@@ -332,7 +382,10 @@ export function renderSummaryCards(variants, summary, lang, variance) {
|
|
|
332
382
|
{ key: 'dimEfficiency', label: t('dimEfficiency', lang) },
|
|
333
383
|
{ key: 'dimStability', label: t('dimStability', lang) },
|
|
334
384
|
];
|
|
335
|
-
const
|
|
385
|
+
const scoringModalId = 'guide-scoring';
|
|
386
|
+
const compositeLabel = lang === 'zh' ? '综合分' : 'Composite';
|
|
387
|
+
const compositeHeader = `<th data-i18n="dimComposite" style="border-right:2px solid var(--border)">${e(compositeLabel)} <button type="button" class="hint-btn" onclick="openModal('${scoringModalId}')" aria-label="${e(lang === 'zh' ? '综合分怎么算的?' : 'How is composite computed?')}" aria-haspopup="dialog">?</button></th>`;
|
|
388
|
+
const thead = `<tr><th data-i18n="variants">${t('variants', lang)}</th>${compositeHeader}${headerCols.map((c) => `<th data-i18n="${c.key}">${c.label}</th>`).join('')}</tr>`;
|
|
336
389
|
// 渲染单层分数 cell(事实/行为/LLM 评价通用)。
|
|
337
390
|
// 优先读跨 run 均值(byLayer[key].mean),fallback 到 summary 的单 run avg。
|
|
338
391
|
// 缺数据时显示 "—" + 灰色,让读者明确看到"这一层这批用例/评委没测到",不假装有值。
|
|
@@ -449,7 +502,15 @@ export function renderSummaryCards(variants, summary, lang, variance) {
|
|
|
449
502
|
? stabDetails.map((d) => `<div class="summary-detail">${d}</div>`).join('')
|
|
450
503
|
: '';
|
|
451
504
|
const stabCell = `<td class="summary-cell"><div class="summary-value" style="color:${stabColor}">${stabValue}</div>${stabDetail}</td>`;
|
|
452
|
-
|
|
505
|
+
// 综合分 cell. 颜色逻辑同其他质量列, 右侧加 2px border 跟分项分开视觉分组。
|
|
506
|
+
const composite = s.avgCompositeScore;
|
|
507
|
+
const compositeHasValue = typeof composite === 'number' && composite > 0;
|
|
508
|
+
const compositeColor = compositeHasValue
|
|
509
|
+
? (composite >= 4 ? 'var(--green)' : composite >= 3 ? 'var(--yellow)' : 'var(--red)')
|
|
510
|
+
: 'var(--text-muted)';
|
|
511
|
+
const compositeDisplay = compositeHasValue ? composite.toFixed(2) : '—';
|
|
512
|
+
const compositeCell = `<td class="summary-cell" style="border-right:2px solid var(--border)"><div class="summary-value summary-value-primary" style="color:${compositeColor};font-weight:700">${compositeDisplay}</div></td>`;
|
|
513
|
+
return `<tr><td style="border-left:3px solid ${color};padding-left:12px"><strong>${e(v)}</strong></td>${compositeCell}${factCell}${behaviorCell}${judgeCell}${costCell}${effCell}${stabCell}</tr>`;
|
|
453
514
|
}).join('');
|
|
454
515
|
const guideModalId = 'guide-six-dims';
|
|
455
516
|
const guideTitle = lang === 'zh' ? '如何阅读六维对比?' : 'How to read this six-dimension comparison?';
|
|
@@ -487,6 +548,7 @@ export function renderSummaryCards(variants, summary, lang, variance) {
|
|
|
487
548
|
<tr><td ${sub}>CV</td><td ${subDesc}>Score swing as a percentage of the mean (e.g., CV 2% = swings are about 2% of the mean)</td></tr>
|
|
488
549
|
<tr><td ${sub}>95% CI</td><td ${subDesc}>If you ran infinitely many times, the true mean has a 95% chance of falling in this range — narrower = you can trust the measured mean more</td></tr>
|
|
489
550
|
`;
|
|
551
|
+
const scoringModalHtml = renderScoringModal(scoringModalId, lang);
|
|
490
552
|
return `
|
|
491
553
|
<h2 style="display:flex;align-items:center;gap:4px">${lang === 'zh' ? '六维对比' : 'Six-Dimension Comparison'} <button type="button" class="hint-btn" onclick="openModal('${guideModalId}')" aria-label="${e(guideTitle)}" aria-haspopup="dialog">?</button></h2>
|
|
492
554
|
<div id="${guideModalId}" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="${guideModalId}-title" onclick="if(event.target===this)closeModal('${guideModalId}')">
|
|
@@ -499,13 +561,78 @@ export function renderSummaryCards(variants, summary, lang, variance) {
|
|
|
499
561
|
<table class="modal-table"><tbody>${guideRows}</tbody></table>
|
|
500
562
|
</div>
|
|
501
563
|
</div>
|
|
564
|
+
${scoringModalHtml}
|
|
502
565
|
<div class="table-wrap">
|
|
503
566
|
<table class="summary-table">
|
|
504
567
|
<thead>${thead}</thead>
|
|
505
568
|
<tbody>${rows}</tbody>
|
|
506
569
|
</table>
|
|
570
|
+
</div>`;
|
|
571
|
+
}
|
|
572
|
+
/**
|
|
573
|
+
* 评分说明 modal — 公开 composite 计算方式 + 局限,所有展示综合分的地方都通向同一份说明
|
|
574
|
+
* (六维对比表头 / 列表页 score 列 / 趋势页 chart caption)。
|
|
575
|
+
*
|
|
576
|
+
* 测量学诚实性 ≠ 藏起来怕用户误用,而是展示 + 说清楚边界。这个 modal 是简版 (~10 行),
|
|
577
|
+
* 完整推导 (五层评分管道架构 / ratioToScore 公式 / 多层 gate 与 composite 关系)
|
|
578
|
+
* 在 docs/zh/scoring.md。
|
|
579
|
+
*/
|
|
580
|
+
export function renderScoringModal(id, lang) {
|
|
581
|
+
const title = lang === 'zh' ? '综合分怎么算的?' : 'How is composite computed?';
|
|
582
|
+
const intro = lang === 'zh'
|
|
583
|
+
? '综合分(composite)= 等权均值({事实, 行为, LLM 评价})。1-5 制。'
|
|
584
|
+
: 'Composite = unweighted mean of {fact, behavior, LLM judge}. Scale 1-5.';
|
|
585
|
+
const sectionHead = (text) => `<tr><td colspan="2" style="padding:14px 0 6px;color:var(--text-primary);font-weight:600;font-size:13px;border-top:1px solid var(--border)">${e(text)}</td></tr>`;
|
|
586
|
+
const row = (label, body) => `<tr><td style="padding:6px 12px 6px 0;color:var(--text-secondary);font-size:12px;font-weight:500;white-space:nowrap;vertical-align:top;width:120px">${e(label)}</td><td style="padding:6px 0;color:var(--text-secondary);font-size:12px;line-height:1.6">${body}</td></tr>`;
|
|
587
|
+
const calcRows = lang === 'zh' ? [
|
|
588
|
+
row('事实 / 行为', '断言通过率经 <code>1 + 通过率 × 4</code> 线性映射到 1-5 制'),
|
|
589
|
+
row('LLM 评价', '评委模型直接给 1-5 分'),
|
|
590
|
+
row('缺失某层', '自动降维(参与计算的层取均值)'),
|
|
591
|
+
] : [
|
|
592
|
+
row('Fact / Behavior', 'Assertion pass-rate mapped to 1-5 via <code>1 + ratio × 4</code>'),
|
|
593
|
+
row('LLM judge', 'Judge model returns 1-5 score directly'),
|
|
594
|
+
row('Missing layer', 'Auto-collapse (mean over present layers)'),
|
|
595
|
+
];
|
|
596
|
+
const limitRows = lang === 'zh' ? [
|
|
597
|
+
row('① 等权聚合', '三层各 1/3 权重不是从需求 derive 的,无显式构造效度论证'),
|
|
598
|
+
row('② 量尺不一致', '事实是 binary 通过率 stretch 到 1-5;评委是真序数评分。直接均值违反量表理论(measurement scale homogeneity)'),
|
|
599
|
+
row('③ 缺失自动降维', '不同 variant / skill 配的层数不同时,综合分数字相同但 construct 不同,<strong>不可机械跨 variant / 跨 skill 比较</strong>'),
|
|
600
|
+
] : [
|
|
601
|
+
row('① Equal-weight aggregation', 'The 1/3 weight per layer is ad hoc, not derived from stakeholder needs; no explicit construct validity argument'),
|
|
602
|
+
row('② Mixed scales added directly', 'Fact is binary pass-rate stretched to 1-5; judge is true ordinal. Direct mean violates measurement scale homogeneity'),
|
|
603
|
+
row('③ Auto-collapse on missing', 'When variants/skills have different layer coverage, composite numbers look same but represent different constructs — <strong>not mechanically comparable across variants/skills</strong>'),
|
|
604
|
+
];
|
|
605
|
+
const usageRows = lang === 'zh' ? [
|
|
606
|
+
row('✓ 适用', '同一份 eval-samples 上 A/B 比较,看「分差 + bootstrap CI + 三层独立 gate」联合判断'),
|
|
607
|
+
row('✗ 不适用', '当作 absolute psychometric measure(说「这 skill 4.28/5 分」)'),
|
|
608
|
+
] : [
|
|
609
|
+
row('✓ Use for', 'A/B comparison on same eval-samples — read "diff + bootstrap CI + per-layer gate" jointly'),
|
|
610
|
+
row('✗ Don\'t use as', 'Absolute psychometric measure (claiming "this skill is 4.28/5")'),
|
|
611
|
+
];
|
|
612
|
+
const calcSection = lang === 'zh' ? '怎么算的' : 'How it\'s computed';
|
|
613
|
+
const limitSection = lang === 'zh' ? '局限(直白说)' : 'Limitations (frankly)';
|
|
614
|
+
const usageSection = lang === 'zh' ? '推荐用法' : 'Recommended usage';
|
|
615
|
+
const docsLink = lang === 'zh'
|
|
616
|
+
? '完整推导 / 五层评分管道架构 / 多层 gate 与综合分的关系:<a href="https://github.com/lizhiyao/oh-my-knowledge/blob/main/docs/zh/scoring.md" target="_blank" rel="noopener">docs/zh/scoring.md</a>'
|
|
617
|
+
: 'Full derivation / five-layer scoring pipeline / multi-layer gate & composite relationship: <a href="https://github.com/lizhiyao/oh-my-knowledge/blob/main/docs/zh/scoring.md" target="_blank" rel="noopener">docs/zh/scoring.md</a>';
|
|
618
|
+
return `<div id="${id}" class="modal-overlay" role="dialog" aria-modal="true" aria-labelledby="${id}-title" onclick="if(event.target===this)closeModal('${id}')">
|
|
619
|
+
<div class="modal-content">
|
|
620
|
+
<div class="modal-header">
|
|
621
|
+
<strong id="${id}-title" style="font-size:1rem">${e(title)}</strong>
|
|
622
|
+
<button type="button" class="modal-close" onclick="closeModal('${id}')" aria-label="${lang === 'zh' ? '关闭' : 'Close'}">✕</button>
|
|
623
|
+
</div>
|
|
624
|
+
<p style="font-size:13px;color:var(--text-secondary);margin:4px 0 12px">${e(intro)}</p>
|
|
625
|
+
<table class="modal-table"><tbody>
|
|
626
|
+
${sectionHead(calcSection)}
|
|
627
|
+
${calcRows.join('')}
|
|
628
|
+
${sectionHead(limitSection)}
|
|
629
|
+
${limitRows.join('')}
|
|
630
|
+
${sectionHead(usageSection)}
|
|
631
|
+
${usageRows.join('')}
|
|
632
|
+
</tbody></table>
|
|
633
|
+
<p style="font-size:11px;color:var(--text-muted);margin:14px 0 0;line-height:1.6">${docsLink}</p>
|
|
507
634
|
</div>
|
|
508
|
-
|
|
635
|
+
</div>`;
|
|
509
636
|
}
|
|
510
637
|
/**
|
|
511
638
|
* Cross-sample inter-judge agreement table — only renders when at least one variant
|
|
@@ -513,7 +640,7 @@ export function renderSummaryCards(variants, summary, lang, variance) {
|
|
|
513
640
|
* Pearson + MAD across the whole sample set, the metric that refutes "Claude judge
|
|
514
641
|
* Claude same-modality bias".
|
|
515
642
|
*/
|
|
516
|
-
function renderJudgeAgreementBlock(variants, summary, lang) {
|
|
643
|
+
export function renderJudgeAgreementBlock(variants, summary, lang) {
|
|
517
644
|
const variantsWithEnsemble = variants.filter((v) => summary[v]?.judgeAgreement);
|
|
518
645
|
if (variantsWithEnsemble.length === 0)
|
|
519
646
|
return '';
|
|
@@ -551,6 +678,116 @@ function renderJudgeAgreementBlock(variants, summary, lang) {
|
|
|
551
678
|
</table>
|
|
552
679
|
</div>`;
|
|
553
680
|
}
|
|
681
|
+
function badgeIcon(status) {
|
|
682
|
+
switch (status) {
|
|
683
|
+
case 'pass': return '✓';
|
|
684
|
+
case 'warn': return '⚠';
|
|
685
|
+
case 'fail': return '✗';
|
|
686
|
+
case 'skip': return '—';
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
function computeJudgeAgreementBadge(variants, summary, lang) {
|
|
690
|
+
const treatment = variants[1] ?? variants[0];
|
|
691
|
+
const ag = summary[treatment]?.judgeAgreement;
|
|
692
|
+
if (!ag || ag.pearson == null)
|
|
693
|
+
return null;
|
|
694
|
+
const p = ag.pearson;
|
|
695
|
+
const status = p >= 0.7 ? 'pass' : p >= 0.4 ? 'warn' : 'fail';
|
|
696
|
+
const verdict = status === 'pass'
|
|
697
|
+
? (lang === 'zh' ? '评委一致' : 'judges agree')
|
|
698
|
+
: status === 'warn'
|
|
699
|
+
? (lang === 'zh' ? '评委偏弱一致' : 'judges weakly agree')
|
|
700
|
+
: (lang === 'zh' ? '评委分歧大' : 'judges diverge');
|
|
701
|
+
return {
|
|
702
|
+
key: 'judge',
|
|
703
|
+
label: verdict,
|
|
704
|
+
status,
|
|
705
|
+
detail: lang === 'zh' ? `Pearson ${p}(≥0.7 一致 / 0.4-0.7 偏弱 / <0.4 分歧)` : `Pearson ${p} (≥0.7 agree / 0.4-0.7 weak / <0.4 diverge)`,
|
|
706
|
+
};
|
|
707
|
+
}
|
|
708
|
+
function computeSignificanceBadge(report, lang) {
|
|
709
|
+
const ci = report.meta?.pairComparisons?.[0]?.diffBootstrapCI;
|
|
710
|
+
if (!ci)
|
|
711
|
+
return null;
|
|
712
|
+
const status = ci.significant ? 'pass' : 'warn';
|
|
713
|
+
const label = ci.significant
|
|
714
|
+
? (lang === 'zh' ? '差异显著' : 'significant')
|
|
715
|
+
: (lang === 'zh' ? '差异不显著' : 'not significant');
|
|
716
|
+
return {
|
|
717
|
+
key: 'sig',
|
|
718
|
+
label,
|
|
719
|
+
status,
|
|
720
|
+
detail: lang === 'zh' ? `bootstrap 95% CI [${ci.low}, ${ci.high}]${ci.significant ? '(不含 0)' : '(跨过 0)'}` : `Bootstrap 95% CI [${ci.low}, ${ci.high}]${ci.significant ? ' (excludes 0)' : ' (spans 0)'}`,
|
|
721
|
+
};
|
|
722
|
+
}
|
|
723
|
+
function computeSaturationBadge(report, variants, lang) {
|
|
724
|
+
const sat = report.variance?.saturation?.verdicts;
|
|
725
|
+
if (!sat)
|
|
726
|
+
return null;
|
|
727
|
+
const treatment = variants[1] ?? variants[0];
|
|
728
|
+
const v = sat[treatment];
|
|
729
|
+
if (!v)
|
|
730
|
+
return null;
|
|
731
|
+
const status = v.saturated
|
|
732
|
+
? (v.confidence === 'high' ? 'pass' : 'warn')
|
|
733
|
+
: 'warn';
|
|
734
|
+
const label = v.saturated
|
|
735
|
+
? (lang === 'zh' ? '已饱和' : 'saturated')
|
|
736
|
+
: (lang === 'zh' ? '未饱和' : 'not saturated');
|
|
737
|
+
return {
|
|
738
|
+
key: 'sat',
|
|
739
|
+
label,
|
|
740
|
+
status,
|
|
741
|
+
detail: lang === 'zh'
|
|
742
|
+
? `${v.saturated ? `于 N=${v.atN ?? '?'} 饱和` : '尚未饱和'}(${v.confidence} confidence)`
|
|
743
|
+
: `${v.saturated ? `saturates at N=${v.atN ?? '?'}` : 'not yet saturated'} (${v.confidence} confidence)`,
|
|
744
|
+
};
|
|
745
|
+
}
|
|
746
|
+
function computeHumanAlignmentBadge(report, lang) {
|
|
747
|
+
const a = report.meta?.humanAgreement;
|
|
748
|
+
if (!a || a.sampleCount === 0 || Number.isNaN(a.alpha))
|
|
749
|
+
return null;
|
|
750
|
+
const status = a.alpha >= 0.667 ? 'pass' : a.alpha >= 0.4 ? 'warn' : 'fail';
|
|
751
|
+
const label = status === 'pass'
|
|
752
|
+
? (lang === 'zh' ? '人工对齐' : 'aligns with humans')
|
|
753
|
+
: status === 'warn'
|
|
754
|
+
? (lang === 'zh' ? '人工对齐偏弱' : 'weakly aligns')
|
|
755
|
+
: (lang === 'zh' ? '与人工分歧' : 'diverges from humans');
|
|
756
|
+
return {
|
|
757
|
+
key: 'human',
|
|
758
|
+
label,
|
|
759
|
+
status,
|
|
760
|
+
detail: lang === 'zh' ? `Krippendorff α=${a.alpha.toFixed(3)} vs ${a.goldAnnotator}` : `Krippendorff α=${a.alpha.toFixed(3)} vs ${a.goldAnnotator}`,
|
|
761
|
+
};
|
|
762
|
+
}
|
|
763
|
+
export function renderMethodologyAudit(report, variants, summary, lang) {
|
|
764
|
+
const judgeBlock = renderJudgeAgreementBlock(variants, summary, lang);
|
|
765
|
+
const pairwiseBlock = renderPairwiseDiff(report.meta?.pairComparisons, lang);
|
|
766
|
+
const humanBlock = renderHumanAgreement(report.meta?.humanAgreement, lang);
|
|
767
|
+
const saturationBlock = renderSaturationCurve(report.variance?.saturation, variants, lang);
|
|
768
|
+
if (!judgeBlock && !pairwiseBlock && !humanBlock && !saturationBlock)
|
|
769
|
+
return '';
|
|
770
|
+
const badges = [
|
|
771
|
+
computeJudgeAgreementBadge(variants, summary, lang),
|
|
772
|
+
computeSignificanceBadge(report, lang),
|
|
773
|
+
computeSaturationBadge(report, variants, lang),
|
|
774
|
+
computeHumanAlignmentBadge(report, lang),
|
|
775
|
+
].filter((b) => b !== null);
|
|
776
|
+
// 默认折叠;只有 ✗ fail (红色 badge) 才强制展开 — summary 行已经显示
|
|
777
|
+
// ⚠ warn 状态, 用户能自决是否展开; 但 fail 是危险信号必须让用户看证据。
|
|
778
|
+
const hasFailure = badges.some((b) => b.status === 'fail');
|
|
779
|
+
const openAttr = hasFailure ? ' open' : '';
|
|
780
|
+
const summaryLabel = lang === 'zh' ? '测评可信度' : 'Reliability check';
|
|
781
|
+
const summaryHint = lang === 'zh' ? '点击展开看支撑证据(评委一致 / 差异显著 / 饱和度 / 人工对齐)' : 'click to expand evidence (judge agreement / significance / saturation / human alignment)';
|
|
782
|
+
const badgesHtml = badges.length > 0
|
|
783
|
+
? `<span class="methodology-badges">${badges.map((b) => `<span class="methodology-badge methodology-badge-${b.status}" title="${e(b.detail)}">${badgeIcon(b.status)} ${e(b.label)}</span>`).join('')}</span>`
|
|
784
|
+
: '';
|
|
785
|
+
const innerSections = [judgeBlock, pairwiseBlock, humanBlock, saturationBlock].filter(Boolean).join('');
|
|
786
|
+
return `<details class="methodology-audit"${openAttr}>
|
|
787
|
+
<summary><span class="methodology-summary-label">${e(summaryLabel)}</span>${badgesHtml}<span class="methodology-summary-hint">${e(summaryHint)}</span></summary>
|
|
788
|
+
<div class="methodology-body">${innerSections}</div>
|
|
789
|
+
</details>`;
|
|
790
|
+
}
|
|
554
791
|
function buildDiagnostic(metric, cfg, winner, lang) {
|
|
555
792
|
const es = metric.effectSize;
|
|
556
793
|
if (!es || es.primary === 'none') {
|
|
@@ -1343,6 +1580,13 @@ export function renderKnowledgeInteractionSection(coverage, gapReports, lang) {
|
|
|
1343
1580
|
const hasGap = gapReports && Object.keys(gapReports).length > 0;
|
|
1344
1581
|
if (!hasCov && !hasGap)
|
|
1345
1582
|
return '';
|
|
1583
|
+
// 所有 variant 的 coverage 都不可用 (filesTotal === 0) 且所有 gap 都是 0%(无信号)
|
|
1584
|
+
// 时,整个 section 没有可读信息 — 渲染只会占大段纵向空间显示「数据不可用 / 0%」
|
|
1585
|
+
// 干扰用户阅读流。直接跳过比强行展示「显式无信号」更尊重读者。
|
|
1586
|
+
const usefulCoverage = hasCov && Object.values(coverage).some((c) => c.filesTotal > 0);
|
|
1587
|
+
const usefulGap = hasGap && Object.values(gapReports).some((g) => g.gapRate > 0 || g.signals.length > 0);
|
|
1588
|
+
if (!usefulCoverage && !usefulGap)
|
|
1589
|
+
return '';
|
|
1346
1590
|
const title = lang === 'zh' ? '本次测评:评测用例 × 知识库' : 'This Evaluation: Test Set × Knowledge Base';
|
|
1347
1591
|
const desc = lang === 'zh'
|
|
1348
1592
|
? '展示本次评测用例和知识库的交互画像——用到哪些知识(使用情况)· 哪些知识想找但没找到或任务执行模型表达不确定(盲区)。'
|