书籍管线 · v5

流程说明 · v5 规则更新与代码审查 · 2026-09-06

PDF → BookMD → HTML
Astra 分工与固定生成器

先从 PDF 建立可追溯来源,用 BookMD 和对象登记保存正文、图表与公式,再运行已写好的固定生成器。原由 Sol 承担的职责全部改交 Astra;生成器能力不够时停止转换,说明问题,由你决定是否及如何修改。流程放在开头,问题解释和新增插件审查放在最后。

流程规范,不是已完成状态Spark 纯文本 · Luna max 常规视觉 · Astra 疑难与获准工程图片默认保留原图生成器不可擅改

一 · 整体管线

先固定来源,再做内容,最后生成与检查成品

阅读顺序:来源准备 → 来源审核 → BookMD 制作 → 内容审核 → HTML 生成 → 机械验证 → 成品审核 → 发布。各环节的模型分工紧接在下一节;实际试跑状态见文末增补。

  1. P0 · 固定范围与版本

    程序记录 PDF 哈希、物理页范围、章节范围、政策版本,以及用户确认的固定生成器、模板、组件与验证规则版本;明确整书或试跑。先核对已声明能力;发现不支持的内容类型或结构就进入 HOLD_FOR_USER,不能自行扩展生成器。不能用候选抽取结果反推原书范围。

  2. P1 · 观察 PDF,建立来源候选

    程序提取原始文字、图像、页面截图;Luna max 看原页做 OCR、分区和阅读顺序候选。原始抽取不被“清洁结果”覆盖。

  3. Gate A · 来源六专项

    独立检查整页区域覆盖、OCR、源阅读顺序、公式发现、表格发现、图片提取。全部完成、问题修完且证据有效后,来源快照才可冻结。

  4. P2 · 形成 BookMD 与对象登记

    Spark 清理和翻译纯文本,包括图题、表内文字;Luna max 识别数学与表格的结构。图片默认原图。正文、公式、图、表通过稳定 ID 与来源关联。

  5. Gate B · 内容七专项

    检查译文、纯文本连续性、块类型、数学结构、表格结构、图片使用规则和交叉引用。检查的是中间内容,不提前替代浏览器视觉验收。

  6. P3 · 固定生成器构建 HTML

    只运行冻结的现成代码:解析受限 BookMD → 语法树 → 绑定来源和对象 → 固定组件渲染 → 嵌入资源。HTML 不是修复源;不支持的结构、组件缺陷或需要越界配置都停止当前转换并报告,不自动改引擎、不转成截图绕过。

  7. Gate C · 机械验证

    程序验证结构、引用、格位、数学合法性、内容序列、资源和构建模式;生成带哈希的结果。不使用 AI 凭感觉认定代码断言通过。

  8. Gate D · 成品八专项

    冻结实际 HTML 后,分别审核文本版式、数学、表格、插图、阅读器、资源、重复和可访问性。视觉任务必须收到浏览器实际截图。

  9. P4 · 正式打包与发布

    固定程序核对 A/B/C/D 都属于当前版本、没有未解决问题,再上传并验证公网加载。样书预览是另一个明确标注的通道,不能借预览上传绕过正式门禁。

二 · 各环节的模型分工

高吞吐纯文本给 Spark,常规视觉给 Luna max

以下为最新项目路由:原来分配给 Sol 的全部职责改用 Astra,保留 high / xhigh 档位;Spark 与 Luna max 的职责不变。它不是官方翻译质量基准。生产与审核可以用同一型号,但必须是不同任务、独立判断,输入与范围可追溯。

环节默认执行者具体做什么什么时候用 Astra
范围冻结、提取、截图固定程序PDF 哈希、页范围、原始抽取和图像提取;不做语言理解。工具失败由 Astra high 定位;如需改工具链或生成器,先停止并提出方案,获得用户批准后另做工程修订。
OCR、页区与源顺序Luna max看原页转写,判断图题/正文归属,给出源顺序及不确定区域。补充放大图和上下文仍无法确定的少量区域交 Astra high/xhigh。
纯文本清理Spark处理断行、空格、软连字符等候选;不得改写含义。来源疑问回 Luna 看图。不因“吞吐高”改交 Astra;只有具体未决语义问题才升级。
翻译与术语Spark正文、标题、图题、表格文字、注释、可访问说明;译名和用法提示分字段。少量术语冲突、复杂关系句;只发相关来源、译文和上下文。
数学与表格录入Luna max从源图识别数学关系、行列和合并格;文字翻译另外交 Spark。复杂矩阵、嵌套结构或难辨符号交 Astra xhigh;不能猜不可读信息。
原图提取后的对照Luna max看原书图和提取图:裁剪、子图、标注是否完整。画面低清仅记录。少量无法确定的原图/提取图差异;不把原书事实审判加给该任务。
用户指定图片重绘ChatGPT Image 工具仅对指定图、按原图参考和授权范围生成候选;Luna max 独立比图。Astra 只处理未决比图问题;不代替生图工具编写矢量绘图。
固定生成器的运行与能力缺口固定程序;Astra high / xhigh 诊断生成器已提前写好。日常只运行,不让模型临时编写解析器、组件或修复函数。遇到不支持内容,Astra 提供最小复现、范围和方案。没有用户批准不能改代码;获准的独立修订任务中,局部工程用 high,结构或跨组件设计用 xhigh。
日常构建、机械门、上传固定程序运行既定逻辑,产出日志和状态。AI 只处理失败原因,不代填通过记录。确认程序缺陷也不能自动修:Astra 解释原因并请用户决定;禁止代填 PASS 或放宽门禁。

