Nhân vật bông mỉm cười từ logo Cotton gốc, đã bỏ nền và chữ
Trở lại phòng trưng bày

Cotton

Translation workflow

Biến bản dịch được sinh ra thành kết quả có thể rà soát.

Một quy trình dịch cho lời thoại game.

2026.05.06 — 2026.05.26

Dự án công việc · đường xử lý, phán định và rà soát bản dịch

  • Ứng dụng webĐã hiện thực · phát triển

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

Điểm số, thử lại và rà soát của con người, mỗi thứ ở ranh giới riêng.

Việc sinh và phán định dùng chung bảng thuật ngữ, và một lỗi hard gate do mô hình phán định báo cáo không thể bị bù trừ bởi điểm trung bình. Các trạng thái trung gian của bản dịch và phán định được ghi lại, giới hạn thử lại và chi phí được tách khỏi thông tin xác thực đã cạn, và công việc bị kẹt quay về hàng đợi hoặc rà soát tùy theo nguyên nhân.

Dự án công việc này nối việc sinh bản dịch, phán định chất lượng do mô hình báo cáo, thử lại và rà soát của con người trong một luồng.

Từ lúc khởi tạo kho mã đến công việc được xác nhận trong thời gian hợp tác

Một ứng dụng web gồm màn hình chỉnh sửa và phê duyệt bản dịch, một API và một worker công việc, chạy trong môi trường phát triển.

Bản đồ luồng phán định · từ các bản ghi hiện thực riêng tư
Phán định bản dịch · thử lại · khôi phục của CottonAPI commit văn bản nguồn và các locale đích vào cơ sở dữ liệu, rồi đưa vào hàng đợi một công việc cho mỗi locale đích. Một worker khóa hàng, kiểm tra lượt thử, tạo draft và trạng thái tiến độ, sinh bản dịch với bảng thuật ngữ, và gọi riêng một mô hình phán định với cùng bảng thuật ngữ. Bản dịch (Tx1) và phán định kèm bằng chứng (Tx2) được ghi trong các giao dịch riêng. Mã tổng hợp phán định để một lỗi hard gate không bị bù trừ bởi trung bình: đạt thì được chốt, thất bại thì có thêm một lượt, giới hạn lượt hoặc chi phí gửi đến rà soát của con người, và tín hiệu quota hoặc xác thực dừng chi tiêu và chờ kiểm tra thông tin xác thực. Một lần quét kẹt xem tối đa 200 draft cũ hơn 10 phút: draft còn lượt thử nhưng vắng khỏi hàng đợi được đưa lại hàng đợi, và draft đã hết lượt thử đi đến rà soát hoặc kiểm tra thông tin xác thực tùy theo có kết quả hay không.Nguồn · locale đíchPhân đoạn đã lưuRà soát của con ngườineeds_review · không phải phê duyệtKiểm tra thông tin xác thựcneeds_credentialAPI · đăng ký công việcĐưa vào hàng đợi sau commitHàng đợi công việcBullMQ · ID công việcVào công việcKhóa hàng · kiểm tra lượt thửBảng thuật ngữ · ngữ cảnhBảng thuật ngữ của workspaceLượt dịchSinh · gọi mô hìnhGọi mô hình phán định · phân tíchQuy tắc phán địnhHard gate · trung bình có trọng sốThử lại · chi tiêuLượt · chi phí · quotaTrạng thái bản dịchDraft · tiến độHàng bản dịch · phán địnhTrạng thái · log lệnh gọiChốt kết quảGiao dịch cuốiKiểm tra hàng đợiSo sánh trạng thái hàng đợiQuét kẹtDraft quá 10 phút · tối đa 200Đầu vào · hàng đợiSinh · phán địnhTrạng thái · chấp nhậnKhôi phục · quyết định của con người1nguồn2 sau commit · Đưa vào hàng đợi sau commit → BullMQ · ID công việc23 gửi công việc · BullMQ · ID công việc → Khóa hàng · kiểm tra lượt thử34hàng tiến độ5cho phép lượt thử1 bảng thuật ngữ · Bảng thuật ngữ của workspace → Sinh · gọi mô hình12 cùng bảng thuật ngữ · Bảng thuật ngữ của workspace → Gọi mô hình phán định · phân tích23Tx1 · bản dịch4Tx2 · phán định5 điểm · gate · Gọi mô hình phán định · phân tích → Hard gate · trung bình có trọng số56phán định7pass8bản ghi cuối1phán định2lượt tiếp theo3giới hạn · hủy4quota · xác thực5tiếp tục thủ công1draft bị kẹt2 dưới giới hạn · Draft quá 10 phút · tối đa 200 → So sánh trạng thái hàng đợi23đưa lại hàng đợi4có kết quả5không có kết quả

