本地 Trace Viewer
本地 Trace Viewer 是 Navi Runtime Session 的只读调试界面。它通过索引读取本地
state.db 中的 Runtime Trace 和 Runtime Event,不替代 Langfuse。已有的
traces.jsonl 和 runtime-events.jsonl 会在 SQLite 遥测首次启动时一次性导入。
本地 Viewer 适合分析单次运行、查看真实 Model/Tool 顺序、确认 Skill 加载和离线排障; Langfuse 继续负责远程聚合、成本分析与长期趋势。
启动 Viewer
打开命令打印的地址,默认为 http://127.0.0.1:8765;使用 Ctrl-C 停止。
服务始终绑定 127.0.0.1,没有写入、删除、激活或 Replay 接口。HTTP 响应使用严格
CSP,页面渲染前也会遮蔽常见的凭证赋值内容。
渲染单条 Trace
不启动服务,直接生成一个自包含 HTML:
uv run navi-agent trace render TRACE_ID
uv run navi-agent trace render TRACE_ID --output /tmp/trace.html
默认输出目录为 ~/.navi-agent/logs/trace-viewer/。
Skill 字段
- Available:本次运行的 Skill 索引中可见的名称与描述。
- Injected:完整正文被预先注入 Prompt 的 Skill;渐进加载模式下通常为空。
- Loaded:运行中通过
skill_view成功加载的 Skill。 - Loaded references:通过
skill_view成功加载的附件文件。
时间线读取 Runtime Events,而不是 Langfuse 导出器当前分组后的 Model/Tool 数组, 因此能够保留 Model Response 与 Tool Execution 的真实交错顺序。
Usage 字段
Trace 和 Session 页面会汇总 Model Call 已记录的 input、output、cache-read、
cache-write 和 reasoning token;时间线中的每个 Model Event 也会显示本次 Usage。
只有汇总范围内的每次 Model Call 都记录了 Cost 时才展示总成本,否则显示 —,
避免把不完整成本误报为总成本。
数据与限制
- Viewer 会向本机浏览器展示已记录的 Prompt、Reasoning、工具参数和结果;应把当前 机器账号视为安全边界。
- 脱敏只是纵深防御,不能保证识别自由文本中的所有秘密。
- 服务使用 SQLite 索引查询,适合本地开发,不适合大型多用户部署。
- Offline Replay 仍是独立 Runtime 服务,Viewer 当前不能执行 Replay。