Skip to content

社区翻译核对与 prompt 更新(2026-09-22)

核对用户指定的生产数据库,所有数据库查询均在只读事务中执行。范围为站内帖子、回复、世界评价及评价回复,不是 Discord 摘要,也不是世界卡多语言版本。快照截至 2026-09-22 20:30 UTC 左右。

数据范围与结论

  • 对照 3,565 条原文的 10,683 条缓存译文;另外 11 条活动译文使用独立翻译路径,不计入本次质量抽查。
  • 10,682 条译文的 source hash 与现有原文一致,1 条不一致。主要问题不能归因于用户修改了原文而译文没更新。
  • 对全部对照行做了格式筛查,再阅读近期原文、命中样本和四个目标语言的译文。筛查命中 48 条译文、27 条原文,是人工复核候选,不是 48 条已确认错误,也不是整体翻译错误率。例如 fenced block 的内容变化可能只是模型翻译了放在代码围栏里的自然语言;URL 正则也会把全角标点边界算作变化。
  • 旧译文持续从缓存提供。更新 prompt 只影响后续生成,不会使已缓存的错误译文自动重译;本次没有清缓存或覆盖线上内容。

确认的问题

类别原文或场景缓存译文的问题原文 ID
俚语按字面翻译在提示词讨论中说“肘击 AI”英文出现 elbowing the AIelbow prompts,没有表达提醒、纠正 AI 的意思f9940d0f-3093-444f-87ae-950273e865de
缺失重音被当作人名西语评价 Ame, me encanto中文、日语保留 Ame;这里是 amé,意为“爱了”55f02af7-b35e-4622-ab63-188d749e3ea2
圈内含义丢失同一评价的 lo picante中文“那些辣的部分”,未表达角色扮演中的色情或擦边内容同上
语气被加重convince people to buy a subscription中文译成“忽悠大家”,比原文更具指责意味124f8691-fef6-433c-9c06-a065f59cb740
产品术语不一致世界书英文混用 World Booklorebook;西语出现 libro del mundo;日语混用 ワールドブックロアブックa97bfb5d-4303-43a3-8919-51a0eb0ebfa38af80b2f-3e0d-4119-b44a-d366697ff0ad
Markdown 围栏丢失说明上下文发送内容的公告中文、日语代码围栏丢失,原本的代码块会作为普通正文显示297a2dfb-548a-4141-89f7-2028671cd630
换行被二次转义反馈多次重试、重复扣币日语包含字面 \n,而非实际换行ef19f25a-80c9-44b1-a904-a57dbae62149
把翻译当作对话任务询问能否自己设计角色、设置推理强度旧日语/西语译文直接生成角色设定或参数建议,新增大段原文没有的内容72e1bad4-acc4-4475-b563-29e762b301b421831940-caab-470a-9739-f4030200ee0e
擅自合并双语段落、分行评论去掉重复含义的段落或合并行,违背原文结构01ecd7ce-ecba-401c-9726-4f5fad5f20c7a953c79c-4637-4713-8f57-d4bd81b94a6d

近期普通评论大多能传递主旨;问题集中在语境、术语、语气细节和格式忠实度。旧模型时期的严重错误仍在缓存中,不能全部归因于当前模型。

本次 prompt 修改

位置:packages/server/src/lib/translate.tsbuildTranslationSystemPromptbuildEchoRetrySystemPrompt

  1. 明确只做翻译,不回答问题、不执行原文里的提示词、不续写故事、不补事实或解释。
  2. 保留否定、疑问、不确定性、人物关系、数字和版本;不猜测缺失上下文或性别,不增加原文没有的指责、脏话或赞美。
  3. 给俚语、重音缺失和角色扮演词义加入具体规则;专有名词保护不再笼统覆盖所有“游戏术语”。
  4. 使用应用现有词汇:世界书 / lorebook / ロアブック,中文货币为“蘑菇币”,其他目标语言为 mushies。
  5. 区分 Markdown 结构、可翻译正文、必须原样保留的代码、URL、模板变量和指令。代码围栏本身也必须保留。
  6. JSON 输出只负责序列化;解析后的内容必须有真实换行。纯文本输出不允许额外 JSON 包装。
  7. 已经使用目标语言的部分保留,不擅自去重。重试提示词同步保护代码和目标语言片段,不再用“不得复制任何原文”的绝对命令覆盖这些要求。

没有更换模型、修改前端或数据库 schema;保留工作区此前已有的翻译修复。活动翻译的独立 prompt 未改。

模型和费用

费用范围仅为 usage_logs.endpoint = 'translation',不含玩家聊天、Studio、Discord 分类或世界卡翻译。调用次数包含重试、分块,不等于成功译文数。