Đăng ký → vào

Được đưa vào hàng đợi sau commit cơ sở dữ liệu; một worker khóa hàng, kiểm tra lượt thử và tạo draft.

  1. Nguồn · locale đíchDữ liệu: nguồnĐưa vào hàng đợi sau commitAPI · đăng ký công việc

    Các phân đoạn nguồn và locale đích của dự án được lưu trong cơ sở dữ liệu. Dữ liệu khách hàng không được hiển thị.

  2. Đưa vào hàng đợi sau commitAPI · đăng ký công việcDữ liệu: sau commitBullMQ · ID công việcHàng đợi công việc

    Sau khi commit cơ sở dữ liệu, một công việc có ID theo phạm vi yêu cầu được đưa vào hàng đợi cho mỗi locale đích đang hoạt động. Nếu đưa vào hàng đợi thất bại, chỉ một cảnh báo được ghi và commit không bị hoàn tác (không có outbox nguyên tử), đó là lý do có lần quét kẹt.

  3. BullMQ · ID công việcHàng đợi công việcChạy · phán định: gửi công việcKhóa hàng · kiểm tra lượt thửVào công việc

    BullMQ chuyển công việc cho một worker một cách bất đồng bộ.

  4. Khóa hàng · kiểm tra lượt thửVào công việcDữ liệu: hàng tiến độDraft · tiến độTrạng thái bản dịch

    Trong một giao dịch, hàng tiến độ bị khóa và một bản dịch draft được tạo. Việc tự động thử lại các công việc đã chốt hoặc đã tạm dừng vì thông tin xác thực được bỏ qua; yêu cầu thủ công được xử lý riêng.

  5. Khóa hàng · kiểm tra lượt thửVào công việcChạy · phán định: cho phép lượt thửSinh · gọi mô hìnhLượt dịch

    Số lượt thử tăng thêm một trong giới hạn của nó, rồi lượt dịch bắt đầu.

Sinh → phán định → chốt

