agent.run() 都会把 trace 写到 ./runs/<run_id>/。qita CLI 会读取这些 traces,并通过本地 web board 提供 run inspection、step-by-step replay 与独立 HTML 导出。
Trace artifacts
每个 run 目录都包含三个文件:| 文件 | 内容 |
|---|---|
manifest.json | 运行元数据:run_id、model_id、status、stop_reason、step_count、event_count、schema_version、prompt_hash、run_config_hash、seed、summary |
events.jsonl | 每行一个 RuntimeEvent,包含 step_id、phase、ts、ok、error 与 payload |
steps.jsonl | 每行一个 StepRecord,包含 step_id、decision、actions、action_results、observation 与 critic_outputs |
manifest.json 会在初始化时写出,并在 Engine 退出时 finalize。events.jsonl 与 steps.jsonl 都是 append-only。
qita board
qita board 会启动一个本地 HTTP server,发现 log root 下所有 run 目录并渲染成卡片网格。
启动 board
http://127.0.0.1:8765。常用参数:| 参数 | 默认值 | 说明 |
|---|---|---|
--logdir | ./runs | 包含各个 run 子目录的根路径 |
--host | 127.0.0.1 | 绑定地址 |
--port | 8765 | 监听端口 |
浏览 runs
board 每 2.5 秒自动刷新一次。每个 run 会以卡片形式展示:
- Run ID
- Status badge
- Step count 与 event count
- Stop reason
- 更新时间
- Manifest metadata,如 model ID、schema version、seed、prompt hash
- Search:按 run ID、stop reason、final result 搜索
- Status filter:按状态筛选
- Sort:按更新时间、event count 或 step count 排序
- Auto refresh:开关自动刷新

打开一个 run
点击任意 run 卡片的 view 即可进入详情页。详情页通常有两个 tab:Traj tab轨迹视图会把每一步显示成一张卡片,通常包含这些折叠区块:
- State:当前 observation 中的关键状态字段
- Thought:模型推理文本
- Action:本步调用的工具
- Direct Observation:action results;搜索结果会表格化,错误会高亮
- Critic:critic 输出
- Trace Events:该 step 的原始
RuntimeEvent
- 全文过滤
- 按 event phase 过滤
- 升序或降序排序
- 开关 observation / critic 区块
- 全部折叠或展开
- 调整字号
manifest.json。这是逐步检查 agent 行为时最重要的界面:
qita replay
qita replay 用于把单次 run 以时间序方式回放出来。
| 参数 | 默认值 | 说明 |
|---|---|---|
--run | 必填 | run 目录路径 |
--host | 127.0.0.1 | 绑定地址 |
--port | 8765 | 监听端口 |
?speed=300 指定毫秒级间隔。
qita export
qita export 会生成一个自包含的 HTML 文件,便于分享而不必运行本地 server。
| 参数 | 说明 |
|---|---|
--run | run 目录路径,必填 |
--html | 输出 HTML 文件路径,必填 |
配置 trace 输出
默认情况下,agent.run() 会把 traces 写到 ./runs/,run ID 由 agent 类名与 UTC 时间戳组成。你也可以自定义目录和前缀:
TraceWriter:
qita 发现 run 至少需要三个文件:manifest.json、events.jsonl 和 steps.jsonl。缺少 manifest.json 的目录会被 qita board 静默跳过。