跳到主要内容
分层

组件与职责

Console任务与运行视图
Control Plane授权 · 预检 · 任务生命周期
Sandbox Provider创建与管理运行环境
供给沙箱

任务沙箱 · 一任务一环境

Runner / Supervisor依赖调度 · 执行尝试
Agent A
Agent B
Artifact冻结产物 · 确定性交接

GatewayWeb / WebSocket → 沙箱接入

Contracts & Libraries跨组件共享协议与语义

查看组件职责与状态权威
  1. 01

    控制面 Control Plane

    承载产品用例与治理边界:身份、工作范围、流程与能力的版本权威、任务供给与调度、知识治理、审计与接口适配。

    状态权威结构化业务状态的权威,位于 PostgreSQL。

  2. 02

    Agent Runner

    在获授的执行代次内推进节点与执行尝试,运行原生 Agent 会话与事件,处理依赖、有界并发、取消与完成。

    状态权威DAG、执行尝试、会话引用与运行时事件的权威。

  3. 03

    Sandbox Provider

    拥有运行环境的创建、观察、绑定与清理。三个实现各自独立,核心通过统一协议调用。

    状态权威运行环境的生命周期。环境就绪不代表业务完成。

  4. 04

    Sandbox Gateway

    统一 Web 与 WebSocket 接入、页面终端与 Runner 的远程过程调用入口。

    状态权威接入协议适配,不持有业务状态权威。

  5. 05

    Console

    组合产品接口与受控交互,提供角色化的桌面工作台体验。

    状态权威不持有运行或授权的第二权威,只呈现控制面事实。

  6. 06

    Contracts 与 Libraries

    跨组件的协议与语义合同,以及可独立复用的基础能力。

    状态权威组件之间不导入对方内部实现,只依赖显式合同。

关键决策

为什么这样设计

以下取舍决定了平台的形态。它们不是因为实现简单而选择,而是因为拒绝某种复杂度。

调度与状态放在同一个故障域

DAG 状态、会话、产物与 Git worktree 都位于任务自己的沙箱内,沙箱内的 Supervisor 是唯一调度权威,控制面不保存节点级状态。

后果:换来状态模型的简单与一致。接受的代价是沙箱永久丢失会让整个任务失败,无法从节点检查点恢复。

完成由契约证明,而不是由自然语言声明

每个节点的成功条件由声明的产物、清单文件、结果摘要与质量门禁共同定义,运行时强制校验,格式或覆盖不完整时该节点失败。

后果:Agent 无法用「已经完成」绕过交付要求。项目自身的指令或模型偏差不能绕过完成合同。

流程既可以生成,也可以版本化

普通用户只描述任务,平台在预检中优先复用已发布流程,无法适配时生成任务专属的临时流程;两部分都经过同一套确定性编译器与摘要校验。

后果:降低了采用门槛,同时不牺牲可复现性。临时流程不会自动变成团队资产,想要复用必须显式固化。

知识必须同时具备治理面与执行面

用户维护与审阅知识,Agent 通过只读接口在任务执行时实时查询最新生效内容,每次调用重新检查主体、范围与授权。

后果:只有存储和页面、没有执行期消费接口,不构成完整知识产品;反之运行时也不能绕过治理直接检索。

凭据使用最小接收者注入

成员模型密钥只交给运行器,本地扩展的凭据只交给对应边车,远程扩展的凭据只交给代理。各组件就绪后立即删除任务密钥。

后果:Agent 主进程不直接持有扩展凭据,密钥不进入镜像、仓库、规格、日志或事件。

企业版以纯私有化为前提

核心控制面、沙箱、模型接入、产物与遥测链路都能在客户环境独立运行,不依赖外部托管服务。

后果:所有状态权威都必须部署在客户网络内。这排除了以托管服务作为关键路径的设计。

状态权威

什么事实由谁保存

结构化业务状态由控制面的关系数据库保存。运行器以本地事务日志原子保存执行代次、事件与恢复回执。源码事实由 Git 保存。运行时快照、冻结需求与能力包等大对象按各自合同进入对象存储。知识正文与索引由独立的检索数据面承载,个人记忆使用独立的数据库与账号,不与控制面主库建立外键或共享事务。执行代次、环境代次与写入者纪元各自独立:取消受理、进程退出、持久终态与业务成功是不同的事实,缺少退出证据的副作用保持未知,不会被自动重放。