当用户明确要求"生成 NSFC 技术路线图/技术路线图绘制/roadmap/flowchart"或需要把标书研究内容转成"可打印、A4 可读"的技术路线图时使用。默认输出可编辑源文件(`.drawio`)与可嵌入文档的渲染结果(`.svg`/`.png`/`.pdf`);当用户主动提及 Nano Banana/Gemini 图片模型时,可切换为 PNG-only 模式。⚠️ 不适用:用户只是想修改某张已有图片的格式/尺寸(应使用图片处理技能)、只是想润色技术路线文字描述(应直接改写正文)。
用户至少提供其一:
proposal_path:标书目录(包含 .tex / .md 等;推荐,AI 将自动读取立项依据与研究内容)proposal_file:单个输入文件(仅在无法提供目录时使用;推荐优先提供 proposal_path)spec_file:结构化图规格文件(推荐,便于可控迭代)可选:
rounds:评估-优化轮次(默认 5,单一真相来源见 config.yaml:evaluation.max_rounds)output_dir:输出目录(默认在当前工作目录下创建 roadmap_output/)renderer:渲染后端(默认 ;仅当用户主动提及 Nano Banana/Gemini 图片模型时才允许使用 ,该模式仅输出 PNG)drawionano_bananadotenv:可选:显式指定 .env 路径(仅 renderer=nano_banana 使用;默认从当前工作目录向上搜索)style_ref_images:可选:风格参考图片(可多张;仅 renderer=nano_banana 生效;脚本参数为 --style-ref 可多次提供;支持 png/jpg/jpeg/webp;最多使用前 4 张;用于让生成图的配色/线条/质感尽量贴近参考图,但不照抄其内容结构)layout:布局模板名(默认 auto,见 config.yaml:layout;支持 classic/three-column/packed-three-column/layered-pipeline)template_ref:具体模板 id(如 model-02;高级选项;默认“纯 AI 规划”不需要也不建议设置)在 output_dir 下生成(默认启用隐藏中间产物):
roadmap.drawio:draw.io 可编辑源文件(用于人工微调)roadmap.svg:矢量输出(优先用于 LaTeX/Word 嵌入)roadmap.png:高分辨率位图(用于预览与兜底)roadmap.pdf:默认生成(无 draw.io CLI 时为 PNG→PDF 栅格降级)roadmap-plan.md:规划阶段产出(可审阅/修改)roadmap.png + 体积显著更小的 roadmap_compacted.png(默认将 4K 图下采样并压缩,适合嵌入标书 PDF;不生成 .drawio/.svg/.pdf)output_dir/.nsfc-roadmap/
runs/run_YYYYMMDDHHMMSS/:本次运行隔离目录(包含各轮 round_XX/)
round_XX/measurements.json:纯度量采集(密度/溢出/阶段平衡/连线/字体等;不含 P0/P1/P2 判定)round_XX/dimension_measurements.json:structure/visual/readability 三维度度量(供宿主 AI 语义解读)round_XX/layout_debug.json:布局诊断(节点尺寸/压缩等)round_XX/edge_debug.json:连线诊断(显式/自动 edges 的解析结果)round_XX/critique_structure.json:结构完整性评估(术语一致性/重复节点/阶段合理性等)round_XX/critique_visual.json:视觉美学评估(对比度/配色区分度等)round_XX/critique_readability.json:人类可读性评估(字号门槛/密度分布/边缘拥挤等)spec_latest.yaml:最新 spec 快照(可复现)optimization_report.md:迭代记录(每轮缺陷与修改点)config_used_best.yaml / evaluation_best.json:best round 复现证据config_local.yaml:实例级局部配置覆盖(白名单字段;用于“只覆盖本次图参数/停止策略”,不改全局 config.yaml;其中 color_scheme.name 仅允许 {academic-blue, tint-layered};当设置 renderer.canvas.width_px/height_px 时,该宽高比会被锁定并在多轮优化中持续保持)ai/:AI 证据包与 request/response 协议(仅在 stop_strategy=ai_critic 工作流中使用)
ai/ACTIVE_RUN.txt:当前 ai_critic 活跃 run(用于 resume)ai/{run_dir}/ai_pack_round_XX/:本轮 AI 证据包(供宿主 AI 读图批判)ai/{run_dir}/ai_critic_request.md:宿主 AI 请求(固定格式)ai/{run_dir}/ai_critic_response.yaml:宿主 AI 响应(结构化:spec/config_local patch + stop/continue)开始前先读取本技能目录下 config.yaml,以下字段作为执行时单一真相来源:
renderer:输出尺寸与格式、字体与配色evaluation:最大轮次与提前终止规则layout:布局与字号门槛color_scheme:配色方案若你已准备好 spec_file,可跳过规划阶段。
本技能默认启用 config.yaml:planning.planning_mode=ai:规划阶段不要求/不建议选择单一 template_ref。
工作流:
plan_roadmap.py 生成规划请求协议(plan_request.json/plan_request.md + 模型画廊)。plan_request.md 写出 roadmap-plan.md + spec_draft.yaml。plan_roadmap.py,脚本将校验 spec_draft.yaml 是否满足 scripts/spec.py:load_spec() 约束。(兼容旧流程)如需让脚本按确定性规则直接生成草案(模板规划),使用 --mode template 或设置 planning_mode=template。
读取标书目录下的关键 tex 文件,彻底了解整个标书的情况。至少读取:
extraTex/1.立项依据.tex(或等效文件):研究背景、科学问题、研究假说extraTex/2.1.研究内容.tex(或等效文件):具体研究内容、技术路线仅看研究内容是不够的;立项依据提供了科学逻辑的全貌,有助于更准确地把握路线图的叙事结构与路线叙事设计。
优先基于“视觉参考”来学习优秀结构(不要求也不建议固定到某个 template_ref):
output_dir/.nsfc-roadmap/planning/models_contact_sheet.png(模型画廊 contact sheet)references/models/ 下的单张参考图然后在 roadmap-plan.md 中明确写出:
基于 roadmap-plan.md 生成 spec.yaml(结构化图规格),必须满足:
优先路径(按优先级):
spec_file:直接使用(可控、可复现)spec.yaml(或脚本规划产物 spec_draft.yaml)模板字段(可选,推荐在 spec 中记录以便可复现与复盘):
layout_template: auto|classic|three-column|packed-three-column|layered-pipeline(可选;不写也可以)template_ref: model-01..model-10(可选;默认不建议使用,以避免把复杂场景“框死”在单一模板上)spec v2(可选;用于逼近 draw.io 手工连线上限):
box.id:为关键节点显式指定稳定 id(用于可复现连线与手工微调不丢失)edges:显式关键连线(当提供 spec.edges 时,渲染器必须优先复现;未提供时才按 config.yaml:layout.auto_edges 自动连线)目标:以 spec.yaml 为单一真相来源,确定性生成交付文件(drawio + svg/png/pdf)。
运行(示例):
python3 nsfc-roadmap/scripts/generate_roadmap.py \
--spec-file ./roadmap_output/spec.yaml \
--output-dir ./roadmap_output \
--rounds 5
脚本职责:
output_dir/.nsfc-roadmap/spec_latest.yamlroadmap.drawio(可编辑源文件)roadmap.svg / roadmap.png / roadmap.pdf(交付结果)硬规则:只有当用户明确提出要用 Nano Banana/Gemini 图片模型(例如用户说“用 Nano Banana”“用 Gemini 出图”“不用 draw.io”)时,才允许启用该模式;否则必须保持默认 draw.io 流程。
提示:图片模型生成图内中文文字可能出现扭曲/乱码/模糊。本 skill 的确定性 Nano Banana prompt 已加入“印刷体字体 + 水平排版 + 禁变形”的强约束来降低该风险;但仍建议控制节点文案长度(1-2 行为宜)。如需 100% 可控字体与排版,优先使用默认 draw.io 流程。
环境变量(写入项目根目录 .env 或系统环境变量):
GEMINI_BASE_URL(例如 https://generativelanguage.googleapis.com/v1beta)GEMINI_API(Gemini API Key;也兼容 GEMINI_API_KEY/GOOGLE_API_KEY)GEMINI_MODEL(例如 gemini-3.1-flash-image-preview)连通性检查:
python3 nsfc-roadmap/scripts/nano_banana_check.py
生成(PNG-only):
python3 nsfc-roadmap/scripts/generate_roadmap.py \
--spec-file ./roadmap_output/spec.yaml \
--output-dir ./roadmap_output \
--rounds 1 \
--renderer nano_banana \
--style-ref ./path/to/style_ref_1.png \
--style-ref ./path/to/style_ref_2.jpg
目标:围绕阶段一在 roadmap-plan.md 中声明的叙事与版式约束,迭代改进可读性与专业感;必要时回写 spec 并复跑。
每轮必须产出结构化缺陷清单(建议 JSON):
P0:会被评审直接扣分(缺研究内容、逻辑断裂、孤立节点、不可读)P1:显著影响专业印象(布局混乱、重叠、刺眼配色、字号过小)P2:一般优化(间距不均、边距偏小、箭头不清晰、信息拥挤)纠偏原则(避免“越优化越不可读”):
spec(缩短节点文案/合并相近节点/减少节点数);不要用缩字号来“通过阈值”。停止策略以 config.yaml:evaluation 为准:
early_stop:legacy 提前终止规则(可选开启)stop_strategy: plateau:默认启用的“平台期停止”(基于 PNG 哈希与分数提升阈值)stop_strategy: ai_critic:AI 自主闭环(脚本不调用外部模型;每轮生成 request 并暂停等待宿主 AI 的 response)评估模式以 config.yaml:evaluation.evaluation_mode 为准:
heuristic(默认):脚本启发式评估 + 多维度自检(可复现、可离线)ai:额外导出纯度量证据 measurements.json/dimension_measurements.json 供宿主 AI 解读(常与 stop_strategy=ai_critic 搭配)补充:多维度自检(默认启用,配置见 config.yaml:evaluation.multi_round_self_check):
structure/visual/readability 三个维度评估critique_*.json,并汇总进 evaluation.json当你希望把“怎么画图/是否继续/改哪儿”交给宿主 AI 决策时,启用 ai_critic 模式:
output_dir/.nsfc-roadmap/config_local.yamlevaluation.stop_strategy: ai_critic(这是实例级开关,不改全局 config.yaml)generate_roadmap.py 后脚本会:
output_dir/.nsfc-roadmap/ai/{run_dir}/ai_pack_round_XX/(含 roadmap.png/spec_latest.yaml/config_used.yaml/evaluation.json/measurements.json/dimension_measurements.json/critique_*.json;若 renderer=nano_banana 还会包含 nano_banana_prompt.md)ai_critic_request.mdai_critic_response.yamlai_critic_response.yaml 后,再次运行脚本即可自动应用 patch 并进入下一轮。当你使用 --renderer nano_banana(Gemini 图片模型)并同时启用 evaluation.stop_strategy: ai_critic 时:
roadmap.png)的视觉判断 为主;evaluation.json/critique_*.json 仅作参考。nano_banana_prompt.md(本轮传给 Gemini 的完整 prompt),便于你对照当前绘图指令。nano_banana_prompt 字段,用于控制下一轮传给 Gemini 的 prompt(见下方协议)。nano_banana_prompt.mode 使用 full 还是 patch,脚本都会在真正发给 Gemini 的 prompt 中自动补齐“字体与文字排版”硬约束,避免多轮优化时把防扭曲规则丢掉。style_continuity: true;下一轮会把上一轮 roadmap.png 作为参考图一并传给 Gemini,以保证风格延续,避免“开盲盒式换风格”。style_continuity: false;下一轮不传参考图(让模型有空间重做风格)。nano_banana_color_advice,脚本会自动拼到下一轮 prompt 里(建议写成可执行规则)。Edit PDFs with natural-language instructions using the nano-pdf CLI.