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

Cotton

Translation workflow

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

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

2026.05.06 — 2026.05.26

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

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

Cotton vocabulary

Lens
Refinement Loop
Translation
Quality Estimation
Workflow
Job Control
Human Review
  1. prompt layers
  2. glossary
  3. generation
  4. revision
  1. judge
  2. hard gate
  3. score
  1. intake
  2. checkpoint
  3. spend control
  4. stale sweep
  1. approval
  2. correction
  3. audit trail

Prompt Layers: SYSTEM_PROMPT_L0 · buildTranslateUserMessage · L1 CONTRACT · L3 SPEAKER · L6 SOURCE · L7 INSTRUCTION · ICU PLACEHOLDER · INLINE TAG · TARGET TEXT ONLY · FORCED MAPPING · L2 GLOSSARY · speaker_keyGlossary: glossary_term · fetchGlossaryHits · canonical_form · forbidden_translations · SUBSTRING MATCH · FORCED MAPPING · FORBIDDEN ALTERNATIVE · L2 GLOSSARY · glossary_hits · glossary_complianceGeneration: AdapterRegistry · anthropic-sdk · openai-sdk · claude-local · codex-local · llm_plan · PIVOT_VIA · shouldPivot · COTTON_ADAPTER_CONCURRENCY · NODE_OPTIONS · pivot_register_carry · translation.refinedRevision: buildTranslateUserMessage · L7 INSTRUCTION · runRefinementLoop · priorAttempt · priorCritique · REJECTED BY THE JUDGE · maxTurns · willRetry · RefinementHooks · HOOK ABORT · turn_count_to_final · critique_for_retry · failingDimensions · cost_ceiling_usd · needs_reviewJudge: glossary_hits · runJudge · JUDGE_SYSTEM_PROMPT · judgeModel · TEMPERATURE 0 · parseJudgeResponse · FOUR-SECTION XML · VERBATIM CHUNKS · severity · critique_for_retry · judge_citation · missingHardGates · TRIGGER ABSENT = PASS · judge.scoredHard Gate: ICU PLACEHOLDER · INLINE TAG · FORBIDDEN ALTERNATIVE · hard_gate_fail · hardGatePassed · glossary_compliance · cps_budget_compliant · icu_validity · inline_tag_preserved · length_constraint · HARD GATE FIRST · missingHardGates · TRIGGER ABSENT = PASSScore: HARD GATE FIRST · computeVerdict · cottonEvalScore · WEIGHTED AVERAGE · tone_register · personality_consistent · emotional_state_match · cultural_marker_preserved · accuracy · pivot_register_carry · auto_approve_threshold · failingDimensions · approval_gate · judge.scoredIntake: processXlsxBytes · classifySheetName · parseGoogleSheetsUrl · source_file · content_sha256 · extractStageDirection · speaker_key · ingest_session · segment.ingested · github.push.receivedCheckpoint: translation_progress · last_completed_step · turn_translated · turn_judged · finalized · jobEntryGuard · SELECT FOR UPDATE · attempt_count · DEFAULT_MAX_RESUME_ATTEMPTS · TWO-TX SPLIT · ON CONFLICT DO NOTHINGSpend Control: llm_plan · costCap · cost_ceiling_usd · rateLimit · FailoverDispatcher · haltOnQuota · detectQuotaFromStream · quota_daily_exhausted · auth_revoked · NO AUTO-SWAP · needs_credential · POST /:id/resumeStale Sweep: COTTON_ADAPTER_CONCURRENCY · NODE_OPTIONS · attempt_count · runStaleSweep · STALE_THRESHOLD_INTERVAL · DLQ_ATTEMPT_CAP · LIMIT 200 · re_enqueued · dead_lettered · ORPHAN RE-ENQUEUE · IN-FLIGHT SET · /health/queues · maxStalledCount · needs_reviewApproval: auto_approve_threshold · ingest_session · SELECT FOR UPDATE · needs_credential · POST /:id/resume · POST /:id/approve · POST /:id/unapprove · POST /:id/reject · APPROVE_FROM · REJECT_FROM · needs_review · reviewer_id · HITL · approval_gate · translation.approved · EDIT & APPROVE · actor_idCorrection: POST /:id/correct · corrected_text · CORRECT_FROM · EDIT & APPROVE · human_corrected_segments · human-corrected-after-mt · translation.human_corrected · supersedes · NEW REVISION · IMMUTABLE HISTORYAudit Trail: turn_count_to_final · severity · judge_citation · content_sha256 · segment.ingested · github.push.received · translation.approved · human_corrected_segments · translation.human_corrected · IMMUTABLE HISTORY · event_log · appendNextEvent · ULID · AGGREGATE VERSION · translation_state_log · actor_id · llm_call_log · telemetryHook · judge.scored · translation.refined

分數、重試與人工審核,各守其邊界。

生成與判定共用術語表,評判模型回報的硬性關卡失敗無法以平均分數抵銷。翻譯與判定的中間狀態都會記錄,重試與成本上限和認證資訊耗盡分開處理,停滯作業則依原因回到佇列或審核。

