City SDK

面向多个 AI 产品的 City runtime 与 SDK 能力。

Downcity 的 City SDK 用来创建、部署和调用 City。一个 City runtime 可以同时服务网页、扩展、App、桌面工具、客户 Demo 或内部工具,不需要每个 AI 产品都重搭一套 AI 后端。

City 对外暴露的不是 provider API,而是稳定的产品调用边界。在 City 内部,能力通过 ServiceActionAIService 组织:

  • 产品侧拿到 town_id + user_token
  • User Citytext()stream()image() 这类 service
  • City 内部自己决定模型目录、provider 路由、hooks、usage 和 env

先选你的阅读入口

一张图看懂它怎么工作

多个产品 client网页、扩展、App、桌面工具、客户 Demo、内部工具。User City + town_id + user_token
City runtime校验 token,读取模型目录,再把请求分发到 AIService、服务或自定义 Service 的 action。
hooks 与 usage把套餐、余额、扣费、日志、风控接进 City runtime,但业务规则仍然留在你自己的系统里。
上游调用层OpenAI、Claude、Gemini、私有模型,或你自己的 AI Gateway / 中转服务。

对产品来说,City 暴露的是稳定的 Service action 和 model;上游接什么 provider、网关或私有部署,都是服务端内部细节。

City SDK 负责什么

  • Runtime 数据库和 Service 声明的表
  • provider key 和 Runtime env
  • user_token 校验与 admin_secret_key 管理能力
  • Provider + AIService.use() 注册模型,自动提供 SDK 和 OpenAI 兼容两条通路
  • client.ai.listModels() 读取 Runtime 注册出来的公开模型目录
  • usage 记录和 hooks 扩展点

它不负责什么

  • 你的用户系统
  • 订单、订阅、CRM、内容数据
  • 产品自己的页面、交互和业务体验
  • 对外暴露“统一 provider API”给其他系统直接调用

更准确地说:

City SDK 负责 City runtime 以及其中面向 Service 的 AI 基础设施。 产品继续负责自己的用户、业务、界面和商业模式。

推荐阅读路线

  1. 第一次接入,先去 快速开始
  2. 想彻底理解这个产品模型,再看 核心概念
  3. 准备接真实业务,再看 场景指南
  4. 想按 npm package 理清职责时,看 Packages
  5. 需要具体接口时,再回到 参考