Uśmiechnięta postać bawełny z oryginalnego logo Cotton, bez tła i napisu
Powrót do sali

Cotton

Translation workflow

Wygenerowane tłumaczenia zamienione w wyniki gotowe do przeglądu.

Przepływ tłumaczenia dialogów z gier.

2026.05.06 — 2026.05.26

Projekt zawodowy · przetwarzanie, ocena i ścieżka przeglądu tłumaczeń

  • Aplikacja webowaZaimplementowane · środowisko deweloperskie

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

Oceny, ponowienia i przegląd przez człowieka, każde na własnej granicy.

Generowanie i ocena dzielą glosariusz, a niespełnienia twardego kryterium zgłoszonego przez model oceniający nie może zrównoważyć średnia ocena. Pośrednie stany tłumaczenia i oceny są zapisywane, limity ponowień i kosztów są oddzielone od wyczerpanych poświadczeń, a zastałe zadania wracają do kolejki lub do przeglądu w zależności od przyczyny.

Ten projekt zawodowy łączy w jednym przepływie generowanie tłumaczeń, ocenę jakości zgłaszaną przez model, ponowienia i przegląd przez człowieka.

Od początku repozytorium do pracy potwierdzonej w okresie współpracy

Aplikacja webowa z ekranami edycji i zatwierdzania tłumaczeń, API i workerem zadań, działająca w środowisku deweloperskim.

Mapa przepływu rozstrzygnięć · z niepublicznych zapisów implementacji
Cotton: ocena tłumaczeń · ponowienie · przywracanieAPI zatwierdza w bazie danych tekst źródłowy i docelowe języki, a następnie kolejkuje zadanie dla każdego języka docelowego. Worker blokuje wiersz, sprawdza próbę, tworzy draft i stan postępu, generuje tłumaczenie z glosariuszem i osobno wywołuje model oceniający z tym samym glosariuszem. Tłumaczenie (Tx1) oraz ocena z dowodami (Tx2) są zapisywane w osobnych transakcjach. Kod agreguje ocenę tak, by niespełnienia twardego kryterium nie zrównoważyła średnia: zaliczenie jest finalizowane, porażka dostaje kolejną turę, limit tur lub kosztów kieruje do przeglądu przez człowieka, a sygnał quota lub uwierzytelnienia wstrzymuje wydatki i czeka na sprawdzenie poświadczeń. Skan zastałych obejmuje najwyżej 200 draftów starszych niż 10 minut: draft z pozostałymi próbami, którego brak w kolejce, jest ponownie kolejkowany, a draft z wykorzystanymi próbami trafia do przeglądu lub sprawdzenia poświadczeń w zależności od tego, czy istnieje wynik.Źródło · języki doceloweZapisane segmentyPrzegląd przez człowiekaneeds_review · nie zatwierdzenieSprawdzenie poświadczeńneeds_credentialAPI · rejestracja zadańKolejkowanie po zatwierdzeniuKolejka zadańBullMQ · ID zadaniaWejście zadaniaBlokada wiersza · sprawdzenie próbyGlosariusz · kontekstGlosariusz przestrzeni roboczejTura tłumaczeniaGenerowanie · wywołanie modeluWywołanie modelu oceniającego · parsowanieReguły werdyktuTwarde kryterium · średnia ważonaPonowienia · wydatkiTury · koszt · quotaStan tłumaczeniaDraft · postępWiersze tłumaczeń · ocenStan · log wywołańFinalizacjaTransakcja końcowaKontrola kolejkiPorównanie stanu kolejkiSkan zastałychDrafty starsze niż 10 min · najwyżej 200Wejście · kolejkaGenerowanie · ocenaStan · akceptacjaPrzywracanie · decyzja człowieka1źródło2 po zatwierdzeniu · Kolejkowanie po zatwierdzeniu → BullMQ · ID zadania23 dostarczenie zadania · BullMQ · ID zadania → Blokada wiersza · sprawdzenie próby34wiersz postępu5próba dozwolona1glosariusz2 ten sam glosariusz · Glosariusz przestrzeni roboczej → Wywołanie modelu oceniającego · parsowanie23Tx1 · tłumaczenie4Tx2 · ocena5 oceny · kryteria · Wywołanie modelu oceniającego · parsowanie → Twarde kryterium · średnia ważona56werdykt7pass8zapis końcowy1werdykt2kolejna tura3limit · przerwanie4quota · uwierzytelnienie5ręczne wznowienie1zastały draft2 poniżej limitu · Drafty starsze niż 10 min · najwyżej 200 → Porównanie stanu kolejki23ponowne kolejkowanie4 wynik istnieje · Drafty starsze niż 10 min · najwyżej 200 → Przegląd przez człowieka45brak wyniku

