用途
render-html 用于将 ARIS 工作流产出的 Markdown / JSON 产物渲染为单文件 HTML 视图,供真正需要阅读这些内容的人类查看。核心理念是:Markdown 是写给写作者的,HTML 是写给读者的;ARIS 各节点以 Markdown 作为规范、可审计、可机器解析的来源,而本技能负责把它转换为更易读的页面。Markdown 始终是事实来源。
适用与不适用
适合渲染有真实人类读者的 ARIS 产物,例如:
- idea-stage/IDEA_REPORT.md:排名想法、试点信号与评分,使用 academic 模板。
- review-stage/AUTO_REVIEW.md(配合 REVIEW_STATE.json):逐轮评分进展与弱点状态,使用 academic 模板,可用 --state 嵌入 JSON。
- paper/KILL_ARGUMENT.md(配合 KILL_ARGUMENT.json):逐点攻防,使用 details Q&A 卡片与红/黄/绿提示框,academic 模板。
- research-wiki/SUMMARY.md(或 index.md):跨实体总览驾驶舱,dashboard 模板。
- PAPER_PLAN.md(可选):声明—证据矩阵以表格呈现,academic 模板。
- RESUBMIT_REPORT.{md,json}(可选):七态失败模式台账,academic 或 dashboard 模板。
不建议用于:LaTeX 论文输出(最终面向读者的是 PDF)、SKILL.md 文件(面向 LLM 的内部协议)、.aris/traces/* 审查追踪(取证调试用途),以及项目中每一个 Markdown 文件——仅渲染能从固定目录、提示框、数学公式或评分进度中获益的产物。
主要能力
- 单文件输出:无需构建系统、无独立 CSS、无 node_modules,只生成一个 .html。
- 两种模板:academic(默认,线性长文,带固定侧边目录、衬线正文、提示框、表格、数学公式、Q&A details)与 dashboard(网格布局、字号更小、指标卡片更密集、无目录侧栏)。
- CDN 友好,支持 --offline 回退:默认从 cdn.jsdelivr.net 加载 MathJax 3 和 highlight.js;离线模式下跳过二者,数学以原始 $x$ 显示、代码块无高亮,但整体仍可读。
- 漂移检测:每个渲染 HTML 在 meta 标签和可见页头中嵌入源路径、SHA256 与生成时间戳。
- 纯标准库辅助脚本:render_html.py 只使用 re、html、hashlib、json、datetime、pathlib、argparse、sys,无需 pip 安装。
- 纵深防御式 XSS 清理:剥离 script/style/iframe/object/embed/form/input/button/link/meta/base 标签、所有 on* 事件属性,并把 javascript:/vbscript:/data: 等 scheme 重写为 #blocked-unsafe-url:;Markdown 文本内容单独做 HTML 转义。
- 支持的 Markdown 子集:多级标题(自动生成目录 ID)、段落、粗体、斜体、行内代码、删除线、链接、图片、有序/无序嵌套列表、带语言的代码块、ASCII 图形代码块(转为 diagram 样式)、带对齐的表格、带 emoji 前缀路由的引用提示框、块级 HTML 直通、行内与块级 LaTeX 数学。
- 不支持(有意简化):脚注、定义列表、引用式链接、Setext 式标题;文件顶部 frontmatter 会被剥离后再渲染。
使用方式
工具位置:规范实现位于 skills/render-html/scripts/render_html.py,模板位于 skills/render-html/scripts/templates/{academic,dashboard}.html。使用混合链解析 $RENDER_HTML(第 0 层优先使用技能自包含位置,第 1–3 层为共享运行时链)。
调用示例:
- 默认学术模板,输出到源文件旁的 .html:python3 "$RENDER_HTML" idea-stage/IDEA_REPORT.md
- 仪表盘模板:python3 "$RENDER_HTML" research-wiki/SUMMARY.md --template dashboard
- 自定义输出路径与标题:python3 "$RENDER_HTML" review-stage/AUTO_REVIEW.md --out review-stage/AUTO_REVIEW.html --title "Auto Review — overnight run" --eyebrow "Workflow 2"
- 嵌入 sidecar 状态 JSON:python3 "$RENDER_HTML" review-stage/AUTO_REVIEW.md --state review-stage/REVIEW_STATE.json
- 嵌入 sidecar JSON:python3 "$RENDER_HTML" paper/KILL_ARGUMENT.md --json paper/KILL_ARGUMENT.json --title "Kill Argument — adversarial review"
- 离线:python3 "$RENDER_HTML" idea-stage/IDEA_REPORT.md --offline
- 仅 JSON 输入(包裹在 pre/code 块中):python3 "$RENDER_HTML" review-stage/REVIEW_STATE.json --template dashboard
- 语言属性(默认 zh-CN):python3 "$RENDER_HTML" docs/SKILLS_CATALOG.md --lang en
--review / --no-review 标志由技能编排器解析,辅助脚本本身保持纯标准库、不调用 MCP。
工作流程:识别产物 → 选择模板 → 运行辅助脚本 → HTML 审查门(跨模型)→(可选)浏览器验证。
审查门与限制
学术模板 HTML 在作为成品视图交付前,由全新的跨家族 Codex 线程审查;默认学术模板会审查(可用 --no-review 跳过),dashboard 模板默认不审查(可用 --review 强制)。审查仅针对渲染保真度、安全性和结构,不判断声明真实性。审查结果写入 HTML 同级的 .review.json,原始轨迹保存到 .aris/traces/render-html/ 下。若审查结果为 FAIL,则不应交付,需修正源 Markdown 或模板后重新渲染;若为 WARN,可交付但需提示警告;若 Codex MCP 不可用,则记为 REVIEW_UNAVAILABLE,不伪造 PASS。
其他限制:数学公式与代码高亮依赖 CDN,离线模式会降级为纯文本;不支持脚注、定义列表、引用式链接与 Setext 标题;仅渲染能从增强阅读体验中获益的产物。