架构
控制面管理任务,沙箱承载执行。每一层都有清晰的职责。
组件与职责
任务沙箱 · 一任务一环境
GatewayWeb / WebSocket → 沙箱接入
Contracts & Libraries跨组件共享协议与语义
查看组件职责与状态权威
- 01
控制面 Control Plane
承载产品用例与治理边界:身份、工作范围、流程与能力的版本权威、任务供给与调度、知识治理、审计与接口适配。
状态权威结构化业务状态的权威,位于 PostgreSQL。
- 02
Agent Runner
在获授的执行代次内推进节点与执行尝试,运行原生 Agent 会话与事件,处理依赖、有界并发、取消与完成。
状态权威DAG、执行尝试、会话引用与运行时事件的权威。
- 03
Sandbox Provider
拥有运行环境的创建、观察、绑定与清理。三个实现各自独立,核心通过统一协议调用。
状态权威运行环境的生命周期。环境就绪不代表业务完成。
- 04
Sandbox Gateway
统一 Web 与 WebSocket 接入、页面终端与 Runner 的远程过程调用入口。
状态权威接入协议适配,不持有业务状态权威。
- 05
Console
组合产品接口与受控交互,提供角色化的桌面工作台体验。
状态权威不持有运行或授权的第二权威,只呈现控制面事实。
- 06
Contracts 与 Libraries
跨组件的协议与语义合同,以及可独立复用的基础能力。
状态权威组件之间不导入对方内部实现,只依赖显式合同。
为什么这样设计
以下取舍决定了平台的形态。它们不是因为实现简单而选择,而是因为拒绝某种复杂度。
调度与状态放在同一个故障域
DAG 状态、会话、产物与 Git worktree 都位于任务自己的沙箱内,沙箱内的 Supervisor 是唯一调度权威,控制面不保存节点级状态。
后果:换来状态模型的简单与一致。接受的代价是沙箱永久丢失会让整个任务失败,无法从节点检查点恢复。
完成由契约证明,而不是由自然语言声明
每个节点的成功条件由声明的产物、清单文件、结果摘要与质量门禁共同定义,运行时强制校验,格式或覆盖不完整时该节点失败。
后果:Agent 无法用「已经完成」绕过交付要求。项目自身的指令或模型偏差不能绕过完成合同。
流程既可以生成,也可以版本化
普通用户只描述任务,平台在预检中优先复用已发布流程,无法适配时生成任务专属的临时流程;两部分都经过同一套确定性编译器与摘要校验。
后果:降低了采用门槛,同时不牺牲可复现性。临时流程不会自动变成团队资产,想要复用必须显式固化。
知识必须同时具备治理面与执行面
用户维护与审阅知识,Agent 通过只读接口在任务执行时实时查询最新生效内容,每次调用重新检查主体、范围与授权。
后果:只有存储和页面、没有执行期消费接口,不构成完整知识产品;反之运行时也不能绕过治理直接检索。
凭据使用最小接收者注入
成员模型密钥只交给运行器,本地扩展的凭据只交给对应边车,远程扩展的凭据只交给代理。各组件就绪后立即删除任务密钥。
后果:Agent 主进程不直接持有扩展凭据,密钥不进入镜像、仓库、规格、日志或事件。
企业版以纯私有化为前提
核心控制面、沙箱、模型接入、产物与遥测链路都能在客户环境独立运行,不依赖外部托管服务。
后果:所有状态权威都必须部署在客户网络内。这排除了以托管服务作为关键路径的设计。