目标与前置条件
先运行资料项目,再用control.json 中的准确 Session ID 检查结果。default_reader 默认读取 canonical journal,同时保留明确的历史 trace 支持。read_session 重建观察视图,不恢复执行。
inspect_run.py 读取快照分页,通过本次自有 staging 流式写出 public canonical export。小规模 re-import 检查逐条比较投影后的记录;re-import 本身仍会物化数据。教程保留旧 replay/HTML CLI 所需的空 selector 目录。新的 canonical export 直接接受 journal 与 run ID。
使用下方命令检查、回放和导出。replay 展示已记录执行,不调用模型、不重做工具。只读 board 用 Ctrl-C 退出。
需要 Python 基础;声明支持 Python ≥3.10,本轮本地验证使用 Python 3.12.7。每章可独立运行;继续已有项目时可复用环境和同名文件。以下命令为 macOS/Linux shell。
准备项目
本教程使用下方固定的 R1 融合实现;源码安装不代表已发布 PyPI 版本。运行并验证
检查保存的 Session
行为与支持边界
inspect 不需要 Docker 或 credentials。read_page 仅保留当前页、有 frame 大小上限的缓冲和固定 I/O/SQLite cache;临时磁盘索引随日志增长。每页仍 hash 快照全部历史字节。完整 read_run/read_session、旧 HTML export 和 re-import 仍会物化数据。public export 声明损失,不能替代私有恢复数据。
cursor 绑定查询/视图、来源、committed head 与字节边界,reader close 后失效。并发 append 不混入当前遍历。末页后以该页 watermark 作为新查询的 after_sequence,显式捕获新 head 来 polling。查询变化、来源替换/截断和快照损坏均 typed reject。不支持此能力的历史或第三方来源抛出 BoundedReadUnsupported;旧完整读取保持原行为。
练习与参考答案
在不公开私有 payload 的前提下比较 private 与 public 记录;记录数相同不能证明 payload 无损。常见错误与清理
ModuleNotFoundError:确认已激活安装指定 wheel/源码版本的环境,并保存本页所有文件。root 已存在:换一个新 --root,不要覆盖需要保留的证据。断言失败:检查第一个失败的工具或 typed error;不要只依赖最终文字。退出所有进程、停止 board 后,可自行删除本章新建且不再需要的运行目录;保留要调试的 SQLite、journal 和报告。
连续 iter_records 与文件导出在开始、结束时校验完整快照,遍历时逐 frame 校验。迭代值在耗尽前属于 partial;提前 close 释放资源,但不证明遍历完成。文件仅在最终校验后发布。独立 read_page 每页仍校验全部历史字节。
完整文件:复制到项目根目录
notes.py
agent.yaml
inspect_run.py