可调用的模型标识:gpt-5.3-codex-spark、gpt-5.6-luna(max)、gpt-6-astra(high/xhigh)。官方文档将 Spark 标为纯文本;Luna 和 Astra 支持图像输入;Astra 的模型标识为 gpt-6-astra,官方支持 high / xhigh 推理档位。依据:Codex 模型说明、Luna 模型页、Astra 模型页。模型文档核对日期:2026-09-06。

三 · 中间格式与生成器

Markdown 写文字,对象登记保存结构

不是把普通 Markdown 随便导入浏览器,而是使用受限的 BookMD 语法;否则复杂表格、矩阵和来源映射仍会变成自由文本。

---
schema: bookmd/1
title: 示例章节
---

@block id=p020-g03 kind=paragraph source_map=sm-p020-g03
这里是经过对照的译文。行内数学由 @math eq-inline-01 引用。
@end

@equation eq-01
@figure fig-1-18
@table table-1-01

正文文件 + alignment.json + math.json + tables.json + figures.json
                         ↓
                    固定组件生成
                         ↓
                     output/book.html

本段是结构示意,实际语法以生成器的 CONTRACT 为准。
内容上游怎么保存生成器怎么处理改错改哪里
正文与图题文字Spark 产出译文;稳定块 ID;来源区间对齐。图题与正文身份分离。按块类型生成段落、标题、列表、引用、注释;禁止把制作提示当正文。只改对应文本单元或块类型;保留 before/after 和来源。
图片原图及来源记录;裁剪范围;图题;若授权重绘则另存逐图授权与候选记录。读取已审核的指定资产,统一尺寸与布局;不在生成时临时调用生图。修改提取范围、选用资产或图题字段,不修改 HTML 内的图片字符串。
公式稳定 ID 和可验证的数学语法树;LaTeX 可作编辑输入,但解析后只认一个权威结构。固定原生数学组件,无截图背景;行内与独立公式分开。当前原型使用受限 MathML AST。只改合同已支持的公式 AST 数据;不用正则猜边界。若必须改共享数学组件或新增类型,停止转换并等待用户决定。
表格格位、行列、合并关系、标题和脚注;文字翻译与网格结构分别处理。生成原生 table;局部滚动由表格容器负责,不挤坏整页。改单元格或表格结构;禁止笼统“修 table”顺便吞入前后段落。

八类公式模板作为目标规范保留:行内上下标、映射与元组、向量与矩阵、行列式、方程组、求和与上下限、多行对齐、表内数学。某类模板出现在示例报告里,不等于冻结生成器已完整支持该类所有结构;以用户确认版本的能力合同为准。模板不能自动保证识别忠实度。

生成器固定:允许修改数据,不允许顺手修改引擎

范围可以做不能擅自做
内容输入按既有合同更正指定 ID 的译文、来源映射、数学 AST、表格格位、图题及原图选择;保存前后差异。发明新块型、新字段含义,或用原始 HTML 绕过解析。
文档化配置仅使用批准版本已经支持的配置项和值域。借配置注入 CSS/JS,覆盖全局组件,放宽合法性断言。
引擎与配套规则读取版本和能力说明;运行;诊断;提出变更方案。自动改解析器、schema、数学渲染器、模板/CSS/JS、验证器或新增修复脚本来绕过固定流程。
能力不足 → 停止当前转换 → 等待你的决定。

先判断是输入写错,还是正确内容也无法由固定生成器表达。前者在既有合同内改输入;后者提交源页与对象 ID、截图/最小输入、生成器版本、实际错误、影响范围、可选方案及风险。没有批准,不继续生成正式产物、不改最终 HTML、不降级内容、不宣布完成。

HOLD_FOR_USER · 等待用户决定(工作流状态,不是假装已调用目标暂停接口)
原因:当前固定版本无法无损处理某源对象
附:源位置 + 最小复现 + 能力缺口 + 影响范围 + 方案
等待:用户决定是否修改、修改范围与采用方案
获准后:独立新版本修订 → 回归 → 确认切换 → 作废受影响旧证据 → 恢复转换

能力预检不能保证提前发现所有缺口;后续任何阶段发现同类问题都采用同一停止规则。Astra 有能力写代码不等于有权限改生成器。本报告的编辑代码不是书籍生成器,二者分开。

四 · 图片处理规则

原图是默认答案,重绘是一项逐图授权

本节取代 v3 中“低清或适合矢量表达的图片必须生成”的条件,不保留自动重绘的后门。

遇到的情况默认处理不能做什么
PDF 中有原始图片对象直接提取;保留来源页、图 ID、原始文件及哈希。使用原图进入书籍。不能仅因“有更漂亮的画法”替换内容。
图由多个 PDF 对象组成按完整图域渲染提取,保留所有子图、标注与箭头;核对裁剪范围。不能漏掉图内文字,也不能把相邻正文切进图内。
分辨率低或观感不佳优先确认是否有更高质量的原始嵌入对象;仍低清则保留,记录可读性限制。不自动补纹理、不猜字、不把生成细节当恢复细节。
几何图适合 SVG仍使用原书提取图。原 PDF 自带矢量内容可忠实提取或渲染。不手写 SVG/canvas 重画;“适合 SVG”不构成生图授权。
纸边、异色边框、固有背景可裁去图域外无关纸边;图内固有黑底、色块、线条必须保留。无法确定边界就先保留并标记。不以“去背景”为由抹掉图内信息;不另加与页面不协调的卡片底框。
原书有或没有图题有则保留其编号与忠实译文;无则不增加。必要的制作信息留在审核记录。不把“原书插图”“AI 重绘”之类制作说明擅自变成正文图题。
用户明确说“重做图 1.18”登记该图授权与修改范围 → 参考原图调用 ChatGPT Image → 独立对照 → 通过后采用。不能顺便重做其余图片;生成失败不能靠放宽忠实度要求通过。

