news 2026/10/1 18:47:43

Wenyi断点续跑完全指南:为什么再运行同一条命令就能接着翻译

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Wenyi断点续跑完全指南:为什么再运行同一条命令就能接着翻译

Wenyi断点续跑完全指南:为什么再运行同一条命令就能接着翻译

【免费下载链接】wenyi将被语言阻隔的作品,带到读者的语言中。Bringing literature into your language.项目地址: https://gitcode.com/BigDawnGhost/wenyi

Wenyi(文译)是一个面向长文本的 AI 翻译项目,把整本书放进"全局视野"里翻译。它最大的实用特性之一,就是断点续跑:翻译中断后,你不需要重新来过,再运行同一条命令就能从上次停下的地方继续。这篇指南帮你彻底理解它背后的机制和正确用法。

上图的"运行记录"显示了 3 次独立运行——这正是断点续跑最典型的痕迹:每次中断后重新执行命令,都会追加一条新的运行记录,而不是推倒重来。

为什么长文本翻译特别需要断点续跑?

翻译一本小说通常需要数小时:全书预扫、逐章翻译、润色、审校,每一步都在调用大模型。这么长的时间里,意外几乎不可避免:

  • 🌐 网络抖动、API 超时、限流(HTTP 429)
  • 💻 电脑休眠、进程被 Ctrl+C 或强制关闭
  • 💸 模型额度用尽、余额不足

如果每次都从头翻译,不仅浪费时间,还会白白消耗 Token 费用。Wenyi 的设计目标就是:随时可以中断,随时可以接上。

为什么再运行同一条命令就能接着翻译?

秘密在于三个设计,它们共同构成了"状态即进度"的机制。

1️⃣ 每个完成的批次都立即落盘,状态目录是唯一真相

Wenyi 不会等整本书翻译完才保存。每翻译完一个批次(一批段落),就立刻写入本地状态目录:

state/<书名>/targets/<目标语言>/

章节中间结果、术语 SQLite 库、用量和报告都在这里。由于每个批次完成后即刻持久化,即使进程下一秒就被杀掉,已完成的译文也安全保存在磁盘上。相关的持久化逻辑可以在 packages/core/wenyi_core/pipeline/runstore.py 中查看,状态存储统一走 packages/core/wenyi_core/storage/protocol.py 协议。

2️⃣ manifest 用 SHA-256 哈希绑定源文件,确保"接的是同一本书"

状态目录里的manifest.json记录了源文件的 SHA-256 哈希。再次运行时,Wenyi 会先核对文件身份:

  • ✅ 同一份源文件 → 校验通过,继续续跑
  • ❌ 同名文件但内容变了 →拒绝续跑,要求重建状态

这一步防止了"状态对不上号"的尴尬:比如你换了个修订版的 EPUB,旧译文不能直接套在新内容上。初始化是最后提交 manifest 的,保证写入的原子性。

3️⃣ 已有译文自动跳过,只补齐未完成部分

续跑时,Wenyi 会先分离"已完成"与"待译"批次:已完成的章节和段落直接跳过,不产生任何模型调用和费用;只针对未完成部分继续翻译,并按原文顺序重新确定衔接上下文。

开启润色时更精细:章节 JSON 中每个段落的target_before_polish保留翻译阶段的译文,target保留润色后的最终译文——哪一步做完了,就从哪一步之后接着走。

实战三步:中断后如何续跑?

第 1 步:中断(或发现中断)

无需任何特殊操作。Ctrl+C、断网、关机都可以。中断后已落盘的批次不受影响。

第 2 步:用同一个源文件,再运行同一条命令

uv run wenyi translate book.epub

命令完全一样,Wenyi 自动识别到已有状态,跳过已完成部分继续翻译。

第 3 步:用 status 查看进度

wenyi status book.epub

可以随时确认章节完成情况和累计时长。timing.json只累计实际执行时间,两次运行之间的停机时间不计入。

💡 小技巧:也可以先用wenyi prepare book.epub只做准备(解析、风格分析、初始术语表),不翻正文;之后再跑translate复用状态继续翻译。

常见疑问 FAQ

Q:中断了 3 次,会重复翻译或重复计费吗?不会。已完成批次命中缓存直接跳过,Token 用量在各次运行间累加到同一份usage.json,不会重复计费。

Q:改了源文件内容还能续吗?不能直接续。manifest 的哈希校验会拒绝并提示重建状态——这是保护你的译文不被套在错的内容上。

Q:审校(Review)也支持续跑吗?支持,但语义不同。审校每次都会全量重审完整译文并创建新的时间戳审校目录;interrupted和failed状态的审校都可续跑,下次review继续同一目录而不是新建。详见 docs/zh/pipeline.md — 断点续跑。

Q:SRT 字幕翻译也能续跑吗?能。字幕走轻量路径,进度落在state/srt/<slug>/targets/<目标语言>/,batches/中已缓存的批次会跳过,实现逻辑在 packages/core/wenyi_core/srt/store.py。

