取自原版 Cotton 標誌、去除背景與文字的微笑棉花角色
返回展廳

Cotton

Translation workflow

將生成的翻譯化為可審查的結果。

遊戲對白的翻譯工作流程。

2026.05.06 — 2026.05.26

工作專案 · 翻譯處理、判定與審查路徑

  • 網頁應用程式已實作 · 開發環境

審查發現的競爭條件,依原因退回的停滯作業

一個案例的規範與提交指明 Claude 負責實作、Codex 負責審查;另一個案例讓停滯作業變得可診斷。

完整圖例

閱讀方式 · 所有案例使用同一套規則

  • 欄表示由誰執行,由上而下表示時間
  • 實線:有記錄的交接或下一步
  • 粗青金色線 ↩:把工作退回的審查意見
  • 虛線:不是有記錄的執行(規範、沒有權限的假設、未確認的邊界)
  • 矩形:行動
  • 圓角:觀測到的狀態或審查意見
  • 折角:產出物或證據
  • 斜紋欄:開發中產品的組成部分(不是用來建構它的代理)

案例 1 / 2 · 配額耗盡即停止的變更,連同審查發現的競爭條件,在同一個 PR 中修正

May 19, 2026

配額耗盡即停止的變更,連同審查發現的競爭條件,在同一個 PR 中修正

  1. 人人

    行動配額耗盡即停止支出 · 不自動備援

    • 交接實作限制→ 實作檢查點 · 中止 · 手動恢復 (Claude)
  2. 程式開發代理Claude

    行動實作檢查點 · 中止 · 手動恢復

    • 交接同一 PR 審查→ 審查意見:競爭條件 · 重複的狀態轉換 (Codex)
  3. 審查 · 驗證Codex

    觀測 · 審查意見審查意見:競爭條件 · 重複的狀態轉換

  4. 產出物同一個 PR

    產出物在同一個 PR 中:列鎖定 · 唯一分數鍵 · 原子性轉換

    • 交接→ 本機 fixture · DB 整合檢查記錄 (同一個 PR)
  5. 產出物同一個 PR

    產出物本機 fixture · DB 整合檢查記錄

    • 不是有記錄的執行已檢查的範圍→ 未收集新的 CI 或正式環境部署結果 (同一個 PR)
  6. 產出物同一個 PR

    規範 · 未確認未收集新的 CI 或正式環境部署結果

背景
人設定的條件是配額用盡時停止支出,且不自動備援。Claude 實作了檢查點、中止與手動恢復,透過專案 MCP 執行的 Codex 審查則發現狀態轉換中的競爭條件與重複。
結果
進入與恢復的轉換在鎖定內執行,評判分數帶有防止重複的唯一鍵,並設定了交易邊界。這並不表示所有競爭條件都已消除。
限制
提交中記載 140 項檢查,之後的整合 CHANGELOG 記載 160 項,因此不合併為單一的執行次數。依規範,Codex 審查是可選的本機步驟,因此並不表示過去每個 PR 都經過它。
依據與尚存的限制
  • 規範記錄了順序:Claude 實作,Codex 透過專案 MCP 在本機審查,審查附加到 PR,意見分歧時與 Claude 的審查代理一起調查。CI 中的自動 Codex 審查當時已延後。
  • 開發檢查使用 fixture 與 mock,實際模型呼叫需另訂範圍。審查意見併入同一個 PR,並以 squash 方式合併 feature → main。

May 26, 2026

讓停滯作業可診斷,並依原因退回

  1. 開發對象翻譯 worker · 佇列

    觀測 · 審查意見停留在 draft 的作業 · 嘗試用盡

    • 交接觀測值→ 比對 failedReason · 結束代碼 · draft 狀態 (開發者)
  2. 人開發者

    行動比對 failedReason · 結束代碼 · draft 狀態

    • 交接→ 原因:繼承的 NODE_OPTIONS 在子行程中衝突 (開發者)
  3. 人開發者

    觀測 · 審查意見原因:繼承的 NODE_OPTIONS 在子行程中衝突

  4. 工作階段程式碼變更

    行動移除 NODE_OPTIONS · 每個行程的並行上限

    • 交接→ 佇列狀態:waiting · active · failed · stale (程式碼變更)
  5. 工作階段程式碼變更

    行動佇列狀態:waiting · active · failed · stale

    • 交接→ 停滯清查:不在佇列中 vs 嘗試已用盡,依是否有結果分支 (程式碼變更)
  6. 工作階段程式碼變更

    行動停滯清查:不在佇列中 vs 嘗試已用盡,依是否有結果分支

    • 交接一個週期→ 開發環境清查:200 個候選 → 移動 106 · 重新排入 2 · 錯誤 0 (產出物)
  7. 產出物產出物

    產出物開發環境清查:200 個候選 → 移動 106 · 重新排入 2 · 錯誤 0

    • 不是有記錄的執行解讀的界限→ 這 106 個不是成功的翻譯 (產出物)
  8. 產出物產出物

    規範 · 未確認這 106 個不是成功的翻譯

背景
比對 BullMQ 的 failedReason、子行程結束代碼與停留在 draft 的作業後,發現繼承的 NODE_OPTIONS 在子行程中衝突。之後,相同情況可作為佇列狀態看見。
結果
停滯作業分為不在佇列中的,以及已用盡嘗試的;後者依是否有結果,連同原因移到 needs_review 或 needs_credential。人工審核維持不變。
限制
並行上限以行程為單位。審查的資料中沒有原始執行日誌;由於未記錄所請求的模型與 effort,延遲數字予以省略。僅有建置與發布程式碼,不是公開部署的依據。
依據與尚存的限制
  • CHANGELOG 記錄了平行轉接器分支的提議,但並未轉為實際平行執行的記錄。
  • 200 個中的其餘部分,在此記錄中未細分。