dsh-llm-verifier 0.2.1 → 0.3.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 +15 -11
- package/lib/client.js +23 -3
- package/lib/client.js.map +1 -1
- package/lib/index.js +377 -115
- package/lib/index.js.map +1 -1
- package/lib/types/auto.d.ts +32 -12
- package/lib/types/auto.d.ts.map +1 -1
- package/lib/types/auto.js +50 -38
- package/lib/types/auto.js.map +1 -1
- package/lib/types/client-i18n.d.ts +21 -1
- package/lib/types/client-i18n.d.ts.map +1 -1
- package/lib/types/client-i18n.js +22 -4
- package/lib/types/client-i18n.js.map +1 -1
- package/lib/types/client.d.ts.map +1 -1
- package/lib/types/client.js +1 -1
- package/lib/types/client.js.map +1 -1
- package/lib/types/engine.d.ts +19 -0
- package/lib/types/engine.d.ts.map +1 -1
- package/lib/types/engine.js +54 -4
- package/lib/types/engine.js.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +32 -43
- package/lib/types/index.js.map +1 -1
- package/lib/types/router.d.ts +31 -0
- package/lib/types/router.d.ts.map +1 -1
- package/lib/types/router.js +181 -17
- package/lib/types/router.js.map +1 -1
- package/lib/types/statistics.d.ts +28 -0
- package/lib/types/statistics.d.ts.map +1 -1
- package/lib/types/statistics.js +101 -0
- package/lib/types/statistics.js.map +1 -1
- package/package.json +1 -1
- package/src/auto.test.ts +42 -23
- package/src/auto.ts +55 -46
- package/src/client-i18n.ts +32 -4
- package/src/client.test.ts +48 -3
- package/src/client.tsx +2 -0
- package/src/config.test.ts +6 -3
- package/src/engine.test.ts +40 -1
- package/src/engine.ts +56 -4
- package/src/index.ts +34 -44
- package/src/router.test.ts +191 -3
- package/src/router.ts +171 -14
- package/src/statistics.test.ts +116 -0
- package/src/statistics.ts +112 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/statistics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/statistics.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/auto.test.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest'
|
|
2
2
|
import { Session } from '@deepseek-ai/dsh-session'
|
|
3
3
|
import { createToolResultMessage, createUserMessage } from '@deepseek-ai/dsh-llm'
|
|
4
|
-
import {
|
|
4
|
+
import { analyzeAutoTask, automaticFeedback, failedAcceptanceCriteria, isSubagentSession, sessionAccepted } from './auto.ts'
|
|
5
5
|
|
|
6
6
|
function taskSession() {
|
|
7
7
|
const session = Session.create('session-00000000-0000-4000-8000-000000000009' as never)
|
|
@@ -23,6 +23,34 @@ function sessionVerify(session: ReturnType<typeof taskSession>, id: string, payl
|
|
|
23
23
|
}
|
|
24
24
|
const verdict = (score: number, winner = 'A') => JSON.stringify({ sessionId: 's', problem: 'p', score, baselineScore: 0.2, winner, fromSeq: 0, toSeq: 9, omittedCharacters: 0, calls: 3, stats: {} })
|
|
25
25
|
|
|
26
|
+
describe('session acceptance', () => {
|
|
27
|
+
const criteria = [
|
|
28
|
+
{ id: 'specification', name: 'Specification Adherence', score: 1 },
|
|
29
|
+
{ id: 'output_match', name: 'Output Match', score: 1 },
|
|
30
|
+
{ id: 'error_signals', name: 'Error Signal Detection', score: 0 },
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
it('rejects a session whose mean passes but one criterion failed', () => {
|
|
34
|
+
// 0.667 clears the 0.65 mean, and the empty-work baseline always scores 0, so
|
|
35
|
+
// without the per-criterion floor a completely failed requirement was invisible.
|
|
36
|
+
expect(sessionAccepted({ score: 0.6667, winner: 'A', criteria }, 0.65)).toBe(false)
|
|
37
|
+
expect(failedAcceptanceCriteria(criteria, 0.65).map(value => value.id)).toEqual(['error_signals'])
|
|
38
|
+
// A criterion exactly at the threshold is accepted; the boundary is not a failure.
|
|
39
|
+
expect(sessionAccepted({ score: 0.65, winner: 'A', criteria: [{ id: 'a', score: 0.65 }] }, 0.65)).toBe(true)
|
|
40
|
+
// Without a breakdown the mean still decides.
|
|
41
|
+
expect(sessionAccepted({ score: 0.6667, winner: 'A' }, 0.65)).toBe(true)
|
|
42
|
+
// Losing to the baseline, or missing the mean, never passes.
|
|
43
|
+
expect(sessionAccepted({ score: 1, winner: 'B' }, 0.65)).toBe(false)
|
|
44
|
+
expect(sessionAccepted({ score: 0.5, winner: 'A', criteria: [] }, 0.65)).toBe(false)
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
it('names the failing criteria in the feedback and stays silent without them', () => {
|
|
48
|
+
const message = automaticFeedback(0.6667, 0, 'A', 0.65, [{ id: 'error_signals', name: 'Error Signal Detection', score: 0 }])
|
|
49
|
+
expect(message).toContain('Criteria below the threshold: Error Signal Detection 0.0%.')
|
|
50
|
+
expect(automaticFeedback(0.4, 0, 'A', 0.65)).not.toContain('Criteria below the threshold')
|
|
51
|
+
})
|
|
52
|
+
})
|
|
53
|
+
|
|
26
54
|
describe('automatic verification policy', () => {
|
|
27
55
|
it('requires consequential work and enough evidence in smart mode', () => {
|
|
28
56
|
const session = taskSession()
|
|
@@ -60,6 +88,19 @@ describe('automatic verification policy', () => {
|
|
|
60
88
|
sessionVerify(failing, 'four', verdict(0.2, 'B'))
|
|
61
89
|
expect(analyzeAutoTask(failing.events, smart)).toMatchObject({ eligible: true, hasManualSessionVerification: true, manualVerificationAccepted: false })
|
|
62
90
|
|
|
91
|
+
// A pass whose MEAN clears the threshold but whose breakdown has a failed
|
|
92
|
+
// requirement does not count: the automatic gate keeps the same floor, so the
|
|
93
|
+
// explicit path must not be a loophole around it.
|
|
94
|
+
const failedCriterion = taskSession()
|
|
95
|
+
call(failedCriterion, 'edit', 'one'); call(failedCriterion, 'pwsh', 'two'); call(failedCriterion, 'read', 'three')
|
|
96
|
+
sessionVerify(failedCriterion, 'four', JSON.stringify({ score: 0.7, baselineScore: 0, winner: 'A', criteria: [{ id: 'specification', scoreA: 1 }, { id: 'error_signals', scoreA: 0 }] }))
|
|
97
|
+
expect(analyzeAutoTask(failedCriterion.events, smart)).toMatchObject({ hasManualSessionVerification: true, manualVerificationAccepted: false, eligible: true })
|
|
98
|
+
// A breakdown that clears every criterion still counts.
|
|
99
|
+
const cleanCriteria = taskSession()
|
|
100
|
+
call(cleanCriteria, 'edit', 'one'); call(cleanCriteria, 'pwsh', 'two'); call(cleanCriteria, 'read', 'three')
|
|
101
|
+
sessionVerify(cleanCriteria, 'four', JSON.stringify({ score: 0.7, baselineScore: 0, winner: 'A', criteria: [{ id: 'specification', scoreA: 0.65 }, { id: 'error_signals', scoreA: 0.9 }] }))
|
|
102
|
+
expect(analyzeAutoTask(cleanCriteria.events, smart)).toMatchObject({ manualVerificationAccepted: true, eligible: false, reason: 'already-verified' })
|
|
103
|
+
|
|
63
104
|
// A pass below the configured threshold does not count either.
|
|
64
105
|
const belowThreshold = taskSession()
|
|
65
106
|
call(belowThreshold, 'edit', 'one'); call(belowThreshold, 'pwsh', 'two'); call(belowThreshold, 'read', 'three')
|
|
@@ -87,28 +128,6 @@ describe('automatic verification policy', () => {
|
|
|
87
128
|
expect(analyzeAutoTask(session.events, smart)).toMatchObject({ eligible: true, consequentialToolCalls: 2 })
|
|
88
129
|
})
|
|
89
130
|
|
|
90
|
-
it('resets per-task attempts for a new direct user message and enforces the session cap', () => {
|
|
91
|
-
const session = taskSession()
|
|
92
|
-
call(session, 'edit', 'one')
|
|
93
|
-
call(session, 'read', 'two')
|
|
94
|
-
call(session, 'pwsh', 'three')
|
|
95
|
-
const agent = { id: session.id, session } as never
|
|
96
|
-
const budget = new AutoVerificationBudget()
|
|
97
|
-
const policy = { ...smart, maxPerTask: 1, maxPerSession: 2 }
|
|
98
|
-
expect(budget.claim(agent, analyzeAutoTask(session.events, policy), policy)).toBe(true)
|
|
99
|
-
expect(budget.claim(agent, analyzeAutoTask(session.events, policy), policy)).toBe(false)
|
|
100
|
-
session.append('user/message', createUserMessage({ content: [{ type: 'text', text: 'Do another task' }], source: { kind: 'user' } }), { surfaceOp: 'append' })
|
|
101
|
-
call(session, 'write', 'four')
|
|
102
|
-
call(session, 'read', 'five')
|
|
103
|
-
call(session, 'pwsh', 'six')
|
|
104
|
-
expect(budget.claim(agent, analyzeAutoTask(session.events, policy), policy)).toBe(true)
|
|
105
|
-
session.append('user/message', createUserMessage({ content: [{ type: 'text', text: 'Third task' }], source: { kind: 'user' } }), { surfaceOp: 'append' })
|
|
106
|
-
call(session, 'edit', 'seven')
|
|
107
|
-
call(session, 'read', 'eight')
|
|
108
|
-
call(session, 'pwsh', 'nine')
|
|
109
|
-
expect(budget.claim(agent, analyzeAutoTask(session.events, policy), policy)).toBe(false)
|
|
110
|
-
})
|
|
111
|
-
|
|
112
131
|
it('recognizes delegated child sessions that must not be gated by default', () => {
|
|
113
132
|
expect(isSubagentSession(undefined)).toBe(false)
|
|
114
133
|
expect(isSubagentSession({ session: {} })).toBe(false)
|
package/src/auto.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import type { Agent } from '@deepseek-ai/dsh-agent'
|
|
2
1
|
import type { SessionEvent } from '@deepseek-ai/dsh-session'
|
|
3
|
-
import { sessionEvents } from './session.ts'
|
|
4
2
|
// Shared with the router so both agree on what opens a task; imported (type-only in the
|
|
5
3
|
// other direction) rather than duplicated, because a drift here silently disables gating.
|
|
6
4
|
import { latestDirectUserSeq } from './router.ts'
|
|
@@ -82,14 +80,22 @@ function blockText(value: unknown): string {
|
|
|
82
80
|
* @param value - Result content blocks (or a raw string).
|
|
83
81
|
* @returns The parsed verdict fields, or undefined.
|
|
84
82
|
*/
|
|
85
|
-
function parseSessionVerdict(value: unknown): { winner?: unknown; score?: unknown } | undefined {
|
|
83
|
+
function parseSessionVerdict(value: unknown): { winner?: unknown; score?: unknown; criteria?: AcceptanceCriterion[] } | undefined {
|
|
86
84
|
const text = blockText(value)
|
|
87
85
|
const start = text.indexOf('{')
|
|
88
86
|
const end = text.lastIndexOf('}')
|
|
89
87
|
if (start < 0 || end <= start) return undefined
|
|
90
88
|
try {
|
|
91
89
|
const parsed: unknown = JSON.parse(text.slice(start, end + 1))
|
|
92
|
-
|
|
90
|
+
if (typeof parsed !== 'object' || parsed === null) return undefined
|
|
91
|
+
const row = parsed as { winner?: unknown; score?: unknown; criteria?: unknown }
|
|
92
|
+
const criteria: AcceptanceCriterion[] = []
|
|
93
|
+
for (const entry of Array.isArray(row.criteria) ? row.criteria : []) {
|
|
94
|
+
const item = typeof entry === 'object' && entry !== null ? entry as { id?: unknown; name?: unknown; scoreA?: unknown } : {}
|
|
95
|
+
if (typeof item.id !== 'string' || typeof item.scoreA !== 'number' || !Number.isFinite(item.scoreA)) continue
|
|
96
|
+
criteria.push({ id: item.id, ...(typeof item.name === 'string' ? { name: item.name } : {}), score: item.scoreA })
|
|
97
|
+
}
|
|
98
|
+
return { winner: row.winner, score: row.score, criteria }
|
|
93
99
|
} catch { return undefined }
|
|
94
100
|
}
|
|
95
101
|
|
|
@@ -146,21 +152,28 @@ export function analyzeAutoTask(events: readonly SessionEvent[], policy: AutoVer
|
|
|
146
152
|
// followed by more edits — must never disarm the gate.
|
|
147
153
|
const stale = (seq: number) => pairedCalls.some(event => event.seq > seq && isConsequential(event.data.name))
|
|
148
154
|
|| successfulDispatches.some(entry => entry.seq > seq && isConsequential(entry.data.name))
|
|
149
|
-
const manualVerdicts: Array<{ seq: number; winner: unknown; score: unknown }> = []
|
|
155
|
+
const manualVerdicts: Array<{ seq: number; winner: unknown; score: unknown; criteria?: AcceptanceCriterion[] }> = []
|
|
150
156
|
for (const event of pairedCalls) {
|
|
151
157
|
if (event.data.name !== VERIFIER_SESSION_TOOL) continue
|
|
152
158
|
const result = results.get(String(event.data.callId))
|
|
153
159
|
if (result === undefined) continue
|
|
154
160
|
const verdict = parseSessionVerdict(result.data.message.content)
|
|
155
|
-
manualVerdicts.push({ seq: result.seq, winner: verdict?.winner, score: verdict?.score })
|
|
161
|
+
manualVerdicts.push({ seq: result.seq, winner: verdict?.winner, score: verdict?.score, criteria: verdict?.criteria })
|
|
156
162
|
}
|
|
157
163
|
for (const entry of successfulDispatches) {
|
|
158
164
|
if (entry.data.name !== VERIFIER_SESSION_TOOL) continue
|
|
159
165
|
const verdict = parseSessionVerdict(entry.data.content)
|
|
160
|
-
manualVerdicts.push({ seq: entry.seq, winner: verdict?.winner, score: verdict?.score })
|
|
166
|
+
manualVerdicts.push({ seq: entry.seq, winner: verdict?.winner, score: verdict?.score, criteria: verdict?.criteria })
|
|
161
167
|
}
|
|
162
168
|
const hasManualSessionVerification = manualVerdicts.length > 0
|
|
163
|
-
|
|
169
|
+
// Same acceptance rule as the automatic gate, including the per-criterion floor:
|
|
170
|
+
// otherwise an explicitly called verification with one failed requirement could
|
|
171
|
+
// disarm the gate that the automatic path would have kept closed.
|
|
172
|
+
const manualVerificationAccepted = manualVerdicts.some(verdict =>
|
|
173
|
+
verdict.winner === 'A'
|
|
174
|
+
&& typeof verdict.score === 'number'
|
|
175
|
+
&& sessionAccepted({ score: verdict.score, winner: 'A', criteria: verdict.criteria }, policy.threshold)
|
|
176
|
+
&& !stale(verdict.seq))
|
|
164
177
|
|
|
165
178
|
if (policy.mode === 'manual') return { taskStartSeq, toolCalls, completedToolResults, consequentialToolCalls, hasManualSessionVerification, manualVerificationAccepted, eligible: false, reason: 'manual-mode' }
|
|
166
179
|
if (manualVerificationAccepted) return { taskStartSeq, toolCalls, completedToolResults, consequentialToolCalls, hasManualSessionVerification, manualVerificationAccepted, eligible: false, reason: 'already-verified' }
|
|
@@ -170,56 +183,52 @@ export function analyzeAutoTask(events: readonly SessionEvent[], policy: AutoVer
|
|
|
170
183
|
return { taskStartSeq, toolCalls, completedToolResults, consequentialToolCalls, hasManualSessionVerification, manualVerificationAccepted, eligible: true, reason: policy.mode + '-eligible' }
|
|
171
184
|
}
|
|
172
185
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
186
|
+
/** One criterion's outcome from a session acceptance (candidate A is the session). */
|
|
187
|
+
export interface AcceptanceCriterion {
|
|
188
|
+
id: string
|
|
189
|
+
name?: string
|
|
190
|
+
score: number
|
|
178
191
|
}
|
|
179
192
|
|
|
180
193
|
/**
|
|
181
|
-
*
|
|
194
|
+
* Criteria that do not clear the acceptance threshold.
|
|
182
195
|
*
|
|
183
|
-
* The
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
196
|
+
* The acceptance score is the MEAN over criteria, so a session with one requirement at
|
|
197
|
+
* zero and the others perfect averaged ~0.67 and cleared the 0.65 default: a single
|
|
198
|
+
* failed requirement was arithmetically invisible. The gate therefore also requires
|
|
199
|
+
* every criterion to clear the threshold on its own.
|
|
200
|
+
* @param criteria - per-criterion A-side scores, when the judge reported them.
|
|
201
|
+
* @param threshold - acceptance threshold.
|
|
202
|
+
* @returns The failing criteria, in report order.
|
|
187
203
|
*/
|
|
188
|
-
export
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
claim(agent: Agent, evidence: AutoTaskEvidence, policy: AutoVerifyPolicy): boolean {
|
|
192
|
-
if (!evidence.eligible) return false
|
|
193
|
-
const id = String(agent.id)
|
|
194
|
-
const previous = this.states.get(id)
|
|
195
|
-
const state: SessionBudget = previous ?? { taskStartSeq: evidence.taskStartSeq, taskAttempts: 0, sessionAttempts: 0, lastEvaluatedSeq: -1 }
|
|
196
|
-
if (state.taskStartSeq !== evidence.taskStartSeq) {
|
|
197
|
-
state.taskStartSeq = evidence.taskStartSeq
|
|
198
|
-
state.taskAttempts = 0
|
|
199
|
-
state.lastEvaluatedSeq = -1
|
|
200
|
-
}
|
|
201
|
-
const lastSeq = sessionEvents(agent.session).at(-1)?.seq ?? -1
|
|
202
|
-
if (lastSeq <= state.lastEvaluatedSeq || state.taskAttempts >= policy.maxPerTask || state.sessionAttempts >= policy.maxPerSession) {
|
|
203
|
-
this.states.set(id, state)
|
|
204
|
-
return false
|
|
205
|
-
}
|
|
206
|
-
state.taskAttempts += 1
|
|
207
|
-
state.sessionAttempts += 1
|
|
208
|
-
state.lastEvaluatedSeq = lastSeq
|
|
209
|
-
this.states.set(id, state)
|
|
210
|
-
return true
|
|
211
|
-
}
|
|
204
|
+
export function failedAcceptanceCriteria(criteria: readonly AcceptanceCriterion[] | undefined, threshold: number): AcceptanceCriterion[] {
|
|
205
|
+
return (criteria ?? []).filter(criterion => !(criterion.score >= threshold))
|
|
206
|
+
}
|
|
212
207
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
208
|
+
/**
|
|
209
|
+
* Whether a session acceptance clears the gate.
|
|
210
|
+
*
|
|
211
|
+
* The empty-work baseline is a fixed sentence that always scores 0, so the comparison
|
|
212
|
+
* itself is decorative; what actually decides is the session's own score, the winner
|
|
213
|
+
* against that baseline, and (since the mean could hide a failed requirement) every
|
|
214
|
+
* criterion clearing the threshold.
|
|
215
|
+
* @param evidence - session acceptance result (score, winner and per-criterion scores).
|
|
216
|
+
* @param threshold - acceptance threshold.
|
|
217
|
+
* @returns True only when the session may conclude.
|
|
218
|
+
*/
|
|
219
|
+
export function sessionAccepted(evidence: { score: number; winner: 'A' | 'B' | 'tie'; criteria?: readonly AcceptanceCriterion[] }, threshold: number): boolean {
|
|
220
|
+
if (evidence.winner !== 'A' || !(evidence.score >= threshold)) return false
|
|
221
|
+
return failedAcceptanceCriteria(evidence.criteria, threshold).length === 0
|
|
216
222
|
}
|
|
217
223
|
|
|
218
|
-
export function automaticFeedback(score: number, baselineScore: number, winner: 'A' | 'B' | 'tie', threshold: number): string {
|
|
224
|
+
export function automaticFeedback(score: number, baselineScore: number, winner: 'A' | 'B' | 'tie', threshold: number, failedCriteria: readonly AcceptanceCriterion[] = []): string {
|
|
219
225
|
const percent = (value: number) => (value * 100).toFixed(1) + '%'
|
|
220
226
|
return [
|
|
221
227
|
'[Automatic verifier gate]',
|
|
222
228
|
`The independent verifier did not clear this task for completion: evidence score ${percent(score)}, baseline ${percent(baselineScore)}, verdict ${winner}, required ${percent(threshold)}.`,
|
|
229
|
+
...(failedCriteria.length > 0
|
|
230
|
+
? ['Criteria below the threshold: ' + failedCriteria.map(criterion => (criterion.name ?? criterion.id) + ' ' + percent(criterion.score)).join('; ') + '.']
|
|
231
|
+
: []),
|
|
223
232
|
'Re-open the task requirements, inspect the actual tool outputs for unresolved errors or missing proof, make any necessary corrections, and run a directly relevant verification command before concluding. Do not merely restate that the task is complete.',
|
|
224
233
|
].join('\n')
|
|
225
234
|
}
|
package/src/client-i18n.ts
CHANGED
|
@@ -33,7 +33,7 @@ export const zh = {
|
|
|
33
33
|
'field.autoRouteMaxPerSession.title': '每会话最多路由',
|
|
34
34
|
'field.autoRouteMaxPerSession.help': '同一会话中自动路由的尝试上限;与「每会话最多验收」共享计数器,实际可用次数同样是两者之和。',
|
|
35
35
|
'field.autoTrackCompletionThreshold.title': '进度完成阈值',
|
|
36
|
-
'field.autoTrackCompletionThreshold.help': 'track
|
|
36
|
+
'field.autoTrackCompletionThreshold.help': 'track 最新检查点低于该值时 steering 要求 Agent 继续执行;更早的检查点只作展示,范围 0–1。',
|
|
37
37
|
'field.autoRouteMaxItemChars.title': '单项证据字符上限',
|
|
38
38
|
'field.autoRouteMaxItemChars.help': '每个候选或检查点在脱敏后允许发送给裁判的最大字符数。',
|
|
39
39
|
'field.autoRouteMaxInputChars.title': '路由证据总字符上限',
|
|
@@ -146,6 +146,7 @@ export const zh = {
|
|
|
146
146
|
'stats.outcome.passed': '通过',
|
|
147
147
|
'stats.outcome.below-threshold': '未达标',
|
|
148
148
|
'stats.outcome.tie': '平局',
|
|
149
|
+
'stats.outcome.compared': '已比较',
|
|
149
150
|
'stats.outcome.error': '异常',
|
|
150
151
|
'stats.outcome.dropped-over-budget': '超预算丢弃',
|
|
151
152
|
'stats.outcome.invalid-references': '引用无效',
|
|
@@ -153,6 +154,8 @@ export const zh = {
|
|
|
153
154
|
'stats.verdict.winner': '胜方 {winner}',
|
|
154
155
|
'stats.verdict.scoreThreshold': '得分 {score}(阈值 {threshold})',
|
|
155
156
|
'stats.verdict.scoreOnly': '得分 {score}',
|
|
157
|
+
'stats.verdict.checkpoints': '检查点 {scores}',
|
|
158
|
+
'stats.verdict.criteria': '标准 {criteria}',
|
|
156
159
|
|
|
157
160
|
// Metrics
|
|
158
161
|
'metric.cacheHitRate': '缓存命中率',
|
|
@@ -244,7 +247,7 @@ export const en: I18nDict = {
|
|
|
244
247
|
'field.autoRouteMaxPerSession.title': 'Max Routes per Session',
|
|
245
248
|
'field.autoRouteMaxPerSession.help': 'Session attempt cap for automatic routing; shares its counter with "Max Verifications per Session" (effective limit is the sum of both).',
|
|
246
249
|
'field.autoTrackCompletionThreshold.title': 'Progress Completion Threshold',
|
|
247
|
-
'field.autoTrackCompletionThreshold.help': 'When
|
|
250
|
+
'field.autoTrackCompletionThreshold.help': 'When the newest track checkpoint falls below this score, steering instructs the Agent to continue; earlier checkpoints are shown only; range 0–1.',
|
|
248
251
|
'field.autoRouteMaxItemChars.title': 'Max Chars per Route Item',
|
|
249
252
|
'field.autoRouteMaxItemChars.help': 'Maximum sanitized character count allowed per candidate or checkpoint when sent to the judge.',
|
|
250
253
|
'field.autoRouteMaxInputChars.title': 'Total Route Input Chars Cap',
|
|
@@ -357,6 +360,7 @@ export const en: I18nDict = {
|
|
|
357
360
|
'stats.outcome.passed': 'Passed',
|
|
358
361
|
'stats.outcome.below-threshold': 'Below Threshold',
|
|
359
362
|
'stats.outcome.tie': 'Tie',
|
|
363
|
+
'stats.outcome.compared': 'Compared',
|
|
360
364
|
'stats.outcome.error': 'Error',
|
|
361
365
|
'stats.outcome.dropped-over-budget': 'Dropped (over budget)',
|
|
362
366
|
'stats.outcome.invalid-references': 'Invalid references',
|
|
@@ -364,6 +368,8 @@ export const en: I18nDict = {
|
|
|
364
368
|
'stats.verdict.winner': 'Winner {winner}',
|
|
365
369
|
'stats.verdict.scoreThreshold': 'Score {score} (threshold {threshold})',
|
|
366
370
|
'stats.verdict.scoreOnly': 'Score {score}',
|
|
371
|
+
'stats.verdict.checkpoints': 'Checkpoints {scores}',
|
|
372
|
+
'stats.verdict.criteria': 'Criteria {criteria}',
|
|
367
373
|
|
|
368
374
|
// Metrics
|
|
369
375
|
'metric.cacheHitRate': 'Cache Hit Rate',
|
|
@@ -493,6 +499,12 @@ export interface VerdictSummary {
|
|
|
493
499
|
phase?: string
|
|
494
500
|
outcome?: string
|
|
495
501
|
score?: number
|
|
502
|
+
/** Per-checkpoint progression of a `verifier_track` verdict, oldest first; absent on older records. */
|
|
503
|
+
scores?: number[]
|
|
504
|
+
/** Candidate B's score of a two-way comparison; `score` is the winning side. */
|
|
505
|
+
scoreB?: number
|
|
506
|
+
/** Per-criterion A-side scores of a session acceptance; the mean alone can hide a failed requirement. */
|
|
507
|
+
criteria?: Array<{ id: string; score: number }>
|
|
496
508
|
baselineScore?: number
|
|
497
509
|
winner?: 'A' | 'B' | 'tie'
|
|
498
510
|
threshold?: number
|
|
@@ -566,7 +578,7 @@ export function sectionForSave(
|
|
|
566
578
|
return section
|
|
567
579
|
}
|
|
568
580
|
|
|
569
|
-
/** An eight-candidate select: ring + pivot rounds (18 pairs) x three criteria, one
|
|
581
|
+
/** An eight-candidate select: ring + pivot rounds (18 pairs) x three criteria, one round (the per-pair orientation removes the slot bias). */
|
|
570
582
|
export const WORST_CASE_ROUTE_CALLS_PER_JUDGE = 54
|
|
571
583
|
/** Final acceptance: three criteria x the default two repeats (one per A/B position). */
|
|
572
584
|
export const WORST_CASE_FINAL_CALLS_PER_JUDGE = 6
|
|
@@ -629,6 +641,8 @@ export function formatVerdictDetails(
|
|
|
629
641
|
outcomeText?: string
|
|
630
642
|
phaseText?: string
|
|
631
643
|
scoreText?: string
|
|
644
|
+
checkpointsText?: string
|
|
645
|
+
criteriaText?: string
|
|
632
646
|
winnerText?: string
|
|
633
647
|
isFailed: boolean
|
|
634
648
|
} {
|
|
@@ -650,12 +664,26 @@ export function formatVerdictDetails(
|
|
|
650
664
|
}
|
|
651
665
|
}
|
|
652
666
|
|
|
667
|
+
// One track verdict carries a whole progression; showing only the newest score
|
|
668
|
+
// hides why the route decided to continue.
|
|
669
|
+
let checkpointsText: string | undefined
|
|
670
|
+
if (Array.isArray(verdict.scores) && verdict.scores.length > 1) {
|
|
671
|
+
checkpointsText = tFormat(t['stats.verdict.checkpoints'], { scores: verdict.scores.map(formatPercentage).join(' → ') })
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
// The acceptance mean can hide a requirement that failed on its own, so the breakdown
|
|
675
|
+
// is what tells the reader which one is holding the task back.
|
|
676
|
+
let criteriaText: string | undefined
|
|
677
|
+
if (Array.isArray(verdict.criteria) && verdict.criteria.length > 0) {
|
|
678
|
+
criteriaText = tFormat(t['stats.verdict.criteria'], { criteria: verdict.criteria.map(criterion => criterion.id + ' ' + formatPercentage(criterion.score)).join(' · ') })
|
|
679
|
+
}
|
|
680
|
+
|
|
653
681
|
let winnerText: string | undefined
|
|
654
682
|
if (verdict.winner) {
|
|
655
683
|
const winnerValue = verdict.winner === 'tie' ? t['stats.winner.tie'] : verdict.winner
|
|
656
684
|
winnerText = tFormat(t['stats.verdict.winner'], { winner: winnerValue })
|
|
657
685
|
}
|
|
658
686
|
|
|
659
|
-
return { outcomeText, phaseText, scoreText, winnerText, isFailed }
|
|
687
|
+
return { outcomeText, phaseText, scoreText, checkpointsText, criteriaText, winnerText, isFailed }
|
|
660
688
|
}
|
|
661
689
|
|
package/src/client.test.ts
CHANGED
|
@@ -453,7 +453,8 @@ describe('settings save layer', () => {
|
|
|
453
453
|
|
|
454
454
|
describe('budget worst case and sanity warnings', () => {
|
|
455
455
|
it('defines correct constants for worst case calls per judge', () => {
|
|
456
|
-
// Routing (
|
|
456
|
+
// Routing (18 pairs x 3 criteria, one round per pair) plus the final acceptance
|
|
457
|
+
// (3 criteria x 2 repeats) per judge.
|
|
457
458
|
expect(WORST_CASE_ROUTE_CALLS_PER_JUDGE).toBe(54)
|
|
458
459
|
expect(WORST_CASE_FINAL_CALLS_PER_JUDGE).toBe(6)
|
|
459
460
|
expect(WORST_CASE_TASK_PER_JUDGE).toBe(60)
|
|
@@ -480,14 +481,14 @@ describe('budget worst case and sanity warnings', () => {
|
|
|
480
481
|
})
|
|
481
482
|
|
|
482
483
|
it('returns null when budgets meet or exceed worst case requirements', () => {
|
|
483
|
-
// 1 judge (0 extra): task worst case 60, session worst case 160
|
|
484
|
+
// 1 judge (0 extra): task worst case 60, session worst case 160 — the shipped
|
|
485
|
+
// defaults (96 / 240) clear both.
|
|
484
486
|
expect(evaluateBudgetWarning('smart', 0, 96, 240)).toBeNull()
|
|
485
487
|
// 2 judges (1 extra): task worst case 120, session worst case 320
|
|
486
488
|
expect(evaluateBudgetWarning('smart', 1, 120, 320)).toBeNull()
|
|
487
489
|
})
|
|
488
490
|
|
|
489
491
|
it('warns on task budget below worst case requirement', () => {
|
|
490
|
-
// 2 judges (1 extra): task worst case 120, session worst case 320
|
|
491
492
|
const warning = evaluateBudgetWarning('smart', 1, 64, 350)
|
|
492
493
|
expect(warning).not.toBeNull()
|
|
493
494
|
expect(warning?.warnTask).toBe(true)
|
|
@@ -591,6 +592,50 @@ describe('verdict dashboard helpers', () => {
|
|
|
591
592
|
expect(res.phaseText).toBe('两项对比')
|
|
592
593
|
})
|
|
593
594
|
|
|
595
|
+
it('renders the track checkpoint progression', () => {
|
|
596
|
+
const verdict: VerdictSummary = {
|
|
597
|
+
phase: 'track',
|
|
598
|
+
outcome: 'below-threshold',
|
|
599
|
+
score: 0.7894736842105262,
|
|
600
|
+
scores: [0, 0.10526315789473684, 0.7894736842105262],
|
|
601
|
+
threshold: 0.8,
|
|
602
|
+
}
|
|
603
|
+
expect(formatVerdictDetails(verdict, zh).checkpointsText).toBe('检查点 0.0% → 10.5% → 78.9%')
|
|
604
|
+
expect(formatVerdictDetails(verdict, en).checkpointsText).toBe('Checkpoints 0.0% → 10.5% → 78.9%')
|
|
605
|
+
})
|
|
606
|
+
|
|
607
|
+
it('localizes the compared outcome and omits a threshold a comparison never had', () => {
|
|
608
|
+
const verdict: VerdictSummary = { phase: 'compare', outcome: 'compared', score: 0.9, scoreB: 0.2, winner: 'B' }
|
|
609
|
+
const zhRes = formatVerdictDetails(verdict, zh)
|
|
610
|
+
expect(zhRes.outcomeText).toBe('已比较')
|
|
611
|
+
expect(zhRes.scoreText).toBe('得分 90.0%')
|
|
612
|
+
expect(zhRes.winnerText).toBe('胜方 B')
|
|
613
|
+
expect(zhRes.isFailed).toBe(false)
|
|
614
|
+
expect(formatVerdictDetails(verdict, en).outcomeText).toBe('Compared')
|
|
615
|
+
// A record written by an older build still renders.
|
|
616
|
+
expect(formatVerdictDetails({ phase: 'compare', outcome: 'below-threshold', score: 0.2, threshold: 0.65 }, zh).isFailed).toBe(true)
|
|
617
|
+
})
|
|
618
|
+
|
|
619
|
+
it('renders the per-criterion breakdown of a session acceptance', () => {
|
|
620
|
+
const verdict: VerdictSummary = {
|
|
621
|
+
phase: 'final',
|
|
622
|
+
outcome: 'below-threshold',
|
|
623
|
+
score: 0.6667,
|
|
624
|
+
baselineScore: 0,
|
|
625
|
+
criteria: [{ id: 'specification', score: 1 }, { id: 'error_signals', score: 0 }],
|
|
626
|
+
winner: 'A',
|
|
627
|
+
threshold: 0.65,
|
|
628
|
+
}
|
|
629
|
+
expect(formatVerdictDetails(verdict, zh).criteriaText).toBe('标准 specification 100.0% · error_signals 0.0%')
|
|
630
|
+
expect(formatVerdictDetails(verdict, en).criteriaText).toBe('Criteria specification 100.0% · error_signals 0.0%')
|
|
631
|
+
expect(formatVerdictDetails({ outcome: 'passed', score: 1 }, zh).criteriaText).toBeUndefined()
|
|
632
|
+
})
|
|
633
|
+
|
|
634
|
+
it('omits the progression for a single checkpoint', () => {
|
|
635
|
+
expect(formatVerdictDetails({ outcome: 'below-threshold', score: 0, scores: [0] }, zh).checkpointsText).toBeUndefined()
|
|
636
|
+
expect(formatVerdictDetails({ outcome: 'below-threshold', score: 0 }, zh).checkpointsText).toBeUndefined()
|
|
637
|
+
})
|
|
638
|
+
|
|
594
639
|
it('formats tie winner localized in zh and en', () => {
|
|
595
640
|
const verdict: VerdictSummary = {
|
|
596
641
|
outcome: 'tie',
|
package/src/client.tsx
CHANGED
|
@@ -502,6 +502,8 @@ export function StatisticsPage({ sessionId, rpc, isGlobal }: StatisticsPageProps
|
|
|
502
502
|
{verdictInfo.outcomeText && <span style={{ padding: '1px 5px', borderRadius: 4, fontWeight: 500, fontSize: 11, background: verdictInfo.isFailed ? 'rgba(231,101,101,.16)' : item.verdict.outcome === 'tie' ? 'rgba(227,189,99,.16)' : 'rgba(89,201,133,.16)', color: verdictInfo.isFailed ? '#e76565' : item.verdict.outcome === 'tie' ? '#e3bd63' : '#77d49b', border: `1px solid ${verdictInfo.isFailed ? 'rgba(231,101,101,.3)' : item.verdict.outcome === 'tie' ? 'rgba(227,189,99,.3)' : 'rgba(89,201,133,.3)'}` }}>{verdictInfo.outcomeText}</span>}
|
|
503
503
|
{verdictInfo.phaseText && <span style={{ padding: '1px 5px', borderRadius: 4, background: 'var(--dsw-surface-sunken)', color: 'var(--dsw-text-secondary)', border: '1px solid var(--dsw-alias-border-l2, rgba(255,255,255,.1))' }}>{verdictInfo.phaseText}</span>}
|
|
504
504
|
{verdictInfo.scoreText && <span style={{ color: (typeof item.verdict.threshold === 'number' && typeof item.verdict.score === 'number' && item.verdict.score < item.verdict.threshold) ? '#e76565' : 'var(--dsw-text-primary)' }}>{verdictInfo.scoreText}</span>}
|
|
505
|
+
{verdictInfo.checkpointsText && <span style={{ color: 'var(--dsw-text-secondary)' }}>{verdictInfo.checkpointsText}</span>}
|
|
506
|
+
{verdictInfo.criteriaText && <span style={{ color: 'var(--dsw-text-secondary)' }}>{verdictInfo.criteriaText}</span>}
|
|
505
507
|
{verdictInfo.winnerText && <span style={{ color: 'var(--dsw-text-secondary)' }}>{verdictInfo.winnerText}</span>}
|
|
506
508
|
</div>}
|
|
507
509
|
</div>
|
package/src/config.test.ts
CHANGED
|
@@ -411,8 +411,9 @@ describe('config - temperature', () => {
|
|
|
411
411
|
describe('config - automatic verification repeats and budget', () => {
|
|
412
412
|
it('scores routing once and the final acceptance twice by default', () => {
|
|
413
413
|
const resolved = resolveConfig({})
|
|
414
|
-
// Routing stays a cheap single round
|
|
415
|
-
//
|
|
414
|
+
// Routing stays a cheap single round in the config; only compare is rounded up to an
|
|
415
|
+
// even count at run time (it judges a single pair, so an odd count would leave the
|
|
416
|
+
// A/B order uncorrected). select and track keep the configured round.
|
|
416
417
|
expect(resolved.autoVerifyRepeats).toBe(1)
|
|
417
418
|
expect(resolved.autoVerifyFinalRepeats).toBe(2)
|
|
418
419
|
})
|
|
@@ -427,7 +428,9 @@ describe('config - automatic verification repeats and budget', () => {
|
|
|
427
428
|
})
|
|
428
429
|
|
|
429
430
|
it('leaves headroom in the task model-call budget for the final acceptance', () => {
|
|
430
|
-
// 54 calls for an eight-candidate tournament
|
|
431
|
+
// 54 calls for an eight-candidate tournament (one round; the engine orients each
|
|
432
|
+
// pair instead of doubling the rounds) + 6 for the final acceptance per judge.
|
|
431
433
|
expect(resolveConfig({}).autoMaxModelCallsPerTask).toBe(96)
|
|
434
|
+
expect(resolveConfig({}).autoMaxModelCallsPerSession).toBe(240)
|
|
432
435
|
})
|
|
433
436
|
})
|