公式和表格不受“保留原图”影响:公式仍以原生数学结构渲染,表格仍以原生表格渲染。否则等于把先前的公式截图问题带回来。

每图决策:
没有针对该图的明确用户请求 → 原书提取图
有逐图请求 → 校验 figure_id + 原图哈希 + 请求记录 + 允许修改范围
           → ChatGPT Image 生成候选 → 原图/候选截图对照
           → 通过才替换;不通过则保留原图并说明

图片审核问“与原图是否一致”,不问“原书科学观点是否正确”。

五 · 专项检查安排

21 个检查点:六个来源、七个内容、八个成品

21 是检查点数量,不要求同时开 21 个 agent,也不意味着每项都必须用 AI。每个任务包只包含一个检查点、一个模态子范围;代码负责的断言不包装成“专家意见”。

Gate A:来源本身是否被忠实登记

编号 / 中文名称只查这一项必须输入什么默认模型
A-COVERAGE
原页区域覆盖
是否有漏登记或错误排除的内容区。全部范围页的无框整页、可读分区及带框对账图;排除清单。Luna max
A-TEXT
OCR 文字准确性
转写字符、词句是否符合原页。原页文字截图与对应转写;不可读项必须标记。Luna max
A-ORDER
源阅读顺序
正文源块该怎样续接;不管 HTML 行段距。原页和相邻页、源块及顺序边;图题身份。Luna max
A-MATH
数学源对象登记
行内和独立数学对象是否漏登记、切错范围。全部原页及数学区域清单,不只检查已找到的公式。Luna max
A-TABLE
表格源结构登记
源表格、行列、合并格是否完整登记。所有表格截图及原始格位清单。Luna max
A-FIGURE
图片提取完整性
图片、子图、图内标注是否提取完整。原页图域与提取结果成对输入。Luna max

Gate B:BookMD 与对象内容是否正确

编号 / 中文名称只查这一项必须输入什么默认模型
B-PROSE
文本转换忠实度
清理、翻译后的内容是否同义完整;含否定、数值、单位及提示串入。源文与目标文本。正文、图题、表内文字分别分包,不能漏出总体应审清单。Spark
B-CONTINUITY
纯文本连续性
全序列是否断裂、跳章、回跳、异常重复或缺头缺尾。隐藏图片、样式和控件后的实际正文序列;分包边界有重叠上下文。Spark
B-SEMANTICS
文本块类型
段落、标题、列表、引文、注释是否分对类型。源文本身份与 BookMD 块;源版式有疑问回 A-ORDER,不让 Spark 猜图。Spark
B-MATH
数学结构忠实度
公式结构、主字形、上下标、行列关系是否与源式一致。源式截图与数学 AST 的可读投影。Luna max;难项 Astra xhigh
B-TABLE
表格结构忠实度
格位、行列、合并关系是否与源表一致;不兼做译文审查。源表截图与表格 AST 的网格投影。Luna max;难项 Astra xhigh
B-FIGURE
图片使用合规性
是否使用正确源图;替换图是否有逐图授权;不审原书事实。来源、最终资产、哈希和用户请求记录。代码核验 + Luna max 处理图像疑点
B-XREF
引用目标正确性
“见图/表/节”等引用是否指向正确对象。引用文本、目标清单及来源关系。Spark;存在性由代码先查

Gate D:浏览器中真实成品是否可读

编号 / 中文名称只查这一项必须输入什么默认模型
D-LAYOUT
文本版式
页边界、分点并列、标题、注释、行段距、缩进、异常空白和文字重叠。实际 HTML 的全部正文截图;缩略接触表用于找大问题,细节用可读截图。Luna max
D-MATH
数学显示
实际公式是否缺字、破碎、被裁切或退化为普通文本/截图。源式与 HTML 公式截图逐个成对,包括行内公式。Luna max;难项 Astra xhigh
D-TABLE
表格显示
表头、格位及首末列在实际视口是否显示完整。原表与 HTML 表格截图;局部滚动状态。Luna max
D-FIGURE
插图成品对照
与原图含义一致、没有丢失错配;图题格式和插入位置正确。原书图截图 + HTML 中该图截图,附附近引用与图题。不能只交图片文件路径或哈希。Luna max
D-UI
阅读器交互
目录关闭只留打开按钮;覆盖打开不挪正文;控件、锚点、全屏和关灯状态可用。402×874、3840×2160 视口及状态操作证据;位置、滚动测量。Luna max + 固定测量程序
D-RESOURCE
资源可用性
图片、字体、脚本、样式是否自包含且加载成功。资源清单、请求日志、离线加载与路径检查结果。固定程序;失败文本可交 Spark 归因
D-DUPLICATE
异常重复
相同文本、图片或邻接序列是否被错误重复插入。全书扫描候选和源页对应;区分原书重复与转换重复。代码扫描;文本候选 Spark、图片候选 Luna max,分开派单
D-A11Y
辅助阅读可达性
可访问树阅读顺序、名称与键盘可达性是否正确。可访问树、键盘轨迹;视觉焦点截图另分包。代码 + Spark 读语义;焦点视觉子任务 Luna max

所有专项都要绑定对应案例库的版本和案例 ID,再给本次应审对象,不用一句“认真通读”替代操作标准。无表格等不适用项需要来源范围支持的缺席证据;不能仅因表格登记为空,就认定原书没有表格。

六 · 冻结审核与修复循环

