10B AGENT / PUBLICATION

创建成功,落在哪个时间点?

六步比较正常创建与监听器失败。切换场景保留当前步骤,重播从头观察;图中的间距不表示耗时。

01 / 公告结果

两个对象已可查,还要等公告完成

setup 与 commit 在未发布阶段完成。两个 Registry 插入后,创建监听器按序执行,最后才把 handle 交回调用方。

已经送达的 created,需要配对 disposal

示例在第一个 agent/created 监听器抛错。后续监听器跳过,工厂完成清理并撤回登记,原创建 Promise 拒绝。

Agent 创建与公告回滚的六步时序时间从上向下。调用方、工厂、组合回调和两个活 Registry 之间依次准备、setup、插入、公告、等待和返回;失败场景最后清理并拒绝。setup 与 created 是不同回调,合并在同一参与者栏表示部署组合代码。请求创建与准备01请求创建与准备01setup / commit02setup / commit02插入并公告 Session03插入并公告 Session03串行 Agent 公告04Agent 监听器失败04全部监听器完成05传播创建错误05交回 AgentHandle06清理后拒绝创建06调用方ownerCtxAgentLoopfactory组合回调setup / 事件活 Registrylive entries
调用方AgentLoop组合回调活 Registry
先看完整路径,再播放比较

setup、Registry 插入、公告与 handle 交付是不同时间点。无 JavaScript 与静态模式保留全部连线。

01 / 请求创建与准备

工厂准备 Session、驱动器和预先登记的清理入口。

01 / 请求创建与准备

新 Session 和驱动器先处于未发布状态。

02 / setup / commit

回调完成时,两份 Registry 仍查不到新实例。

02 / setup / commit

这一步成功,不代表后面的公告也会成功。

03 / 插入并公告 Session

Session 和 Agent 都入库,随后发出 session/created。

03 / 插入并公告 Session

两个对象都已入库,Session 公告已经开始。

04 / 串行 Agent 公告

agent/created 监听器开始执行;外层 create 仍未完成。

04 / Agent 监听器失败

第一个 created 监听器抛错;后续监听器不再执行。

05 / 全部监听器完成

串行派发结束,初始化维护任务可以收尾。

05 / 传播创建错误

已经观察到创建的消费者仍需要看到配对 disposal。

06 / 交回 AgentHandle

调用方拿到 agent 与 dispose,之后再驱动普通工作。

06 / 清理后拒绝创建

停止活动、释放 Scope 与写 handle、解除登记,再拒绝调用方。

  1. 01
    请求创建与准备
    调用方 → AgentLoop

    工厂准备 Session、驱动器和预先登记的清理入口。

    请求创建与准备
    调用方 → AgentLoop

    新 Session 和驱动器先处于未发布状态。

  2. 02
    setup / commit
    AgentLoop → 组合回调

    回调完成时,两份 Registry 仍查不到新实例。

    setup / commit
    AgentLoop → 组合回调

    这一步成功,不代表后面的公告也会成功。

  3. 03
    插入并公告 Session
    AgentLoop → 活 Registry

    Session 和 Agent 都入库,随后发出 session/created。

    插入并公告 Session
    AgentLoop → 活 Registry

    两个对象都已入库,Session 公告已经开始。

  4. 04
    串行 Agent 公告
    活 Registry → 组合回调

    agent/created 监听器开始执行;外层 create 仍未完成。

    Agent 监听器失败
    活 Registry → 组合回调

    第一个 created 监听器抛错;后续监听器不再执行。

  5. 05
    全部监听器完成
    组合回调 → AgentLoop

    串行派发结束,初始化维护任务可以收尾。

    传播创建错误
    组合回调 → AgentLoop

    已经观察到创建的消费者仍需要看到配对 disposal。

  6. 06
    交回 AgentHandle
    AgentLoop → 调用方

    调用方拿到 agent 与 dispose,之后再驱动普通工作。

    清理后拒绝创建
    AgentLoop → 调用方

    停止活动、释放 Scope 与写 handle、解除登记,再拒绝调用方。

02 / 完成后检查

固定实验轨迹,不是实时运行的 dsh。

准备 → setup → commit
→ Session / Agent 入库
→ session/created
→ agent/created 全部完成
→ create 返回
准备 → setup → commit
→ Session / Agent 入库
→ session/created
→ agent/created:first 抛错
→ agent/disposed → session/disposed
→ create 拒绝
AgentRegistry:可查
SessionStore:可查
调用方:持有 AgentHandle

还没有自动发出模型请求。
AgentRegistry:已撤回
SessionStore:已撤回
调用方:没有拿到成功 handle

外部消费者已收到的通知无法倒带。
查看来源与省略的路径

真实实验 03、08 的正常 / 监听器失败轨迹。图中合并了持久化获取、取消检查和清理内部步骤;setup 失败、Session 公告失败及 owner 卸载见正文实验。

agent-loop/src/index.ts:650–666, 789–834 · agent/src/index.ts:537–559