run_info.json 记录请求配置和最终状态,params.json 保存结果写入与重新汇总所需的精简参数。progress.json 提供最新进度快照,progress.jsonl 保留完整事件序列,日志则记录便于阅读的执行消息和异常。
文件何时生成
并非每次调用都会留下这些文件。CLI 和 SDK 会先在运行目录外检查请求;如果此时失败,不会创建运行目录。
agentcompass launch --dry-run 也不会创建输出。
运行目录建立后再发生准备错误,通常已经有日志和 run_info.json;如果错误能够正常收尾,还会写入最终状态和 run_finished 事件。进程被强制终止时,最终状态、最后几个进度事件或 params.json 可能尚未写入。
run_info.json
run_info.json 用于回答两个问题:本次评测使用了哪些请求配置,以及请求最终如何结束。它在任务加载前创建,运行过程中持续更新,并在请求结束时写入最终状态。
顶层字段
request 的结构
request 按 model、Benchmark、Harness、Environment、执行控制、runtime、输出和元数据分区。各组件的 params 是开放对象,具体字段由所选组件决定。
网络策略对象包含
network_mode(网络访问模式)和 allowed_hosts(允许访问的 host 列表)。写入 JSON 时,值为 null 的字段、空对象和空列表会被移除,因此 allowed_hosts 为空时不一定出现在文件中。
request 不是原始命令行的副本,也不包含 results_dir、整个请求的超时、日志级别或 Environment provider 并发限制等进程级设置。要核对这些内容,请同时查看调用命令、配置和日志。组件专属字段见 Model、Benchmark、Harness 和 Environment 文档。
reused_from 出现时包含以下字段:
resolved_execution_plans 的结构
resolved_execution_plans 记录每次任务尝试解析得到的 Environment、网络策略和 Recipe。其结构如下:
计划摘要在解析完成后、打开 Environment 前写入,因此只能说明本次尝试计划使用什么,不能证明 Environment 已成功创建。它也不包含 Recipe 解析后的完整镜像、快照、工作目录、资源或 Environment provider 参数。
从已有运行复用、未在当前请求中重新执行的任务不会新增计划记录。它原有的计划仍保存在复用后的任务详情中。
params.json
params.json 只保存写入任务详情和重新生成汇总所需的参数。AgentCompass 会在保存任务详情或生成最终汇总时重写该文件;如果请求在这两步之前失败,文件可能不存在。单独执行 agentcompass summary 只更新汇总文件,不会重写已有的 params.json。
model、benchmark 和 output 下未设置的直属字段会被省略;嵌套 params 中的空字符串等值仍可能保留。params.json 不包含 Harness、Environment、执行控制、复用设置、元数据或完整的 Recipe 解析结果,因此不能用它还原本次评测的完整配置。
重新生成汇总时,AgentCompass 优先读取 run_info.json.request,再用 params.json 补充其中缺失的内容。两个文件的用途如下:
progress.json
progress.json 保存最新的运行状态和任务计数。每次产生进度事件时,AgentCompass 都会用最新状态替换这份快照,因此状态页或脚本可以定期读取它。
每个
active_tasks.<task-id> 对象都包含 category、phase、attempt 和 updated_at。任务已启动但尚未进入具体阶段时,phase 为 running;没有类别或尝试编号时,对应字段为 null。
completed_tasks 表示执行流程正常结束,不表示 Benchmark 判定正确。正确率、得分和 Benchmark 指标应以任务详情和 summary.md 为准。progress.jsonl
progress.jsonl 保存完整的进度事件流。每行是一个 JSON 对象,并按事件发出顺序追加。需要还原某个任务经历的阶段、尝试和重试时,应读取这个文件,而不是只看最新快照。
CLI 的 --progress auto|plain|none 和 SDK 的 progress="auto"|"plain"|"none" 只控制终端中的实时显示,不会关闭 progress.json 或 progress.jsonl。通过 SDK 提供自定义进度报告器时,是否生成文件由该报告器的输出配置决定。
下面字段中的“编排”是指一次 launch 调度多个评测请求。单独运行一个请求时,相关编排字段为 null。
每个事件都包含的字段
上述字段始终序列化;没有值时写入
null,payload 始终为对象。
事件及其附加字段
task_started 和对应的 task_finished 使用相同的 payload.index 与 payload.total。它们表示调度任务时使用的序号和总数,不是任务标识;请始终使用 task_id 识别任务。多评测编排通常保留任务在原始所选列表中的位置,因此复用后编号可能不连续;单评测请求则可能重新编号剩余任务。
attempt_retry.payload 中各字段的含义如下:
phase_changed.phase 的当前取值如下:
任务并发执行时,不同任务的事件会交错。请使用
task_id 和 attempt 筛选单个任务;不要假设所有任务都会经历相同阶段,也不要根据不同任务的相邻事件推断依赖关系。
运行 agentcompass analysis 时,AgentCompass 会先清除目标结果目录中原有的两个 progress 文件,再记录本次分析事件。未使用 --override 时,目标是新建的结果副本,不会修改来源目录。
重新分析会沿用原请求的 run_id,但不会重建 run_info.json、params.json 或运行目录日志。这些文件仍然描述最初的评测请求。
logs/*.log
每个正常执行的 run 或 launch 请求都会在运行目录中创建一个 logs/YYYYMMDD_HHMMSS.log。如果对应时间的文件名已存在,时间戳会逐秒递增,直到找到可用名称。因此,从其他运行复制而来的目录可能包含多个日志文件。
日志从运行目录建立后开始记录,早于 run_info.json 的创建和后续运行检查。CLI 或 SDK 在此之前产生的输出不会补写到该文件中。
每行日志采用以下结构:
--file-log-level控制运行目录日志的最低级别,默认为DEBUG;--log-level只控制终端输出。- 第三方 logger 默认只保留
WARNING及以上消息,即使文件级别为DEBUG。 - 日志包含 AgentCompass 和已接入组件主动记录的消息,但不保证包含每条 shell 命令、provider 响应或第三方库内部事件。
- 日志不是结构化结果,也不会参与汇总、复用或重新分析。
run_info.json 和 params.json 会根据敏感字段名隐藏已识别的凭证,并移除参数对象中以下划线开头的运行时字段。该处理不是通用的敏感信息扫描,也不适用于日志。
自定义字段、自由文本、progress 事件和日志仍可能包含路径、URL、任务数据、provider 信息或堆栈跟踪。共享运行目录前,请检查并移除其中的敏感内容。
排查运行失败
遇到运行失败时,按以下顺序检查可以逐步缩小范围:- 查看
progress.json,确认请求状态和各类任务数量;请求仍在运行时,还可查看当前活动阶段。 - 按
task_id检查progress.jsonl,还原失败任务的最后阶段、尝试和重试路径。请求进入终态后,快照会清空活动任务,最后阶段应从事件流查找。 - 查看
run_info.json,核对合并后请求、复用来源以及该尝试的 Recipe 与网络策略摘要。 - 如果问题出现在结果保存或重新汇总阶段,再检查
params.json。 - 最后在
logs/*.log中按任务 ID、阶段或异常类型查找详细消息和堆栈。
run_info.json 和 progress 文件也可能停留在不同状态。判断最终评测结果时,请以已经保存的任务详情和汇总为准。
任务级结果字段见任务结果,聚合指标见汇总与分析结果。进一步的故障定位方法见评测故障排查,日志级别和进度显示参数见运行控制。