這個工作專案把翻譯生成、模型回報的品質判定、重試與人工審核串成一個流程。

從儲存庫建立到參與期間確認的工作

由翻譯編輯與核准畫面、API 及作業 worker 組成的網頁應用程式,在開發環境中執行。

判定流程架構圖 · 依據非公開實作記錄
Cotton 翻譯判定 · 重試 · 復原API 將原文與目標語系提交到資料庫,接著為每個目標語系將一個作業排入佇列。worker 鎖定該列、檢查嘗試次數、建立 draft 與進度狀態,以術語表生成翻譯,並以相同術語表另外呼叫評判模型。翻譯(Tx1)與判定及其依據(Tx2)記錄在不同的交易中。程式碼彙總判定,使硬性關卡失敗不會被平均分數抵銷:通過即確定,失敗則進入下一回合,達到回合或成本上限即送交人工審核,出現配額或身分驗證訊號時則停止支出並等待認證檢查。停滯清查最多檢視 200 個超過 10 分鐘的 draft:尚有嘗試次數但不在佇列中的會重新排入,嘗試已用盡的則依是否有結果送往審核或認證檢查。原文 · 目標語系已儲存的句段人工審核needs_review · 並非核准認證檢查needs_credentialAPI · 作業登記提交後排入佇列作業佇列BullMQ · 作業 ID作業進入列鎖定 · 嘗試檢查術語表 · 上下文工作區術語表翻譯回合生成 · 模型呼叫評判模型呼叫 · 解析判定規則硬性關卡 · 加權平均重試 · 支出回合 · 成本 · 配額翻譯狀態draft · 進度翻譯 · 判定列狀態 · 呼叫日誌結果確定確定交易佇列檢查比對佇列狀態停滯清查超過 10 分鐘的 draft · 最多 200輸入 · 佇列生成 · 判定狀態 · 驗收復原 · 人的決定1原文2提交後3傳遞作業4進度列5允許嘗試1術語表2相同術語表3Tx1 · 翻譯4Tx2 · 判定5分數 · 關卡6判定7pass8確定記錄1判定2下一回合3上限 · 終止4配額 · 身分驗證5手動恢復1停滯 draft2低於上限3重新排入4有結果5無結果

登記 → 進入

資料庫提交後排入佇列;worker 鎖定該列、檢查嘗試並建立 draft。

  1. 原文 · 目標語系資料: 原文提交後排入佇列API · 作業登記

    原文句段與專案的目標語系儲存在資料庫中。不顯示客戶資料。

  2. 提交後排入佇列API · 作業登記資料: 提交後BullMQ · 作業 ID作業佇列

    資料庫提交完成後,為每個啟用的目標語系排入一個 ID 以請求為範圍的作業。排入失敗時只記錄警告,提交不會回復(沒有原子性 outbox),這正是停滯清查存在的原因。

  3. BullMQ · 作業 ID作業佇列執行 · 判定: 傳遞作業列鎖定 · 嘗試檢查作業進入

    BullMQ 以非同步方式將作業交給 worker。

  4. 列鎖定 · 嘗試檢查作業進入資料: 進度列draft · 進度翻譯狀態

    在交易中鎖定進度列並建立 draft 翻譯。已確定或因認證而暫停的作業,其自動重試會略過;手動請求另行處理。

  5. 列鎖定 · 嘗試檢查作業進入執行 · 判定: 允許嘗試生成 · 模型呼叫翻譯回合

    嘗試次數在上限內加一,接著開始翻譯回合。

生成 → 判定 → 確定

生成與判定使用相同的術語表;翻譯與判定分開記錄,程式碼彙總判定後才確定。

  1. 工作區術語表術語表 · 上下文資料: 術語表生成 · 模型呼叫翻譯回合

    查詢工作區術語表與上下文,並傳給生成。

  2. 工作區術語表術語表 · 上下文資料: 相同術語表評判模型呼叫 · 解析翻譯回合

    判定也取得相同的術語表限制。

  3. 生成 · 模型呼叫翻譯回合資料: Tx1 · 翻譯翻譯 · 判定列翻譯狀態

    直接或經由 en-US 中介呼叫模型,並將呼叫、事件與進度寫入同一個交易。若作業在當機後重新執行,翻譯呼叫及其成本可能重複。

  4. 評判模型呼叫 · 解析翻譯回合資料: Tx2 · 判定翻譯 · 判定列翻譯狀態

    評判分數與依據,每個翻譯與回合只插入一次;重複時找出既有的列,引用只在首次插入時寫入。與翻譯不在同一個交易中。

  5. 評判模型呼叫 · 解析翻譯回合資料: 分數 · 關卡硬性關卡 · 加權平均判定規則

    評判模型的回答被解析為各維度分數與關卡結果。術語表是否通過,是評判模型回報的結果。

  6. 硬性關卡 · 加權平均判定規則執行 · 判定: 判定回合 · 成本 · 配額重試 · 支出

    只要回報任何硬性關卡失敗,即為零分且失敗;只有在此之後才套用加權平均與各維度門檻值。整體門檻值 8.0 是設定預設值,不是觀測到的翻譯品質。

  7. 回合 · 成本 · 配額重試 · 支出執行 · 判定: pass確定交易結果確定

    通過即確定為 translated。

  8. 確定交易結果確定資料: 確定記錄狀態 · 呼叫日誌翻譯狀態

    候選、狀態、分數與回合確定後,進度 finalized 與狀態日誌寫入同一個交易。只有 translated 時才發出翻譯完成事件。

