oceanway-vozeb 收敛计划
将现有 oceanway-vozeb 收敛为 OceanWay Studio 代码基座的边界与阶段
从 oceanway-vozeb 收敛到 OceanWay Studio
正式决定
canvas.oceanway.tech 以当前 oceanway-vozeb 项目为代码基座继续演进。该项目的目标产品身份是 OceanWay Studio 通用创作平台;公开开发者内容迁往 ai.oceanway.tech,登录后 Developer 控制面迁往 console.oceanway.tech/ai,所有公共机器调用迁往 api.oceanway.tech/v1。
这个决定同时约束页面、接口、领域对象、构建产物和运维责任,不能只把导航入口隐藏起来。
当前基线
当前代码已经包含创作首页、统一 Agent、Canvas、素材、作品、短剧能力,也包含开发者首页、模型目录、API Key、用量页面、/api/developer/* 与 /v1/*。
因此当前形态是一个通过 Host 和路由分流的模块化单体。它适合作为迁移起点,但不是最终产品边界。
目标边界
保留并演进
- 统一创作 Agent、图片/视频/音频创作模式;
- Canvas 文档库、无限画布编辑器、节点与连接;
- 创作素材选择、作品管理和产品内资产视图;
- Canvas 内的 Agent 协作、任务恢复与结果写回;
- 调用共享 Identity、Tenant、Billing、Model、Run、Asset、MCP 服务的适配层;
- OceanWay Studio 自己的页面、状态、模板与交互。
迁往开发者产品的三个 Surface
ai.oceanway.tech:公开模型、SDK、开发者文档、价格、状态、更新日志和 API 生命周期说明;它是 API 文档的 Canonical Surface;console.oceanway.tech/ai:Developer App、Environment、Service Account、Credential、Playground、API 用量、请求日志、Webhook 与 API 限额;- Console Developer BFF:暴露
/api/developer/*,只负责页面鉴权、输入映射与命令转发; - Developer Access Domain:唯一执行命令并写入
Developer App → Environment → Service Account → DeveloperCredential四层资源; api.oceanway.tech/v1:接管面向客户程序的 Public API Edge。
不应因迁移而删除
web / api / internalSurface 契约;- Canvas 使用
webOffering 所需的公共模型客户端; - 通用 Run、计量、Reservation、Settlement 与资产登记契约;
- 跨站 Customer Identity 和组织上下文;
- 供 Console、AI、Canvas 共用的稳定领域接口。
这些能力目标上属于 OceanWay Core 或独立共享服务。若当前仍与 Canvas 位于同一代码库,应先封装边界再迁出,不能为了“删除开发者代码”让 Canvas 重新直连 Provider 或自建钱包。
路由迁移规则
| 类型 | 迁移期 | 目标态 |
|---|---|---|
| 公开开发者 GET 页面 | 从 Studio Host 跳转到 ai.oceanway.tech 对应页面 | Studio 构建物中不存在页面实现 |
| 登录后开发者 GET 页面 | 跳转到 console.oceanway.tech/ai 并使用可信返回地址 | 只由 Console Developer 专业空间承载 |
| 开发者管理 API | Console Developer BFF 接管暴露与转发后停止 Studio 写入;短期代理只透传 | Developer BFF 暴露并转发,Developer Access Domain 唯一执行命令和写入 |
| 公共 API POST | 不使用普通页面重定向迁移生产请求 | 只由 api.oceanway.tech/v1 接收 |
| 模型目录 | Studio 只请求 web Offering | AI 展示公开 api Offering;Console /ai 叠加当前授权 |
| 用量入口 | Studio 展示本产品 Run 摘要 | Console /ai 展示 API-only 用量;Console 总览展示跨产品聚合 |
公共 API 的正式机器入口已确定为 api.oceanway.tech/v1。Studio Host 上的 /v1/* 只属于迁移期遗留,不得作为新客户端接入地址。
分阶段执行
C0:冻结所有权
- 建立 Canvas 与 Developer 模块清单;
- 标记页面、API、数据库对象、环境变量和后台配置的目标归属;
- 禁止新增只能从 Studio Host 访问的开发者功能;
- 为现有开发者入口建立路由和行为回归基线。
C1:先拆产品界面
- 在 AI 公开中心与 Console Developer 专业空间建立各自等价入口;
- 将开发者导航、页面和静态内容从 Canvas 构建产物移除;
- Studio 的旧公开 GET 链接跳转到 AI,旧登录后管理链接跳转到 Console
/ai,并保留安全的登录回跳; - Canvas 页面不再展示 API Key、API 模型目录和跨产品 API 用量。
C2:再拆开发者领域
- 建立
Developer App → Environment → Service Account → DeveloperCredential完整资源链; - API Key 不再直接归属个人用户;
- Developer BFF 接管开发者管理接口的暴露与转发,所有四层资源写入仍只由 Developer Access Domain 执行;
- 项目尚未正式上线,开发测试 Key 按新资源模型重新创建,不建设无必要的旧结构兼容层。
C3:隔离公共 API 与执行链
- Public API Edge 只接受
DeveloperCredential或 Console BFF 持有的短期Playground Execution Grant;Grant 以 Customer User 为 actor 并绑定既有 Service Account,不创建独立 Playground Principal; - 创建稳定 OceanWay Run / Attempt,并绑定 Offering Revision、预算和 Gateway Task;
- 补齐媒体异步创建、查询、结果读取和终态结算;
- Studio Host 不再对外放行
/v1/*。
C4:移除过渡代码
- 删除开发者页面包装、旧路由和无调用的客户端状态;
- 删除 Canvas 对 Developer Domain 私有表和服务的直接依赖;
- 保留共享契约的正式客户端,不复制 Core 实现;
- 用部署与路由测试证明两个产品可以独立发布和回滚。
验收门禁
canvas.oceanway.tech不出现开发者导航、API Key、API 模型目录或 API 用量页;- Canvas 浏览器只获得
webSurface 允许的公开模型信息; - 访问旧公开开发者页面可以安全到达 AI;访问旧管理页面可以安全到达 Console
/ai,且组织上下文和可信回跳有效; - Canvas 的登录、钱包摘要、资产、Run 和模型调用仍使用共享事实源;
- Studio、AI 公开中心、Console 与 Public API Edge 可以独立构建或至少独立发布、回滚和隔离路由;
- Public API 请求不会因为页面 Host 跳转而丢失 Body、幂等身份或认证信息;
- Canvas 日志和错误中心不再承担 Developer API 产品支持职责。
仓库决策
仓库边界已执行:AI 公开中心、Console、Public API Edge 与 Studio 分别归入 oceanway-developer-center、oceanway-console、oceanway-api-edge 和 oceanway-studio。oceanway-vozeb 作为迁移来源保留完整历史;共享身份、钱包、Asset、Run、Agent、MCP 与 Model Control 迁往 oceanway-core,不在各产品仓复制实现。
仍待决策
- 旧 API 地址的关闭方式与兼容窗口;
- 规划中的通用文档 Host 的启用时间,以及它与
ai.oceanway.tech这一 API 文档 Canonical Surface 的交叉导航; - 旧开发者页面的跳转保留期,以及未上线环境是否直接移除。