Files
cmshoppe/docs/tasks
chengmaandClaude Fable 5 cd2dfe97ef docs(tasks): add custom gateway OpenAI lock and suite integration
拆成两个任务,T-678 是可独立发布的破坏性变更,T-679 依赖它。

T-678 自定义网关锁定 OpenAI 图片接口规范并支持多图输入:
- 记录当前 chat 接口类型并非 OpenAI 规范的证据(_find_image_ref 的
  跨结构搜刮器只为非标准中转网关而存在),收敛 API_TYPES 并删除
  chat/auto 请求构造。
- _image_edit_body 与 _multipart_body 支持有序多图,为 T-679 铺路;
  ②生图行为与计费口径不变。
- 记录迁移窗口:T-529 起自定义模型 UI 被硬藏,T-677 才放出,当前
  装机量几乎没有 chat 配置,现在收敛成本接近零,晚做则成为真正的
  破坏性变更。
- 存量 chat/auto 模型标记不可用而非静默改写,避免把请求打到不支持
  的端点。

T-679 商品套图接入自定义网关(主图 + 参考图):
- 指明来源耦合只有 _runtime() 与 _submit_or_resume_job() 两处接缝,
  direct 为同步路径,是跳过 submit/poll 而非补齐异步状态机。
- 记录回收守卫按 task_id 判断,direct job 天然不被拦,无需修改即可
  继续保护已扣点的 cmhub 任务;create_generation_jobs 需改写真实来源。
- 明确主体保留在 OpenAI 侧只能靠提示词,与 cmhub 服务端强制契约不
  等价,UI 须如实说明而非宣称同等效果。
- 记录三个实际问题:同步请求导致停止迟钝、超时常量需改用模型配置、
  aspect_ratio 到尺寸需换算。
- AI 帮写仍为默认网关独占(CATEGORIES 无 vision 类别)。
- 关联中写明本任务有意放宽 T-677 的边界及理由。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 17:07:08 +08:00
..
2026-07-08 11:22:47 +08:00
2026-07-08 11:54:08 +08:00
2026-07-08 12:07:38 +08:00
2026-07-08 14:07:42 +08:00
2026-07-08 17:49:54 +08:00
2026-07-09 00:07:09 +08:00
2026-07-09 11:23:18 +08:00
2026-07-09 11:32:08 +08:00
2026-07-09 12:19:29 +08:00
2026-07-09 15:04:20 +08:00
2026-07-09 16:06:13 +08:00
2026-07-09 18:15:14 +08:00
2026-07-10 09:00:24 +08:00
2026-07-10 10:49:45 +08:00
2026-07-10 11:31:50 +08:00
2026-07-10 11:44:52 +08:00
2026-07-10 11:55:06 +08:00
2026-07-10 16:19:01 +08:00
2026-07-13 11:47:00 +08:00
2026-07-20 11:12:01 +08:00

任务文件(一任务一文件)

目的:多个 agent 并发时,避免所有人抢改同一个 ../06-tasks.md——单大文件 + 多写者会导致「读到旧版本」的编辑冲突和 ID 撞号(本项目已实际发生)。 约定:新任务一律一个文件放这里 docs/tasks/T-<编号>.md;不再往 ../06-tasks.md 加新任务(它已冻结为历史归档,保留 T-000~T-549)。

为什么这样

一任务一文件后:改哪个任务只动哪个文件,agent 之间互不抢占;ID 撞号在新建文件时当场暴露(文件已存在就换号),不像往大表塞行、撞了也不知道。

文件命名与 ID(方案 1:连续编号)

  • 文件名:docs/tasks/T-<编号>.md,如 docs/tasks/T-550.md;同族细分用后缀 T-550a.md。
  • 分配下一个 ID:取「../06-tasks.md 归档 + docs/tasks/ 现有文件」里最大的 T-###,+1。
  • 建文件即防撞:若 T-550.md 已存在(别的 agent 先建了),直接改用下一个号(T-551),不要覆盖别人的文件。
  • 模板 _template.md 以下划线开头,不是真实任务、不参与编号扫描。

每个任务文件的结构(frontmatter + 正文)

---
id: T-550
title: 一句话任务名
phase: 7               # 所属阶段,沿用 06-tasks.md 的 Phase 编号
deps: [T-546, T-538]   # 依赖的任务 ID(跨归档/新结构都用完整 ID 引用)
status: TODO           # TODO | DOING | DONE | BLOCKED
created: 2026-07-08
---

## 问题 / 背景
...

## 方案
...

## 验收要点
...

## 边界(不改什么)
...

状态与领取流程(同 ../06-tasks.md「使用规则」)

  • 状态:TODO · DOING(同一时间最多 1 个)· DONE · BLOCKED。
  • 一次只领一个 status: TODO 且依赖全 DONE 的任务,取编号最靠前的;做完自测、改 status: DONE。
  • 执行记录写进本任务文件的 ## 执行记录 一节(改了什么、跑了什么验证、结果、决策)——不再逐任务追加 ../../progress.md、不再逐任务覆盖 ../current-state.md(那两个是每任务共享写入点,多 agent 会抢/覆盖;progress.md 已冻结归档,current-state.md 不再手动逐任务维护、当前状态以各任务 frontmatter 为准)。
  • 只改自己那个任务文件;不要编辑别人正在做的任务文件。

看板视图

  • 现阶段:ls docs/tasks/ + 看各文件 frontmatter 的 status/deps 挑任务。
  • (可选,后续)加一个脚本把所有任务文件汇总成一张看板表,agent 不手改看板。

历史归档

  • docs/06-tasks.md = T-000~T-549 的历史归档,冻结、不再新增;只有历史任务需要订正状态时才动它,新任务不进去。