审核先读完同一版本,再修上游、重建、回归

  1. 先派单,后审核。调度器从冻结来源/成品生成每项 expected_ids,绑定规则和案例库版本;任务不能自己缩小范围。保存实际模型、任务 ID、快照哈希和开始时间。
  2. 发现第一项问题仍继续。该专项记录问题和截图后继续检查本专项余下范围;其他专项继续审核同一冻结版本。读取失败等工具故障需要明确记录缺失范围,不能把中止当完成。
  3. 审核期间不改被审文件。修复可以在新候选上准备,不能让仍在阅读的 agent 前半本看旧版、后半本看新版。
  4. 汇总后只改问题对应的上游。文本改文本单元,公式改数学 AST,表格改格位,图片改提取或资产选择,版式只改已支持的输入或文档化配置;需要改组件就停止并等待用户批准。每个补丁有精确旧值、允许变动范围、前后差异与回归要求。
  5. 重新构建并核验受影响范围。改单句不等于所有图片重审;仅在用户批准并切换组件新版本之后,才按影响范围回归该组件全部实例。具体由依赖与内容变更确定,不能仅把报告上的旧哈希换成新哈希。
  6. 全部当前证据满足要求才能过门。少一项、仍有问题、未读完、旧版本、缺截图,都不是通过。代码判定的是证据完整性和可计算规则,AI 负责其专项语义或视觉判断。
界面状态应如何产生不允许混成什么
未派单 / 等待前门没有实际任务,或正式前置 Gate 尚未通过。不显示“审核中”。工程草稿预演须单列。
审核中:已查 n / 应查 N来自当前任务的对象观察记录和任务运行状态。不能从对话时长、子任务数量推算完成度。
需修复专项完成且提交具体未解决问题;其它专项可继续当前快照。不能遇到一个问题就默认其余对象无问题。
证据不完整缺任务清单、对象记录、截图或必要结果。不同于“已审核且没有问题”。
已过期证据绑定的对象或依赖已经改变。不能让旧 PASS 继续放行新产物。
通过当前范围全部完成、问题归零、证据有效,机械聚合接受。不同于“脚本运行完”“模型说 PASS”“上传成功”。
等待用户决定正确内容超出固定生成器能力,或必须改引擎、组件、规则才能继续;提交具体缺口后停止当前转换。不是完成,也不是自动获准修代码;用户决定前不得自行推进相关构建或发布。

增补说明 · 问题、困难与疑问解释

结论:图片规则更新;正式审核仍有执行缺口

图片不再自动重绘

全部先从原书提取。像素低、看起来不够好、可以画成 SVG,都只记录问题,不触发重绘。用户明确指定某张图后,才调用参考生图。

不是界面没显示

v4 核查时 A、B、D 的正式任务清单缺失;聚合脚本返回“证据不完整”。C 已执行,但拒绝草稿构建和未批准图片。

模型按输入类型分工

Spark 处理纯文本;Luna max 处理 OCR 与常规视觉;Astra high/xhigh 只接少量难题和经用户批准的工程修订。固定脚本执行不另算一个 AI 模型。

本轮交付边界

v5 更新报告和执行规范,并对现有插件做静态审查与合成反例测试;没有启动全套书籍审核、重建样书、修改生成器或重装插件。下方 Gate 与工作量数字明确沿用 v4 的历史核查,不冒充本轮重跑。下文“应怎样执行”是新版要求,不冒充已经实现的调度系统。旧样书中已用的生成图片也没有因修改报告自动换回原图。

增补一 · 试跑问题与 Gate 实况

Gate 为什么显示没跑:审核任务根本没完整建立

核查范围为月球书前两章工程目录;v4 轮次实际执行了现有的 Gate 聚合脚本,v5 没有重新运行它。聚合脚本只读证据并判定状态,不会自动创建或运行审核 agent。

2026-09-06 核查结论:0 / 4 道正式 Gate 可认定通过。

执行:python3 scripts/gates.py --project-root . --gate ALL
退出码:1;总状态:FAIL
核查对象:已发布的前两章候选,不是整本月球书
门v4 核查返回结果具体证据说人话
A · 来源六专项EVIDENCE_INCOMPLETEE_ASSIGNMENT_MISSING
qa/assignments/A.json 不存在;正式 qa/gates/A 证据目录也未建立。
有抽取和 OCR 生产记录,却没给六项独立审核建立正式“必须检查这些对象”的清单。
B · 内容七专项EVIDENCE_INCOMPLETEE_ASSIGNMENT_MISSING
qa/assignments/B.json 不存在;正式 B 证据目录未建立。
做过 Spark 翻译对照和定点修复,但未汇成当前版本的七项完整签核。
C · 生成机械门FAILE_BUILD_NOT_RELEASE:构建仍为 DRAFT。
E_FIGURE_STATUS:图片未满足正式发布批准状态。
HTML 能生成、测试能通过,不代表它是正式构建。C 的拒绝是真实结果,不是“未显示”。
D · 成品八专项EVIDENCE_INCOMPLETEE_ASSIGNMENT_MISSING
qa/assignments/D.json 不存在;正式 D 证据目录未建立。
只做过部分浏览器操作,没有把全文截图、每个图表公式和交互状态交给八项完整终审。

脚本会在缺少任务清单时提前返回。因此上表是“当前首先阻止放行的原因”,不是所有潜在缺陷的完整列表。A、B、D 这次运行的是聚合判定,不能记成其专项审核已经启动。

真正的执行偏差

  1. 上次我优先做了工程试跑。我想验证来源账本、翻译输入、数学/表格结构和生成器能不能接起来,于是用显式草稿模式提前生成并发布了预览。
  2. 但我没有把后半段的正式审核调度补起来。缺的不只是几个 PASS 字段,而是独立的应审任务清单、绑定案例库的审核任务,以及修复后的全量有效证据。
  3. 生产任务的审阅不能顶替整道门。OCR 生产者的自检、翻译候选对照、图像候选比对、41 项代码测试,各自只证明一部分,拼在一起也不自动成为 A→B→C→D。
  4. “试跑交付完成”被我与“整条流程完成”交代得不够清楚。前者可以交工程结果,后者必须完成审核。这里是执行和状态说明的问题,不该让你自己从空白状态猜。
