问题
projectTrace()(packages/core/src/trace-projection.ts)组装 FolioTrace.input 时:
input: run?.input ?? evaluationRun?.answer ?? ''
EvaluationRun(packages/core/src/evaluation.ts)没有 input 字段——评估运行的输入
在 benchmark case 的 input.prompt 里。于是评估类 trace 会把 agent 的输出当成
输入投影出去。
实际影响
TraceInspector.tsx:202:
{trace.input || t('trace.notRecorded')}
打开一条评估运行(experiment/benchmark)的 trace,"Input" 一行显示的是 agent 的回答
文本,而不是 case 的 prompt;同时因为永远非空,trace.notRecorded("未记录")兜底
也永远落不到。
复现
const evalRun: EvaluationRun = {
id: 'eval-run-1', experimentId: 'exp-1', caseId: 'case-1', datasetId: 'ds-1',
status: 'completed', startedAt: 1000, completedAt: 9000,
answer: 'NVDA looks fine', toolCalls: [], failureModes: [],
}
const caseDef: EvaluationCase = {
id: 'case-1', name: 'NVDA research', category: 'tool-selection', difficulty: 'golden',
input: { prompt: 'Research NVDA' }, expected: {}, tags: [], source: 'hand-authored',
}
projectTrace({ evaluationRun: evalRun, evaluationCase: caseDef }).input
- 实际:
'NVDA looks fine'(= evaluationRun.answer)
- 预期:
'Research NVDA'(= evaluationCase.input.prompt)
若没有 case 定义,预期为空串(UI 显示"未记录"),实际仍返回 answer。
判为 bug 的依据
同文件头部明确写出投影纪律:
NEVER reconstruct historical context from current app state. Context fields are
emitted ONLY from persisted/authoritative sources; anything else is not-recorded.
且 contextFromCase() 的注释写明 "Workspace context recorded in the benchmark case
input — authoritative (spec §9)"。用 answer 兜底 input 正是这里禁止的"从运行结果反推"。
预期修复
input: run?.input ?? evaluationCase?.input.prompt ?? ''
会话运行保持 run.input 不变。
环境
问题
projectTrace()(packages/core/src/trace-projection.ts)组装FolioTrace.input时:EvaluationRun(packages/core/src/evaluation.ts)没有input字段——评估运行的输入在 benchmark case 的
input.prompt里。于是评估类 trace 会把 agent 的输出当成输入投影出去。
实际影响
TraceInspector.tsx:202:打开一条评估运行(experiment/benchmark)的 trace,"Input" 一行显示的是 agent 的回答
文本,而不是 case 的 prompt;同时因为永远非空,
trace.notRecorded("未记录")兜底也永远落不到。
复现
'NVDA looks fine'(=evaluationRun.answer)'Research NVDA'(=evaluationCase.input.prompt)若没有 case 定义,预期为空串(UI 显示"未记录"),实际仍返回 answer。
判为 bug 的依据
同文件头部明确写出投影纪律:
且
contextFromCase()的注释写明 "Workspace context recorded in the benchmark caseinput — authoritative (spec §9)"。用
answer兜底input正是这里禁止的"从运行结果反推"。预期修复
会话运行保持
run.input不变。环境