Rejestracja → wejście

Kolejkowane po zatwierdzeniu w bazie danych; worker blokuje wiersz, sprawdza próbę i tworzy draft.

  1. Źródło · języki doceloweDane: źródłoKolejkowanie po zatwierdzeniuAPI · rejestracja zadań

    Segmenty źródłowe i docelowe języki projektu są zapisywane w bazie danych. Dane klienta nie są pokazywane.

  2. Kolejkowanie po zatwierdzeniuAPI · rejestracja zadańDane: po zatwierdzeniuBullMQ · ID zadaniaKolejka zadań

    Po zatwierdzeniu w bazie danych dla każdego aktywnego języka docelowego kolejkowane jest zadanie z ID określonym przez żądanie. Jeśli kolejkowanie się nie powiedzie, logowane jest tylko ostrzeżenie, a zatwierdzenie nie jest wycofywane (brak atomowego outboxa), dlatego istnieje skan zastałych.

  3. BullMQ · ID zadaniaKolejka zadańUruchomienie · rozstrzygnięcie: dostarczenie zadaniaBlokada wiersza · sprawdzenie próbyWejście zadania

    BullMQ przekazuje zadanie workerowi asynchronicznie.

  4. Blokada wiersza · sprawdzenie próbyWejście zadaniaDane: wiersz postępuDraft · postępStan tłumaczenia

    W transakcji blokowany jest wiersz postępu i tworzone jest robocze tłumaczenie. Automatyczne ponowienia zadań sfinalizowanych lub wstrzymanych z powodu poświadczeń są pomijane; żądania ręczne są obsługiwane osobno.

  5. Blokada wiersza · sprawdzenie próbyWejście zadaniaUruchomienie · rozstrzygnięcie: próba dozwolonaGenerowanie · wywołanie modeluTura tłumaczenia

    Licznik prób rośnie o jeden w ramach limitu, po czym zaczyna się tura tłumaczenia.

Generowanie → ocena → finalizacja