不能把失败归咎于两张图片。

即使马上取消强制重绘,A、B、D 缺清单和证据的问题仍然存在。样书还确认有“3.5 billion → 3.5 亿”“convection currents → 对流电流”“词表用法提示混入正文”等未解决文本错误。这些也是不能宣布通过的实际原因。

哪些工作确实做过

57 个范围内物理页,2,669 个来源原子,252 个分组,40 条明确续接;31 幅插图、2 张表、6 个已登记数学对象;402 个翻译 ID。已有 13 个翻译包、11 个独立忠实度报告及 1 个漏项补查、41 项生成器测试和部分浏览器测量。这些是工作量与局部证据,不是正式审核通过数。“6 个已登记公式”也不证明来源中只有 6 个应登记公式。

完整试跑案例见前两章试跑结果报告;旧报告中的强制生图讨论已被本版图片规则取代。

对月球书试跑的影响

图 1.18、2.7 不再需要为了满足旧规则而反复生图:允许直接保留原图,清晰度差照实记录。但两图仍要完成提取范围、标题、位置和含义对照,不能直接改成“审核通过”。旧样书中另有 15 幅生成资产;后续按本规范迁移时,无逐图授权的应换回原图。当前线上样书未执行这项迁移。

增补二 · 主要困难与失败风险

Markdown 限制修改范围,不替代内容判断

风险最常见的错法具体拦截办法
来源在进入账本前已遗漏所有已检测 ID 都有归属,却少了一段原文或一个行内式。全物理页覆盖清单独立于检测清单;无框整页观察后再对账。
跨页或图题归组错把图题当下一句,把页脚当正文,把原书异常擅自改顺。保留源块和边界 ID;看整页及邻页;区分源顺序、译文连续性与文本版式。
译文流畅但关系错量级错十倍,currents 词义错误,图题漏子图限定。Spark 独立源译对照;数值/单位配对检查和具体失败案例,不做全书盲替换。
原图模糊而模型想补全把“看不清”变成自信猜测,或者默认生成更锐利的伪细节。默认原图,模糊照实标记;没有逐图授权不允许重绘。
数学/表格结构错误矩阵主字形丢失、方程组散成段落、单元格吞掉正文。源结构专项 + 生成器结构断言 + 原页/HTML 截图对照,三者各管一层。
补丁修一处坏一片正则扩散、组件副作用、重新组装覆盖已审核译文。指定 ID 和旧值;只在既有合同内修改数据;内容/对象序列差异检查;受影响实例回归。组件修改须先获用户批准。
审核形式完成、实际没看拿任务数量当进度,拿自己数的 N 当应审 N,拿旧 PASS 当新批准。独立清单、实际调用记录、冻结快照、逐对象观察与截图;缺证据就不放行。

不能承诺“永远不再出错”。可以做到的是:不让漏派单、无证据、旧版本通过或已知未修问题被包装成终审完成;出现问题时能定位到原页、源块、对象、组件和责任检查点。

增补三 · 疑问解释

来源闭合、断文定位、编程与模型问题

来源清单怎样防止“漏了却还闭合”

有两套相互核对的清单:第一套从 PDF 页数和用户范围生成“每页都必须看”的清单;第二套才是抽取出的对象清单。Luna 的覆盖专项先看无框整页及分区放大图,再看带框对象对账图,找没有登记的区域、被误排除的内容。代码只能检查“登记内容都有归属”,不能证明未登记的内容不存在。

Gate A 的闭合条件是:全部范围页有有效观察证据;每个可见内容区均有保留、合理排除或待解决决策;保留区域映射到来源原子;无未解决区域;来源六项当前版本均完成。它是有证据的审核标准,不是对 PDF 信息完整性的数学保证。

源块 A 与 B 接不上,先定位再翻译

Spark 记录 A 的末句、B 的首句和源 ID,不自行脑补连接。调出 A/B 所在整页及相邻页,Luna 判断漏块、错阅读顺序、图题混入正文还是原书本来如此。漏块回 P1;错连接修阅读顺序;源文正常而译文跳义只修译文。不能看到跨页就机械拼接,也不能不说明就调整原书内容。

“确定性编程”不是要求 PDF→MD 时让模型写程序。

PDF→MD 的主要工作是识别、归组、转写和翻译;程序负责搬运数据与检查可计算规则。确定性主要指 MD→HTML:相同输入、组件和版本应生成相同结果。程序由工程阶段编写一次,日常执行不再由模型自由创作 HTML。

没有 Spark 时,不静默替换。

调度器应记录所需型号、实际型号与替换原因;Spark 不可用就明确报告,并征求是否改用其他型号。不要在报告写“Spark 翻译”,实际却交给 Luna。所有后续状态都应从实际任务记录读取,不能从计划表抄过去。

数量关系不能再混说。

本次新管线是 A 六项 + B 七项 + D 八项,七不是整个流程的专家总数。旧插件曾采用“七专家 + 三读者”;它与新管线的分阶段 21 检查点不是同一套已运行任务。若继续保留三名最终读者,他们也必须各有唯一专项和正式记录,不能用三个泛读 PASS 替代上述检查;本轮没有新增或执行三名泛读。

增补四 · 尚未完成的实施工作

怎样把试跑推进到正式通过

上表是应补齐的状态展示规范。当前原型有证据校验代码,但缺正式任务清单和完整派单/回收执行,不能声称这套状态面板已上线。

