跳到主要内容

Colony

Colony

Colony 是托管 Bolt 工作区的可自托管运行时。你提供工作区源码,Colony 负责运行:它路由租户路径、用 @norbital-ai/bolt 编译 checkout、构建并发布发布产物、配置并迁移租户数据库、绑定设施(Postgres、文件、AI、同步传输、身份认证),并承载工作区工作室。开发环境的引导每次启动都会收敛;生产环境运行同一个服务。

Bolt 定义工作区;Colony 托管它
本节之前的内容描述编写 SDK、工作区源码契约与运行时。本节记录运行这一切的宿主。

为什么运行 Colony?

每个 bolt 工作区都需要宿主。Colony 正是平台自身运行的宿主,因此你不必自行拼装托管环节:

  • 单进程 —— 无需 hypervisor,也无需旁路运行时:Colony 为每次产物检查或调用创建新的工作线程,并在工作结束时终止它。Colony 宿主自身保持常驻。开发引导每次启动都会收敛,本地环境始终保持最新。
  • 发布产物 —— 开发引导仅在开发环境启动时编译已配置的本地 checkout。托管环境只通过显式预览或发布操作构建并发布不可变产物;被路由的租户精确提供所选产物。
  • 租户数据库 —— 本地开发与测试通过 COLONY_POSTGRES_URL 使用普通 Postgres 提供器。托管的预发布与生产环境必须使用 Neon,为每个租户配置 Neon 分支并应用迁移谱系。
  • 身份认证、团队与计费 —— 包含 Cookie 会话、邮箱 OTP 登录、团队与邀请,以及 Stripe 计费。
  • 运维与更新 —— Colony 直接消费 @norbital-ai/bolt 包,运行时升级以普通包发布的方式落地。在具名卷备份自动化实现之前,备份与恢复仍是运维人员的显式职责。

Colony 与自建宿主对比

同一份工作区源码在两者上都能运行。区别在于由谁负责托管的每个环节:

能力Colony(可自托管)基于 @norbital-ai/bolt 的自建宿主
部署与路由租户矩阵持久化路由元数据;发布构建与 bundle 服务都已内置。路由不拥有工作线程。你需要自行构建、部署并提供工作区,并维护这条流水线。
发布管理每个工作区的不可变发布产物,由显式预览或发布操作构建并直接复用,不会再次构建。你自己的构建、发布与环境管理。
回滚恢复先前的发布产物;部署历史保留当前部署与回滚点。由你设计、测试并执行自己的回滚。
数据库本地开发与测试使用普通 Postgres;托管的预发布与生产环境使用 Neon 分支,均由 Colony 配置并迁移。由你自行配置、迁移、备份并监控 Postgres。
构建每次构建与发布都使用 bolt sync 与 bolt() Vite 插件。构建运行在你自己的 CI 与基础设施上。
身份认证与组织内置——Cookie 会话、邮箱 OTP、团队与邀请。由你构建或集成自己的身份层。
计费内置——一个 Stripe 订阅:基础价格加按用量的计算与 AI 用量,并在 Checkout 授予试用。你自己的计量、开票与收款。
Agent内置——与应用同 ACL 的工作区内 AI 助手。Bolt 提供循环与界面;由你绑定 ai 设施。同一宿主接纳每次循环迭代。
更新与运维Colony 直接消费 @norbital-ai/bolt 包;备份与恢复仍由运维人员管理。由你自己跟踪、测试并应用 bolt 发布。

想要开箱即用的宿主就选 Colony;需要在 bolt 包之上拥有托管层时再自建。

Colony 表面

工作区工作室是一个 host 插件 —— 它的界面随编译后的 Bolt 工作区 shell 提供,只有像 Colony 这样的 host 才会把它暴露出来。Colony 是以下两者的托管宿主: @norbital-ai/bolt (Agent 归 Bolt 所有;Colony 把每次循环调用准入一个一次性工作线程,在同一次调用内恢复设施等待,并计量实际使用的工作线程 CPU):

  • 工作区工作室 —— 用于编辑一个个人工作台、构建确切预览、请求审查与管理组织设置的浏览器 UI( 工作区工作室文档 )
  • Agent —— Bolt 所有的循环、/agent 界面与对话记录;Colony 接纳每次调用,在其中恢复模型与工具等待,并计量实际使用的工作线程 CPU( Agent 文档 )

