--- id: T-596 title: AI工场自定义模型(BYOK)总设计与启动门禁 phase: 8 deps: [T-598] status: BLOCKED created: 2026-07-11 --- ## 问题 / 背景 自定义模型是 AI工场 cmhub 托管链路完成后的后续增强,不属于 T-586~T-595 的当前交付范围。只有这些任务全部完成并验收后,再完成 T-597/T-598 的托管 GPT 模型评测与默认档位收口,才能启动 BYOK。 BYOK 不能再做成一个大任务直接编码。它涉及设备授权、套餐、密钥本地保护、服务端 Provider 白名单、异步 submit/poll、日志脱敏和零点数账本,必须先冻结契约,再按 T-599~T-602 小步落地。 后续实现时,自定义 Key 仍必须经过软件套餐/设备授权和 cmhub 异步任务代理,不能恢复客户端 direct 直连或同步长等待。 ## 解除阻塞条件 - T-586~T-595 已全部完成,cmhub 托管链路已独立发布和验收。 - T-597/T-598 已完成,产品默认仍是 cmhub 托管模型,普通用户不被迫配置自定义 Key。 - cmhub 完成《卡密设备绑定与套餐授权方案》V1.5 所定义的 device credential、BYOK Provider 白名单、加密 task secret、零点数使用记录和 submit/poll 契约。 - cmhub 提供版本化 API 文档、错误码、至少一个受支持 Provider(第一期优先 OpenAI)、测试凭证和 mock/测试环境。 - 明确 BYOK title/image 请求、task secret 生命周期、终态清理、幂等键、下载口径和计费字段。 - 服务端确认 Key 不进入 request_payload、CallRecord、队列日志、遥测或异常监控。 ## 方案 - 本任务只做启动门禁和总设计冻结:核对 cmhub V1.5 契约、OpenAI Provider 白名单、客户端保存/传输边界、错误码和任务拆分。 - 若任何解除阻塞条件缺失,把本任务改为 `BLOCKED` 并在执行记录写明缺口;不得猜字段、不得先写临时兼容代码。 - 通过后再按子任务实现: - T-599:BYOK OpenAI Provider 契约、白名单与套餐校验对齐。 - T-600:BYOK Key 本地 DPAPI 存储与设置 UI。 - T-601:BYOK 异步 submit/poll 接入 AI工场 job 生命周期。 - T-602:BYOK 安全日志、零点数账本与端到端回归。 - 正式发行版继续禁用普通用户通过旧 `direct` 后端绕过 cmhub 授权代理。 ## 验收要点 - 形成一份可执行的 BYOK 启动检查记录:已满足 / 未满足 / 证据来源 / 后续 owner。 - 明确第一期是否只支持 OpenAI Provider,以及允许的模型档位、能力范围、图片编辑接口和最大超时。 - T-599~T-602 的依赖、边界、验收点能独立执行,不再把 BYOK 当一个巨型编码任务。 - 若转 `BLOCKED`,后续子任务不得开工;若保持 `TODO/DONE`,必须说明接口契约已足够实现。 - 不提交真实 Key、测试凭证、账号、Cookie、业务图片或 data 目录。 ## 边界(不改什么) - 启动前提或接口契约未满足时不实现临时兼容接口。 - 不允许任意上游 URL,不做客户端直连,不同步长等待。 - 不改 cmhub 托管预扣/退点账本。 - 不改 T-586~T-595 已完成的 cmhub 托管 AI工场主线。 ## 执行记录 2026-07-11 核验并阻塞: - 已确认 T-595、T-597、T-598 完成,AI工场 cmhub 托管主线与托管模型档位口径已具备。 - 已读取 Obsidian《卡密设备绑定与套餐授权方案》和《cmhub-软件授权与设备凭证实施方案》;两份文档当前仍为评审修订/方案草案,cmhub V1A 授权、设备凭证、产品专属生成接口、BYOK Provider 白名单、task secret、零点数账本和 mock/测试环境都未交付到可实现契约。 - 新增 `docs/byok-startup-gate.md`,记录门禁检查表、阻塞原因、依赖任务暂停范围和解除阻塞交付物。 - 决策:T-596 标记 `BLOCKED`;T-599~T-602 依赖 T-596,不得开工,避免猜字段或恢复客户端 direct / 同步长等待错误路径。 - 验证:`git diff --check -- docs/byok-startup-gate.md docs/README.md docs/tasks/T-596.md` 通过。