用ReadAny CLI精排EPUB:draft/history/diff/validate全流程,AI改书不碰原文件
【免费下载链接】ReadAnyAI-powered cross-platform e-book reader with semantic search, RAG chat, local vector store, notes, TTS, and WebDAV sync.项目地址: https://gitcode.com/gh_mirrors/re/ReadAny
ReadAny 是一款 AI 驱动的跨平台电子书阅读器,而它的 ReadAny CLI 提供了一套「EPUB 精排」工作流:通过 draft(草稿)、history(操作日志)、diff(差异对比)、validate(结构校验)四个环节,让 AI 或你自己安全地修改 EPUB 书籍——所有改动只发生在独立草稿副本上,原始文件永远保持原样,随时可撤销、可对比、可导出。
为什么 AI 改书需要"草稿隔离"机制?
直接让 AI 改写你的 EPUB 原文件风险很大:改坏了没有后悔药,也难以确认 AI 到底动了哪里。ReadAny 的思路借鉴了代码仓库的「分支 + 提交记录 + diff」模式:
- draft(草稿):把原 EPUB 完整复制到一个受控工作区,后续所有修改都只落在副本上
- history(历史):每一步操作(创建、改章节、改元数据、撤销、丢弃)都追加一条带哈希的日志
- diff(差异):逐文件对比原书与草稿的哈希和大小,一眼看出改了哪些条目
- validate(校验):导出前检查元数据、manifest、spine、目录和资源引用是否合法
这套机制的完整设计见 docs/readany-cli/README.md,CLI 命令规格在 docs/readany-cli/05-command-and-tool-spec.md。
第一步:创建精排草稿
拿到书籍 ID 后(可用readany books list查询),一条命令创建草稿:
readany epub draft create <book-id> --profile editor执行后,CLI 会把原 EPUB 复制到drafts/epub/<draft-id>/source.epub,同时生成manifest.json(记录源文件哈希、状态)和history.jsonl(操作日志),并写入首条epub.draft.create记录。实现逻辑在 packages/core/src/epub/draft.ts 的createEpubDraft中——注意它先对原文件计算 SHA-256 并锁定路径,之后只操作副本。
草稿支持随时放弃:
readany epub draft discard <draft-id> --reason "试了下不想要了"第二步:读取与修改章节
读章节:默认返回可读文本,也可取完整 XHTML 供 AI 改写:
readany epub chapter read <draft-id> <chapter-id> --format xhtml改章节:把改写后的 XHTML 写入文件,再打补丁到草稿:
readany epub chapter patch <draft-id> <chapter-id> --xhtml ./chapter-01.xhtml如果是批量精排(比如让 AI 统一润色 20 个章节),可以用受限 JSON 计划一次提交,最多 50 个章节,每章仍单独记入 history:
readany epub chapters patch <draft-id> --patch ./batch-plan.json此外还有两个常用编辑命令:
readany epub metadata patch <draft-id> --patch ./meta.json # 改书名、作者、语言等元数据 readany epub toc rebuild <draft-id> # 基于 spine 重建 EPUB3 目录以上命令同样以 MCP 工具的形式暴露给外部 AI(如epub.chapter.patch、epub.toc.rebuild),AI 助手可以在授权 profile 下自动完成整本书的精排,而无需直接触碰你的文件。
第三步:用 history 和 diff 审查改动
history 审计:查看这个草稿发生过什么:
readany epub history <draft-id>返回 JSONL 解析后的条目列表,每步 patch 都带beforeHash/afterHash,改动的可追溯性一目了然。
diff 对比:逐条目比较原书和草稿:
readany epub diff <draft-id>实现见 packages/core/src/epub/diff.ts。结果会给出每个文件的added / removed / modified / unchanged状态、双方大小与 SHA-256,并汇总变更数量——这就是你的"改书前后对照表"。
后悔药:某次补丁不满意?
readany epub undo <draft-id> <operation-id>undo 会从undo/快照目录读取修改前内容并校验哈希一致后才回滚(防止草稿已被后续改动覆盖),回滚本身也会写入 history。核心逻辑在 packages/core/src/epub/draft.ts 的undoEpubDraftOperation。
第四步:validate 校验 + export 导出
修改满意后,先做结构体检:
readany epub validate <draft-id> --profile publisherpackages/core/src/epub/validate.ts 会检查:
| 检查项 | 级别 |
|---|---|
| 元数据缺少标题/语言 | ⚠️ warning |
| manifest / spine 为空 | ❌ error |
| manifest 条目缺少 id 或重复 id | ❌ error |
| spine 引用了不存在的 manifest 条目 | ❌ error |
| 目录或正文引用的资源文件缺失 | ❌ error |
只有errorCount为 0 时草稿才算valid。校验通过后导出新 EPUB(默认不覆盖已有文件、不改动原书):
readany epub export <draft-id> --output ./book-final.epub --profile publisher导出前会自动再跑一次校验,不合格则拒绝导出。
全流程一图流
| 阶段 | 命令 | 作用 | 权限要求 |
|---|---|---|---|
| 检查结构 | epub inspect <book-id> | 只读查看 package/manifest/spine/目录 | editor |
| 建草稿 | epub draft create <book-id> | 复制原书到受控工作区 | editor |
| 读改内容 | epub chapter read / patch | 读章节、替换 XHTML | editor |
| 元数据/目录 | epub metadata patch/epub toc rebuild | 改元数据、重建目录 | editor |
| 审计对比 | epub history/epub diff/epub undo | 追溯、对比、撤销 | editor |
| 校验导出 | epub validate/epub export | 结构体检、导出新书 | publisher |
适合谁用?
- 个人读者:给扫描版加修正、替换错字章节、重排目录
- 出版/编辑:批量精排校对,全程留痕可审计
- AI 玩家:通过 MCP 让 AI 助手完成整书润色,人只在 diff/history 环节把关
从draft到export,ReadAny CLI 把"改书"变成了一条可回滚、可对比、可校验的安全流水线——原文件始终安然无恙。更多细节可参考 docs/readany-cli/00-overview-and-acceptance.md 和 packages/cli/src/commands.ts 中的完整命令定义。
【免费下载链接】ReadAnyAI-powered cross-platform e-book reader with semantic search, RAG chat, local vector store, notes, TTS, and WebDAV sync.项目地址: https://gitcode.com/gh_mirrors/re/ReadAny
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考