理解 Downcity City

Federation、Bureau、Embassy 与 City

分清权威后端、业务分区、访问窗口与 Agent 宿主。

四个概念拥有独立职责:

  • Federation 是权威后端和信任根,拥有账户、Bureau 记录、Service、模型目录、Usage、 Env 和 Token 签发。
  • Bureau 是 Federation 内的产品或业务分区。Bureau Token 表示可信产品后端身份。
  • Embassy 是 user 与 admin 访问 Federation 的窗口,只有 useradmin 两个身份子域。
  • 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 宿主。

两个命令可以来自同一个发行包,但它们拥有不同的运行时和生命周期状态。