下一次真要把月球样书跑到通过,按这个顺序补

  1. 先由用户确认固定生成器与能力合同。新图片政策如与现成实现冲突,先报告冲突并请用户决定修订范围,不能自动改选图逻辑;在已支持的资产选择范围内,无逐图授权的生成图回原图,保留历史证据。
  2. 从物理 PDF 页范围创建 A 的六专项清单与证据包,实际运行、修复并冻结来源。不能直接给旧记录补一个 PASS。
  3. 依据确认来源重新核验 BookMD,解决已知译文问题,建立并完成 B 的七专项。
  4. 生成正式候选,执行 C;冻结新 HTML 后执行 D 的八专项及必要回归。
  5. 四道门都通过才替换正式书籍入口;预览与正式状态分开。这些后续执行不包含在本轮报告更新中。

增补五 · 来源与适用范围

设计规则、实际记录、模型文档分开看

  1. 最新用户决定:所有图默认不重做;只有明确指定某张图时才重做。原 Sol 职责全部切换 Astra;生成器固定,能力不足时停止并由用户决定是否及如何修改。本文图片政策与模型任务分工是项目执行规范,不冒充外部研究结论。
  2. 本地核查:月球试跑目录的 scripts/gates.py、build/validation.json、任务/证据目录存在性、qa/preview-open-issues.json 与 PILOT-HANDOFF.md。v4 于 2026-09-06 实际运行 ALL 聚合,返回 1;v5 只沿用这份历史记录,没有重跑书籍 Gate。
  3. 当前样书身份:月球书前两章候选,23,648,354 字节;SHA-256:febe6a847c725b22c95c33d3692bcebdd755325aa2721b6f386c937f4927ff13。范围为原 PDF 物理页 12–68;不代表整本书。
  4. 工程历史:前两章实测试跑与失败案例;此前完整管线方案 v3。v4 补充真实门禁诊断,并替代旧图片自动重绘政策;旧记录保留用于追溯。
  5. 模型能力边界:Codex 模型说明、GPT-5.6 Luna、GPT-6 Astra。只用来核对模态与推理配置;未将其作为本书翻译或视觉审核质量保证。
本轮结论

新方向是:原图默认保留,Spark 承担纯文本主力,Luna max 承担常规视觉,Astra 处理少数难题与获准的独立工程修订;但先前试跑缺少正式审核编排的事实必须补做,不能靠调整图片规则或改写状态说明消除。

增补六 · Astra 对现有插件的重新审查 · 2026-09-06

关键不是再加一句“认真检查”,而是让错误证据不能换来通过

结论:值得修改,而且有几处是已复现的代码漏洞。模型升级有助于处理难题,但不会自动修好一个接受空截图、错误映射和旧审核记录的校验器。

这是审查意见,不是已经完成的插件升级。

本轮更新报告和后续执行规范;插件、书籍生成器、线上样书都未改动。下面的实现建议需要你决定后才能进入独立的工程修改。新要求与旧插件有冲突时,以你这次的要求为准,不能照旧插件自动重绘、调用旧型号或改生成器。

21 / 21旧插件现有单元测试通过
10 个本轮额外最小复现实验,含一个拦截对照
23 份合成证据清空后,终审仍返回通过
0 处本轮对插件和书籍生成器的修改

审查对象要分清:现在有三套不同的东西

对象实际是什么本轮确认的边界
已安装插件与工作区插件入口说明、工作流、质量合同、七份案例库索引及绑定、阅读模板、初始化、校验、发布脚本和测试。核心校验脚本一致;仍采用“直接整合 HTML + 七专家 + 三泛读”的老机制。本轮是规则与代码审查,不是重新逐图复核案例库或逐页审核整本书。
月球书 BookMD 原型另一个项目里的 CONTRACT、固定 build 程序和 A/B/C/D 聚合程序。已有结构化输入和依赖哈希设计,不能把旧校验器的所有漏洞不加区分地归给它;它也不等于已经装入插件的通用生成器。正式审核缺失情况沿用前文 v4 记录。
本报告的新执行规范Spark / Luna max / Astra 分工,原图默认保留,固定生成器,21 个专项检查点。是你要求的执行合同,不是已实现的调度器。尤其不能拿这份表去证明实际任务已用指定模型运行。

最小复现:不是猜测模型会不会犯错

我复用插件自己的两页测试工程,在临时目录里更改一个条件,再调用其原有校验器。PDF 页数沿用原测试的模拟值 2;没有把假证据写进任何真实书籍项目,也没有伪造一次真实终审。下面的“通过”指这份合成输入获得程序 passed: true,不是书籍质量通过。

实验具体输入或改动实际结果说明什么
P01 · 图片根本不是图片沿用现有测试:PNG 文件内容只有 png、image 等文字;HTML 的部分 data URI 也不是有效 PNG。终审通过检查了文件/后缀,没有证明它可以解码并展示。
P02 · 空证据把 23 份截图、文本导出和台账文件全部清成零字节,审核 JSON 不改。终审通过“附件在”代替了“附件里有可核查内容”。
P03 · 指向不存在的正文译文映射的 target_id 改为 HTML 中没有的 missing-node。终审通过源块在清单里登记了,不代表它真的出现在成品里。
P04 · 文字变了,旧报告还有效实际正文从“连续正文。”改为“完全无关的替代内容。”;译文映射与审核记录保持旧值。终审通过既未对账输出文字,也没有让旧审核结果随产物变化失效。
P05 · 公式变普通文字登记的公式对象变为 <div id="equation-1">没有数学结构的普通文字</div>。终审通过公式校验没有要求该对象真正含有合法数学结构。
P06 · 覆盖数随便填七份报告均填总数/已查数 999,图清单其实只有 1 幅;确认问题数填 17,issues 仍为空。终审通过没有用独立应审清单对账,也没有校验统计与问题记录的关系。17 本身不必代表仍未修复,但必须有可解释的记录。
P07 · 没审核却显示通过删除全部七专家和三读者报告,运行非 final 的机械模式。两个审核分类均为 true机械模式可以不执行人工审核,但分类必须是“未执行”,不能用“没报错”显示通过;不等于 final 模式也允许报告缺失。
P08 · 长段落重复两次同一合成长段落插入两遍。终审通过当前重复阈值从三次起算,漏掉两次异常重复。
P09 · 三次重复对照同一长段落插入三遍。拒绝:HTML_DUPLICATE_TEXT证明重复检测确实运行了;P08 不是因为测试没走到这段代码。
P10 · 读取顺序被解析器改了<p>甲<span>乙</span>丙</p> 应按“甲乙丙”读取。all_text() 得到“甲 丙 乙”解析器先合并父节点文字,再追加子节点文字,丢失混合内容顺序。这不是浏览器显示结果,但会污染使用该函数的校验。
复现文件与命令(供工程追溯,不依赖这些文件才能读懂本报告)
插件根目录:plugins/pdf-book-to-html/
既有测试:python3 -B -m unittest discover -s plugins/pdf-book-to-html/tests -p 'test_*.py'
结果:Ran 21 tests — OK