Việc sinh và phán định dùng cùng bảng thuật ngữ; bản dịch và phán định được ghi riêng, và mã tổng hợp phán định trước khi chốt.

  1. Bảng thuật ngữ của workspaceBảng thuật ngữ · ngữ cảnhDữ liệu: bảng thuật ngữSinh · gọi mô hìnhLượt dịch

    Bảng thuật ngữ và ngữ cảnh của workspace được tra cứu và chuyển cho việc sinh bản dịch.

  2. Bảng thuật ngữ của workspaceBảng thuật ngữ · ngữ cảnhDữ liệu: cùng bảng thuật ngữGọi mô hình phán định · phân tíchLượt dịch

    Việc phán định nhận cùng các ràng buộc bảng thuật ngữ.

  3. Sinh · gọi mô hìnhLượt dịchDữ liệu: Tx1 · bản dịchHàng bản dịch · phán địnhTrạng thái bản dịch

    Mô hình được gọi trực tiếp hoặc qua pivot en-US, và lệnh gọi, sự kiện cùng tiến độ được ghi trong một giao dịch. Nếu công việc chạy lại sau sự cố, lệnh gọi dịch và chi phí của nó có thể lặp lại.

  4. Gọi mô hình phán định · phân tíchLượt dịchDữ liệu: Tx2 · phán địnhHàng bản dịch · phán địnhTrạng thái bản dịch

    Điểm và bằng chứng của bộ phán định được chèn một lần cho mỗi bản dịch và lượt; một bản trùng sẽ tìm ra hàng đã có, và trích dẫn chỉ được ghi ở lần chèn đầu tiên. Không cùng giao dịch với bản dịch.

  5. Gọi mô hình phán định · phân tíchLượt dịchDữ liệu: điểm · gateHard gate · trung bình có trọng sốQuy tắc phán định

    Câu trả lời của mô hình phán định được phân tích thành điểm theo từng chiều và kết quả gate. Việc bảng thuật ngữ có đạt hay không là điều mô hình phán định báo cáo.

  6. Hard gate · trung bình có trọng sốQuy tắc phán địnhChạy · phán định: phán địnhLượt · chi phí · quotaThử lại · chi tiêu

    Bất kỳ lỗi hard gate nào được báo cáo đều nghĩa là không điểm và không đạt; chỉ sau đó mới áp dụng trung bình có trọng số và ngưỡng theo từng chiều. Ngưỡng tổng 8.0 là giá trị cấu hình mặc định, không phải chất lượng bản dịch quan sát được.

  7. Lượt · chi phí · quotaThử lại · chi tiêuChạy · phán định: passGiao dịch cuốiChốt kết quả

    Kết quả đạt được chốt là translated.

  8. Giao dịch cuốiChốt kết quảDữ liệu: bản ghi cuốiTrạng thái · log lệnh gọiTrạng thái bản dịch

    Ứng viên, trạng thái, điểm và số lượt được chốt, và progress finalized cùng log trạng thái được ghi trong một giao dịch. Sự kiện dịch xong chỉ được phát cho translated.

Thử lại · giới hạn chi tiêu

Không đạt nghĩa là thêm một lượt; chạm giới hạn nghĩa là rà soát của con người; quota hoặc xác thực dừng chi tiêu và chờ người vận hành cho tiếp tục.

  1. Hard gate · trung bình có trọng sốQuy tắc phán địnhChạy · phán định: phán địnhLượt · chi phí · quotaThử lại · chi tiêu

    Bất kỳ lỗi hard gate nào được báo cáo đều nghĩa là không điểm và không đạt; chỉ sau đó mới áp dụng trung bình có trọng số và ngưỡng theo từng chiều. Ngưỡng tổng 8.0 là giá trị cấu hình mặc định, không phải chất lượng bản dịch quan sát được.

  2. Lượt · chi phí · quotaThử lại · chi tiêuChạy · phán định: lượt tiếp theoSinh · gọi mô hìnhLượt dịch

    Bản dịch không đạt được sinh lại cùng bản dịch và lời phê bình trước đó. Ngay cả lỗi hard gate cũng có thể được thử lại trước thay vì đi thẳng đến con người.

  3. Lượt · chi phí · quotaThử lại · chi tiêuChạy · phán định: giới hạn · hủyRà soát của con người

    Khi hết lượt hoặc chạm trần chi phí, công việc được chốt là needs_review. Finalized nghĩa là việc xử lý đã kết thúc, không phải một người đã phê duyệt.

  4. Lượt · chi phí · quotaThử lại · chi tiêuLỗi · giới hạn: quota · xác thựcKiểm tra thông tin xác thực

    Một tín hiệu quota hoặc xác thực dừng chi tiêu và đặt needs_credential. Không có việc tự động chuyển sang tài khoản hay nhà cung cấp khác. Lỗi truyền tải không có tín hiệu dừng quay về cơ chế thử lại của BullMQ.

  5. Kiểm tra thông tin xác thựcChạy · phán định: tiếp tục thủ côngBullMQ · ID công việcHàng đợi công việc

    Một người vận hành đã kiểm tra thông tin xác thực khởi động lại một cách tường minh.