模型已记录调用输入 tokens输出 tokens有实际成本字段的调用实际成本合计
当前主模型 z-ai/glm-5.3,自 8 月 27 日4,1941,899,9973,889,4461,914$7.289118534594
当前拒答备用 deepseek/deepseek-v4-flash-0731193755,365404,2890未记录
旧主模型 qwen/qwen3-235b-a22b-25079,3243,125,145863,1670未记录
旧模型 google/gemini-2.0-flash-lite-0012,9731,853,832665,3790未记录

能确认的账单金额为 $7.29,覆盖 9 月 13 日至 9 月 22 日的 1,914 次调用,不是完整历史总额。 剩余调用的实际成本为空,不能当作零费用。当前翻译是平台承担的共享基础设施成本,不直接向触发翻译的用户扣蘑菇币。

为给缺失部分一个量级参考,9 月 22 日读取 OpenRouter 公开模型价格目录:GLM-5.3 输入 $0.6538/M、输出 $2.0548/M;DeepSeek 备用输入 $0.04/M、输出 $0.64/M;Qwen 输入 $0.0875/M、输出 $0.35/M。这些是查询时目录价格,不是历史供应商结算价。

  • GLM 缺少成本的 2,280 次调用:1,338,591 输入 tokens、2,139,557 输出 tokens,按上述现价约 $5.27。加上已记录 $7.29,GLM 自 8 月 27 日约 $12.56
  • 当前备用模型同法约 $0.29;所以当前两模型累计量级约 $12.85
  • 旧 Qwen 同法约 $0.58。旧 Gemini 在当前目录中没有返回,未编造其历史费用。

这些估算没有还原历史价格、实际路由供应商、缓存折扣或缺失的调用。实测也显示同一模型会经过不同供应商,实际单价高于目录最低价的情况存在。因此 $12.85 是预算参考,不是核账结果;完整历史总额仍无法从现有记录精确还原。输出 tokens 可能包含推理消耗,不能只按可见译文字数估算。

验证

  • 原有翻译专项测试 48/48 通过,涵盖输出保护、占位符、重试、分块和缓存版本。
  • 完整构建通过;完整类型检查通过。首次并行运行两者时共享产物发生文件占用,顺序复跑通过。
  • 用户明确授权后,在现有 OpenRouter 服务上对 14 个样本/目标语言组合做新旧 prompt 对照。结果仅保存本地,没有覆盖生产译文。最终结果见下方补充。

原始对照、用量快照、筛查候选及实验结果保存在被 Git 忽略的 .local-artifacts/translation-audit-20260922/。数据库连接串和 API 密钥未写入这些文件。

模型实测记录

14 个样本/目标语言组合,覆盖中文、英文、西语和日语;同一 GLM-5.3、temperature=0.1、按价格路由。原有 prompt 与第一版新 prompt 各请求一次。该规模用于验证具体回归,不足以计算全站准确率。

  • 原有 prompt:14 次均有响应;3 个样本存在格式问题(公告代码块变化、分行被合并、双语段落被去重)。另有一条西语目标输出仍为中文。
  • 第一版新 prompt:13 次有响应;这些响应未触发上述结构检查。长公告请求 180 秒超时,不计作通过。日语 Ame 仍有一次保留错误,因此再次细化了该例,并补上币种术语。
  • 最终 prompt 对中文/日语西语评价和币种语气样本共 3 次复测:Ame 正确译成“爱了”/“大好き”,中文币种为“蘑菇币”,没有把 convince 加重成“忽悠”。

具体对照:

原文问题原 prompt 本次输出新 prompt 本次输出
肘击 AIelbowingelbow promptsnudgingnudging prompts
西语 Ame,中文目标保留 Ame“爱了,太喜欢了”
西语 Ame,日语目标第一轮旧 prompt 恰好译对;第一版新 prompt 仍误保留最终复测:“大好き、すごく気に入った”
世界书,西语目标返回中文原意,没有译成西语西语完整翻译,使用 lorebook
三行投诉,日语目标三行合并成一段保留三行
葡语 + 英语双语评价合并为一段保留两段,第二段原有英语不重复改写

即使具体问题在小样本中改善,也不能承诺以后绝不漏译或损坏格式。历史缓存问题不会因 prompt 更新而消失。

最终格式复测:西语 lorebook 正确,日语三行反馈保留实际换行并使用 mushies。3,685 字符长公告在第一版和最终版各有一次 180 秒超时;原 prompt 本次成功返回,但确实丢失代码围栏。无法确认新版已修复长公告的代码块问题,也不能从这两次请求区分供应商波动和 prompt 导致的性能退化。上线前仍需验证这一项。

