跳转至

从会话轨迹离线评测 Agent 工作流

  • 沉淀时间:2026-09-09
  • 来源:IK600G / PR #6;offline-eval-workflow-review.md
  • 成熟度:provisional
  • 适用范围:需要从 Claude Code、OpenCode 等运行日志判断业务流程完成度的场景

定位

平台日志能回答 token 和工具调用次数,却不知道 SQL 优化的 baseline、table context、precheck、execute、write result 是否按顺序完成。离线评测器应把不同运行时日志投影到统一业务事件,再计算 case 级指标。

Claude JSONL ─┐
              ├─ 只读适配器 → sqlopt-workflow-event/v1 → case 报告
OpenCode JSONL┘                                      └→ artifact 校验

设计原则

  1. 对源会话只读,不写回平台数据库或修改其 schema。
  2. 运行时适配与业务事件分离;Claude 和 OpenCode 使用同一事件 schema。
  3. 历史日志推断出的事件统一标记 trace_quality=inferred。
  4. event_id 和 tool_call_id 必须包含 session / agent 维度,避免多 Agent 冲突。
  5. trace 侧 blocker 与产物侧 terminal status 分开记录,两者可能不一致。
  6. artifact 校验以评测时可见的正式结果文件为准。

默认产物

默认输出控制在少量且不同粒度的文件:

产物 粒度 作用
workflow_events.jsonl tool / stage 事件 可审计明细
workflow_report.csv case 人眼看板与完成度
trace_manifest.json run 输入 hash、格式与产物清单

工具调用 CSV、全局 metrics 和独立 artifact 表可放入 --full 模式,避免默认产物互相重复。

测试方法

  • 固定输入 fixture,生成 golden 输出。
  • 对路径、run_id、时间戳等易变字段归一化。
  • 比较阶段分布、完成状态、blocker、artifact 校验等稳定字段。
  • case_id 识别覆盖生产命名,不能只匹配单一前缀或固定数字长度。
  • fixture 必须脱敏,不能把生产凭据或内网连接信息带入仓库。

反模式

  • 从工具调用次数直接推断业务流程成功。
  • 将不同粒度的数据强行压成一张无冗余宽表。
  • 为适配 OpenCode 而直接修改其数据库。
  • 固化解析错误却不记录 known issue。
  • 测试只断言文件存在,不比较业务字段。

限制与待验收

本地审查记录显示主路径和测试已跑通,但 PR #6 仍开放;敏感 fixture、事件文件命名和 OpenCode 数据库直读仍有未关闭事项。合入前应先完成这些门禁。

关联