报告素材包
LensBench 不排版、不写分析文字:内核只出素材,最终报告由外部 AI(或你自己)组装和撰写。 lb pack 一条命令把写报告要用的东西导出到一个目录,每一条都带证据 id,清单里写明含义、单位和文件; 设计改了,lb pack-status 告诉你哪些素材过期了。CLI、桌面端(功能区「交付」›「素材包」:导出报告素材包… / 素材包是否过期… / 核对报告数字…, 前两个也在「文件」菜单;导出在后台跑、界面照常可用)和 MCP 用的是同一个命令。
lb pack cooke.lens # 写到 <镜头目录>/reports/cooke_pack/
lb pack cooke.lens out/pack --items "prescription layout mtf verify conclusions"
lb pack cooke.lens --dpi 600 --lang en # PNG 分辨率(默认 300)、出图语言
lb pack-status cooke.lens # 设计改了以后:哪些素材过期目录里有什么
| 文件 | 内容 |
|---|---|
manifest.json | 清单:每条素材的 id、名称、含义、单位、文件、证据 id 和证据键;镜头名、模型哈希、引擎构建号、导出时间 |
README.md | 同一份清单的表格版,开头是写报告的硬约束(见下) |
figures/<图型>.png、.svg | 出版级图(300 dpi PNG + 矢量 SVG),带图框:标题、信息块、证据 id、模型哈希 |
data/<图型>.csv、.json | 每张图的数字页(CSV,单位写在表头里,带 BOM,Excel 直接打开)与原始数据(JSON,NaN 写成 null) |
tables/<表>.csv、.json | 处方表(prescription)、一阶量(paraxial)、验收表(verify)、可制造性(manufacturing) |
conclusions.json | 确定性结论,每条带证据 id |
清单的 signoff 一节写明这一版有没有签核(lb signoff):已签核、签核后只改了文字、签核后光学改过(签核失效)、没签过; README 开头同样写一句,没签核的要求报告里写明「未经复核」。
上一版素材包里有、这一次不再导出的文件会被删掉(只删清单里列过的,不碰目录里的其它文件)。 某张图在当前系统上不可用(比如足迹看的是坐标断点),或者没有 spec 时的验收表,会记在清单的 skipped 里并写明原因。
导出哪些:pack 语句
写在 .lens 里,和 view 一样随设计保存、能 diff;可写多行,按出现顺序合并:
pack prescription paraxial layout spot spot_density mtf fieldcurv
pack encircled_energy seidel verify manufacturing conclusions条目是表(prescription paraxial verify manufacturing)、图型(同 view,见 出图)或 conclusions。 不写 pack 时导出默认集合:处方、一阶量、布局、点列图、点密度图、光扇、MTF、场曲畸变、包围能量、Seidel、验收、可制造性、确定性结论。 图的取样与显示选项照常取自 view 语句,所以素材包里的图和你在界面上看到的、用 lb plot 出的是同一张。 多重结构的设计按组态 1 导出;各组态排开的布局(configs=all)用 lb plot 单独出。
确定性结论
conclusions.json 里的每一条都是从分析结果机械推出的,带 type、一句话 text、数值 values 和证据 id:
| type | 内容 | 依据 |
|---|---|---|
spec_pass / spec_fail / spec_unknown | 全部规格通过,或哪条没过、值与界限(多重结构:每个组态一条「全部通过」,没过的标组态,引该组态的证据 id;验收表多出组态与证据两列) | lb verify |
dominant_aberration | 三阶像差(Seidel 波像差系数之和)里占比最大的两项 | lb seidel |
worst_field | 点列复色 RMS 最大的视场 | lb spot |
distortion | 最大畸变、桶形还是枕形、在哪个视场 | lb field-curvature |
lateral_color | 垂轴色差最大值,与艾里半径比较 | lb lateral-color |
manufacturing / manufacturing_ok | 装夹违例(穿模、负边厚)、边厚小于 0.5 mm 的透镜 | 布局的装夹检查 |
写报告的硬约束
这几条写在每个素材包的 README.md 开头,给外部 AI 看:
- 数字从素材原样照录(CSV / JSON / 结论),不改写、不估算、不读图估数,并在文中引用证据 id(
ev-…)。 - 因果判断(「边缘视场 MTF 低是因为彗差」这类)只能以
conclusions.json里的结论或明确引用的分析为依据;没有依据就不写。 - 清单里标了过期的素材不能用:设计改了,要重新导出。
用云端 AI 写报告时,素材(含处方与分析数值)会发给模型服务商;用本地模型则不出本机。
用 MCP 客户端时可以直接选提示模板「整理报告素材」(report_materials):先 verify,再 pack,读 README 与结论, 写完草稿用 check_report 核对,设计改了用 pack_status 查过期(见原生 AI)。
报告草稿数字核对
外部 AI 写完报告草稿(Markdown / 文本)后交回来核对:
lb check-report cooke.lens report_draft.md # 素材包默认在 reports/cooke_pack/
lb check-report cooke.lens report_draft.md --strict # 有对不上的数字时退出码 1,可做交付前的关卡素材包不在默认位置时加 --dir 目录。规则是确定性的,不猜语义:
- 句子按 。!?;和换行切开,Markdown 表格的一行算一句;同一句里引用的证据 id 就是这句数字的出处。
- 出处的数值:素材包里该证据的数字页 / 表(CSV、JSON),加上引用它的确定性结论(text 与 values)。
- 一个数按草稿写出的位数四舍五入后与某个值相等就算对上(写 50.02 对 50.021 35 算对上,写 50.03 不算); 也接受 ×100(比例写成百分数)、mm ↔ µm 的 ×1000 换算,结果里注明用了哪种换算。符号要对。
- 只核对至少 2 位有效数字的数——1 位有效数字的数(「3 片」「F/5」)在大表里总能碰上一个,核了也没意义,列为「未核对」。
- 结论分四种:对上、对不上(✗)、引了素材包里没有的证据 id(✗)、有数字却没引证据(? 只提示)。日期、证据 id 本身、列表序号不算数字。
它查的是「数有没有照录」,不查「话说得对不对」:因果判断是否有依据,仍要人看。
过期检查
证据 id 是确定的(模型哈希 + 引擎 + 分析种类 + 取样参数),所以 lb pack-status 不用重算任何分析: 它按清单里每条素材的证据键,在当前设计上重算证据 id,对不上的就是过期。
- 改了光学(半径、厚度、玻璃、视场、波长……):所有素材都过期;
- 只改了
spec:验收表和确定性结论过期,图和处方不过期——但 MTF、点列、场曲畸变、垂轴色差、色焦移图上画的规格标注 仍是旧的,要更新标注就重新lb pack; - 升级 LensBench 后引擎或分析口径变了:所有素材都过期(证据 id 含引擎标识),重新导出即可;
- 只改了名称、注释、格式:都不过期(这些不进模型哈希)。
过期了就重新 lb pack,再让 AI 重出报告。