Generowanie i ocena używają tego samego glosariusza; tłumaczenie i ocena są zapisywane osobno, a kod agreguje ocenę przed finalizacją.

  1. Glosariusz przestrzeni roboczejGlosariusz · kontekstDane: glosariuszGenerowanie · wywołanie modeluTura tłumaczenia

    Glosariusz przestrzeni roboczej i kontekst są wyszukiwane i przekazywane do generowania.

  2. Glosariusz przestrzeni roboczejGlosariusz · kontekstDane: ten sam glosariuszWywołanie modelu oceniającego · parsowanieTura tłumaczenia

    Ocena otrzymuje te same ograniczenia glosariusza.

  3. Generowanie · wywołanie modeluTura tłumaczeniaDane: Tx1 · tłumaczenieWiersze tłumaczeń · ocenStan tłumaczenia

    Model jest wywoływany bezpośrednio lub przez pivot en-US, a wywołanie, zdarzenie i postęp są zapisywane w jednej transakcji. Jeśli zadanie zostanie uruchomione ponownie po awarii, wywołanie tłumaczące i jego koszt mogą się powtórzyć.

  4. Wywołanie modelu oceniającego · parsowanieTura tłumaczeniaDane: Tx2 · ocenaWiersze tłumaczeń · ocenStan tłumaczenia

    Oceny sędziego i dowody są wstawiane raz na tłumaczenie i turę; duplikat odnajduje istniejący wiersz, a cytowania są zapisywane tylko przy pierwszym wstawieniu. To nie ta sama transakcja co tłumaczenie.

  5. Wywołanie modelu oceniającego · parsowanieTura tłumaczeniaDane: oceny · kryteriaTwarde kryterium · średnia ważonaReguły werdyktu

    Odpowiedź modelu oceniającego jest parsowana na oceny dla poszczególnych wymiarów i wyniki kryteriów. To, czy glosariusz przeszedł, zgłasza model oceniający.

  6. Twarde kryterium · średnia ważonaReguły werdyktuUruchomienie · rozstrzygnięcie: werdyktTury · koszt · quotaPonowienia · wydatki

    Każde zgłoszone niespełnienie twardego kryterium oznacza zero i porażkę; dopiero potem stosowane są średnia ważona i progi dla wymiarów. Ogólny próg 8.0 to wartość domyślna konfiguracji, a nie zaobserwowana jakość tłumaczenia.

  7. Tury · koszt · quotaPonowienia · wydatkiUruchomienie · rozstrzygnięcie: passTransakcja końcowaFinalizacja

    Zaliczenie jest finalizowane jako translated.

  8. Transakcja końcowaFinalizacjaDane: zapis końcowyStan · log wywołańStan tłumaczenia

    Kandydat, stan, ocena i tury są finalizowane, a postęp finalized i log stanu są zapisywane w jednej transakcji. Zdarzenie ukończenia tłumaczenia jest emitowane tylko dla translated.

Ponowienia · limity wydatków

Brak zaliczenia oznacza kolejną turę; limit oznacza przegląd przez człowieka; quota lub uwierzytelnienie wstrzymuje wydatki i czeka na wznowienie przez operatora.

  1. Twarde kryterium · średnia ważonaReguły werdyktuUruchomienie · rozstrzygnięcie: werdyktTury · koszt · quotaPonowienia · wydatki

    Każde zgłoszone niespełnienie twardego kryterium oznacza zero i porażkę; dopiero potem stosowane są średnia ważona i progi dla wymiarów. Ogólny próg 8.0 to wartość domyślna konfiguracji, a nie zaobserwowana jakość tłumaczenia.

  2. Tury · koszt · quotaPonowienia · wydatkiUruchomienie · rozstrzygnięcie: kolejna turaGenerowanie · wywołanie modeluTura tłumaczenia

    Tłumaczenie, które nie przejdzie, jest generowane ponownie z poprzednim tłumaczeniem i uwagami krytycznymi. Nawet niespełnienie twardego kryterium może najpierw dostać ponowienie, zamiast od razu trafić do człowieka.

  3. Tury · koszt · quotaPonowienia · wydatkiUruchomienie · rozstrzygnięcie: limit · przerwaniePrzegląd przez człowieka

    Gdy wyczerpią się tury lub zostanie osiągnięty pułap kosztów, zadanie jest finalizowane jako needs_review. Sfinalizowane oznacza zakończenie przetwarzania, a nie zatwierdzenie przez człowieka.

  4. Tury · koszt · quotaPonowienia · wydatkiAwaria · limit: quota · uwierzytelnienieSprawdzenie poświadczeń

    Sygnał quota lub uwierzytelnienia wstrzymuje wydatki i ustawia needs_credential. Nie ma automatycznego przełączenia na inne konto ani dostawcę. Błędy transportu bez sygnału wstrzymania wracają do ponowień BullMQ.

  5. Sprawdzenie poświadczeńUruchomienie · rozstrzygnięcie: ręczne wznowienieBullMQ · ID zadaniaKolejka zadań

    Operator, który sprawdził poświadczenia, jawnie uruchamia ponownie.

Przywracanie zastałych zadań

