BLOGE
0.9.8-RC1在线版 · 事实 校验 2026-09-15 · English
附录 B —— Session 速查表
请先读第 14 章。编写或排查多轮 session 时再回到这里。
选择边界
| 需求 | 使用 | 不要使用 |
|---|---|---|
| 一次外部挂起与恢复 | Graph await | 只有一轮的伪 session |
| 外部反复交互,每轮处理相似 | session | 手工包住 HTTP 请求的循环 |
| 命名业务状态与回退迁移 | state_machine | 用 phase 名伪装 state |
Phase 卡片
| 项目 | 必须回答的问题 |
|---|---|
ONCE 或 ROUND | 该 phase 只运行一次,还是每个 signal 都运行一次? |
max_rounds | 什么有限预算能终止失控对话? |
until | 哪个可观察结果结束 phase? |
| signal schema | 这个边界允许什么 payload? |
| timeout / idle timeout | 没有 signal 时,等待如何结束? |
| owner | 哪个外层运行时拥有身份、恢复与终止? |
运行时动作
| 动作 | 含义 | 应保留的证据 |
|---|---|---|
| start | 创建一个稳定 session identity | Definition version 与初始 context |
| signal | 交付一次经过校验的 round payload | Signal type、correlation identity、接受/拒绝结果 |
| restore | 从最后一个持久快照恢复 | Snapshot version 与原始 deadline |
| terminate | 因策略而非正常 until 结束 | 稳定 reason 与最终 status |
失败扫描
- 无效 signal 必须在修改 round state 前被拒绝。
- Phase 与 session 轮数上限必须有限。
- 测试迟到、重复与并发 signal。
- 声称崩溃恢复时使用
bloge-session-durable;内存 session 不构成持久性证据。 - 嵌套编排中的外部 signal 必须先进入声明的外层 owner。
主线请看第 14 章与第 16 章。精确契约请查 BLOGE 源码树中的 docs/session-phase-round-specification.md、bloge-session-ext 与 bloge-session-durable。