构建者通过工作区工作室发布—— 预览批准并发布 —— 他们不运行自己的部署流水线。

变更如何上线

  Edit My workbench — source · scripts · skills, no database
        │
        ▼
  Preview — generate/edit DDL → lint · typecheck · health · bundle
            → persistent route metadata + one Neon fork
            → one-shot workers only during inspection or invocation
        │
        ▼
  Request review — every reviewer opens that exact Preview
        │
        ▼
  Approve — apply the reviewed schema plan and fast-forward Live
        │
        ▼
  Rollback (if needed) — restore a prior release artifact from history
  • 编辑 —— 我的工作台中的可变源码
  • 预览 —— 一个确切工作台提交、持久路由元数据与自动休眠的数据库分支;工作线程是一次性的
  • 生产 —— 已部署发布加线上租户数据库
编辑不是应用
选择 预览 会生成可编辑 DDL 并验证,但不会改变生产。只有 批准 会把已审查提交快进到生产。

发布产物

发布产物 是发布动作产生的不可变工作区构建。一次成功的预览或发布会向 Colony\u2019s 产物库发布一份冻结 bundle,以发布 ID 与产物 ID 标识。新的提交或发布会创建新产物;它从不改写旧产物,回滚会重新部署先前的产物而非重放历史。参见 工作区工作室 的 Review 标签、工具栏控件与回滚流程。

一个发布产物包含:

  • server bundle —— 编译后的服务器 bundle:集合、钩子、管道、自动化、函数与 Envoy 运行时
  • .norbital/migrations/ 与 schema SQL —— 增量租户迁移
  • .norbital/dist/ —— 编译后的客户端:租户应用、资源与工作区入口

预览默认只输出增量 DDL。破坏性 schema 变更可能需要显式补充 SQL 才能完成预览。批准会把经过审查的确切迁移计划应用到生产。

Colony 提供什么

  • 源码存储 —— 租户 Git 仓库与个人工作树中的规范工作区源码;产物/对象存储仅保存不可变构建产物
  • 构建编排 —— 开发引导在启动时加载已配置的本地 checkout。托管的预览与发布操作调用工作区锁定版本的 Bolt 工具链和 vite build ,在经过验证的临时物化目录中构建并发布不可变产物,完成后删除该目录
  • 发布注册表 —— 控制存储跟踪每个租户环境已部署的 releaseId 及其产物 artifactId ),以及回滚历史与工作区源码快照
  • 租户数据库 —— 本地开发与测试使用普通 Postgres;托管的预发布与生产环境每个线上租户使用一个 Neon 分支,每个活动预览最多再使用一个自动休眠的 Neon 分支
  • 同步传输 —— 托管并代理 Bolt’s 的同步路由,让租户应用到达其副本、流与变更( 同步引擎 )
  • 身份认证与组织 —— Bolt Cookie 会话、邮箱 OTP 与团队邀请
  • 计费 —— 一个 Stripe 订阅:基础价格加按用量的计算与 AI 用量,并在 Checkout 授予试用
  • 工作区工作室 —— 源码编辑、预览构建、发布请求与完整租户拓扑的浏览器 UI

Colony 不拥有什么

Colony 不导入 任何 bolt TypeScript 内部实现。它不直接内嵌租户逻辑。集合操作通过 host.invoke 代理进 bolt 运行时,在那里评估策略与 SQL。策略评估、审批门与 SQL 编译始终在 bolt 运行时内进行。

双数据库模型

  • 系统库 —— 组织、路由与发布元数据、计费标识
  • 租户库 —— 每个组织的 Postgres,含集合数据、策略、审批与应用记录

控制存储持有路由与发布状态。身份存在于租户运行时;集合读写通过 bolt 运行时代理进租户库。

订阅

  • 基础价格 —— 通过 Checkout 订阅的一个 Stripe 订阅,首次订阅客户有配置好的试用期
  • 按用量计费 —— 计算与 AI 用量通过 Stripe 计费表(billing meters)计费;部署配置列出计量价格

参见 定价