重試 · 支出上限

未通過就再一回合;達到上限即人工審核;配額或身分驗證則停止支出,等待維運人員恢復。

  1. 硬性關卡 · 加權平均判定規則執行 · 判定: 判定回合 · 成本 · 配額重試 · 支出

    只要回報任何硬性關卡失敗,即為零分且失敗;只有在此之後才套用加權平均與各維度門檻值。整體門檻值 8.0 是設定預設值,不是觀測到的翻譯品質。

  2. 回合 · 成本 · 配額重試 · 支出執行 · 判定: 下一回合生成 · 模型呼叫翻譯回合

    未通過的翻譯會帶著前一版翻譯與評語重新生成。即使是硬性關卡失敗,也可以先重試,而不是直接交給人。

  3. 回合 · 成本 · 配額重試 · 支出執行 · 判定: 上限 · 終止人工審核

    回合用盡或達到成本上限時,作業確定為 needs_review。finalized 代表處理已結束,不代表有人核准。

  4. 回合 · 成本 · 配額重試 · 支出失敗 · 上限: 配額 · 身分驗證認證檢查

    配額或身分驗證訊號會停止支出並設為 needs_credential。不會自動切換到其他帳號或供應商。沒有中止訊號的傳輸錯誤,回到 BullMQ 重試。

  5. 認證檢查執行 · 判定: 手動恢復BullMQ · 作業 ID作業佇列

    已檢查認證資訊的維運人員明確地重新啟動。

停滯作業復原

舊的 draft 依原因分開:不在佇列中即重新排入,嘗試用盡即交由人決定。

  1. draft · 進度翻譯狀態觀測 · 回報: 停滯 draft超過 10 分鐘的 draft · 最多 200停滯清查

    讀取已為 draft 超過 10 分鐘的候選,最多 200 個,由舊到新。查詢不加鎖,更新與記錄以不同的陳述式執行,因此不描述為無競爭條件的批次。

  2. 超過 10 分鐘的 draft · 最多 200停滯清查執行 · 判定: 低於上限比對佇列狀態佇列檢查

    嘗試次數少於上限(3)時,將作業與 active、waiting、delayed、prioritized 佇列狀態比對。程式碼中,嘗試用盡的分支在此佇列檢查之前。

  3. 比對佇列狀態佇列檢查執行 · 判定: 重新排入BullMQ · 作業 ID作業佇列

    作業不在佇列中時,會再次排入。API 使用帶請求後綴的 ID,清查則以句段與語系 ID 尋找,因此不描述為能對上每個進行中的請求。

  4. 超過 10 分鐘的 draft · 最多 200停滯清查執行 · 判定: 有結果人工審核

    3 次嘗試已用盡且有翻譯結果時,作業送往 needs_review。

  5. 超過 10 分鐘的 draft · 最多 200停滯清查執行 · 判定: 無結果認證檢查

    3 次嘗試已用盡且沒有結果時,作業送往 needs_credential。

所有連線以相同粗細顯示。選擇一個流程,即只突顯其路徑,並標出步驟編號。

  • 實線 · 輸入、結果與記錄的流向
  • 虛線 · 執行、判定、請求
  • 長點劃線 · 觀測與回報,與判定分開
  • 短虛線 · 失敗、停止、上限
  • 粗黑線 · 所選流程;數字表示順序
  • 方框 · 程式碼或狀態邊界,名稱在標題列
  • 內層小框 · 該邊界的元件
  • 虛線框 · 該邊界之外
  • 橘色外框 · 模型做出判斷之處
  • 生成 · 支出 · 確定
  • 進入 · 判定規則 · 清查
  • 佇列 · 狀態 · 記錄
  • 登記 · 佇列檢查

依據非公開的實作與開發記錄繪製。不顯示客戶資料與程式碼路徑。

一次清查
2026年5月26日,開發環境的一次清查週期:檢查 200 個,狀態轉換 106 個,重新排入 2 個。狀態轉換不等於翻譯成功,106 個依目的狀態的分布未記錄。
為何不是恰好一次
記錄寫入時不會重複,但作業在當機後重新執行時,模型呼叫及其成本可能重複。並行上限以行程為單位,不是整個叢集。
判定的範圍
不讓平均分數掩蓋術語表失敗,是針對回報關卡的彙總規則。它不能證明每個禁用詞都會被找出,也不能證明品質達母語水準。