让两个 AI 持续协作:从口头分工到任务队列、交付信号与发布门禁
Tianer Zone 如何把 Codex 与 Gemini 的临时配合,变成一套有边界、可检查、能续派且不会绕过人类确认的工程协作系统。

问题不是“能不能同时工作”
在 Tianer Zone 第 1 期公开门户的建设中,我们尝试让两个 AI 持续协作:
- OpenAI Codex 负责主控、架构、任务拆解、审查、集成和发布门禁。
- Google Gemini 负责边界清晰的视觉实现、响应式检查、交互可访问性和第二视角 QA。
- 人类保留产品目标、真实事实、隐私范围、外部账号授权和最终发布决定。
一开始,这看起来只是一次分工:一个 AI 做主线,另一个 AI 做页面。但真正困难的不是让两边同时写代码,而是回答后续问题:
- 谁能修改哪些文件?
- 一个任务什么时候才算交付?
- 交付报告和真实提交不一致时相信谁?
- 主控 AI 暂时不可用后,怎样继续原来的目标?
- 如何自动续派,又不让自动化越过人类确认?
- 当内容、部署账号或隐私边界尚未确认时,系统应该继续、等待,还是假装完成?
这些问题如果只存在于对话里,协作就依赖两个 AI “记得自己说过什么”。对一个需要跨会话、跨工具持续推进的项目,这不够可靠。
先把约束写成系统
我们在 docs/AI_COLLABORATION.md 中建立了第一层约束:
- 一个任务只有一个负责人。
- 同一个文件在同一时间只由一个 AI 修改。
- Gemini 在独立 worktree 和
gemini/<task-name>分支工作,不直接合并main。 - Codex 负责公共 schema、依赖、服务端逻辑、权限、安全和最终集成。
- Gemini 只能修改任务单明确列出的文件。
- 未经确认的个人事实、项目数据和工作信息默认不公开。
/space等私人能力不能因为页面已经存在就提前开放。
这套约束的价值,不是让协作变得更繁琐,而是把“默认行为”改成可审查行为。
例如,Gemini 可以检查公开页面的移动端布局,却不能顺手修改内容 schema;可以整理空状态,却不能补写未经人类确认的项目结果。Codex 可以集成提交,却不能因为测试通过就把缺少真实内容的站点宣布为可发布。
从任务单到状态机
只有协作协议仍然不够。协议解释原则,但自动协作还需要一个明确的当前状态。
因此,项目加入了机器可读的 docs/AI_TASK_QUEUE.json。它只由 Codex 维护,记录:
- 当前唯一的
activeTask - 负责人、状态、分支和工作区
- 正式任务单位置
- 完成交付需要满足的信号
- 后续任务及其
blockedBy依赖 - 谁拥有队列、谁负责集成、空闲时应该做什么
当前状态机可以概括为:
PLANNED
↓ 依赖解除
READY
↓ Gemini 在独立分支实现
SUBMITTED
↓ Codex 核对范围、事实、隐私与测试
REVIEW
├─ 失败 → RETRY
└─ 通过 → INTEGRATED
↓
下一任务 READY
真正的交付信号不是一句“我做完了”,而是三个条件同时成立:
- Gemini 分支领先
main。 - worktree 干净,说明工作已进入提交。
docs/GEMINI_DELIVERY.md中的任务编号与队列一致,并标记为SUBMITTED。
这使自动化可以检查仓库,而不是猜测对话语义。
为什么主控不能只看交付报告
一次移动端可访问性任务提供了一个很具体的教训。
这个任务负责移动菜单的 Escape 关闭、焦点恢复、aria-expanded 和减少动画回归。Gemini 的实际分支提交是 d93f347,交付报告中却记录了另一个 commit hash;与此同时,主线任务队列仍显示 READY。
这不是一个需要掩盖的小错误,而是协作系统必须处理的正常故障类型:
- 代码已经提交,但状态文件没有同步。
- 交付报告描述正确,但标识符错误。
- 测试结果由执行方报告,但尚未被集成方独立复核。
因此 Codex 不能根据自然语言报告直接合并。它必须读取 Git 历史、比较分支差异、核对允许修改范围,并重新运行任务要求的检查。提交方报告的测试结果是有用证据,但在主控独立复测和集成前,还不是主线最终结论。
任务怎样被拆开
协作不是简单地把一半文件分给另一个 AI,而是按风险和所有权拆分。
已完成的第一批任务包括:
- 把公开内页统一到首页的视觉体系。
- 在 390、768 和 1440 像素视口执行第二轮视觉 QA。
- 建立发布证据矩阵,并检查占位内容是否会进入公开页面。
- 对键盘、移动菜单、焦点恢复和减少动画执行最终回归。
后续任务则被显式依赖约束:
- 交互回归集成后,才进行公开文案、链接、空状态和页面完整性审计。
- 真实内容集成依赖人类提供项目和文章事实。
- 最终视觉 QA 依赖真实内容先进入页面。
- 远程部署依赖 GitHub、Vercel 授权。
- 线上独立巡检依赖一个可访问的 HTTPS 预发布地址。
- 最终审计汇总线上验证、真实网络检查和第 2 期输入。
这条依赖链让“还不能做”也成为一种正式状态,而不是被 AI 用占位结果悄悄填平。
自动化可以续派,但不能替人确认
Codex 的定时自动化会读取完成计划、任务队列、交付报告和两个工作区的 Git 状态。它可以:
- 发现 Gemini 新提交。
- 审查修改范围。
- 运行类型检查、Lint、单元测试、E2E 和生产构建。
- 通过后集成到
main。 - 更新任务与发布记录。
- 在依赖解除时创建下一张 Gemini 任务单。
但自动化明确不能做四件事:
- 不能编造“理赔 claw”等项目的背景、角色、结果或数字。
- 不能代替人类决定哪些工作信息可以公开。
- 不能提交密钥,或擅自获得 GitHub、Vercel 授权。
- 不能在认证、授权和 RLS 未通过验证前开放私人空间。
因此,自动化不是“永远向前跑”,而是“在证据允许的范围内持续推进”。遇到真实内容、隐私或外部账号边界时,正确动作是记录 blocker,并切换到仍可安全完成的工作。
发布门禁把“看起来完成”变成“可以证明”
公开门户不能只凭页面截图验收。Tianer Zone 的第 1 期完成计划把发布要求映射为可重复执行的证据:
npm.cmd run check覆盖格式、类型、Lint、测试和生产构建。npm.cmd run test:e2e检查公开页面、移动端和关键交互。npm.cmd run audit:production检查生产依赖漏洞。check:release拒绝本地域名、占位内容、缺失的真实项目和文章。check:deployment在获得 HTTPS 地址后检查 canonical、分享信息、安全响应头和隐私路由。/space、/share保持不可访问,/space-preview保持禁止索引。
GEM-002 集成时,主线的 E2E 为 19/19 通过。GEM-003 随后增加了移动菜单可访问性用例,提交方报告为 20/20。数字本身不是最终目的;更重要的是,每个数字都对应一个具体版本、执行方和审查阶段。
发布门禁还会故意让构建失败。例如,真实项目和文章尚未准备好时,站点不能因为其他测试全绿就进入发布状态。这种失败不是工程进度落后,而是系统正确保护了事实边界。
形成的可复用资产
这次实践已经留下了一组可以迁移到其他项目的资产:
- 协作协议:定义角色、文件所有权、红线和 Git 工作方式。
- 标准任务单:包含目标、背景、允许修改、禁止修改、验收和交付格式。
- 机器任务队列:让当前任务、后续依赖和阻塞条件可以被程序读取。
- 交付信号文件:把自然语言汇报转化为可检查的仓库状态。
- 完成计划:把产品目标拆成固定顺序和解锁条件。
- 证据矩阵:让每项“已完成”都能指向测试、文件、提交或线上结果。
- 发布门禁:主动拒绝占位内容、本地 URL、不安全资源和越界路由。
- 独立 worktree:让两个 AI 并行工作,同时避免覆盖彼此未提交的修改。
这些资产并不依赖某个 AI 永远在线。只要仓库状态仍在,下一次会话就能重新读取目标、当前任务和未解除的依赖。
真实结果与仍未完成的部分
截至这篇档案形成时,可以确认的结果是:
- 首页和公开内页已通过 GEM-001、GEM-002 完成视觉统一与第二轮 QA。
- 主线已有覆盖桌面和移动端的 E2E,GEM-002 集成版本为 19/19 通过。
- SEO、站点地图、分享资源、安全响应头和生产依赖审计已进入自动检查。
- 占位文案、无效生产 URL 和未开放的私人路由已有明确门禁。
- Codex 与 Gemini 已能通过任务队列、独立分支和交付信号连续协作。
- GEM-003 已产生真实提交,但写作时仍处于等待 Codex 独立审查与集成的阶段。
同时,项目还不能被称为“正式发布完成”:
- 代表性项目与首篇文章仍需要人类提供和确认真实事实。
- GitHub 与 Vercel 仍需要账号授权。
- 尚未获得可公开访问并通过部署检查的 HTTPS 地址。
- 真实桌面、移动端和两种网络环境的最终验收尚未发生。
公开记录这些未完成项,比生成一个虚假的成功故事更重要。
下一步:让协作系统服务于内容,而不是只服务于代码
下一阶段会沿两条线推进。
第一条线继续完成公开门户:审查并集成 GEM-003,续派 GEM-004;等人类确认真实项目和文章内容后,再进入最终视觉 QA、部署和线上巡检。
第二条线扩展“共创档案”本身。协作过程不只产生页面和测试,也会继续沉淀:
- AI 任务拆解与失败恢复案例。
- 从提交证据生成阶段复盘的方法。
- 面向真实内容的隐私分级清单。
- 可迁移到其他项目的任务队列模板和发布门禁。
- 人类、主控 AI 与协作 AI 各自适合承担的决策边界。
两个 AI 持续协作的关键,不是让它们更自由,而是让目标、边界、状态、证据和人类决定都更清楚。只有这样,自动化才是在扩大能力,而不是扩大不确定性。