Q:想从头重新翻译怎么办?只有这时才需要清理对应的状态目录或改用新的目标目录。

状态目录里都有什么"断点"?

以 SRT 为例,目录结构一目了然(书籍目录类似,额外含章节 JSON 与术语库):

state/srt/<slug>/targets/<目标语言>/ manifest.json # 源身份、字幕条数、配置 cues.jsonl # 每行一条字幕的翻译状态 batches/ # 模型原始批次结果,供续跑 usage.json # 跨续跑累计 token timing.json # 累计执行时长与每次运行用时 events.jsonl # 运行事件与 LLM 重试记录

书籍状态目录还包含glossary.db(术语 SQLite 库)和reviews/(审校记录)。完整说明见 docs/zh/usage.md — 中断与续跑。

续跑之后:直接导出成品

断点续跑还有一个隐藏福利——assemble可以在不调用任何模型的情况下,把当前已落盘的一致快照重新导出为成品。就算另一个终端还在继续翻译,导出读取的是调用时已落盘的快照,不必等整本书结束。

总结

Wenyi 断点续跑的本质可以概括为一句话:批次级检查点 + 内容哈希校验 + 幂等跳过。

  1. 每批译文立即落盘 → 中断不丢进度
  2. manifest 哈希绑定源文件 → 保证续的是同一本书
  3. 已有译文自动跳过 → 不重复翻译、不重复计费

所以"再运行同一条命令"不是玄学,而是状态目录在默默替你记账。把长篇小说放心地交给 Wenyi,睡一觉起来接着跑就好 😴📚

更多机制细节可参考 docs/zh/pipeline.md 与 docs/zh/architecture.md。

【免费下载链接】wenyi将被语言阻隔的作品,带到读者的语言中。Bringing literature into your language.项目地址: https://gitcode.com/BigDawnGhost/wenyi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 18:47:12

大文件传输为什么慢?2026 分片上传与秒传原理拆解

传输慢通常不是你家带宽的问题&#xff0c;而是服务端在账号维度上做了速度分层&#xff1b;"秒传"也不是真的没传&#xff0c;而是服务端通过文件指纹匹配到了同一份数据&#xff0c;直接建立引用。一、上传链路发生了什么一次大文件上传一般要经过这几步&#xff1…

作者头像 李华
网站建设 2026/10/1 18:46:59

用Tkinter给Python脚本套上GUI:从命令行到桌面工具实战

很多人的 Python 脚本写得很顺手&#xff0c;但一到给别人用&#xff0c;就卡在了一个尴尬点&#xff1a;对方看到命令行窗口直接退避三舍。我最早写工具脚本也一样&#xff0c;自己敲命令怎么都行&#xff0c;同事要用的时候&#xff0c;光教他敲python tool.py --input xxx -…

作者头像 李华
网站建设 2026/10/1 18:45:26

直筒拉伸件拉伸次数与工序尺寸计算方法详解

干了这么多年五金冲压模具相关的设计&#xff0c;被问到最多的问题之一就是&#xff1a;这张直筒拉伸件图纸&#xff0c;到底要拉几次才能合格&#xff1f;每次拉出来高度、宽度该是多少&#xff1f;说实话&#xff0c;这问题听着像入行基本功&#xff0c;但真到了CAD面前&…

作者头像 李华
网站建设 2026/10/1 18:45:26

芯片工程文件安全传输:WebUploader分片上传与AES-256-GCM加密实践

芯片制造行业的工程文件传输&#xff0c;看起来是个再平常不过的动作&#xff0c;实际上是个挺折磨人的活。GDSII版图、OASIS掩模数据、DFM报告、WAFER量测报表&#xff0c;随便拎出来一个都是几个GB起步&#xff0c;几十个GB也不稀奇。早期很多公司就是FTP一扔了事&#xff0c…

作者头像 李华
网站建设 2026/10/1 18:44:58

KMP算法详解:从next数组手推到代码实现,彻底搞懂字符串匹配

我在学习字符串匹配的时候&#xff0c;第一次接触 KMP 算法&#xff0c;说实话是有心理阴影的。网上帖子看了不少&#xff0c;next 数组的计算方法五花八门&#xff0c;有说从 1 开始的&#xff0c;有说从 0 开始的&#xff0c;还有说整体右移再补负一的&#xff0c;同一段代码…

作者头像 李华
网站建设 2026/10/1 18:44:31

BERTScore与Astra模型在法律AI中的可验证评估实践

1. 项目概述&#xff1a;当AI建议在LinkedIn上“半技术”地冒充专家 最近刷LinkedIn时&#xff0c;你有没有被这类内容扎过眼&#xff1f;——标题写着《用BERTScore优化LLM微调流程》&#xff0c;点开正文却只有一张模糊的PyTorch截图、两行没注释的代码、三句“效果提升显著”…

作者头像 李华