关于 visiomaster
visiomaster 是将流程图、架构图等图像重建为可编辑 Visio 文件的技能,面向需要复用或修改结构化图表的用户。它先将图像整理为场景描述,再验证并通过 Visio 渲染为 .vsdx、.svg 或 .png。
主要功能
- 01重建可编辑的 Visio 图表
- 02将图像整理为 scene.json
- 03验证场景结构
- 04通过 Visio COM 渲染输出
- 05保留节点、标签与连接线
适用场景
- 01把流程图图片重建为可编辑图表
- 02重绘产品或系统架构图
- 03整理论文中的模块与框架图
- 04将密集图表分区后再组合
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rss3208/ visiomaster --skill visiomaster安装后在 Claude Code 中输入/visiomaster确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreRELEASE_NOTES.mdREADME.md.gitattributesLICENSErequirements.txtagents/openai.yamldocs/gallery.mdworkflow.mddocs/updates/2026-05-28-arrow-plan-gate.md2026-05-27-release-prep.md2026-05-29-rounded-orthogonal-connector.mdreferences/renderer-effective-fields.jsonfull-scene-regeneration-prompt.mdreviewer-two-image-prompt.mdreview-contract.mdvisio-component-map.mdvisio-export-flow.mdscene-schema.mdscripts/check_visio_env.pyfont_utils.pymake_review_assets.pyimage_to_scene.pyenumerate_visio_masters.pyprepare_regeneration_packet.pyreview_checklist_gate.pyfont_inventory.pyreview_findings_to_repair_plan.pyround_noop_gate.pyscene_audit.py详细介绍
Visiomaster
概述
visiomaster 是一项独立技能,用于将图表图像重建为可编辑的 Visio 交付成果。
它针对以下内容进行了优化:
- 流程图
- 产品或系统架构图
- 论文风格的模块/框架图
- 需要保持可编辑状态的方框箭头流程图
它不适用于:
- 海报
- UI 截图
- 装饰性布局
- 视觉风格比结构化图表语义更重要、且以图像为主的幻灯片
核心定位
在前期采用 ppt-master 的思路:
- 收集源素材
- 提取风格
- 控制布局
- 理解图像
- 遵循视觉润色标准
不要将 ppt-master 的原始 SVG -> PPTX 输出路径用于 Visio。
对于 Visio,稳定的路径是:
image -> scene.json -> validate -> Visio COM render -> .vsdx/.svg/.png
关键规则很简单:
- 应将主体结构重绘为可编辑的节点、标签和连接线
- 只有在重绘所损失的速度不值得时,小型缩略图或纹理片段才可以保留为栅格图像
- 除非用户明确要求贴图,否则绝不要通过粘贴整张原图来完成重建
环境
此技能以 Windows 为首选,并要求:
- 本地已安装 Microsoft Visio 桌面版
- Python 和
pywin32
使用当前线程默认的 Python 解释器。如果用户或项目提供了特定的 Python 路径,请使用该路径;否则使用:
python
工作流
1. 确认范围
首先对源请求进行分类:
- 可编辑流程图重建
- 架构/模块图重建
- 论文插图清理/重绘
- 可使用少量栅格子素材辅助的图像重绘
如果图表主要由方框、箭头、标签和容器组成,请使用 visiomaster。
对于基于图像的精确复刻,在声称已满足严格审核要求之前,务必先确保有本地源图像文件:
- 如果用户提供了文件系统路径,请将该路径用作
metadata.source_image,并用于所有审核的--original输入。 - 如果用户上传或附加了图像,但没有提供本地路径,请在渲染最终交付成果之前,将该图像保存/暂存到重建工作区中的
source/original.<ext>。仅有聊天附件不能作为严格审核的合格源文件。 - 如果当前客户端无法将附加图像作为可读取的字节数据提供,且无法在本地暂存该图像,请明确将工作标记为草稿/手动预览,并在严格审核或最终精确交付之前要求用户提供源文件路径。
- 每个精确复刻项目都必须在各轮审核中保持暂存/本地源路径稳定。不得使用复刻图的截图、成对图像、OCR 输出或对附件的记忆来替代原始源图像。
有源文件路径时,请使用辅助脚本暂存该文件,以便审核清单使用统一且稳定的规范图像:
python ${SKILL_DIR}\scripts\stage_source_image.py `
--input <source.png> `
--workspace <reconstruction_workspace> `
--id <figure_id>
此操作会写入 source/original.<ext> 和包含 SHA-256 哈希值的 source/source_manifest.json。请将暂存图像路径用作 metadata.source_image,以及 make_review_assets.py --original 的参数。
对于宽幅或内容密集的图表,不要一开始就一次性绘制整页。如果源图包含许多模块、许多箭头、很小的标签,或画布非常宽,请先创建区域规划:
- 可见区域使用
group_container - 不可见的逻辑工作区使用
audit_region - 每个有意义的节点都必须设置
container_id - 在组装整页之前,每个区域通常应控制在 12-18 个可见节点以内
- 合并各区域场景之前,必须先确定统一的字体排版和箭头样式
对于精确复刻,在获得针对该特定图像、忠实于源图的视觉清单之前,不要编写
scene.json。此清单应通过视觉 LLM 检查源图像生成,而不是通过 OCR、文件名线索、警告日志、先前的场景或批量场景生成器生成。必须原样保留源图中可见的语言和符号;不要将中文标签翻译成英文、规范化公式、臆造无法辨认的文本,也不要用通用神经网络模块替换源图中的模块,除非源图中确实可见这些模块。
在首次渲染前,将清单记录在 metadata.source_visual_inventory 中。至少应包括:
analysis_basis:简短说明,例如visual_llm_source_image。language_profile和do_not_translate。unknown_text_policy:对于不清晰的微小文本,使用mark_unreadable_do_not_invent。- 各区域的
source_bbox_px、必须可见的标签/公式、组件特征、边缘特征、端口/边界/虚线框说明、不确定性说明和文本布局事实。
在为精确复刻编写第一个 edges 数组之前,先单独对源图像进行箭头清点。目标是在生成任何 Visio PNG 之前锁定拓扑。对于箭头密集的局部结构,此步骤不是可有可无的记录工作,而是场景构建的驱动因素:
- 在
metadata.arrow_plan中记录源图中每个可见的箭头 - 每个可见箭头或可见线段都必须有独立的
arrow_plan_id;不要用一个计划条目描述整个局部子图或多跳链路 - 每个条目都需要包含
id、from_visual_object、from_anchor_description、to_visual_object、to_anchor_description、route_shape、line_style、arrowhead、semantic_intent、source_bbox_px、must_not_cross、relative_position_facts、方向、端点/边界事实以及确定性 - 普通流向使用
semantic_intent: "data_flow";虚线回传路径使用"feedback"/"loss_backprop";框架边缘箭头使用"boundary_handoff"/"frame_output";多对一连接使用"merge"/"fan_in";一对多分支使用"fork"/"fan_out";外部循环使用"loop_update" - 使用
straight_horizontal、straight_vertical、orthogonal、rounded_orthogonal、smooth_curve或loop等路径形状;不要将主要箭头含糊地留作auto - 编写边之后,为每条源图中可见的边绑定
arrow_plan_id - 默认情况下,一个
arrow_plan_id只能绑定到一条场景边。如果一条源箭头确实需要拆分为多个场景线段,则每条线段边都必须声明same_source_arrow: true、segment_index和segment_count - 如果源箭头无法辨认,应标记
certainty: "uncertain",且不要臆造其目标
将 metadata.arrow_plan 视为后续视觉审核的源图真值核对清单:审核者应能判断 A001、A002 等是否与原图一致,而不是只写“箭头不对”之类的笼统意见。
对于类似注意力机制的图形特征,在绘制场景边之前,先拆解其视觉结构。看起来像 K/Q -> multiply -> score matrix -> value multiply -> value matrix -> Concat 的源图裁剪区域,并非一条边。先记录局部特征,然后分别清点每个可见连接线,例如:
A101:K_w右边缘 ->qk_mul左边缘,水平,无箭头A102:Q_a右/上边缘 ->qk_mul左下边缘,短对角线/曲线,无箭头A103:qk_mul右边缘 -> score matrix 左边缘,水平,末端有箭头A104:V_w右边缘 -> value multiply 左边缘,水平,无箭头A105:score matrix 右上角 -> value multiply 左下边缘,对角线,无箭头A106:value multiply 右边缘 -> value matrix 左边缘,水平,末端有箭头A107:value matrix 上边缘 -> Concat 下边缘,垂直,末端有箭头 当本地示意图符合已知模式(例如attention_score_motif、value_weighting_motif、residual_add_norm_motif或concat_merge_motif)时,应先根据该模式语法生成本地场景。对于attention_score_motif,Q/K 输入左侧的乘法节点,Softmax 是浮动标签,而不是边的端点;乘法节点的输出进入分数矩阵,分数矩阵沿对角线连接到值乘法节点,值乘法节点的输出进入值矩阵,值矩阵则垂直输出到 Concat。
对于论文风格的精确复刻,source_visual_inventory 应记录精确的布局信息,而不仅是模块名称:
- 文本对齐方式:左对齐 / 居中 / 右对齐,以及基线关系
- 预期的换行位置和不换行要求
- 标签是纯文本、类似数学公式的内容、图注、注释,还是中日文与数学内容混排
- 下标 / 上标是否可见且必须保留
- 字体意图(衬线 / 无衬线 / 中日韩 / 数学字体),以及已知的源图可见字体
- 源图文本或长条上是否有可见的阴影 / 光晕 / 强调效果
- 图注前缀与正文的拆分方式,例如粗体
Fig. 6.加常规字重正文 - 该区域的裁剪要求,例如
caption、small_text或arrow_dense - 该区域的边框 / 线条 / 阴影 / 密度信息:内边距、圆角半径、虚线节奏、线条粗细、柔和阴影特征,以及裁剪范围在视觉上是紧凑还是宽松
对于严格复刻工作,还应标记:
metadata.replica_review_mode: "strict_replica"- 在首次渲染前设置
metadata.replica_stage: "layout_topology" - 仅当布局 / 拓扑在视觉上已正确后,才设置
metadata.replica_stage: "detail_polish"
全新的能力评估意味着根据源图清单重新构建场景。不要通过修补旧场景并检查其外观是否改善,来验证技能变更。旧场景和旧评审可以帮助分析失败原因,但在更改技能工作流、架构、渲染器或组件后,应根据源图清单重新构建每个测试场景。批量导出已完成的场景没有问题;但通过单个 Python 脚本批量生成多个场景,不能作为技能对普通用户有效的证明。
2. 构建或优化 scene.json
scene.json 是视觉分析步骤与 Visio 渲染之间的约定。
编写或编辑时:
- 阅读
references/scene-schema.md - 使用
templates/visio_components.json作为受支持组件词汇表 - 使用
templates/style_profiles.json选择paper_white或clean_white - 如果需要映射指导,请阅读
references/visio-component-map.md - 对于精确复刻,尽可能使用源图像素编写坐标,并让渲染器将其缩放为英寸
生成初始文件:
python ${SKILL_DIR}\scripts\image_to_scene.py --image <source.png> --output <scene.json>
此脚本不会根据像素推断真实的图表结构。它只会写入空白场景或模板初始场景。对于精确复刻,第一版 scene.json 仍必须由 LLM 根据源图像编写。
对于大型图形的精确重建,请从源图像像素开始,并记录区域策略:
python ${SKILL_DIR}\scripts\image_to_scene.py --image <source.png> --pixel-page --region-strategy region_first --output <scene.json>
如果布局接近标准流程图,可以根据内置示例生成初始场景:
python ${SKILL_DIR}\scripts\image_to_scene.py --image <source.png> --template basic-flow --output <scene.json>
仅将其视为草稿/引导编写方式。它不能作为严格复刻的有效证明。
对于 GAN/TFR 训练周期图、AI 生成的论文图示,或带有 Real/Generated TFR 面板的图像,可以根据规范模块模板生成草稿/引导版本:
python ${SKILL_DIR}\scripts\image_to_scene.py --image <source.png> --template gan-tfr --output <scene.json>
不要将基于模板生成的场景用作严格能力评估的最终证据。对于严格复刻,请从空白场景开始,依据源图像重新编写场景,然后再评估该技能。
在首次对草稿/引导场景或旧版 GAN/TFR 场景进行 Visio 渲染之前,可以显式运行确定性处理流程:
python ${SKILL_DIR}\scripts\scene_autofix.py <scene.json> --recipe gan-tfr --output <fixed.scene.json>
此处理流程会在视觉微调前优化脆弱的局部结构:将拆分的 Real/Generated 框改为 tfr_panel,将空的虚线损失框改为 loss_region,将原始 L_adv/L_rec 文本改为 math_text,将分离/断开的外部循环改为平滑的 loop_arrow,校正反向的 GAN 箭头,并将拥挤的反向传播箭头合并。
scene_to_visio.py 不再对严格/精确场景隐式运行此自动修复。只有在明确需要引导/渲染辅助流程时才使用 --autofix-gan-tfr,并且在根据源清单重新编写全新的严格复刻场景之前,应将写入的 <basename>.autofixed.scene.json 视为非最终的改写场景。
3. 验证场景数据
在操作 Visio 之前,先验证结构和引用:
python ${SKILL_DIR}\scripts\scene_validate.py <scene.json>
如果验证失败,先修复场景。不要在渲染器中对损坏的 ID 或不受支持的类型妄加猜测。
对于大型或复杂图形,在完整渲染前运行复杂度预检:
python ${SKILL_DIR}\scripts\scene_complexity.py <scene.json>
使用复杂度报告,在 Visio 渲染前排查大型图像的常见失败模式:区域过少、节点未覆盖、模块过于密集、字体缩放不一致、文本适配风险以及可能发生的重叠。
对于精确复刻,如果源图使用了不止一种可见字体样式,请运行字体排版预检:
python ${SKILL_DIR}\scripts\font_inventory.py --check "Times New Roman" --check "Cambria Math" --check "Calibri" --check "Microsoft YaHei UI"
不要将所有标签都视为同一种字体。渲染前按角色对可见文本进行分类:
- 论文衬线字体标签:使用
font_role: "paper_serif",并选择类似 Times/Cambria 的候选字体 - UI/产品标签:使用
font_role: "ui_sans",并选择类似 Calibri/Arial/Segoe 的候选字体 - 公式/运算符:使用
font_role: "math"或symbol_font_role: "math" - 中文标签:使用
font_role: "cjk_sans"或cjk_serif
如果已知或可以可靠推断源字体,请在节点样式中存储 source_font_family。如果该字体已安装,但实际渲染字体不同,scene_audit.py 会将其报告为需要重建的问题。
对于包含许多模块的复杂论文图形,还要生成模块级审计报告:
python ${SKILL_DIR}\scripts\scene_audit.py <scene.json>
使用审计报告,逐个检查每个 group_container,将其视为独立区域:子项数量、标签、颜色、内部箭头、输入箭头、输出箭头,以及跨模块箭头是从边界还是内部组件起始。未勾选的审计项都应视为真实缺陷,并在最终导出前修复。
对于精确复刻,在每次渲染迭代后运行重建门禁:
python ${SKILL_DIR}\scripts\scene_validate.py <scene.json> --strict
python ${SKILL_DIR}\scripts\scene_audit.py <scene.json> --fail-on-rebuild
在严格模式下,缺少 source_visual_inventory、缺少 region_plan、从模板初始化以及通过配方改写精确场景,都视为门禁失败,而非一般警告。如果 validate/audit 输出阻塞性契约失败或 [REBUILD] 项,请停止微调坐标。先使用正确的语义组件(loop_arrow、dashed_region、dashed_feedback_path、boundary_port 等)重建相应的局部子系统,再进行其他视觉润色。
在严格模式下,缺少 metadata.arrow_plan、缺少 arrow_plan_id 绑定或路由形状违规也都视为门禁失败。如果源图展示的是固定水平、垂直、边界、汇合、分叉、反馈或循环的箭头语法,就不要渲染仍依赖中心到中心 auto 路由的严格复刻图。
对于精确复刻,验证通过是必要条件,但还不够。请渲染 PNG,并与源图比较以下内容:
- 页面宽高比
- 容器边界
- 局部拓扑
- 特征形状
- 连接线语法
- 特征图着色
- 源语言保留情况、公式、微小标签、端口和箭头端点
精确模式应采用两阶段制作循环,而非匆忙进行一次渲染:
- 第一阶段渲染/审查:锁定布局、区域边界框、容器边界和拓扑语法
- 第二阶段渲染/审查:修复文本布局、标题行为、阴影、局部间距和视觉细节
如果某个高层组件经过两轮严格审查后在视觉上仍不正确,请用更小的组件或基本图元重建该局部子系统。不要为了一个难以处理的面板或文本簇而反复微调整页。
对于箭头密集的局部结构,在将其合并到完整场景前先审查局部裁剪图:
- 根据局部源图裁剪和图案/箭头计划,编写一个局部场景,例如
attention_core.scene.json - 使用严格箭头计划检查验证该场景
- 仅渲染该局部场景
- 将局部源图裁剪与局部复刻裁剪并排比较
- 仅在箭头计划清单中的所有项目都通过后,才合并到完整场景
除非第二轮审查已完成且视觉效果良好,否则不要在首次精确渲染后就交付。
4. 渲染到 Visio
将场景渲染为 Visio 绘图并导出交付文件:
python ${SKILL_DIR}\scripts\scene_to_visio.py <scene.json> --output-dir <exports>
默认输出:
.vsdx.svg.png
当用户需要精致的白色产品/流程风格时,使用 --style-profile clean_white。对于论文插图和学术模块图,使用默认的 paper_white。
调试 Visio 自动化或导出行为时,请阅读 references/visio-export-flow.md。
渲染复杂复刻图后,请将导出的 PNG 按模块与源图进行比较。不要依赖整张图的视觉相似度;大型图中往往会隐藏细微的拓扑错误。
对于精确复刻,第一次渲染可以是快速的可编辑重建稿,但交付前必须至少进行一轮本地源图审查:
- 使用本地/暂存的原始图像文件和导出的复刻 PNG,通过
make_review_assets.py --write-review-bundle创建审查资源。 - 审查输入应为原始源图和当前复刻图。如果这两张完整图像都已提供,就不要发送生成的全局拼图;全局拼图仅用于人工导航/审计,通常会缩小细节。
- 仅为当前存疑的区域生成局部裁剪资源,例如
attention_core、arrow_dense、right_output、small_text或caption。不要习惯性地生成或审查所有裁剪图。如果生成了裁剪图,但人或审查者都没有检查,它就只是存档的调试资源,而不是审查证据。 - 默认不生成叠加图。只有在检查整体对齐偏移、边框偏移或区域边界框配准时才生成叠加图。不要用叠加图检查箭头拓扑、文本换行、运算符端点或公式保真度;叠加图往往会遮掩这些缺陷。
- 审查时,请将源图与复刻图的视觉比较转化为两份明确的检查清单,并在
review_findings.json中或与其一同记录:一份拓扑检查清单和一份视觉布局检查清单。 - 拓扑检查清单记录源图中的事实,例如分支、汇合、边界穿越、运算符顺序、箭头端点和必需路径。示例:
S3 -> vertical trunk -> S1/common path、S2/S3 -> hollow circle -> minus、Linear -> f̂ -> [] -> fused feature。 - 视觉布局检查清单记录重叠、标签换行、括号/张量间距、线条穿过文本、特征堆叠厚度、字体角色偏差,以及颜色/圆角/阴影不匹配。
- 尽可能在发现项中注明未通过的检查清单条目。如果能看出具体缺失的分支、错误的连接位置或括号重叠,就不要只写“右侧输出有误”之类的笼统备注。
- 修复轮次必须重新检查相同的裁剪图和检查清单条目,不能只重新运行验证或空操作检查。
对于高保真工作,审查者应只比较两张图像:
- 原始源图
- 当前复刻 PNG
如果原图和复刻图都已提供,就不要在提示中向审查者提供拼图/叠加图。拼图与两张完整图像重复,而且经常会因缩小图像而掩盖细小的连接线或文本缺陷。
仅当当前任务明确针对局部细节,且完整图像太小而无法判断时,才允许将定向裁剪图作为次要审查输入。在这种情况下,请提供原始完整图、复刻完整图,以及数量尽可能少的局部源图与复刻图裁剪对。记录实际检查了哪些裁剪图。审查仍以两张完整图像为依据。
对于精确/严格审查打包,请调用 make_review_assets.py --write-review-bundle 来写入清单/模板。默认情况下,它不会生成全局拼图、局部裁剪图或叠加图。使用:
- 仅用于人工导航/审计记录时,使用
--include-global-pair。 - 用于手动挑选的命名裁剪图时,使用
--crops core arrow_dense caption。 - 仅当你确实需要每个
metadata.region_plan裁剪对时,使用--region-crops all。 - 仅用于调试对齐偏移时,使用
--include-overlays。 审查者应收到两张图片和明确的问题格式。它应报告具体的视觉差异、源图外观、副本外观、对保真度的影响、关注区域,以及重新生成后预期出现的可见变化。仅使用脚本输出来打包各轮证据并进行验证/导出;质量判断仍以视觉审查为准。
如果使用单独的审查者 Agent,只向其提供源图、副本图和问题格式。不要向其提供预期修复方案、先前结论、成对图像/裁剪图包、脚本警告、相似度分数或旧版场景 JSON。审查者负责验证视觉保真度;主 Agent 将审查结果转化为全新的场景重建方案。
使用固定的审查者提示词 references/reviewer-two-image-prompt.md。
不要止步于自然语言审查记录。严格执行时,审查循环必须生成:
make_review_assets.py --write-review-bundle生成的review_manifest.json- 视觉审查者生成的
review_findings.json review_findings_to_repair_plan.py生成的scene_rebuild_brief.jsonprepare_regeneration_packet.py生成的重新生成数据包round_noop_gate.py生成的无操作证明
review_findings.json 应同时包含缺陷发现和用于发现缺陷的审查清单。至少应包括:
topology_checklist:可见的源图拓扑事实,每项包含 id、关注区域、源图事实、副本状态,以及通过/失败/不确定状态。visual_checklist:局部布局/样式事实,每项包含 id、关注区域、源图预期、副本状态,以及通过/失败/不确定状态。- 对于适用的失败清单项,发现记录应通过
checklist_refs引用它们。
如果源图裁剪内容不清楚,请使用 uncertain,不要编造事实。只有当不确定项会影响拓扑或最终保真度时,才请求更高分辨率的源图或用户确认。
写入 review_findings.json 后,在生成重建概要之前运行清单检查门:
python ${SKILL_DIR}\scripts\review_checklist_gate.py `
<review_findings.json> `
--manifest <review_manifest.json> `
--require-failed-refs `
--output-report <review_checklist_gate.json>
然后启用清单强制检查,生成重建概要:
python ${SKILL_DIR}\scripts\review_findings_to_repair_plan.py `
<review_findings.json> `
--scene <prior.scene.json> `
--manifest <review_manifest.json> `
--require-checklists `
--output <scene_rebuild_brief.json>
如果任一命令失败,请修正审查发现/清单,不要继续重新生成。
对于箭头密集区域,审查清单必须逐箭头列出,而不能只按区域列出。每个 arrow_plan_id 都应有一项,例如:
[ ] A101 K_w -> qk_mul 与源图一致[ ] A102 Q_a -> qk_mul 与源图一致[ ] A103 qk_mul -> score grid 与源图一致[ ] A104 V_w -> value_mul 与源图一致[ ] A105 score grid -> value_mul 与源图一致[ ] A106 value_mul -> value grid 与源图一致[ ] A107 value grid -> Concat 与源图一致
阻断性审查发现必须指出确切的箭头 id 和不匹配类别:unbound_source_arrows、multi_edge_plan_misuse、source_anchor_mismatch、route_shape_mismatch 或 motif_rule_violation。
声称新一轮改进了场景时,必须运行无操作检查门。出现以下情况时检查会失败:
- 场景差异仅涉及元数据
- 只有较弱的样式字段发生变化
- 渲染后的 PNG 像素差异为零
如果已有 scene_rebuild_brief.json,请将其传入 round_noop_gate.py --rebuild-brief ...,以便报告保留该轮的关注区域和可能的场景 id 证据。
结构化审查格式请参阅 references/review-contract.md,当前渲染器有效字段白名单请参阅 references/renderer-effective-fields.json。重新编写时,不要仅凭记录、区域计划编辑、审查资源或元数据变更声称取得进展。
审查失败后编写下一个完整场景时,使用固定的重新生成提示词 references/full-scene-regeneration-prompt.md。
在下一轮 LLM 完整场景重新生成之前,使用 scripts/prepare_regeneration_packet.py 将 scene_rebuild_brief.json 转换为针对该轮的交接数据包和提示词文件。
如果数据包步骤无法恢复两张审查者图片的路径,请停止并修复审查包,不要继续进行不完整的重建交接。
如果多次视觉审查都指出,复刻图看起来像是在语义层面重绘,而非忠实还原源图,请停止打磨组件,重新校准场景:
- 用源图像素坐标标出源图的实际外框、带标题的区域框、输入/核心/输出边界框和主要总线线条
- 将这些对应关系记录在
metadata.region_plan中,并在区域节点上记录source_bbox_px/source_aspect_ratio - 在绘制小标签之前,确保各区域内的节点密度与源图接近
- 如果为自己生成调试对照图/裁剪图,只比较选定的重点区域,并优先调整区域边界框
- 只有区域边界框匹配后,才能调整字体、阴影、渐变、箭头和单个标签
不要用学生/专家模式、整图模板选择器或自动模板匹配系统取代这一流程。可复用模板和示例仅可作为语法参考或初步种子;每个高保真结果仍必须基于源图视觉分析、源图像素场景编写、渲染 PNG 审查以及视觉审查者的反馈。
对于重复的内部层模块,应在渲染前根据源图裁剪图选择视觉表达方式:
- 彩色 2D 条带:使用
layer_sequence,并设置block_style_mode: "colored_paper_strip"和与源图匹配的block_fills。 - 如果源图中的条带有颜色,应使用
block_fill_policy: "preserve"或preserve_block_fills: true保留颜色;对于彩色序列,绝不要保留ignore_block_fills: true。
场景编写与场景重写应分开进行:
- 编写:根据源图和源图视觉元素清单构建首个有效场景
- 重写:使用源图/复刻图审查结果,重新生成完整场景、再次渲染,并通过无操作门禁证明修改有效
审查后,如果反馈指出某区域在语义上有误,或拓扑结构/组件表达方式已改变,就不要修补先前的场景;应根据源图和反馈重建该场景或局部子系统。若拓扑结构已正确,只有细项检查未通过,则可进行小范围定向修复,但仍须基于同一局部源图裁剪图,并更新审查反馈/检查清单状态,且通过无操作门禁。可将先前的场景作为失败证据参考,但不得让它凌驾于源图事实之上。
- 白色 2D 垂直条带:使用
block_style_mode: "paper_vertical_strip";如果场景中保留了旧的block_fills,则设置block_fill_policy: "white"。 - 白色 3D/高垂直块:使用
block_style_mode: "paper_vertical_cuboid"或white_3d;不要仅因存在block_fills就将它们转换为彩色条带。 - 密集的门控/投影/QKV 模块应在区域边界框锁定后设置
density_mode: "source_dense"(或dense: true);不要为了掩盖文本/箭头问题而放大整个模块。 - 如果源图已有外围模块框,且只显示重复条,则设置
layer_sequence.frame_visible: false,而不是再画一个内部框。 - 如果源图的层序列在相邻条带之间有可见箭头,应使用
draw_internal_arrows: true将箭头保留在组件内,而不是将其散落为边缘碎片。
如果视觉审查发现运算符、公式、中文标签或旋转层标签存在文本换行,应将其视为渲染器/架构或场景框缺陷。不要放大整个模块来掩盖换行;应修正文本框策略、数学/运算符组件、局部字体缩放或源坐标标签框。
帽变量(如 f̂)使用 math_text;可见的 [] 拼接括号使用 concat_operator;花括号式的多对一合并括号使用 brace_merge。如果源图显示的是语义运算符/合并标记,不要将其建模为散落的文本字形或通用矩形。
对于带有类单词下标的紧凑数学标签,例如 a_RGB、P_SAR、q_hrrp、f_fused 或 S_i,当下标包含大写字母或多个字母的词元时,优先使用 math_text / math_vector,并采用片段式下标渲染。只有数字和真正的 Unicode 下标字母适合使用紧凑 Unicode;不要用类似上标的回退字形渲染 RGB、SAR、IR 或 fused。如果视觉检查发现字母上下散开、拆成 fuse d,或像上标一样抬高,应将其视为渲染器/架构欠账,并在调整坐标之前修复组件或局部文本框。
对于类似张量的特征图,请根据裁剪图判断源图呈现的是厚实的 3D 长方体堆叠、薄前片堆叠、倾斜片层堆叠,还是斜置板块堆叠。对于包含许多窄特征片且透视效果较弱的源裁剪图,使用 tensor_stack.stack_render_mode: "thin_feature_slabs";只有当裁剪图清楚显示带黑色粗边的厚实长方体块时,才使用 feature_cuboids。如果反复有人反馈张量看起来扁平或过于块状,这是组件模式错误,而不是坐标问题。
对于最终拼接标记,如果源图显示紧凑、粗实的 [] 括号,请使用 concat_operator,并设置 glyph_mode: "source_bracket"。仅对圆形或文本运算符使用 operator_node;小型括号状融合符号不应变成白色矩形或过大的 Concat 框。
对于 Top-k/概率面板,请根据源裁剪图使用 probability_bar_list,并设置 bar_value_label 和 bar_value_anchor: "bar_area"、"row" 或 "after_bar"。如果条形穿过行文本,请减小 bar_max_fraction,或将标签移到 after_bar;除非源图明确如此,否则不要将行文本作为松散叠加层定位,也不要通过偏移量将其推入条形中。
在严格复刻模式下,不要让面板内部属性保留默认值。记录内边距、轴位置、条形起点、行对齐方式、基线偏移,以及阴影是否明确存在或为 null。
发现缺陷时,先分类再编辑:
- 组件问题:所选组件类别不适用于该裁剪图
- 拓扑问题:分支/合并/边界采用了错误的连接语法
- 文本问题:角色、基线、旋转、数学符号附着或收缩行为不正确
- 样式问题:结构已正确,但内边距、圆角、密度、线宽、虚线节奏、渐变或阴影不正确
精确复刻时,统一按以下顺序修复:
- 组件选择
- 拓扑和锚点
- 数学文本和旋转文本
- 容器/标题/内容比例
- 阴影、渐变、线宽、虚线节奏
如果经过两轮微调后,某个局部子系统仍然不正确,请停止微调坐标,并使用正确的组件或渲染器规则重建该局部子系统。
在严格复刻模式下,以下均为阻断性缺陷:
- 竖排条带文本损坏或被压缩
- 下标、帽符号或希腊数学字形错误或缺失
- 连线穿过可见文本
- 跨模块长流程仍连接到中心点
- 长论文流程线段仍保持对角走向
- 拼接/运算符语法使用了错误的组件类别渲染
- 条带、面板或张量几何反复依赖隐藏默认值,而不是显式场景约定
对于跨模块流程,默认不要让大型模块通过中心点相连。应使用边界端口、总线、主干线、连接点或显式侧边锚点。对于类似数学公式的文本,不要仅因为字体看起来足够接近,就继续使用普通的 text_block;应使用 math_text、formula_text_block 或基于文本运行片段的数学渲染。
对于环境编码器和其他渐缩形状的论文模块,如果源图是收窄/带缺口的形状,而不是等高三部分结构,请使用 dual_wing_encoder 并设置 shape_mode: "opposing_trapezoids",或使用 custom_polygon。对于靠近加号/求和节点的花括号聚合,如果源图的腰部收得较紧,请使用 brace_merge,并设置 brace_shape: "tight_curly" 和 waist_width_in,而不要使用通用波浪花括号。
组件策略
第 1 版有意采用小型受控词汇表,而不是尝试公开所有 Visio 主控形状。
支持的节点系列:
page_backgroundprocess_boxrounded_processstacked_processstacked_tokennotched_blockfeature_map_bandedfeature_map_gridmerge_busdecision_diamondterminatorgroup_containerdashed_regionloss_regionaudit_regiontext_pillellipse_nodepolygon_nodetrapezoid_nodecuboid_nodetensor_stackmodality_spinemath_vectormath_textfeature_vector_stacktfr_paneloperator_nodemulti_port_junctionconcat_operatorbrace_mergeboundary_portboundary_fanoutwave_signalclassifier_headlayer_sequencetext_blockcaption_blockgrid_matrixtoken_gridbracketjunction_pointimage_tilelegend_block
支持的边系列:
arrow_connectordynamic_connectorlane_arrowcurved_arrowloop_arrowdashed_feedback_pathline_segmentjoin_connectorfork_connectorboundary_arrowresidual_connectorresidual_loop
这很重要,因为:
- 这样可以保持
scene.json稳定 - 避免系统过早绑定到本地化的 Visio 模板名称
- 可以先从基本几何图形渲染入手,之后再添加真实的模板/主控形状映射,而不破坏场景架构
执行规则
- 优先选择可编辑的重建方式,而不是嵌入截图。
- 先重建层级:容器、主要节点、主连接线,然后是次要标签。
- 先保留源图的信息设计,再追求装饰细节。
scene.json中的坐标使用页面左上角空间;由渲染器转换为 Visio 坐标。- 如果源图包含一个非必要的照片或地图瓦片,将该素材单独提取出来,而不是将整页栅格化。
- 如果形状含义不明确,退而使用最接近的受支持组件,并注明近似之处。
- 箭头使用
route和显式points;除非源图确实使用对角线,否则不要依赖斜线。 - 对旋转的纸面标签,使用带有
angle_deg的text_block,不要旋转流程形状内的文字。 - 对卷积核、感受野、掩码及其他规则网格图,使用
grid_matrix;不要手动绘制每个方格。 - 对
]、[、U和倒置U等模态分组标记,使用bracket;不要用极窄的流程框来伪造。 - 对 2 对 1、3 对 1 或 1 对多的箭头,在汇合/分叉位置放置一个小型
junction_point,将来源连接到该节点,再将该节点连接到目标。 - 不要将箭头直接连接到
group_container。容器只用于框定区域;需要引出线时,使用附近的junction_point或边框上的显式节点。 - 对带有中间汇合臂的括号,设置
tick_positions: [0, 0.5, 1];仅有两臂的普通括号不足以表示模态合并符号。 - 对跨容器流向,将边拆分为经过
junction_point节点的线段,并设置role: boundary_anchor;仅在锚点之间的短桥接线上设置allow_cross_container: true。 - 对密集的迷你模块图,所有连接线都应使用
hv、vh或显式对齐点,保持轴向对齐。连接线不得穿过非端点节点。 15a. 如果精确的论文流程路线具有显式点,但渲染后仍略有倾斜,设置orthogonalize_points: true,或补上缺失的折点。除非源图中明显存在对角引线/分叉线,否则不要使用allow_diagonal: true。 - 编写完成后运行
scene_validate.py。将路线质量警告视为缺陷,而非渲染前的外观建议。 - 对重复错位的特征块,使用
stacked_process;除非每一层都是真正的语义节点,否则不要将每个可见层分别编写为独立流程节点。 - 对 AM-ResNet 等模块内部结构,使用
align_to_container或align_group编码预期对齐;不要依赖凭目测设置 y 值。 - 对仅作为视觉短线或总线线段的源线,使用带有
from_point/to_point的line_segment。不要仅仅因为 Visio 可以连接到形状,就强行让这些线终止于某个组件。 - 对 1:1 或精确复刻请求,设置
metadata.fidelity: "exact",并包含metadata.source_image或metadata.source_aspect_ratio。不要仅因验证通过就交付;应将渲染后的 PNG 与源图进行比较,并持续修订,直至比例、模块位置、特殊形状和连接线语义都相符。 - 如果源图具有独特的视觉编码,不要臆造随机特征图、通用 CNN 矩形框或近似的分类器连线。应使用
grid_matrix、line_segment、点端点或单独提取的小型栅格素材,明确编码这些视觉特征;若更重视局部外观的还原度而非可编辑性,可使用栅格素材。 - 对精确复刻,优先使用像素坐标编写:设置
page.units: "px"、page.width、page.height和page.target_width_in;渲染器会将节点和边的点坐标归一化为英寸。 - CNN 或缺口模块使用
notched_block,简单条纹/列状特征图使用feature_map_banded,具有彩色行和阴影列的 AM-ResNet/热图类特征图使用feature_map_grid,可见的总线/主干汇合使用merge_bus,残差或跳跃循环使用residual_connector。 - 仅使用
scripts/enumerate_visio_masters.py查询本地 Visio 主控形状名称。不要在场景中硬编码庞大的主控形状目录;不同的 Office 语言和模具可用性各异。 - 对论文模块图,优先使用语义图元而不是通用框:运算符使用
operator_node(适用于 +/×/张量运算符),边框入口/出口锚点使用boundary_port,虚线框边界引出的箭头使用boundary_fanout,波形输入使用wave_signal,AvgPool/Linear 块使用classifier_head,来源到汇合点的分支使用join_connector,分叉支路使用fork_connector。 - 箭头需要连接到虚线框边缘时,不要连接到框本身。在框边界上放置小型
boundary_port,将内部流向连接到该端口,然后使用短桥接线段或连接符连接到下一个模块。 - 如果源图中的输出箭头从容器边界发出,不要使用
classifier_head内部扇出。设置classifier_head.output_mode: "boundary"或省略fanout_count,然后使用boundary_fanout绘制这些分支。 - 对
AvgPool -> Linear等紧凑的内部箭头,使用classifier_head.orientation: "vertical"和internal_arrow_size: "tiny",或在普通边上设置arrow_size: "small"。默认 Visio 箭头可能会占据极短的线段,导致看起来只有一个箭头尖端三角形。 - 对运算符符号,使用带有
symbol的单个operator_node,不要使用ellipse_node再另加文本。渲染器会将+、×和⊗居中放置在圆内。 - 对从边框到垂直位置不同的目标组件的箭头,使用
feature_map:[email protected]之类的侧边比例端点,以保持水平通道。除非源图确实显示对角线,否则不要接受中心到中心的对角连接线。 - 如果源图显示虚线框本身向下一个模块输出,应从
boundary_port使用boundary_arrow,不要从最后一个组件向框绘制内部line_segment。除非源图中明确可见,否则组件到框再到组件的长线通常是不正确的。 - 对普通的 1 对 1 箭头,如果源线是直线,优先使用
route: "horizontal"或route: "vertical"。仅在汇入/分叉、引出线或源图明确显示斜线时才使用对角箭头。 - 对复杂图示,运行
scripts/scene_audit.py,并按模块检查生成的清单后再交付。目标是发现看似合理但实际错误的细节:缺少虚线框、子节点数量错误、隐藏的跨框箭头、运算符错位以及边界输出错误。 - 如果源图没有可见的虚线模块框,应在残差块、注意力块、分类器头和特征提取链等逻辑区域周围添加不可见的
audit_region节点。这些区域不会渲染,但可让scene_audit.py按模块逐一检查图示。 - 对包含 RGB/IR/SAR 输入的多模态论文流程图,将每种模态保留为独立通道:使用
image_tile输入、text_pill或process_box可用性标记、modality_spine共享垂直总线,并使用显式水平连接线接入融合模块。 - 对带有重复
P_RGB/P_IR/P_SAR侧端口的垂直灰色共享响应条或可用性掩码条,使用modality_spine。除非每个端口都有独立拓扑,否则不要将其建模为普通矩形加互不相关的小方框。 - 对模态相关影响因子、堆叠特征张量和蓝色/橙色小型深度块等可编辑的论文 3D 块,使用
cuboid_node。仅在可见面为网格或热图时使用feature_map_grid。 - 对质量头、提取器头、聚合模块及其他楔形/梯形论文块,使用
trapezoid_node。设置orientation和pointed,使窄边或尖端方向与源图相符。 - 仅在某个形状无法用
trapezoid_node、cuboid_node、notched_block或其他语义图元表示时,才使用polygon_node。在源像素场景中编写时,提供归一化点坐标。 - 对
q = [q_RGB, q_IR, q_SAR]^T等公式/向量注释,使用math_vector,而不是普通的多行text_block。这样可将括号、条目和可选前缀对齐为可编辑的形状/文本。不要将公式标签作为连接线端点。 40a. 对g_tf、g_hrrp、f_fused、P_RGB、q_IR、s1、f1或L_adv等小型变量和公式标签,当下标包含大写或类似单词的标记时,使用math_text、math_render_mode: "fragments"和text_fit: "math_label"。只有数字下标或真正的下标小写标签在视觉上与源图相符时,才允许使用compact_unicode。不要将它们保留为原始文本,否则 Visio 可能会将其换行为g_ / tf、f_fu / sed,或将RGB显示为类似上标的形式。 - 对宽幅多面板图,即使可见边框使用
group_container绘制,也应为每个带标题的面板创建audit_region节点;这样scene_audit.py就能逐面板检查输入、输出和跨面板箭头。 - 对大型源图,在渲染前使用
metadata.region_strategy: "region_first"或"tiled_subscenes"。同时为全局/输入/核心/输出/箭头密集/小字/边界区域添加metadata.region_plan条目,每个条目都需包含source_bbox_px和目标边界框/容器。如果整页图太复杂,无法整体推理,则将每个区域分别编写为局部子场景并完成验证,再将区域节点以相同样式标记复制到完整场景中。 - 不要让每个区域各自设置字体大小。定义一套精简的字号,并重复使用:框标题、正文标签、小型标签、运算符符号、公式标签和边标签。如果
scene_validate.py报告同类型字体大小分布过散,应在渲染前统一样式。 - 从裁剪子区域重建时,仅在分析期间使用裁剪区域的局部坐标。最终组装前,应转换为整页像素坐标系,避免箭头和标签在拼接处错位。
- 如果场景约有 30 个以上可见节点、35 条以上边,或纵横比很大,则在生成整页 Visio 输出前使用
scene_complexity.py。应将文本适配、重叠、节点未覆盖和区域过密警告视为需要处理的缺陷。 - 通常,超过 18 个可见节点的区域过于密集,难以一次可靠重建。应将其拆分为较小的不可见
audit_region区域,例如输入堆栈、特征提取器、融合、分类器和输出头。 - 对整页组装,不要只通过在完整渲染后挪动文本框来修正对齐。首先使用
align_group、align_to_container、显式container_id和侧边比例端点保证区域内对齐,然后再微调最终位置。 - 在整页组装中,跨区域边仅用于真正的模块间流向。内部箭头应保留在其所属区域内;连接线离开某区域时,使用边界端口或汇合锚点。
- 对相邻模块之间较短的论文流程通道,尤其是连接立方体/特征块与提取器或 GAP/GMP 块的通道,使用
lane_arrow,并设置route: "horizontal"或"vertical"。不要使用带有route: "straight"和allow_diagonal: true的arrow_connector来掩盖端点 y/x 坐标的小幅不一致。 - 如果生成的图示中箭头看起来略有倾斜,请检查场景中端点几乎对齐但并非完全对齐的
straight边。将其改为lane_arrow,强制指定路线轴,或精确对齐from_point/to_point。 50a. 如果源连接线轴向对齐,但其 90 度弯折处明显圆滑,应使用rounded_orthogonal_connector,并设置route: "rounded_orthogonal"、orthogonalize_points: true以及显式corner_radius_px/corner_radius_in。此时不要使用smooth/Catmull-Rom 曲线;平滑曲线会改变直线通道的几何形状,常导致波浪形或端点偏移。 - 对
Quality Head、Environment Response extractor和Aggregation Quality-aware等论文楔形块,优先使用可编辑的trapezoid_node/polygon_node,除非用户明确接受为提速而使用小型栅格瓦片。栅格瓦片应记录为保真度与速度之间的权衡。 - 对带有大型外部弧形箭头的 GAN/训练循环图,使用一个带有采样
points和明确end_tangent_point(位于箭头尖端附近)的loop_arrow或curved_arrow。不要将循环拆成多个line_segment弧线再加上分离的短箭头,否则会出现明显断裂且切线方向错误。 - 对可见的虚线注释框,例如
Forward Reconstruction -> Discriminator Evaluation,使用dashed_region,并以单独的text_block标注文字。不要将空白虚线process_box用作伪造的边框。 - 对虚线重建/对抗/反向传播路径,使用带有显式正交点的
dashed_feedback_path。不要为了消除警告而在损失/反向传播箭头上设置allow_diagonal: true。 - 如果虚线反馈路径离开可见虚线区域,应使用
allow_cross_container: true和显式点,明确编码其穿越位置。如果源图中的箭头从框边缘出发,应添加boundary_port,而不是从区域中心连接。 - 如果
scene_audit.py --fail-on-rebuild报告[REBUILD],不要再通过移动框或文本进行迭代。应先替换错误的局部结构规则;只有重建关卡通过后,才调整位置。 - 如果一次修复后仍出现相同的
[REBUILD]项,应丢弃该局部子系统并从最小局部场景重新绘制。这对外部循环、虚线反馈路径和虚线注释框是强制要求。 - 对 Visio PNG 导出的裁剪控制,使用
page_background作为底层节点。不要使用伪造的process_box背景,否则会污染路线相交检查和审计输出。 - 对 GAN/TFR 循环图,最低交付门槛为:不得使用被动椭圆表示训练循环;不得有分离的循环箭头尖端;不得有空白虚线流程框;不得用普通
arrow_connector绘制虚线/损失/反向传播路线;虚线反馈路径不得穿过文本标签。 - 在 GAN/TFR 图中,生成/重建的 TFR 样本应输入 Discriminator。如果某条边的方向为
Discriminator -> Generated,除非源图明确将其标为判别器输出,否则应视为方向相反。 - 外部更新循环应使用
loop_arrow,并设置curve_mode: "smooth"、足够的采样点、semantic_role: "outer_update_loop"以及关联更新标签的label_id/loop_label_id。否则该循环看起来会像装饰边框。 - 保持虚线评估/损失框清晰整洁。
dashed_feedback_path应从dashed_region/loss_region的边界点或boundary_port离开;不要在区域内部绘制额外的水平/垂直短线。 - 对底部包含多个垂直虚线箭头并指向判别器的 GAN 损失/反向传播系统,使用共享的
merge_bus/junction_point和bundle_id,而不是绘制多条互不相关的垂直箭头。 - 对
L_adv和L_rec等损失公式,使用math_text,而不是带下划线的原始text_block字符串。在精确复刻论文图时,原始下划线属于必须重建的缺陷。 - 对 Real/Generated TFR 面板,首轮应使用
tfr_panel作为组件。除非源图有特定原因,否则不要将面板拆分为圆角框、标题标签、网格、输入标签和单独的内部箭头。 - 如果渲染结果整体接近,但经过一轮调整后局部细节仍未改善,应运行
scene_audit.py --fail-on-rebuild,并在视觉微调前修复所有[REBUILD]项。 - 对 GAN/TFR 源图,仅将
--template gan-tfr用于草稿/初始编写。不要将以模板为基础的场景视为严格复刻能力的有效证据。 - 在渲染 GAN/TFR 草稿/初始场景或旧场景前,可以运行一次
scene_autofix.py --recipe gan-tfr。如果该配方重写了局部结构规则,应先验证并审计修复后的场景,不要再基于旧文件继续。如果要求严格/精确复刻,不要依赖隐式的渲染时自动修复;仅将--autofix-gan-tfr作为显式辅助路径使用,然后根据源图清单重新编写一个全新的严格场景。 - 如果标题和公式属于同一个局部子系统,虚线对抗/评估区域使用
loss_region。仅当框内没有公式语义,或源图要求使用独立子节点时,才使用dashed_region。 - 如果
loss_region与目标块水平重叠,应将反馈线设为短垂直边界短线,连接到target:top@ratio或target:bottom@ratio。不要从损失框角连接到target:left/right;这通常会产生错误的“虚线框加额外箭头”视觉效果。 - 如果平滑处理后外部循环箭头尖端仍然有折痕,应先调整语义几何(
end_tangent_point、采样点或局部循环子系统),而不是挪动无关节点。箭头尖端的切线属于组件结构规则,并非最后的润色细节。 - 渲染前应统一 GAN/TFR 损失文本。导出前应将
Ladv、Lrec、L adv和L rec转换为L_adv/L_rec或显式的math_text片段。 - 对
loss_region标题,优先设置title_position: "inside",或采用标题镂空布局。不要让虚线框穿过较长的标题;应先拆分标题行或加宽区域。 - 对精确复刻或 GAN/TFR 渲染,不要将
scene_to_visio.py作为盲目的最后一步调用。应先运行重建关卡,或让渲染器在仍有[REBUILD]项时通过内置关卡阻止导出。 - 如果虚线反馈路径看起来像一个微小的孤立箭头片段,应视为语义路线失败,而非外观问题。应将其重建为单个
dashed_feedback_path或总线/端口路线,而不是保留该片段。 - 编写精确复刻的边之前,应根据源图视觉检查结果生成
metadata.arrow_plan。然后使用arrow_plan_id绑定每条源图可见边;渲染前运行scene_validate.py --strict,以便及早发现缺失箭头、对角线偏移、边界端点错误、反馈路径断裂和循环箭头损坏。 76a. 对精确复刻进行排版检查。在完成节点编写前,确认源图使用的是衬线、无衬线、数学、等宽、中文还是混合字体;不要让所有文本节点意外继承通用默认字体。 - 精确字体系列不确定时,使用
font_family_candidates和font_role,而不是依赖单一且脆弱的字体名称。渲染器会选择第一个已安装的近似字体。 - 如果已知源字体,应同时设置
source_font_family和font_family/font_family_candidates。这样审计可以发现字体已在本机安装,但场景仍使用了错误字体系列的情况。 - 如果图示似乎使用了 Calibri/Aptos/Arial/Times/Cambria/中文字体,请运行
scripts/font_inventory.py。缺少源字体时应提供候选列表;如果已安装源字体,则应直接使用。 - 对运算符和公式片段使用支持数学符号的字体:根据源图风格选择
Cambria Math、Cambria或Times New Roman。除非源图中确实如此,否则不要使用随机界面字体渲染+、×、⊗或带下标的公式。 - 对中文或中英混排图示,使用
font_role: "cjk_sans"或cjk_serif;否则 Visio 可能会静默替换字形并改变文本度量。 - 在调整坐标前,先检查
scene_audit.py输出中的Typography Review部分。字体回退可能会改变文本宽度,让先前对齐的布局看起来错位。 - 对含有重复特征薄片的论文图,使用
tensor_stack,而不是大量独立的cuboid_node形状。对薄型平行四边形的站点/输出特征,使用stack_render_mode: "slanted_sheets"/paper_sheets;对较厚的 3D 薄片使用oblique_slabs;对平面正面的堆叠使用thin_sheets。调整layers、layer_dx_in、layer_dy_in、depth_x_in、depth_y_in和skew_x_in,使堆叠视觉效果符合源图,同时保留单个张量节点的语义。 - 对带有可读数字的彩色序列/索引方格,使用
token_grid。如果源图的单元格为正方形,设置square_cells: true,并使用grid_align_x/grid_align_y锚定,而不是拉伸单元格以填满边界框。仅对没有单元格文字、共用连续网格线的矩阵使用grid_matrix。不要用几十个互不相关的process_box来模拟带填充的前缀批次或 top-k 概率行。 - 对包含重复 Linear/ReLU/LayerNorm/Dropout/Q/K/V 条的带标题模块,使用
layer_sequence,并设置orientation: "horizontal"或"horizontal_bars"。如果源图中的层条是高而扁的 2D 圆角白条,使用block_style_mode: "paper_vertical_strip";仅当源图中明显可见顶面/侧面时才使用 3D/立方体模式。仅当源图显示分类器特有的内部箭头或扇出时,才使用classifier_head;否则layer_sequence能以较小的场景偏差保留视觉层级结构。 85a. 对内部为水平圆角行堆叠的容器,例如 LocalEchoGRU 或浅层骨干网络层,使用layer_sequence、orientation: "vertical_stack"和block_text_angle_deg: 0。不要将其表示为并排的竖条。 85b. 对紧凑的源向量、可用性标记、小型模态行和细薄的词元堆栈,使用feature_vector_stack或token_grid,并按源图确定单元格数量和间距。如果裁剪图中能看到独立单元格或端口,不要用一个大型流程框近似表示。 85c. 对多个箭头共用可见主干的多对一或一对多论文汇合点,使用multi_port_junction、merge_bus或显式的junction_point端口。如果源图没有可见的刻度短线,应使用length_in: 0的显式字典端口,以避免融合/括号边界出现多余短线。不要让稀疏长箭头跨越模块,除非有总线、汇合点、边界端口或区域规划依据。 85d. 对概率面板,保留probability_bar_list作为语义单元,并在检查裁剪图后调整bar_max_fraction、bar_value_anchor和行宽。若蓝色条形明显覆盖文本,则不能视为合格。 85e. 对图注、页眉和粗细混排的标签,使用带有有序文本片段的caption_block。如果源图的样式层次十分重要,不要将其合并为单个无类型的文本块。 - 在源像素中编写精确复刻时,也应为
tensor_stack、token_grid和layer_sequence设置以源像素为单位的局部尺寸。渲染器会随页面缩放这些字段;将像素节点位置与以英寸为单位的内部间距混用,会造成明显的局部变形。 - 视觉检查时,应明确确认重复薄片、词元网格、公式和内部层序列是否由这些语义组件表示。如果使用松散的方框和线条伪造,应将问题归类为场景组织或组件使用方面的欠缺,而不是坐标微调问题。
- 视觉检查时,应放大局部裁剪区域,检查文本和公式是否换行。即使验证/审计通过,
GELU、LayerNorm、中文标签或下标变量出现断裂,仍属于阻断性/重要视觉缺陷。应通过按角色设置字体、使用text_fit、缩小局部字号或改用math_text修复;不要通过放大整个模块来掩盖问题。 - 对
f_tf、g_hrrp、f_fused和S_i等标签,使用math_text或math_label_box,确保只有可见变量为基字符,其余部分为下标。如果视觉检查发现类似f_t^f的渲染、字母拆分或fuse d间距,应归类为公式渲染失败。 - 对每次复杂图示迭代,记录已检查的图像、主要视觉差异、跨图共性问题、技能变更、改进/不变/退化的图示以及剩余失败项。全局拼图可用于辅助导航,但不能作为细节验收的有效依据。进行细节检查时,优先使用两张完整图和有针对性的局部裁剪,而不是全局对比图。
参考资料
references/scene-schema.md:scene.json字段和坐标规则references/visio-component-map.md:支持的组件和渲染器意图references/visio-export-flow.md:Windows + Visio 导出路径和当前限制templates/style_profiles.json:paper_white和clean_white渲染配置templates/examples/basic_flow.scene.json:入门示例templates/examples/multimodal_paper_components.scene.json:用于测试多模态主干、立方体、梯形和多边形的示例templates/examples/gan_loop_feedback.scene.json:用于测试平滑环形箭头、虚线区域和虚线反馈路径的示例templates/examples/gan_tfr_full.scene.json:标准首轮 GAN/TFR 模板,使用tfr_panel、loss_region、math_text、平滑的loop_arrow和打包的反向传播箭头scripts/scene_complexity.py:在 Visio 渲染前为大型/密集图形生成预检报告scripts/font_inventory.py:本地 Windows 字体清单和首选角色回退检查scripts/stage_source_image.py:将源图像复制到source/original.<ext>,并记录哈希值,以便生成稳定的严格审查清单scripts/review_checklist_gate.py:在规划重建前验证topology_checklist、visual_checklist、本地源图像路径和checklist_refsscripts/scene_autofix.py:在 Visio 渲染前执行确定性的 GAN/TFR 局部语法升级docs/updates/2026-05-19-multimodal-paper-figure.md:复杂多模态论文图形的详细分析及相关组件升级
当前限制
版本 1 有意采取保守策略:
- 连接线支持自动吸附、正交布线和显式点,尚未支持完整的粘附感知连接线
- 核心流程图形状在可用时使用本地 Visio 模板,并采用受控回退方案
- 导出由 Visio 在场景渲染后处理,而非将原始 SVG 转换为 Visio
对于可复用的首个版本来说,这是恰当的权衡。