Khôi phục công việc bị kẹt

Các draft cũ được chia theo lý do: vắng khỏi hàng đợi nghĩa là đưa lại hàng đợi, hết lượt thử nghĩa là một quyết định của con người.

  1. Draft · tiến độTrạng thái bản dịchQuan sát · báo cáo: draft bị kẹtDraft quá 10 phút · tối đa 200Quét kẹt

    Tối đa 200 ứng viên đã là draft quá 10 phút được đọc, cũ nhất trước. Truy vấn không khóa và các thao tác cập nhật và ghi log chạy như các câu lệnh riêng, nên điều này không được mô tả là một lô không có race.

  2. Draft quá 10 phút · tối đa 200Quét kẹtChạy · phán định: dưới giới hạnSo sánh trạng thái hàng đợiKiểm tra hàng đợi

    Khi số lượt thử còn ít hơn giới hạn (3), công việc được so sánh với các trạng thái hàng đợi active, waiting, delayed và prioritized. Trong mã, nhánh hết lượt thử đứng trước bước kiểm tra hàng đợi này.

  3. So sánh trạng thái hàng đợiKiểm tra hàng đợiChạy · phán định: đưa lại hàng đợiBullMQ · ID công việcHàng đợi công việc

    Nếu công việc không có trong hàng đợi, nó được đưa vào lại. API dùng ID có hậu tố yêu cầu trong khi lần quét tìm theo ID phân đoạn và locale, nên điều này không được mô tả là khớp mọi yêu cầu đang chạy.

  4. Draft quá 10 phút · tối đa 200Quét kẹtChạy · phán định: có kết quảRà soát của con người

    Khi đã dùng hết 3 lượt thử và có kết quả dịch, công việc đi đến needs_review.

  5. Draft quá 10 phút · tối đa 200Quét kẹtChạy · phán định: không có kết quảKiểm tra thông tin xác thực

    Khi đã dùng hết 3 lượt thử và không có kết quả, công việc đi đến needs_credential.

Mọi kết nối có cùng độ đậm. Chọn một luồng để chỉ làm nổi bật đường đi của nó, kèm các bước được đánh số.

  • Nét liền · hướng đi của đầu vào, kết quả và bản ghi
  • Nét đứt · chạy, phán định, yêu cầu
  • Chấm dài · quan sát và báo cáo, tách khỏi phán định
  • Gạch ngắn · lỗi, dừng, giới hạn
  • Nét đen đậm · luồng được chọn; số chỉ thứ tự
  • Hộp · ranh giới mã hoặc trạng thái, tên ở phần đầu
  • Chip bên trong · một thành phần của ranh giới đó
  • Hộp chấm · bên ngoài ranh giới đó
  • Viền cam · nơi một mô hình quyết định
  • Sinh · chi tiêu · chốt
  • Vào · quy tắc phán định · quét
  • Hàng đợi · trạng thái · bản ghi
  • Đăng ký · kiểm tra hàng đợi

Vẽ từ các bản ghi hiện thực và phát triển riêng tư. Dữ liệu khách hàng và đường dẫn mã không được hiển thị.

Một lần quét
May 26, 2026, một chu kỳ quét trong môi trường phát triển: kiểm tra 200, 106 lần chuyển trạng thái, 2 đưa lại hàng đợi. Một lần chuyển trạng thái không phải bản dịch thành công, và việc chia 106 theo trạng thái đích không được ghi lại.
Vì sao không phải exactly once
Bản ghi được ghi không trùng lặp, nhưng nếu công việc chạy lại sau sự cố, lệnh gọi mô hình và chi phí của chúng có thể lặp lại. Giới hạn đồng thời là theo từng tiến trình, không phải toàn cụm.
Phạm vi của phán định
Giữ cho trung bình không che một lỗi bảng thuật ngữ là một quy tắc tổng hợp trên các gate được báo cáo. Nó không chứng minh mọi từ cấm đều được phát hiện hay chất lượng đạt mức người bản ngữ.