
Cotton
Translation workflow
เปลี่ยนคำแปลที่สร้างขึ้นให้เป็นผลลัพธ์ที่รีวิวได้
เวิร์กโฟลว์การแปลบทสนทนาในเกม โปรเจกต์งานนี้เชื่อมการสร้างคำแปล การตัดสินคุณภาพที่โมเดลรายงาน การลองใหม่ และการรีวิวโดยคน ไว้ในโฟลว์เดียว
Cotton vocabulary
- prompt layers
- glossary
- generation
- revision
- judge
- hard gate
- score
- intake
- checkpoint
- spend control
- stale sweep
- approval
- correction
- 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
คะแนน การลองใหม่ และการรีวิวโดยคน แต่ละอย่างอยู่ที่ขอบเขตของตนเอง
การสร้างและการตัดสินใช้อภิธานศัพท์ร่วมกัน และความล้มเหลวของ hard gate ที่โมเดลผู้ตัดสินรายงานไม่อาจถูกชดเชยด้วยคะแนนเฉลี่ย สถานะระหว่างทางของคำแปลและการตัดสินถูกบันทึกไว้ ขีดจำกัดการลองใหม่และค่าใช้จ่ายแยกจากข้อมูลรับรองที่หมดสิทธิ์ และงานที่ค้างกลับไปยังคิวหรือการรีวิวตามสาเหตุ
ตั้งแต่เริ่มรีโพซิทอรีจนถึงงานที่ยืนยันในช่วงร่วมงาน
เว็บแอปที่ประกอบด้วยหน้าจอแก้ไขและอนุมัติคำแปล API และ worker งาน ทำงานอยู่ในสภาพแวดล้อมการพัฒนา
การลงทะเบียน → การเข้า
ใส่คิวหลังคอมมิตฐานข้อมูล worker ล็อกแถว ตรวจความพยายาม และสร้าง draft
ต้นฉบับ · locale เป้าหมายข้อมูล: ต้นฉบับใส่คิวหลังคอมมิต
API · การลงทะเบียนงานเซกเมนต์ต้นฉบับและ locale เป้าหมายของโปรเจกต์ถูกจัดเก็บในฐานข้อมูล ไม่แสดงข้อมูลลูกค้า
ใส่คิวหลังคอมมิต
API · การลงทะเบียนงานข้อมูล: หลังคอมมิตBullMQ · ID งานคิวงานหลังคอมมิตฐานข้อมูล งานที่มี ID ตามขอบเขตของคำขอจะถูกใส่คิวต่อหนึ่ง locale เป้าหมายที่ใช้งานอยู่ หากใส่คิวล้มเหลว จะบันทึกเพียงคำเตือนและไม่ย้อนคอมมิต (ไม่มี outbox แบบ atomic) จึงต้องมีการกวาดงานค้าง
BullMQ · ID งาน
คิวงานรัน · การตัดสิน: ส่งงานล็อกแถว · ตรวจความพยายามการเข้าสู่งานBullMQ ส่งงานให้ worker แบบอะซิงโครนัส
ล็อกแถว · ตรวจความพยายาม
การเข้าสู่งานข้อมูล: แถวความคืบหน้าdraft · ความคืบหน้าสถานะคำแปลภายในทรานแซกชัน แถวความคืบหน้าถูกล็อกและสร้างคำแปล draft การลองใหม่อัตโนมัติของงานที่ยืนยันขั้นสุดท้ายแล้วหรือหยุดเพราะข้อมูลรับรองจะถูกข้าม ส่วนคำขอด้วยมือจัดการแยกต่างหาก
ล็อกแถว · ตรวจความพยายาม
การเข้าสู่งานรัน · การตัดสิน: อนุญาตความพยายามสร้าง · เรียกโมเดลเทิร์นการแปลจำนวนความพยายามเพิ่มหนึ่งภายในขีดจำกัด แล้วเทิร์นการแปลจึงเริ่ม
สร้าง → ตัดสิน → ยืนยันขั้นสุดท้าย
การสร้างและการตัดสินใช้อภิธานศัพท์เดียวกัน คำแปลและคำตัดสินถูกบันทึกแยกกัน และโค้ดรวมผลการตัดสินก่อนยืนยันขั้นสุดท้าย
อภิธานศัพท์ของ workspace
อภิธานศัพท์ · บริบทข้อมูล: อภิธานศัพท์สร้าง · เรียกโมเดลเทิร์นการแปลค้นหาอภิธานศัพท์และบริบทของ workspace แล้วส่งให้การสร้างคำแปล
อภิธานศัพท์ของ workspace
อภิธานศัพท์ · บริบทข้อมูล: อภิธานศัพท์เดียวกันเรียกโมเดลผู้ตัดสิน · พาร์สเทิร์นการแปลการตัดสินได้รับข้อจำกัดของอภิธานศัพท์ชุดเดียวกัน
สร้าง · เรียกโมเดล
เทิร์นการแปลข้อมูล: Tx1 · คำแปลแถวคำแปล · คำตัดสินสถานะคำแปลเรียกโมเดลโดยตรงหรือผ่าน pivot en-US และเขียนการเรียก อีเวนต์ และความคืบหน้าในทรานแซกชันเดียว หากงานรันอีกครั้งหลังการล่ม การเรียกแปลและค่าใช้จ่ายอาจเกิดซ้ำ
เรียกโมเดลผู้ตัดสิน · พาร์ส
เทิร์นการแปลข้อมูล: Tx2 · การตัดสินแถวคำแปล · คำตัดสินสถานะคำแปลคะแนนและหลักฐานของผู้ตัดสินถูกเพิ่มเพียงครั้งเดียวต่อคำแปลและเทิร์น รายการซ้ำจะค้นหาแถวที่มีอยู่ และการอ้างอิงจะเขียนเฉพาะการเพิ่มครั้งแรก ไม่ใช่ทรานแซกชันเดียวกับคำแปล
เรียกโมเดลผู้ตัดสิน · พาร์ส
เทิร์นการแปลข้อมูล: คะแนน · gatehard gate · ค่าเฉลี่ยถ่วงน้ำหนักกฎการตัดสินคำตอบของโมเดลผู้ตัดสินถูกพาร์สเป็นคะแนนรายมิติและผลของ gate การที่อภิธานศัพท์ผ่านหรือไม่เป็นสิ่งที่โมเดลผู้ตัดสินรายงาน
hard gate · ค่าเฉลี่ยถ่วงน้ำหนัก
กฎการตัดสินรัน · การตัดสิน: คำตัดสินเทิร์น · ค่าใช้จ่าย · quotaการลองใหม่ · ค่าใช้จ่ายความล้มเหลวของ hard gate ที่ถูกรายงานใด ๆ หมายถึงศูนย์และไม่ผ่าน หลังจากนั้นจึงใช้ค่าเฉลี่ยถ่วงน้ำหนักและเกณฑ์รายมิติ เกณฑ์รวม 8.0 เป็นค่าเริ่มต้นของการตั้งค่า ไม่ใช่คุณภาพคำแปลที่สังเกตได้
เทิร์น · ค่าใช้จ่าย · quota
การลองใหม่ · ค่าใช้จ่ายรัน · การตัดสิน: passทรานแซกชันสุดท้ายการยืนยันขั้นสุดท้ายผลผ่านถูกยืนยันขั้นสุดท้ายเป็น translated
ทรานแซกชันสุดท้าย
การยืนยันขั้นสุดท้ายข้อมูล: บันทึกขั้นสุดท้ายสถานะ · ล็อกการเรียกสถานะคำแปลแคนดิเดต สถานะ คะแนน และเทิร์นถูกยืนยันขั้นสุดท้าย และ progress finalized กับบันทึกสถานะถูกเขียนในทรานแซกชันเดียว อีเวนต์แปลเสร็จจะส่งออกเฉพาะเมื่อเป็น translated
การลองใหม่ · ขีดจำกัดค่าใช้จ่าย
ไม่ผ่านหมายถึงเทิร์นใหม่ ถึงขีดจำกัดหมายถึงการรีวิวโดยคน quota หรือการยืนยันตัวตนจะหยุดค่าใช้จ่ายและรอผู้ดูแลระบบสั่งทำต่อ
hard gate · ค่าเฉลี่ยถ่วงน้ำหนัก
กฎการตัดสินรัน · การตัดสิน: คำตัดสินเทิร์น · ค่าใช้จ่าย · quotaการลองใหม่ · ค่าใช้จ่ายความล้มเหลวของ hard gate ที่ถูกรายงานใด ๆ หมายถึงศูนย์และไม่ผ่าน หลังจากนั้นจึงใช้ค่าเฉลี่ยถ่วงน้ำหนักและเกณฑ์รายมิติ เกณฑ์รวม 8.0 เป็นค่าเริ่มต้นของการตั้งค่า ไม่ใช่คุณภาพคำแปลที่สังเกตได้
เทิร์น · ค่าใช้จ่าย · quota
การลองใหม่ · ค่าใช้จ่ายรัน · การตัดสิน: เทิร์นถัดไปสร้าง · เรียกโมเดลเทิร์นการแปลคำแปลที่ไม่ผ่านจะถูกสร้างใหม่พร้อมคำแปลก่อนหน้าและคำวิจารณ์ แม้ความล้มเหลวของ hard gate ก็ลองใหม่ก่อนได้ แทนที่จะส่งตรงไปให้คน
เทิร์น · ค่าใช้จ่าย · quota
การลองใหม่ · ค่าใช้จ่ายรัน · การตัดสิน: ขีดจำกัด · ยกเลิกการรีวิวโดยคนเมื่อเทิร์นหมดหรือถึงเพดานค่าใช้จ่าย งานจะถูกยืนยันขั้นสุดท้ายเป็น needs_review คำว่า finalized หมายถึงการประมวลผลจบแล้ว ไม่ใช่ว่าคนอนุมัติแล้ว
เทิร์น · ค่าใช้จ่าย · quota
การลองใหม่ · ค่าใช้จ่ายความล้มเหลว · ขีดจำกัด: quota · การยืนยันตัวตนการตรวจข้อมูลรับรองสัญญาณ quota หรือการยืนยันตัวตนจะหยุดค่าใช้จ่ายและตั้งเป็น needs_credential ไม่มีการสลับไปบัญชีหรือผู้ให้บริการอื่นโดยอัตโนมัติ ข้อผิดพลาดด้านการส่งที่ไม่มีสัญญาณหยุดจะกลับไปที่การลองใหม่ของ BullMQ
การตรวจข้อมูลรับรองรัน · การตัดสิน: กลับมาทำต่อด้วยมือBullMQ · ID งาน
คิวงานผู้ดูแลระบบที่ตรวจข้อมูลรับรองแล้วเป็นผู้เริ่มใหม่อย่างชัดแจ้ง
การกู้คืนงานค้าง
draft เก่าถูกแยกตามเหตุผล: หายจากคิวหมายถึงใส่คิวใหม่ ความพยายามหมดแล้วหมายถึงการตัดสินใจของคน
draft · ความคืบหน้า
สถานะคำแปลการสังเกต · รายงาน: draft ที่ค้างdraft ที่เกิน 10 นาที · สูงสุด 200การกวาดงานค้างอ่านแคนดิเดตที่เป็น draft มานานกว่า 10 นาทีได้สูงสุด 200 รายการ เริ่มจากเก่าสุด คิวรีไม่ล็อก และการอัปเดตกับการบันทึกรันเป็นคำสั่งแยกกัน จึงไม่ได้อธิบายว่าเป็นชุดงานที่ไม่มี race
draft ที่เกิน 10 นาที · สูงสุด 200
การกวาดงานค้างรัน · การตัดสิน: ต่ำกว่าขีดจำกัดเปรียบเทียบสถานะคิวตรวจคิวเมื่อความพยายามยังน้อยกว่าขีดจำกัด (3) งานจะถูกเทียบกับสถานะคิว active, waiting, delayed และ prioritized ในโค้ด แขนงความพยายามหมดแล้วมาก่อนการตรวจคิวนี้
เปรียบเทียบสถานะคิว
ตรวจคิวรัน · การตัดสิน: ใส่คิวใหม่BullMQ · ID งานคิวงานหากงานไม่อยู่ในคิว จะถูกใส่คิวอีกครั้ง API ใช้ ID ที่มีส่วนต่อท้ายของคำขอ ขณะที่การกวาดค้นหาด้วย ID ของเซกเมนต์และ locale จึงไม่ได้อธิบายว่าตรงกับทุกคำขอที่กำลังดำเนินอยู่
draft ที่เกิน 10 นาที · สูงสุด 200
การกวาดงานค้างรัน · การตัดสิน: มีผลลัพธ์การรีวิวโดยคนเมื่อใช้ความพยายามครบ 3 ครั้งและมีผลคำแปล งานจะไปที่ needs_review
draft ที่เกิน 10 นาที · สูงสุด 200
การกวาดงานค้างรัน · การตัดสิน: ไม่มีผลลัพธ์การตรวจข้อมูลรับรองเมื่อใช้ความพยายามครบ 3 ครั้งและไม่มีผลลัพธ์ งานจะไปที่ needs_credential
ทุกการเชื่อมต่อมีน้ำหนักเท่ากัน เลือกโฟลว์เพื่อไฮไลต์เฉพาะเส้นทางของโฟลว์นั้นพร้อมขั้นตอนที่มีหมายเลข
- เส้นทึบ · ทิศทางของอินพุต ผลลัพธ์ และบันทึก
- เส้นประ · รัน การตัดสิน คำขอ
- จุดยาว · การสังเกตและการรายงาน แยกจากการตัดสิน
- เส้นประสั้น · ความล้มเหลว การหยุด ขีดจำกัด
- เส้นดำหนา · โฟลว์ที่เลือก ตัวเลขบอกลำดับ
- กล่อง · ขอบเขตของโค้ดหรือสถานะ ระบุชื่อในส่วนหัว
- ชิปด้านใน · องค์ประกอบของขอบเขตนั้น
- กล่องจุด · อยู่นอกขอบเขตนั้น
- เส้นขอบสีส้ม · จุดที่โมเดลตัดสินใจ
- การสร้าง · ค่าใช้จ่าย · การยืนยันขั้นสุดท้าย
- การเข้า · กฎการตัดสิน · การกวาด
- คิว · สถานะ · บันทึก
- การลงทะเบียน · ตรวจคิว
วาดจากบันทึกการพัฒนาและงานที่เป็นส่วนตัว ไม่แสดงข้อมูลลูกค้าและพาธโค้ด
- การกวาดหนึ่งครั้ง
- May 26, 2026 การกวาดหนึ่งรอบในสภาพแวดล้อมการพัฒนา: ตรวจ 200 เปลี่ยนสถานะ 106 ใส่คิวใหม่ 2 การเปลี่ยนสถานะไม่ใช่คำแปลที่สำเร็จ และไม่ได้บันทึกการแบ่ง 106 ตามสถานะปลายทาง
- ทำไมจึงไม่ใช่ exactly once
- บันทึกถูกเขียนโดยไม่ซ้ำ แต่หากงานรันอีกครั้งหลังการล่ม การเรียกโมเดลและค่าใช้จ่ายอาจเกิดซ้ำ ขีดจำกัดการทำงานพร้อมกันเป็นแบบต่อโปรเซส ไม่ใช่ทั่วทั้งคลัสเตอร์
- ขอบเขตของคำตัดสิน
- การกันไม่ให้ค่าเฉลี่ยกลบความล้มเหลวของอภิธานศัพท์เป็นกฎการรวมผลบน gate ที่ถูกรายงาน ไม่ได้พิสูจน์ว่าพบคำต้องห้ามทุกคำหรือคุณภาพอยู่ในระดับเจ้าของภาษา