额外探针:reports/scripts/probe-plugin-gates-v5.py
命令:python3 -B reports/scripts/probe-plugin-gates-v5.py
结果副本:reports/pdf2html-plugin-audit-v5-probes-2026-09-06.json

实验只更改 TemporaryDirectory 中的合成工程。
本轮没有修复这些漏洞,因此旧校验器仍保留上述行为。

逐项建议:改哪里、为什么改、怎样验收

优先级说明:P0 是可能错误放行或违反用户授权边界;P1 是覆盖、定位或维护可靠性。所有代码修改均为建议,不构成自动修改许可;涉及生成器、组件或配套验证规则时,必须走前文“等待用户决定”的流程。

优先级 / 问题已查到的具体依据建议如何处理验收时必须看什么
P0 · 旧规则与新要求冲突SKILL.md:24 仍强制子任务使用 gpt-5.6-sol high;第 52 行及 agents/openai.yaml 仍要求低清或适合矢量的图调用生图。统一一份版本化执行合同:纯文本 Spark、常规视觉 Luna max、原 Sol 职责 Astra;图片只凭逐图用户请求重绘。入口、派单器、案例库指引、校验与文档读取同一合同。任务回执的实际型号符合合同;无指定图授权时生成请求为零。仅把报告里的名称换掉不算插件迁移。
P0 · 生成器不是插件内的固定产品workflow.md:74 仍让 integrator 自由整合正文、图表、公式和界面;BookMD 原型位于另一个项目,尚不是插件统一固定入口。先选择并由用户确认一个已写好的生成器版本,登记支持的块型、数学类型、表格能力、配置与限制。转换任务只能提交合规数据,不能自行改引擎。构建前后生成器及组件文件无变化;遇到不支持结构输出能力缺口并停止,不偷偷改代码、降级截图或直接补 HTML。
P0 · 清单可以自我闭合旧初始化只复制 PDF 并记页数;validate_project() 核查“已登记块有归属”,不证明整页所有内容都已登记。保留由 PDF 范围独立产生的逐页必审清单;覆盖专项先看无标框整页,再与提取框比较。页内空登记、排除区域、低置信区域都要有明确处置。给一页故意漏一段的样本,不能因其余块全部映射就通过。零对象不能自动等于原书无对象;仍需视觉判断,不宣称数学保证。
P0 · 源—译—成品对账不完整P03/P04;validate_book.py:527–535 只在目标恰好存在时检查它是否非空,漏了不存在的分支。逐段确认目标存在且唯一,成品可见文本/结构与权威内容一致;明确哪些空白规范化允许,哪些数字、符号、顺序变化禁止。不存在目标、换词、少句、多句、错序分别失败;只加隐藏转录文本不能抵消读者实际可见层丢失。
P0 · 附件存在不等于证据有效P01/P02;_evidence_paths():259、_required_artifact():280 主要检查存在性及后缀。图片必须解码且尺寸有效;台账必须按 schema 解析并逐对象记录;截图绑定来源页、成品对象、视口与版本。图像内容是否表达一致仍交对应视觉专项。空文件、假 PNG、空 JSON 台账、缺一对象、截图来自另一图,分别被代码或专项对照拒绝。尺寸检查本身也不是看过图的证明。
P0 · 审核者自己填分母P06;_validate_specialists():644 只验证 total == reviewed,没有从冻结任务包验证应审对象集合。调度侧固定 expected_ids;报告逐项列 observed_id、判断和证据。要求集合相等、无重复、无缺项。问题数由问题记录计算,而不是自由填写。1/1、999/999 都不能替代真实对象集合;已修问题有修复和复查记录,未修问题必定阻止通过。
P0 · 旧审核继续放行新产物P04;旧 SKILL.md:63 甚至禁止要求内容摘要值;审核报告不绑定当前产物与依赖。需要的是简单版本绑定,不是复杂签名基础设施:记录源文件、权威内容、生成器、模板、规则与当前 HTML 的版本/哈希;依赖变动则相关审核过期。改一个受审对象后原 PASS 不能直接复用;未变化的独立对象可按已批准的复用规则保留,不能仅换报告里的哈希。
P0 · “未执行”被显示成通过P07;_report():981 用“没有该前缀的错误”计算各分类布尔值,而非记录该检查是否执行。使用明确状态:未派单、进行中、证据缺失、需修复、过期、通过、等待用户。汇总由检查实际执行状态和结果共同决定。删掉所有审核文件运行机械检查,应显示审核未执行;不能给 UI 两个绿色 true。月球原型前文的 A/B/D 不完整状态是另一套逻辑,不混为同一漏洞。
P0 · 数学/表格只查到外壳P05;validate_book.py:595–609 对公式主要拒绝 blockquote/空文字,表格主要确认存在 td/th。以生成器支持的 AST 为准,检验数学节点类型、操作数、上下标及矩阵格位;表格检验网格、合并、标题和脚注。来源忠实度与最终显示分别由专项检查。普通 div、空主字形、少一矩阵格、跨行合并错位均失败;不能靠写一个数学 class 名称通过。原型已具备的结构检查应保留复用,不重新自由造组件。
P1 · 校验器把文本顺序读错P10;Node.all_text():72 和 _visible_text():223 将父文字与子元素分开拼接。保留文本节点与元素的原始交错序列;纯文本连续性任务接收按实际 DOM 顺序导出的正文,不把 aria-hidden 等同于 CSS 不可见。带 span、em、链接、上下标的混合内容顺序均正确;视觉可见文本与无障碍文本分开测试。
P1 · 全书重复扫描不够完整P08/P09;第 469–486 行对长段落和完全相同图片载荷采用三次阈值;文档要求的重复块序列未在此实现。从两次起生成候选,加入连续块序列、不同包装的相同资产检测,再与来源对账。不能把原书有意重复一律删掉。复制“段落+图+图题”的整组能被定位;原书合法重现可记录依据后保留。
P1 · 独立审核与案例校准缺证据_validate_specialists():630 接受 independent=true;校准是三个长度不少于 12 的字符串,附一组 case_ids,并非逐案例判断。生产者不得代写审核结论;派单记录实际任务 ID、型号与输入快照。把每份案例库拆为单一职责的专项包,要求指出具体缺陷、位置、该判失败的理由及正确反例。换新任务并不自动等于独立:审核者必须得到原始来源与成品,而非仅生产者摘要。不能通过自填布尔值或复制案例 ID 声称完成校准。
P1 · 测试只证明旧断言自洽21 项既有测试全部通过;它们的完整通过夹具却使用不可解码的图片和占位台账。保留快速结构测试,另补真实图片、真实可解析台账的集成夹具和坏样本库。上面每个漏洞成为修复前失败、修复后通过的回归测试;保留正常反例防止误杀。至少把 P02、P03、P04、P05、P06、P07 加入发布前必跑断言。测试通过只能证明所测条件,不能代替来源与视觉审核。
P1 · 工作区模板与已安装版不一致目录对比只发现 assets/quality-template.html 不同;工作区有新增的八类公式模板,当前安装缓存没有这段。把插件版本、生成器版本和模板版本分别展示。确认哪些是用户尚未批准合入的草稿,再决定发布,不自动覆盖安装缓存。启动时读到的实际路径和版本与批准版本一致。这也可能是此前“先看效果再合入”的有意状态,不凭差异就指责安装失败。
P1 · 发布器仍按旧门与旧入口工作stillframe_reports.mjs:153 调旧 validate_book --final;第 180 行还要求 /reports/{slug}/ reader 路径成功。新版报告中心要求直达内容页。把正式书籍发布与通用报告发布区分;正式发布读当前统一 Gate 和不可变产物,核验报告中心直链、公开内容、CSP 与上传字节一致性。新版门有一项不过就拒绝书籍正式发布;不依赖已弃用的中转页。此项是静态兼容风险,本轮没有用真实书籍执行失败上传试验。

