走查 T2 · 持久化、kill 与恢复¶
动机:确认 JSONL(及 generation 文件名)是 Session 的唯一磁盘真相源,崩溃后可 repair 并继续。
前置¶
- 第 05 章概念;
pip install -e . - 可选:设
MINIHARNESS_HOME指向可写目录
命令¶
python -m miniharness.demo
记下输出里的会话目录(或在 MINIHARNESS_HOME/sessions/ 下找最新 id)。对未闭合 turn 的文件,用同 id 恢复:
python -m miniharness.cli --profile headless --session <SESSION_ID> "continue after repair"
(教学扩展:python -m miniharness.cli sessions list 列目录,见 cli/session_cmds.py。)
预期现象¶
- 回放后 turn 括号平衡(
turn_balance >= 0);尾部未闭合 turn 经repair_interrupted_turn合成turn/end {kind:'interrupted'}。 - fail-closed:未知事件 type 拒读(
ignorable豁免见第 05 章)。 - headless 退出码与
turn/end的kind一致(completed → 0)。
经过的 mini 模块¶
| 模块 | 职责 |
|---|---|
core/session/persistence.py |
append、flush |
core/session/generation.py |
多代文件名 |
core/session/released/ |
迁移链读入 |
boot/boot.py |
启动时回放 |
日志中常见事件 type¶
turn/start → … →(中断时可能缺 turn/end)→ repair 追加 step/end / turn/end {kind:'interrupted'} → 恢复后继续 turn/start …
测试¶
python -m unittest tests.test_persistence_boot -v
python -m unittest tests.test_session -v