
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
分数、重试与人工审核,各守其边界。
生成与判定共用术语表,评判模型报告的硬性关卡失败无法被平均分抵消。翻译与判定的中间状态都有记录,重试和成本上限与凭据耗尽分开处理,停滞作业依原因退回队列或审核。
这一工作项目将翻译生成、模型报告的质量判定、重试和人工审核连成一个流程。
自仓库启动起,至合作期间确认的工作为止
由翻译编辑与审批界面、API 和作业 worker 组成的 Web 应用,在开发环境中运行。
登记 → 进入
数据库提交后入队;worker 锁定该行、检查尝试并创建 draft。
原文 · 目标语言数据: 原文提交后入队
API · 作业登记原文片段和项目的目标语言存储在数据库中。不展示客户数据。
提交后入队
API · 作业登记数据: 提交后BullMQ · 作业 ID作业队列数据库提交后,为每个启用的目标语言加入一个带请求级 ID 的作业。若入队失败,只记录一条警告,提交不会回滚(没有原子 outbox),停滞巡检正因此而存在。
BullMQ · 作业 ID
作业队列运行 · 判定: 投递作业行锁 · 尝试检查作业进入BullMQ 以异步方式将作业交给 worker。
行锁 · 尝试检查
作业进入数据: 进度行draft · 进度翻译状态在事务中锁定进度行并创建 draft 译文。已定稿或因凭据暂停的作业不做自动重试;手动请求另行处理。
行锁 · 尝试检查
作业进入运行 · 判定: 允许尝试生成 · 模型调用翻译轮次尝试次数在上限内加一,然后开始翻译轮次。
生成 → 判定 → 定稿
生成与判定使用同一术语表;译文与判定分开记录,由代码汇总判定后定稿。
工作区术语表
术语表 · 上下文数据: 术语表生成 · 模型调用翻译轮次查找工作区术语表和上下文,并传给生成步骤。
工作区术语表
术语表 · 上下文数据: 同一术语表评判模型调用 · 解析翻译轮次判定也获得同样的术语表约束。
生成 · 模型调用
翻译轮次数据: Tx1 · 翻译译文 · 判定行翻译状态直接或经 en-US 中转调用模型,调用、事件和进度写入同一个事务。作业崩溃后再次运行时,翻译调用及其成本可能重复。
评判模型调用 · 解析
翻译轮次数据: Tx2 · 判定译文 · 判定行翻译状态评判分数与依据按每个译文和轮次只插入一次;重复时查找已有行,引用只在首次插入时写入。与翻译不在同一事务中。
评判模型调用 · 解析
翻译轮次数据: 分数 · 关卡硬性关卡 · 加权平均判定规则评判模型的回答被解析为各维度分数和关卡结果。术语表是否通过,是评判模型报告的结果。
硬性关卡 · 加权平均
判定规则运行 · 判定: 判定轮次 · 成本 · 配额重试 · 花费只要报告有任何硬性关卡失败,即为 0 分并判定失败;之后才应用加权平均和各维度阈值。总体阈值 8.0 是配置默认值,而非观测到的翻译质量。
轮次 · 成本 · 配额
重试 · 花费运行 · 判定: pass定稿事务定稿通过则定稿为 translated。
定稿事务
定稿数据: 定稿记录状态 · 调用日志翻译状态候选、状态、分数和轮次被定稿,进度 finalized 与状态日志写入同一个事务。只有 translated 时才发出翻译完成事件。
重试 · 花费上限
未通过则进入下一轮次;达到上限则转人工审核;配额或认证问题则停止花费,等待运维人员恢复。
硬性关卡 · 加权平均
判定规则运行 · 判定: 判定轮次 · 成本 · 配额重试 · 花费只要报告有任何硬性关卡失败,即为 0 分并判定失败;之后才应用加权平均和各维度阈值。总体阈值 8.0 是配置默认值,而非观测到的翻译质量。
轮次 · 成本 · 配额
重试 · 花费运行 · 判定: 下一轮次生成 · 模型调用翻译轮次未通过的译文会结合上一版译文和评语重新生成。即使是硬性关卡失败,也可以先重试,而不是直接交给人。
轮次 · 成本 · 配额
重试 · 花费运行 · 判定: 上限 · 中止人工审核轮次用尽或达到成本上限时,作业定稿为 needs_review。finalized 表示处理结束,并不表示有人已批准。
轮次 · 成本 · 配额
重试 · 花费失败 · 上限: 配额 · 认证凭据检查配额或认证信号会停止花费并设为 needs_credential。不会自动切换到其他账户或提供商。没有停止信号的传输错误交回 BullMQ 重试。
凭据检查运行 · 判定: 手动恢复BullMQ · 作业 ID
作业队列由核实过凭据的运维人员显式重新启动。
停滞作业恢复
旧 draft 按原因区分:不在队列中则重新入队,尝试用尽则交由人决定。
draft · 进度
翻译状态观测 · 报告: 停滞 draft超过 10 分钟的 draft · 最多 200 个停滞巡检按从旧到新读取最多 200 个处于 draft 超过 10 分钟的候选。查询不加锁,更新与日志作为独立语句执行,因此不将其描述为无竞态的批处理。
超过 10 分钟的 draft · 最多 200 个
停滞巡检运行 · 判定: 低于上限比对队列状态队列核对尝试次数少于上限(3 次)时,将作业与 active、waiting、delayed 和 prioritized 队列状态比对。在代码中,尝试用尽分支位于这一队列检查之前。
比对队列状态
队列核对运行 · 判定: 重新入队BullMQ · 作业 ID作业队列作业不在队列中时重新入队。API 使用带请求后缀的 ID,而巡检按片段和语言 ID 查找,因此不将其描述为能匹配所有进行中的请求。
超过 10 分钟的 draft · 最多 200 个
停滞巡检运行 · 判定: 有结果人工审核3 次尝试全部用完且存在翻译结果时,作业转入 needs_review。
超过 10 分钟的 draft · 最多 200 个
停滞巡检运行 · 判定: 无结果凭据检查3 次尝试全部用完且没有结果时,作业转入 needs_credential。
所有连接以相同粗细显示。选择一个流程,即只突出显示其路径,并标出步骤编号。
- 实线 · 输入、结果与记录的流向
- 虚线 · 运行、判定、请求
- 长点线 · 观测与报告,独立于判定
- 短虚线 · 失败、停止、上限
- 粗黑线 · 所选流程;数字表示顺序
- 方框 · 代码或状态边界,标题栏注明名称
- 内层小框 · 该边界中的组件
- 点线框 · 该边界之外
- 橙色轮廓 · 模型作出判断之处
- 生成 · 花费 · 定稿
- 进入 · 判定规则 · 巡检
- 队列 · 状态 · 记录
- 登记 · 队列核对
依据非公开的实现与开发记录绘制。不展示客户数据和代码路径。
- 一次巡检
- 2026年5月26日,开发环境中的一个巡检周期:检查 200 个,106 次状态转换,2 个重新入队。状态转换不等于翻译成功,106 个按目标状态的细分未记录。
- 为何不是恰好一次
- 记录不会重复写入,但作业崩溃后再次运行时,模型调用及其成本可能重复。并发上限按进程计,而非整个集群。
- 判定的范围
- 不让平均分掩盖术语表失败,是针对已报告关卡的汇总规则。它不能证明所有禁用词都会被找出,也不能证明质量达到母语水平。