为何这么显眼的问题还能漏过?能说到哪里,不能说到哪里

最直接的解释:现有系统能证明“有人交了一份写着 PASS 的文件”,却不能充分证明“那个人看了当前版本、看全了,而且附件真的展示了被审对象”。截图哪怕肉眼一眼就能看出问题,也要先保证审核者实际收到并检查了那张截图,且这次观察没有被旧报告替代。当前这些条件没有被可靠落实。

本轮实验证明的是门禁和测试的缺口,不证明某一个历史 reader 偷懒、伪造或没有视觉能力。要归因到某次运行,还必须取回该任务的实际输入、截图、阅读范围、版本和逐项输出。缺少这些记录,就应写“无法追溯具体漏检环节”,不能补一个听起来专业的理由。

因此不建议再叠一轮泛读,也不建议把所有工作换成 Astra。保留你要求的专项分工;让每个专项拿到准确的应审对象和可用证据,发现问题继续完成本专项,再由确定性规则汇总。Astra 只处理剩下的少量难项,以及获准后的工程工作。

我建议的修改顺序:先堵假通过,再提高读书质量

  1. 先明确权限和版本。确定采用哪个已写好的生成器;把“不可擅改、能力不支持就等待用户”落实为只读边界和能力检查。新图片政策、Astra 路由成为唯一合同。当前转换不以自行改代码来适配。
  2. 经你批准后,单独修门禁。优先修未执行状态、空证据、目标映射、范围分母、版本过期与数学对象类型;使用本轮反例做回归。不要同时大改视觉外观和翻译,避免原因混在一起。
  3. 再接专项派单与证据回收。21 检查点按依赖分阶段运行,每个 agent 至多一个检查内容;纯代码断言不是 AI 专家。先跑小范围完整闭环,证明不是只有分工表没有实际任务。
  4. 最后做来源和视觉闭环。每页覆盖、跨页顺序、每图源/成品对照、数学显示、表格和界面分别完成;仍有不可辨来源或生成器缺口,就停在具体对象上请你决定。
冻结生成器并不意味着接受生成器缺陷。

含义是:发现缺陷后把问题、最小复现、影响范围和方案交给你;由你批准一个独立修订版,再测试和切换。不是边做一本书边偷偷改全局组件,更不是因为不能改代码就把失败改成通过。

本节依据:插件 SKILL.md、references/workflow.md、quality-contract.md、reader-specialists.md、案例库索引/绑定与失败分析;scripts/init_book_project.py、validate_book.py、stillframe_reports.mjs、现有测试与本轮探针;安装缓存与工作区模板对比。以上路径均为工程追溯标识,必要代码行为和实测结果已写在正文,公网读者无需访问本机文件。