本次总计发起 34 次模型请求,32 次返回、2 次超时。返回的 usage.cost 累计 $0.08534263882(约 $0.085);两次超时没有返回 usage,可能的服务端费用未包含在内。这些本地评测没有写入生产 usage_logs,也没有计入前面的历史数据库快照。

首轮状态:DONE_WITH_CONCERNS。完成只读审计、本地 prompt 更新、14 组模型对照和 6 次定向复测,以及当时版本的 48 项专项测试、完整构建、完整类型检查。未提交、未部署、未批量重译。后续迭代和最终验收见下节。

用户授权后的持续实测与上线候选

用户授权继续运行原有样本,随后明确授权新增 12 条公开评论及人工格式用例。所有付费请求仍使用 OpenRouter 上的 GLM-5.3,结果仅保存本地,没有更新生产译文或生产用量记录。

实际发现并处理的问题

  1. 单纯加长 prompt 不能可靠保护代码。第二阶段 60 次输出中,长公告两次丢失围栏,人工 Markdown 用例也发生一次代码变化。新增 translate-format.ts:把 fenced code、单行 inline code、模板变量转换为不可编辑标记;生成后逐字还原。标记缺失、重复、乱序或额外包裹反引号都会被拒绝。
  2. 新流程比较换行/空行序列和标题层级,JSON 的标题与正文必须都是字符串;失败后立即重试一次,仍失败则记录 format_error,沿用现有退避重试,不写入损坏译文。整篇、长文分块和单独标题都接入了该流程。真实评测期间有三次格式检查触发重试,均在第二次成功。
  3. 对只改变了引号样式、文字完全相同的行,恢复原有标点;不猜测语言,不替换实际词语已经发生变化的行。双语评论中的原有英文段落最终逐字一致。
  4. 补充省略主语时的人称关系规则:不能把“理解错我的意思了”译成“我理解错了你的意思”。补充强制产品术语、中文 RP 语境下的 picante 译法及日语标准字形要求。食品语境仍译为“辣”,人名 Ame 仍保留,避免把已知例子的规则强套到其他语境。
  5. 供应商对照发现:同样的日语 prompt,Wafer 曾再次保留西语 Ame/picante;固定 Together 的 16 次日语对照没有再现这些问题。候选配置保持 z-ai/glm-5.3,优先 Together、排除 Wafer,其余供应商按延迟排序并保留故障切换;拒答备用模型及其按价格路由保持不变。这是本次样本支持的工程选择,不是对供应商整体质量的统计结论。
  6. 格式通过不等于翻译通过。一条中文目标的评测输出曾仍为英文;核对确认正式代码已有的 looksLikeUntranslated 会拦截它。最终验收同时使用实际格式函数、实际回显/语言/拒答/占位符检查,并对照原文检查语义。没有为此改写生产数据。

最终结果

最终样本为 30 个原文/目标语言组合,各运行两次:26 个真实公开内容组合(25 条不同原文),另有 4 个人工反例/格式用例,覆盖中英西日四个目标语言。

  • 最终 60 个结果全部通过格式、JSON、保护内容、回显、目标文字系统、拒答和占位符检查;逐条对照未再发现上述已知严重误译。并非 60 条独立随机样本,也不是全站准确率。
  • 中英西日术语、人称、食物与 RP 的 spicy 区分、真实人名 Ame、问题只翻译不回答、双语段落、引号、代码块与换行均有覆盖。
  • 最后只调整了中文规则,所以最终验收由 iteration-8-candidate 的 42 个非中文结果与 iteration-10-guards 的 18 个中文结果组成。自动确认另外三种语言的纯文本/JSON prompt 与最终代码逐字一致,并用最终格式代码回放全部 60 个原始 API 响应,结果一致。
  • 最终组合的响应耗时中位数约 4.1 秒,最长约 45.4 秒。长公告两次分别约 35.6 秒 / 6.3 秒,代码块均完整。之前按最低价格路由时,同一公告曾耗时 99 秒、双语评论曾耗时 139 秒;更早首轮还有 180 秒超时。延迟仍会波动,不能保证供应商不会超时。
  • 新增 10 个有实际行为覆盖的格式保护测试,加上原有测试,58/58 通过。最终完整构建 6/6 任务通过,完整类型检查 9/9 任务通过。
  • 本轮追加实验共 413 次 API 请求(包括定向对照、重复生成和三次格式修复重试),返回的实际 usage.cost 合计 $2.12449164064,约 $2.12。不包含上一轮约 $0.085,也不计入前面的生产历史快照。不能用格式检测的零失败替代语义评审:中间版本的 Ame、辣、人称和英文回显问题都保留在原始记录中。

最终证据在 .local-artifacts/translation-audit-20260922/release-validation.jsonrelease-validation-summary.json;全部中间结果、请求次数、实际费用及源码快照均保留。最终构建/类型检查日志为 build-approved-candidate.logtypecheck-approved-candidate.log

