Reference

事件与生命周期参考图

配套参考页:用于实现与源码精读时反复查阅。

1. 为什么要区分 durable event 与 live event

Session event 是可回放事实;agent/* 是运行时协调。前者必须能落盘并在未来重建,后者可以携带当前 Agent、AbortSignal 等进程内对象。

2. 一次工具轮次的事件表

顺序事件/阶段性质用途
1agent/status runninglive驱动器状态
2turn/startdurable打开轮次
3agent/inbox/claimedlive领取输入
4agent/pre-stepwaterfall改写/拒绝本次输入
5step/startdurable打开模型步骤
6user/messagedurable surface进入模型历史
7system-prompt/assemblewaterfall组装 prompt/tools
8agent/requestwaterfall最终模型请求参数
9llm/streamwaterfallprovider stream
10assistant/chunk*durable回放/UI fidelity
11assistant/messagedurable surface最终 assistant 锚点
12tool/calldurable surface调用意图
13tools/pre-executewaterfall审批/策略
14tools/executewaterfall权威执行
15tools/post-executewaterfall结果规范化
16tool/resultdurable surface下一 step 可见
17step/enddurable关闭步骤
18agent/turn-stoppingserial终止检查点
19turn/enddurable关闭轮次
20session/flushawaited持久性屏障

3. Waterfall 的心智模型

listenerA(value, next) {
  value.tags.push('A')
  return next(value)          // 协作:继续下游
}
listenerB(value, next) {
  if (!allowed(value)) return { kind: 'reject' } // 短路
  return next(value)
}
listenerC(value, next) {
  return next(rewrite(value)) // 替换下游输入
}

如果监听器只是观察,却忘了调用 next(),它可能无意中成为权威短路者。因此 DSH 对 waterfall 的教学和组合测试很重视。

4. 取消信号

一整个 turn 应共享同一个显式 AbortSignal,并穿过 pre-step、prompt assembly、model request、stream、tool execute、turn-stopping;下一 turn 使用新 signal。取消是协作式的:不响应 signal 的插件必须自己 settle 后,teardown 才能真正静止。

5. 事件设计判断题