Federation & Service

Federation & Service

Downcity AI 基础设施中 Federation 和 Service 是什么

Federation & Service

Federation 是 City 连接的共享服务端运行容器。它负责用户身份、City 隔离、Service 路由、模型目录、用量和支付,并通过统一接口连接多个 AI 提供商。

Federation AIService

Federation AIService 是 City 的一个组件,负责:

  • 注册模型提供商及其能力
  • 无论后端是什么,都暴露统一的模型 API
  • 追踪用量并将请求路由到合适的提供商
  • 处理故障转移和速率限制

Agent 通过类似 "default""quality" 的 ID 绑定模型。Federation AIService 在运行时将该 ID 解析为实时模型实例。

Service / Action 基础设施

City 还提供了一个通用的 ServiceAction 层,用于构建 Agent 可调用的后端能力:

  • Service — 长期运行的后端能力(例如知识库、搜索引擎、数据库)
  • Action — Agent 可调用的离散操作(例如发送邮件、查询数据库、调用外部 API)

Service 和 Action 向 City 注册,可被任何已连接的 Agent 发现和调用。

与 City 的关系

Federation 是服务端,City 是携带 user_token 的用户客户端。当你使用 City SDK 时,你在交互的是:

  • City 身份与认证
  • Federation AIService(模型目录和路由)
  • Service/Action 基础设施(后端能力)
  • 用量、余额和计费(City Services)

Federation 首次启动会自动生成 Ed25519 Key Ring,并通过 /.well-known/jwks.json 发布公开验签密钥。Embassy 可以直接访问 Federation;产品需要自有后端能力时,再使用 Bureau Token 和独立 Bureau 客户端本地验证用户 Token。Federation 启动不会默认创建 Bureau Token。

管理员登录与恢复

首次运行 fed deploy 时,CLI 会交互式要求设置 Federation 管理员 ID、密码和确认密码。密码至少 12 个字符,Federation 数据库仅保存加盐密码摘要。运行 fed web 后,在登录页输入这组凭证;浏览器不会接触远端管理 Session Token,Token 只存在于本机 BFF 进程内。

普通部署不会修改管理员。密码遗失时,只有拥有 Local 主机权限或 Cloudflare Worker/D1 部署权限的人可以执行:

fed deploy --admin-reset

非交互环境还必须显式添加 --yes;该参数只确认重置,不跳过管理员凭证输入。恢复由 CLI 使用本地 SQLite 事务或 Wrangler 远程 D1 权限直接写入管理员数据库,不需要在 Worker 中接收恢复环境变量,也不会把明文密码传给数据库。恢复成功会撤销全部旧管理员会话。Federation 不提供匿名密码重置 API。

fed deploy 会在交互终端持续显示当前步骤与耗时,包括构建、类型检查、Cloudflare 账号检查、D1 / Queue / R2 准备、Worker 发布、健康检查和管理员验证;CI 与重定向输出使用稳定的逐行阶段日志。

fed bureau token 会打开交互式管理界面;选择签发或运行 fed bureau token issue <bureau_id> 后,CLI 会要求输入用途并使用 Admin Session 请求 Federation 签发。Federation 生成明文, 数据库只保存用途、hash 与生命周期状态。明文只返回一次,由运维写入 Bureau 服务器的 DOWNCITY_BUREAU_TOKEN;Federation 和 Bureau 不需要部署在同一台服务器。Bureau Token 只证明机器身份,不能签发 User Token。

继续阅读

  • City SDK — 构建在 City 和 Federation 之上
  • Payments — 用量、余额和计费 API