MyBotBoxMyBotBox
Architecture

执行与数据流

工作流运行如何从触发器到处理程序,再到日志和成本计量的完整生命周期。

无论是通过按钮、Webhook、定时任务还是入站轮询触发,工作流都会经历相同的生命周期。

生命周期

flowchart LR
    classDef step fill:#00D4AA,stroke:#0F766E,color:#06302B
    classDef data fill:#3B82F6,stroke:#1E40AF,color:#fff
    classDef gate fill:#FF6B35,stroke:#C2410C,color:#fff

    S1["Build<br/>canvas"]:::step --> S2{"Validate<br/>reference checks"}:::gate
    S2 --> S3["Save<br/>blocks + edges"]:::data
    S3 --> S4["Deploy<br/>immutable version"]:::step
    S4 --> S5["Bind trigger<br/>webhook · schedule · poll"]:::step
    S5 --> S6["Execute<br/>resolve inputs → handlers"]:::step
    S6 --> S7["Logs + cost<br/>per-block metering"]:::data

运行期间发生了什么

sequenceDiagram
    participant T as Trigger
    participant A as API
    participant S as Serializer
    participant X as Executor
    participant H as Handler
    participant L as LLM / Integration
    participant D as Database

    T->>A: Fire (webhook / schedule / manual)
    A->>S: serialize(workflow)
    S->>S: Build graph + topological sort
    S-->>A: Execution plan
    A->>X: execute(plan)
    loop For each block
        X->>H: handle(block, inputs)
        alt AI / Integration block
            H->>L: Provider call
            L-->>H: Result
        else Data block
            H->>D: Query / insert
            D-->>H: Rows
        end
        H-->>X: Block output (stored in context)
    end
    X->>D: Write execution log + cost
    A-->>T: Result (streamed when applicable)

关键特性

  • 拓扑执行 — 块按依赖顺序运行;parallelloop 块会派生出共享同一追踪 ID 的独立子上下文。
  • 类型化分发 — 每个块通过统一接口解析到 30 个处理程序之一, 因此引擎可以在不修改核心代码的情况下支持新的块类型。
  • 流式传输 — AI 块通过 Server-Sent Events 将 Token 流式返回;编辑器会在运行过程中实时显示输出。
  • 成本计量 — 每个块都会将输入/输出 Token 及成本记录到执行日志中,供用量页面读取。

同步与异步

用户发起的运行在请求范围内同步执行。由触发器触发或长时间运行的工作流会被分发到 Cloud Tasks,并在后台函数中运行,因此不受请求超时的限制。

同步运行受平台请求超时的限制。对于可能运行较长时间的工作流,建议使用 Webhook 或定时触发器,它们以异步方式分发。