Files
cmshoppe/docs/tasks/T-599.md
T

41 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: T-599
title: AI工场 BYOK OpenAI Provider 契约、白名单与套餐校验对齐
phase: 8
deps: [T-596]
status: TODO
created: 2026-07-11
---
## 问题 / 背景
BYOK 第一期开 OpenAI Provider 时,最大的风险不是 UI,而是绕过 cmhub 授权、把用户 Key 泄露到日志,或让客户端恢复任意 URL 直连。必须先和 cmhub 固化 Provider 白名单、设备授权、套餐校验、错误码和异步任务契约,再写客户端代码。
## 方案
- 核对 cmhub BYOK V1.5 API:device credential、product、provider、model_alias、task secret、submit/poll、download、错误码、零点数使用记录和幂等键。
- 第一阶段只允许 OpenAI Provider;允许的模型能力由服务端白名单提供,不允许客户端填写任意 URL 或任意模型名。
- 明确 OpenAI 模型档位:
- 文本/提示词辅助默认用 T-597 推荐的平衡档,允许高质量/省点档。
- 图像生成/编辑优先使用服务端白名单中的 GPT Image 2 等图像能力别名。
- 无有效套餐/设备授权时,服务端必须拒绝 submit;客户端只展示中文原因,不本地绕过。
- 明确 BYOK `points_cost=0` 的账本语义:不扣 cmhub 点数,但仍记录使用次数、provider、call_id/task_id 和“费用由模型服务商收取”。
## 验收要点
- 有版本化契约文档或接口样例,覆盖成功、无套餐、设备不匹配、Provider 禁用、模型不允许、Key 无效、内容被拒、上游失败、任务超时。
- 明确 Key 不出现在 request_payload、CallRecord 明文字段、队列日志、遥测、异常监控或导出文件。
- 明确 submit 之后的任务状态与 T-590/T-594 的 image_studio_jobs 生命周期兼容。
- 若 cmhub 契约缺失,任务转 `BLOCKED`,不进入 T-600/T-601。
- 本任务不写生产代码;可补文档和 mock 契约。验证至少运行 `git diff --check`。
## 边界(不改什么)
- 不实现 UI、不保存 Key、不发真实 OpenAI 请求。
- 不支持任意 Provider、任意 URL、客户端 direct 或同步长等待。
- 不改变 cmhub 托管模型默认路径。
## 执行记录
(完成后记录契约来源、白名单结论和是否解除后续实现阻塞。)