Stare drafty są dzielone według przyczyny: brak w kolejce oznacza ponowne kolejkowanie, wykorzystane próby oznaczają decyzję człowieka.

  1. Draft · postępStan tłumaczeniaObserwacja · raport: zastały draftDrafty starsze niż 10 min · najwyżej 200Skan zastałych

    Odczytywanych jest najwyżej 200 kandydatów, którzy są draftami od ponad 10 minut, od najstarszych. Zapytanie nie zakłada blokady, a aktualizacje i logi działają jako osobne instrukcje, więc nie jest to opisywane jako partia wolna od wyścigów.

  2. Drafty starsze niż 10 min · najwyżej 200Skan zastałychUruchomienie · rozstrzygnięcie: poniżej limituPorównanie stanu kolejkiKontrola kolejki

    Gdy prób jest mniej niż limit (3), zadanie jest porównywane ze stanami kolejki active, waiting, delayed i prioritized. W kodzie gałąź wyczerpanych prób poprzedza tę kontrolę kolejki.

  3. Porównanie stanu kolejkiKontrola kolejkiUruchomienie · rozstrzygnięcie: ponowne kolejkowanieBullMQ · ID zadaniaKolejka zadań

    Jeśli zadania nie ma w kolejce, jest kolejkowane ponownie. API używa ID z sufiksem żądania, a skan szuka ID segmentu i języka, więc nie jest to opisywane jako dopasowanie każdego trwającego żądania.

  4. Drafty starsze niż 10 min · najwyżej 200Skan zastałychUruchomienie · rozstrzygnięcie: wynik istniejePrzegląd przez człowieka

    Gdy wykorzystano wszystkie 3 próby i istnieje wynik tłumaczenia, zadanie trafia do needs_review.

  5. Drafty starsze niż 10 min · najwyżej 200Skan zastałychUruchomienie · rozstrzygnięcie: brak wynikuSprawdzenie poświadczeń

    Gdy wykorzystano wszystkie 3 próby i nie ma wyniku, zadanie trafia do needs_credential.

Każde połączenie z tą samą wagą. Wybór przepływu wyróżnia tylko jego ścieżkę z ponumerowanymi krokami.

  • Linia ciągła · kierunek wejścia, wyników i zapisów
  • Linia przerywana · uruchomienie, rozstrzygnięcie, żądanie
  • Długie kropki · obserwacja i raportowanie, oddzielnie od rozstrzygnięcia
  • Krótkie kreski · awaria, zatrzymanie, limit
  • Gruba czarna linia · wybrany przepływ; liczby podają kolejność
  • Ramka · granica kodu lub stanu, nazwana w nagłówku
  • Wewnętrzny element · komponent tej granicy
  • Kropkowana ramka · poza tą granicą
  • Pomarańczowy obrys · miejsce, w którym decyduje model
  • Generowanie · wydatki · finalizacja
  • Wejście · reguły werdyktu · skan
  • Kolejka · stan · zapisy
  • Rejestracja · kontrola kolejki

Narysowano na podstawie niepublicznych zapisów implementacji i rozwoju. Dane klienta i ścieżki kodu nie są pokazane.

Jeden skan
May 26, 2026, jeden cykl skanu w środowisku deweloperskim: 200 sprawdzonych, 106 przejść stanu, 2 ponownie zakolejkowane. Przejście stanu nie jest udanym tłumaczeniem, a podział 106 według stanu docelowego nie został zapisany.
Dlaczego nie dokładnie raz
Zapisy powstają bez duplikatów, ale jeśli zadanie zostanie uruchomione ponownie po awarii, wywołania modelu i ich koszt mogą się powtórzyć. Limit współbieżności obowiązuje na proces, a nie w całym klastrze.
Zakres werdyktu
Niedopuszczenie, by średnia przykryła naruszenie glosariusza, to reguła agregacji zgłoszonych kryteriów. Nie dowodzi, że wykryty zostanie każdy zakazany termin ani że jakość jest na poziomie natywnym.