[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92316":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},92316,"wenyi","BigDawnGhost\u002Fwenyi","BigDawnGhost","将被语言阻隔的作品，带到读者的语言中。Bringing literature into your language.",null,"Python",1018,106,3,0,708,64.09,"MIT License",false,"main",true,[],"2026-07-22 04:02:05","# 文译\n\n专注于将多语言 EPUB、FB2 或 TXT 小说翻译成中文，并尽量保留 EPUB 原排版、图片、目录和跳转。\n\n项目的日常入口只有一个命令：`translate`。它会完成预扫、分析、翻译、可选润色、章末审校、标点规范化和 EPUB 导出；中断后可以继续跑。\n\n## 快速开始\n\n```bash\nuv sync\nexport DEEPSEEK_API_KEY=sk-...\nuv run trans-novel translate book.epub\n```\n\n翻译完成后，默认会在源文件目录下生成译文 EPUB。运行状态、章节 JSON、术语库和报告会放在 `state\u002F` 目录下。\n\n中断后继续：\n\n```bash\nuv run trans-novel resume book.epub\n```\n\n查看进度：\n\n```bash\nuv run trans-novel status book.epub\n```\n\n仅重新导出 EPUB：\n\n```bash\nuv run trans-novel tools assemble book.epub\n```\n\n## 输入和输出\n\n- 输入：EPUB、FB2、TXT。\n- 默认输出：中文 EPUB。\n- EPUB 输入会按原 XHTML 模板回填译文，尽量保留原书样式、图片、目录和锚点。\n- TXT 输入会生成新的 EPUB。\n- 需要纯文本时使用 `--format txt`。\n\n示例：\n\n```bash\nuv run trans-novel translate book.epub\nuv run trans-novel translate book.epub --format txt\nuv run trans-novel translate book.epub --chapter 3\n```\n\n## 常用开关\n\n```bash\nuv run trans-novel translate book.epub --polish\nuv run trans-novel translate book.epub --no-polish\nuv run trans-novel translate book.epub --qa\nuv run trans-novel translate book.epub --no-qa\n```\n\n`--polish\u002F--no-polish` 会覆盖 `config.yaml` 里的 `pipeline.polish`。当前仓库的 `config.yaml` 写的是 `polish: true`，所以不加参数时默认会润色；代码层面的缺省值是 `false`，只在配置文件没写该字段时生效。\n\n润色会让每个翻译批次多一次 `strong` 档 LLM 请求，质量可能更稳，但会明显增加耗时和成本。已经翻译完成的批次会被断点续跑跳过，后来再开关润色不会自动重跑旧译文。\n\n## 配置\n\n主要配置都在 `config.yaml`：\n\n- `language.source`: `auto` 由模型识别源语言，也可以写死语言代码，如 `ja`、`en`、`ko`、`ru`、`de` 等。\n- `llm.tiers`: 配置 `strong`、`cheap`、`fast` 三档模型。\n- `pipeline.review`: 章末审校。\n- `pipeline.autofix_severe`: 对严重问题自动重译并采纳通过校验的结果。\n- `pipeline.polish`: 翻译后再做中文润色。\n- `pipeline.backtranslate_sample`: 回译抽检比例，`0` 为关闭。\n- `pipeline.consistency_qa`: 全书跨章一致性扫描。\n- `pipeline.book_understanding`: 翻译前预扫整本书，生成全书概览和逐章梗概。\n- `pipeline.rolling_context_segments`: 每批翻译时带入的前文译文段数。\n- `segment.max_chars_per_batch`: 每个翻译批次的大小。\n- `segment.max_chars_per_segment`: 超长段落的拆分阈值。\n\n离线测试或调试流程时，可以把 `llm.provider` 改成 `fake`，不会发网络请求。\n\n## 工作流程\n\n默认连续流程大致是：\n\n```text\n读取输入\n→ 解析章节、正文段落和 EPUB 目录\n→ 模型识别源语言（或使用配置指定语言）\n→ 预扫整本书，生成全书概览和逐章梗概\n→ 分析样章，建立初始术语表\n→ 按章、按批翻译\n→ 可选润色\n→ 标点规范化\n→ 章末 review\n→ 可选严重项自动重译\n→ 可选一致性 QA\n→ 回填导出 EPUB\u002FTXT\n```\n\n每个批次翻译完成后都会写入 `state\u002F`，所以长书中断后可以续跑。已经有译文的批次会跳过，只补未完成部分。\n\n## 一致性机制\n\n- **术语库**：人名、地名、专有名词和敬称会进入 SQLite 术语库，翻译时按配置注入提示词。\n- **全书理解**：翻译前预扫源文，生成全书概览和章节梗概，让早期章节也能参考全书走向。\n- **滚动上下文**：章内批次串行处理，后一个批次能看到前面最近几段译文。\n- **段数对齐**：每批输入 N 段，要求模型输出 N 段 JSON；段数不符会重试，仍失败则逐段兜底。\n- **章末 review**：按章检查漏译、误译、术语、人称等问题；默认只记录问题，是否自动修复由 `autofix_severe` 控制。\n- **标点规范化**：译文统一为简体中文大陆常用全角标点。\n\n## 常用工具\n\n```bash\nuv run trans-novel tools glossary book.epub list\nuv run trans-novel tools glossary book.epub conflicts\nuv run trans-novel tools qa book.epub\nuv run trans-novel tools report book.epub\nuv run trans-novel tools assemble book.epub\n```\n\n这些工具主要用于查看术语库、检查一致性、生成报告或重新导出成品。QA 和报告默认只汇总问题，不会自动改正文。\n\n## 模型档位\n\n默认配置使用 DeepSeek，并通过 OpenAI SDK 调用 `https:\u002F\u002Fapi.deepseek.com`。\n\n- `strong`: 翻译、润色、全局分析、标题翻译。\n- `cheap`: 章末 review、一致性 QA、回译比对。\n- `fast`: 全书预扫、章节梗概、术语抽取、回译等机械任务。\n\n如果模型 ID 变化，直接改 `config.yaml` 里的 `llm.tiers`。\n\n## 项目结构\n\n```text\ntrans_novel\u002F\n  ingest\u002F       输入解析、EPUB\u002FFB2\u002FTXT 切分\n  llm\u002F          LLM 抽象接口、DeepSeek provider、FakeClient\n  glossary\u002F     SQLite 术语库、抽取、冲突处理\n  agents\u002F       分析、翻译、审校、润色、一致性、提示词\n  pipeline\u002F     编排器、断点状态、滚动上下文、校验\n  postprocess\u002F  标点规范化\n  assemble\u002F     EPUB\u002FTXT 回填导出、QA 报告\ntests\u002F          离线测试\n```\n\n## 测试\n\n```bash\nUV_CACHE_DIR=\u002Ftmp\u002Fuv-cache uv run python -m unittest discover -s tests\n```\n\n如果本机 `uv` 缓存目录可写，也可以直接运行：\n\n```bash\nuv run python -m unittest discover -s tests\n```\n\n## 贡献\n\n欢迎提交 bug 修复、格式兼容、测试样例和文档改进。开发说明见 [CONTRIBUTING.md](CONTRIBUTING.md)。\n\n公版书翻译生成的状态目录可在 [wenyi-bookcase](https:\u002F\u002Fgithub.com\u002FBigDawnGhost\u002Fwenyi-bookcase) 查看，也欢迎提交分享；请勿提交或分享无授权的版权文本、私人书籍或包含敏感信息的 `state\u002F` 目录。\n\n项目交流QQ群：1055065098\n\n## 憧憬与不足\n\n本项目为作者个人兴趣所开发，仅在于针对长文本书籍的译介做出一份微薄的努力，未来想让翻译在够准确的前提下更加顺畅，努力从可读向好读迈进。现阶段翻译文本一些口头禅前后翻译不一致，专有名词翻译不准确的问题，已经改进！如果还有什么问题，可以提交issue，如果你有什么想法，欢迎在讨论区提出，如果你有一定的编程能力，欢迎给我提交PR，让这个项目变得更好。👏\n\n## 星标历史\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=BigDawnGhost%2FWenyi&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=BigDawnGhost\u002FWenyi&type=date&theme=dark&legend=top-left&sealed_token=VFuKZdjDh-9e2mG4qlvqeSpCkWCoRf9ZRy0hIDLdaECFQeoNNlQ20QxSD4PuvTZp1RJg7J2s5hr57Eq66paMrhikuuI3kc41uZZCYb-bTqsUafeSB7AVdhw7bmz70NhkVXABHtSIHdw0DROZaInmznYJ651gP2klEeW8OOM8EkfJnXgDld6f0xn8mIJ9\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=BigDawnGhost\u002FWenyi&type=date&legend=top-left&sealed_token=VFuKZdjDh-9e2mG4qlvqeSpCkWCoRf9ZRy0hIDLdaECFQeoNNlQ20QxSD4PuvTZp1RJg7J2s5hr57Eq66paMrhikuuI3kc41uZZCYb-bTqsUafeSB7AVdhw7bmz70NhkVXABHtSIHdw0DROZaInmznYJ651gP2klEeW8OOM8EkfJnXgDld6f0xn8mIJ9\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=BigDawnGhost\u002FWenyi&type=date&legend=top-left&sealed_token=VFuKZdjDh-9e2mG4qlvqeSpCkWCoRf9ZRy0hIDLdaECFQeoNNlQ20QxSD4PuvTZp1RJg7J2s5hr57Eq66paMrhikuuI3kc41uZZCYb-bTqsUafeSB7AVdhw7bmz70NhkVXABHtSIHdw0DROZaInmznYJ651gP2klEeW8OOM8EkfJnXgDld6f0xn8mIJ9\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n","文译（Wenyi）是一个面向文学作品的多语言小说自动化翻译工具，专注于将 EPUB、FB2 或 TXT 格式的外文小说高质量译为中文，并最大程度保留原文排版、图片、目录结构与内部跳转。其核心特点包括：基于 LLM 的分阶段流水线处理（预扫→术语构建→分章分批翻译→润色→章末审校→标点规范化→一致性 QA）、断点续译能力、滚动上下文与全书理解机制以保障术语和风格统一，以及可配置的多档模型调度策略。适用于个人读者、小众文学译者及出版辅助场景，尤其适合需兼顾翻译质量与格式完整性的长篇小说本地化任务。",2,"2026-07-08 04:30:04","CREATED_QUERY"]