理解 Downcity City
Federation、Bureau、Embassy 与 City
分清权威后端、业务分区、访问窗口与 Agent 宿主。
四个概念拥有独立职责:
Federation是权威后端和信任根,拥有账户、Bureau 记录、Service、模型目录、Usage、 Env 和 Token 签发。Bureau是 Federation 内的产品或业务分区。Bureau Token 表示可信产品后端身份。Embassy是 user 与 admin 访问 Federation 的窗口,只有user和admin两个身份子域。City是@downcity/agent提供的 Agent 运行环境容器,持有 Workspace,也可以持有 Embassy 服务客户端;它不是 Federation 客户端,也不是 Federation 中需要注册的身份。
import { Embassy, Federation } from "@downcity/federation";
import { City } from "@downcity/agent";
const federation = new Federation({ database });
const embassy = new Embassy({ federation_url: "https://fed.example.com" });
const city = new City({ embassy, workspaces: [workspace] });
const agent = new Agent({ id: "assistant" });
city.agents.add(agent);身份边界
User Token、Admin Session Token 和 Bureau Token 不能混用:
embassy.user持有或获取 User Token。embassy.admin持有或获取 Admin Session Token。new Bureau({ bureau_token })持有长期 Bureau 机器凭证。- City 不会成为上述任何一种身份。City 中运行的 Agent 可以把 Embassy 或其他客户端当作 普通依赖使用。
CLI 对应关系
fed/downfed部署和管理 Federation。city/downcity管理本地 Agent 宿主。
两个命令可以来自同一个发行包,但它们拥有不同的运行时和生命周期状态。