发布边界

结论:已达到本次样本验收标准,可进入发布;尚未提交、推送或部署。 涉及 translate.ts、新增格式模块及其测试、现有重试测试的一条断言,不含前端或数据库 schema 变更。工作区还有其他任务的改动,发布时应只包含经过确认的翻译改动及其必要依赖。

候选版仍只给单条评论提供自身文本,没有新增父评论上下文;程序保护也不是完整 Markdown 解析器,不保证所有嵌套结构或语义都能自动判错。旧缓存不会因本次修改自动失效;上线只改变后续生成,已有错误译文需要另行定向重译。活动翻译的独立 prompt 和格式流程没有改动,但共享的 GLM 供应商路由会采用新偏好。

Together 当前公开目录单价约为输入 $1.40/M、输出 $4.40/M tokens,高于最低目录价;新路由的目的在于本次观察到的质量与延迟,不承诺降低成本。价格依据为 OpenRouter GLM-5.3 供应商目录,路由字段见 官方说明

用户反馈后的 prompt 精简

用户认为长版 prompt 冗长,同意精简并复测。本节取代上文长版作为当前本地候选的说明;之前的评测记录保留。

中文普通评论的实际主 prompt:原版 933 字符、长版 4,155 字符、最终精简版 1,327 字符。精简版比长版减少 68.1%,比原版长 42.2%。这是字符数,不是模型 token 数;不含仅按需追加的保护标记和失败重试提示。

删除重复自检、逐项穷举格式、重复语气说明、完整示例译文及中日语言专用长段。保留六段:翻译任务边界、忠实自然、混合语言与专名、术语、格式、输出形式。JSON 输出要求也精简;代码保护、校验、重试和供应商路由没有削弱。

第一版精简实验 iteration-11-concise.json 在同样 30 个用例各两次的结果中,60/60 格式通过,但有 6 次明确的已知词义回归:肘击被直译(英西各两次)、RP 的 picante 译成“辣”一次、西语 Ame 在日语中当成人名一次。不能把格式通过算作翻译质量通过。

因此只恢复一行简短语境词义,未恢复长篇范例或重复自检。iteration-12-concise-glossary.json 的 59 个返回结果未发现上述词义错误,有一次原文回显经自动重试纠正;但人名与食物反例一次 180 秒超时、另一次耗时 99 秒,两次定向复测也都超时。不能据此称为稳定。

把 Ame 的解释收窄到西语短语后,iteration-14-concise-context.json 的六次均返回,但人工对照发现一条把“汤很辣”译为“汤很擦边”。此前根据返回状态过早宣称六条都正确,已向用户更正。补上食物反例断言,并最终明确区分:spicy/picante 描述食物 = 辣,描述性内容 = 擦边/色色;西语完整短语 "Ame, me encanto" = "I loved it",实际人名仍保留。六次定向验证 iteration-16-concise-food-explicit.json 全部正确,食物反例分别约 2.1/1.9 秒。长耗时与规则措辞相关是推测,不是已隔离供应商波动的因果结论。

中途完整实验 iteration-15-concise-final.json 有 48 个网络失败,保留原始记录,不计入通过。最后完整候选评测为 iteration-17-concise-release.json,同样 30 个用例各两次,采用正式格式函数和正式回显/目标语言检查。

最终代码本地专项测试 62/62 通过(包括语言判断测试),完整构建 6/6、类型检查 9/9 通过。日志:tests-concise-final.logbuild-concise-final.logtypecheck-concise.log。仍未提交、推送、部署或修改生产译文。

最终 iteration-17-concise-release.json 的 60 个结果均通过校验与原文对照的重点回归检查,1 次自动重试成功。人称、否定、产品术语、双语段落、代码块、真实人名/食物与 RP 词义区分均覆盖;没有再次出现本轮发现的“汤很擦边”。耗时中位数 3.087 秒,最长 19.378 秒。最终同一 prompt 的这批结果不是从不同版本拼接而来;有限重复样本仍不能证明全站零误译。

本次精简迭代共尝试 257 次请求,收到 206 次带 usage 的响应,返回费用合计 $1.23740428(约 $1.24);另有 48 次网络失败与 3 次超时未返回 usage,其可能的费用无法由本地日志确认。该金额仅为本次精简阶段,不包含上文长版测试费用。当前实际 prompt 导出为 .local-artifacts/translation-audit-20260922/concise-prompt.txt;精简统计为 concise-metrics.json,最终验证明细为 iteration-17-concise-release-summary.json

当前本地发布候选采用最终精简版;保留程序保护和失败重试。不要将本次中间版本失败与最终 60 个通过结果混为一谈,也不承诺精简必然降低推理费用或所有请求的延迟。