Conversation
`projectTrace()` 组装 `FolioTrace.input` 时:
```ts
input: run?.input ?? evaluationRun?.answer ?? ''
```
`EvaluationRun` 没有 `input` 字段(它的输入在 benchmark case 的
`input.prompt` 里),于是评估类 trace 会把 agent 的**输出**当成**输入**
投影出去。TraceInspector 里 "Input" 一行因此显示成回答文本,而且永远
落不到 `t('trace.notRecorded')` 的兜底。
这与 trace-projection 的既定纪律直接冲突——文件头写明"NEVER reconstruct
historical context from current app state … anything else is not-recorded",
且同文件 `contextFromCase()` 的注释明确"benchmark case input —
authoritative (spec §9)"。
修复:改为从权威来源取输入
```ts
input: run?.input ?? evaluationCase?.input.prompt ?? ''
```
- 会话运行:仍用 `run.input`(未变)
- 评估运行:用 case 的 `prompt`
- 两者都没有:空串,UI 显示"未记录"
范围:仅 `projectTrace()` 的 `input` 字段赋值,其余投影逻辑未动。
有可见 UI 变化:评估类 trace 的 Input 行从"回答文本"变为"case prompt"
(无 case 时显示"未记录")。
测试:`packages/core/src/trace-projection.test.ts` 新增 2 个用例
(用 case prompt;无权威输入时为空串)。旧代码下 11 pass / 2 fail,
修复后 51 pass / 0 fail(core 全量)。
helsome
left a comment
There was a problem hiding this comment.
代码与回归测试本身没有看到 correctness blocker,Issue #160 的认领/Closes 范围也一致,当前 head 的 Focused tests / Typecheck / Secret scan / advisory full suite 全绿。这里仅保留 1 个验收项:PR 明确会改变 Trace Inspector 的可见 Input 内容(answer → case prompt;无 case 时显示“未记录”),请在 PR 内补一张实际界面截图,能看出修复后的 Input 行即可(既有界面最好 Before/After,但不要求额外视频或 E2E)。补齐后即可重新审。
|
已按评审要求补上 Trace Inspector 的 场景一次评测运行: Before(修复前:input 回退成 answer)
After(修复后:取 benchmark case 的 prompt)
After(无 case:留空 → 未记录)没有权威输入来源时, 截图是怎么产生的(可复核)
除补图外无其他代码改动,三项硬门禁(Typecheck / Focused tests / Secret scan)与 advisory 全量在现有 head 上仍然全绿。 |



问题
projectTrace()(packages/core/src/trace-projection.ts)组装FolioTrace.input时:EvaluationRun(packages/core/src/evaluation.ts)没有input字段——评估运行的输入在 benchmark case 的
input.prompt里。于是评估类 trace 把 agent 的输出当成输入投影出去。
实际 / 预期
'NVDA looks fine'(=evaluationRun.answer)'Research NVDA'(=evaluationCase.input.prompt)没有 case 定义时:实际仍返回 answer,预期为空串。
UI 影响:
TraceInspector.tsx:202把trace.input渲染成 "Input" 一行(
{trace.input || t('trace.notRecorded')}),所以评估运行会在 Input 位置显示回答,且"未记录"兜底永远落不到。
根因
把"输出字段"当成"输入字段"的兜底。文件头部的投影纪律明确禁止这种做法:
且
contextFromCase()注释写明 benchmark case input 是权威来源(spec §9)。修复
run.input(未变)prompt范围
仅
projectTrace()的input字段赋值一行,其余投影逻辑(tools / steps / context /evaluation / completeness / latency)完全未动。
有可见 UI 变化:评估类 trace 的 "Input" 行从"回答文本"变为"case prompt";
无 case 定义时显示"未记录"。
测试
packages/core/src/trace-projection.test.ts新增 2 个用例:trace.input === 'Research NVDA'且不等于evalRun.answertrace.input === ''回归证明(修复前):
修复后:
基线说明:干净
origin/main(7c9b550)上bun run typecheck五个工作区全部 exit 0,无基线故障;本 PR 未引入新的 advisory 失败。
环境
Closes #160