Skip to main content

目标与前置条件

先运行资料项目,再用 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 版本。
将下方完整文件保存到当前目录。无需 clone 仓库、安装 editable 包或复制 tests。 如果继续 Quickstart 且 notes-run 已存在,跳过下面第一条 notes.py 创建命令,直接检查已有运行。replay 启动本地网页服务;先用 Ctrl-C 停止再执行 export/board。

运行并验证

预期出现以下输出片段(随机 ID 不固定)。每次运行都检查工具结果或持久化断言,成功退出码为 0。

检查保存的 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

下一步与 API

API Reference · Configuration · Learning path · Next Source file (可选;全部所需代码已在本页)