化学反应微观演示 → 交互网页 这个技能产出什么 一个可直接用浏览器打开的单页 HTML:一侧是反应对应的 3D 分子动画 (Three.js,可旋转缩放, 拖动“反应进度”滑块逐帧看 化学键断裂/生成、原子重新组合 ,分步高亮 + 浮动分子标签), 另一侧是 KaTeX 反应方程 + 分步讲解 + 原子守恒计数器 ,并可选 能量-反应进程曲线 、 火焰、催化剂质子、电子转移等叠加层。形态与 一致。 依赖(重要) 计算核心 依赖 sympy (用于配平)。运行脚本前先确认有一个能 import sympy 的 :跑 (本机: )。 缺库时的处理(重要) :若 import 报错(sympy 或后续用到的任何库都同理), 先询问用户是否安装 , 同意后再装( )或换解释器; 不要未经询问直接装 。 RDKit 是可选项 :装了则混合几何会用它由 SMILES 生成真实构象,没装就用自建 VSEPR 库—— 两种都能跑, 本技能任何时候都不会自动安装 RDKit 。 工作流程 第 1 步:得到 reaction spec(三入口归一) 把反应整理成结构化 spec(格式见 ):反应物/产物、原子映射或显式原子、 条件(点燃/通电/催化/可逆)、所属类别、分步讲解、 语言 。 - 文字反应/方程 :直接抽取反应物与产物,调 kernel 自动配平。 - 图片 :用视觉读图抽取方程,并…

, right: '

化学反应微观演示 → 交互网页 这个技能产出什么 一个可直接用浏览器打开的单页 HTML:一侧是反应对应的 3D 分子动画 (Three.js,可旋转缩放, 拖动“反应进度”滑块逐帧看 化学键断裂/生成、原子重新组合 ,分步高亮 + 浮动分子标签), 另一侧是 KaTeX 反应方程 + 分步讲解 + 原子守恒计数器 ,并可选 能量-反应进程曲线 、 火焰、催化剂质子、电子转移等叠加层。形态与 一致。 依赖(重要) 计算核心 依赖 sympy (用于配平)。运行脚本前先确认有一个能 import sympy 的 :跑 (本机: )。 缺库时的处理(重要) :若 import 报错(sympy 或后续用到的任何库都同理), 先询问用户是否安装 , 同意后再装( )或换解释器; 不要未经询问直接装 。 RDKit 是可选项 :装了则混合几何会用它由 SMILES 生成真实构象,没装就用自建 VSEPR 库—— 两种都能跑, 本技能任何时候都不会自动安装 RDKit 。 工作流程 第 1 步:得到 reaction spec(三入口归一) 把反应整理成结构化 spec(格式见 ):反应物/产物、原子映射或显式原子、 条件(点燃/通电/催化/可逆)、所属类别、分步讲解、 语言 。 - 文字反应/方程 :直接抽取反应物与产物,调 kernel 自动配平。 - 图片 :用视觉读图抽取方程,并…

, display: false }] });\n }\n };\n })();\n \u003c/script>\n\u003c/body>\n\u003c/html>\n","content_type":"text/html; charset=utf-8","language":"markup","size":44459,"content_sha256":"3e75142c945a7afe8bebad080aedcf3440362660d27701ee6acaaae54d39b290"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"化学反应微观演示 → 交互网页","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"这个技能产出什么","type":"text"}]},{"type":"paragraph","content":[{"text":"一个可直接用浏览器打开的单页 HTML:一侧是反应对应的 ","type":"text"},{"text":"3D 分子动画","type":"text","marks":[{"type":"strong"}]},{"text":"(Three.js,可旋转缩放, 拖动“反应进度”滑块逐帧看 ","type":"text"},{"text":"化学键断裂/生成、原子重新组合","type":"text","marks":[{"type":"strong"}]},{"text":",分步高亮 + 浮动分子标签), 另一侧是 ","type":"text"},{"text":"KaTeX 反应方程 + 分步讲解 + 原子守恒计数器","type":"text","marks":[{"type":"strong"}]},{"text":",并可选 ","type":"text"},{"text":"能量-反应进程曲线","type":"text","marks":[{"type":"strong"}]},{"text":"、 火焰、催化剂质子、电子转移等叠加层。形态与 ","type":"text"},{"text":"template/reaction.html","type":"text","marks":[{"type":"code_inline"}]},{"text":" 一致。","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"依赖(重要)","type":"text"}]},{"type":"paragraph","content":[{"text":"计算核心 ","type":"text"},{"text":"lib/reaction_kernel.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" 依赖 ","type":"text"},{"text":"sympy","type":"text","marks":[{"type":"strong"}]},{"text":"(用于配平)。运行脚本前先确认有一个能 import sympy 的 ","type":"text"},{"text":"python3","type":"text","marks":[{"type":"code_inline"}]},{"text":":跑 ","type":"text"},{"text":"python3 -c \"import sympy\"","type":"text","marks":[{"type":"code_inline"}]},{"text":"(本机:","type":"text"},{"text":"/opt/homebrew/bin/python3.11","type":"text","marks":[{"type":"code_inline"}]},{"text":")。","type":"text"}]},{"type":"paragraph","content":[{"text":"缺库时的处理(重要)","type":"text","marks":[{"type":"strong"}]},{"text":":若 import 报错(sympy 或后续用到的任何库都同理),","type":"text"},{"text":"先询问用户是否安装","type":"text","marks":[{"type":"strong"}]},{"text":", 同意后再装(","type":"text"},{"text":"python3 -m pip install \u003c库名>","type":"text","marks":[{"type":"code_inline"}]},{"text":")或换解释器;","type":"text"},{"text":"不要未经询问直接装","type":"text","marks":[{"type":"strong"}]},{"text":"。 ","type":"text"},{"text":"RDKit 是可选项","type":"text","marks":[{"type":"strong"}]},{"text":":装了则混合几何会用它由 SMILES 生成真实构象,没装就用自建 VSEPR 库—— 两种都能跑,","type":"text"},{"text":"本技能任何时候都不会自动安装 RDKit","type":"text","marks":[{"type":"strong"}]},{"text":"。","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"工作流程","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"第 1 步:得到 reaction spec(三入口归一)","type":"text"}]},{"type":"paragraph","content":[{"text":"把反应整理成结构化 spec(格式见 ","type":"text"},{"text":"references/problem-schema.md","type":"text","marks":[{"type":"code_inline"}]},{"text":"):反应物/产物、原子映射或显式原子、 条件(点燃/通电/催化/可逆)、所属类别、分步讲解、","type":"text"},{"text":"语言","type":"text","marks":[{"type":"strong"}]},{"text":"。","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"文字反应/方程","type":"text","marks":[{"type":"strong"}]},{"text":":直接抽取反应物与产物,调 kernel 自动配平。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"图片","type":"text","marks":[{"type":"strong"}]},{"text":":用视觉读图抽取方程,并","type":"text"},{"text":"把识别到的反应回显给用户确认","type":"text","marks":[{"type":"strong"}]},{"text":"(方程/条件/类别/语言)后再继续。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"随机出题","type":"text","marks":[{"type":"strong"}]},{"text":":从注册表挑一个反应,或在库内物种间组合并用 ","type":"text"},{"text":"balanced_coefficients","type":"text","marks":[{"type":"code_inline"}]},{"text":" 配平、答案规整再用。","type":"text"}]}]}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"输出语言跟随提示词语言","type":"text","marks":[{"type":"strong"}]},{"text":":英文提示 → 英文网页,中文 → 中文。spec 里记下 ","type":"text"},{"text":"meta.language","type":"text","marks":[{"type":"code_inline"}]},{"text":"。","type":"text"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"第 2 步:用 kernel 精确计算(不要心算)","type":"text"}]},{"type":"paragraph","content":[{"text":"按 ","type":"text"},{"text":"references/conventions.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" 的建模约定,调用 ","type":"text"},{"text":"lib/reaction_kernel.py","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"balanced_coefficients(...)","type":"text","marks":[{"type":"code_inline"}]},{"text":" 用 sympy 零空间","type":"text"},{"text":"自动配平","type":"text","marks":[{"type":"strong"}]},{"text":"(方程系数有保证);","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"assemble_data(spec)","type":"text","marks":[{"type":"code_inline"}]},{"text":" 展开分子实例、","type":"text"},{"text":"校验原子守恒与原子映射双射","type":"text","marks":[{"type":"strong"}]},{"text":"、","type":"text"},{"text":"推导键的断/成(差集)","type":"text","marks":[{"type":"strong"}]},{"text":"、 算出每个原子在反应物态/产物态的世界坐标,产出注入模板的 ","type":"text"},{"text":"data","type":"text","marks":[{"type":"code_inline"}]},{"text":"。","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"可先命令行自检:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"python3 lib/reaction_kernel.py # 配平 + 守恒 + 键差 自检\npython3 lib/molecules.py # 分子库自检","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"第 3 步:写 build_* 拼 spec 并注入模板","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"📍 ","type":"text"},{"text":"输出位置(重要)","type":"text","marks":[{"type":"strong"}]},{"text":":成品 HTML 一律写到","type":"text"},{"text":"用户当前工作目录(","type":"text","marks":[{"type":"strong"}]},{"text":"Path.cwd()","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":")","type":"text","marks":[{"type":"strong"}]},{"text":",除非用户显式指定路径。 ","type":"text"},{"text":"绝不要","type":"text","marks":[{"type":"strong"}]},{"text":"写进技能自身目录(","type":"text"},{"text":"skills/edu-chem-reaction/output/","type":"text","marks":[{"type":"code_inline"}]},{"text":" 等)——那是技能内部的开发样例目录。","type":"text"}]}]},{"type":"paragraph","content":[{"text":"照着 ","type":"text"},{"text":"scripts/generate.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" 里的 ","type":"text"},{"text":"build_*","type":"text","marks":[{"type":"code_inline"}]},{"text":" 改即可,再 ","type":"text"},{"text":"render_html(K.assemble_data(spec), out)","type":"text","marks":[{"type":"code_inline"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"python"},"content":[{"text":"from pathlib import Path\nout = Path.cwd() / \"reaction-\u003c反应简述>.html\" # 落在用户当前目录\nrender_html(K.assemble_data(spec), out)","type":"text"}]},{"type":"paragraph","content":[{"text":"范例(直接照抄改)","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"build_combustion_ch4","type":"text","marks":[{"type":"code_inline"}]},{"text":"(甲烷燃烧·morph·火焰·能量)——高层 ","type":"text"},{"text":"species + atom_map","type":"text","marks":[{"type":"code_inline"}]},{"text":" 的范本;","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"build_redox_na_cl2","type":"text","marks":[{"type":"code_inline"}]},{"text":"(钠+氯气·氧化还原·电子转移)——叠加 ","type":"text"},{"text":"electrons","type":"text","marks":[{"type":"code_inline"}]},{"text":";","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"build_esterification","type":"text","marks":[{"type":"code_inline"}]},{"text":"(酯化·mechanism·催化剂·过渡态)——低层 ","type":"text"},{"text":"atoms + fragments + 关键帧","type":"text","marks":[{"type":"code_inline"}]},{"text":" 的范本。","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"generate.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" 可直接出已注册反应;","type":"text"},{"text":"不传路径默认写到 cwd","type":"text","marks":[{"type":"strong"}]},{"text":":","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"python3 \u003c技能目录>/scripts/generate.py combustion_ch4 ./reaction.html\npython3 \u003c技能目录>/scripts/generate.py list","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"第 4 步:自检(对应正确性方案)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"sympy 配平系数 == 方程展示系数 == 各分子实例个数(","type":"text"},{"text":"assemble_data","type":"text","marks":[{"type":"code_inline"}]},{"text":" 内已断言)。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"原子映射是反应物↔产物原子的","type":"text"},{"text":"双射","type":"text","marks":[{"type":"strong"}]},{"text":"、元素一致;键端点都存在(kernel 已校验)。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"原子守恒计数器在反应前后不变(催化剂不计入)。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"起本地静态服务(服务","type":"text"},{"text":"输出文件所在目录","type":"text","marks":[{"type":"strong"}]},{"text":")用预览检查:无控制台报错、KaTeX 方程渲染正常、 拖滑块时断键/成键高亮与分步讲解一致。","type":"text"}]}]}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"⚠️ ","type":"text"},{"text":"必须关闭你开过的端口/服务","type":"text","marks":[{"type":"strong"}]},{"text":":预览检查一结束就立即停掉本地服务,","type":"text"},{"text":"绝不留下占用端口的进程","type":"text","marks":[{"type":"strong"}]},{"text":"。 用 preview 工具开的:检查完马上 ","type":"text"},{"text":"preview_stop","type":"text","marks":[{"type":"code_inline"}]},{"text":"。交付前确认端口已释放,再告诉用户结果。","type":"text"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"第 5 步:交付","type":"text"}]},{"type":"paragraph","content":[{"text":"成品写在","type":"text"},{"text":"用户当前工作目录(cwd)","type":"text","marks":[{"type":"strong"}]},{"text":",命名形如 ","type":"text"},{"text":"reaction-\u003c反应简述>.html","type":"text","marks":[{"type":"code_inline"}]},{"text":",把路径告诉用户,可直接浏览器打开。 交付前确认:","type":"text"},{"text":"(1)","type":"text","marks":[{"type":"strong"}]},{"text":" 成品在 cwd、不在技能目录;","type":"text"},{"text":"(2)","type":"text","marks":[{"type":"strong"}]},{"text":" 没有遗留任何由本次预览开启的本地服务/端口。","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"两套引擎与自动选择","type":"text"}]},{"type":"paragraph","content":[{"text":"模板内置一套统一渲染器、两种逐帧定位(共用键差绘制/标签/叠加层/UI):","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"morph","type":"text","marks":[{"type":"strong"}]},{"text":"(原子变形):原子各自从反应物态插值到产物态,天然展示","type":"text"},{"text":"原子守恒/重组","type":"text","marks":[{"type":"strong"}]},{"text":",适配任意反应。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"mechanism","type":"text","marks":[{"type":"strong"}]},{"text":"(机理关键帧):原子归属刚体片段(fragment),按 K0/K1/K2 关键帧整体位移, 基团不变形,适配","type":"text"},{"text":"催化剂/过渡态/离去基团","type":"text","marks":[{"type":"strong"}]},{"text":"类有机机理。","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"assemble_data","type":"text","marks":[{"type":"code_inline"}]},{"text":" 据 ","type":"text"},{"text":"meta.engine","type":"text","marks":[{"type":"code_inline"}]},{"text":"(","type":"text"},{"text":"auto","type":"text","marks":[{"type":"code_inline"}]},{"text":"/","type":"text"},{"text":"morph","type":"text","marks":[{"type":"code_inline"}]},{"text":"/","type":"text"},{"text":"mechanism","type":"text","marks":[{"type":"code_inline"}]},{"text":")选择:","type":"text"},{"text":"auto","type":"text","marks":[{"type":"code_inline"}]},{"text":" 时,类别为 ","type":"text"},{"text":"organic","type":"text","marks":[{"type":"code_inline"}]},{"text":" 或带 ","type":"text"},{"text":"fragments","type":"text","marks":[{"type":"code_inline"}]},{"text":" 走 mechanism,否则走 morph。叠加层均为数据开关(见 schema): ","type":"text"},{"text":"flame","type":"text","marks":[{"type":"code_inline"}]},{"text":"(燃烧/强放热)、","type":"text"},{"text":"catalyst","type":"text","marks":[{"type":"code_inline"}]},{"text":"(催化剂质子+开关)、","type":"text"},{"text":"transitionGlow","type":"text","marks":[{"type":"code_inline"}]},{"text":"(过渡态能量光)、 ","type":"text"},{"text":"electrons","type":"text","marks":[{"type":"code_inline"}]},{"text":"(氧化还原电子转移)、","type":"text"},{"text":"energy","type":"text","marks":[{"type":"code_inline"}]},{"text":"(能量-反应进程曲线)、原子守恒计数器(默认开)。","type":"text"}]},{"type":"paragraph","content":[{"text":"配色","type":"text","marks":[{"type":"strong"}]},{"text":":整体为亮色(教科书球棍图风:原子带深色描边 + 柔和投影 + 白底面板),各反应用 ","type":"text"},{"text":"meta.accent","type":"text","marks":[{"type":"code_inline"}]},{"text":" 区分强调色(燃烧 amber、酯化 indigo、钠氯 violet…)。","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"扩展","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"加反应","type":"text","marks":[{"type":"strong"}]},{"text":":在 ","type":"text"},{"text":"generate.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" 加一个 ","type":"text"},{"text":"build_*","type":"text","marks":[{"type":"code_inline"}]},{"text":"(高层 ","type":"text"},{"text":"species+atom_map","type":"text","marks":[{"type":"code_inline"}]},{"text":",或低层 ","type":"text"},{"text":"atoms+fragments","type":"text","marks":[{"type":"code_inline"}]},{"text":"), 注册进 ","type":"text"},{"text":"REGISTRY","type":"text","marks":[{"type":"code_inline"}]},{"text":"。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"加分子/离子","type":"text","marks":[{"type":"strong"}]},{"text":":在 ","type":"text"},{"text":"lib/molecules.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" 的 ","type":"text"},{"text":"_LIBRARY_BUILDERS","type":"text","marks":[{"type":"code_inline"}]},{"text":" 加一项(VSEPR 几何 + 显示元数据 + 内部键)。","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"加叠加层","type":"text","marks":[{"type":"strong"}]},{"text":":在 ","type":"text"},{"text":"template/reaction.html","type":"text","marks":[{"type":"code_inline"}]},{"text":" 增一个由 ","type":"text"},{"text":"data","type":"text","marks":[{"type":"code_inline"}]},{"text":" 字段驱动的可选模块。","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"目录","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"template/reaction.html","type":"text","marks":[{"type":"code_inline"}]},{"text":" — 数据驱动模板(统一渲染器 + 双引擎 + 数据岛 ","type":"text"},{"text":"__REACTION_DATA__","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"lib/molecules.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" — VSEPR 理想分子几何库(含元素表/配色/半径)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"lib/reaction_kernel.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" — sympy 配平 + 守恒/映射校验 + 键差 + 场景装配 + 可选 RDKit 探测","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"scripts/generate.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" — 注入模板 + 范例 build_*(含 REGISTRY 与 CLI)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/problem-schema.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — reaction spec 与 data 的数据格式","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/conventions.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" — 建模约定、引擎选择、叠加层、配平与自检","type":"text"}]}]}]}]},"metadata":{"date":"2026-11-02","name":"edu-chem-reaction","author":"@skillopedia","source":{"stars":1734,"repo_name":"edulab","origin_url":"https://github.com/wy51ai/edulab/blob/HEAD/skills/edu-chem-reaction/SKILL.md","repo_owner":"wy51ai","body_sha256":"f99362d4c1c6628c8150b717ba3cd23cb1c24b410d50017f95911254b822711e","cluster_key":"86008d617f0cc2425260cadb83150582f33fbad9189c9766ed37aa298205508a","clean_bundle":{"format":"clean-skill-bundle-v1","source":"wy51ai/edulab/skills/edu-chem-reaction/SKILL.md","text_bytes":108878,"source_commit":"805fdc5dd6bdf942290a7791924bf0ee08f26632","skills_sh_rank":19597,"attachment_count":6,"text_attachments":6,"attachment_storage":"skill_attachments","binary_attachments":0},"cluster_size":1,"skill_md_path":"skills/edu-chem-reaction/SKILL.md","import_metadata":{"date":"2026-11-02","author":"@skillopedia","version":"v1","category":"education-research","category_label":"Education"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"education-research","import_tag":"skills-sh-top20k-2026-11","description":"把一个化学反应做成自包含的微观 3D 交互演示网页:左/上为 Three.js 可交互分子动画 (拖滑块看断键·成键·原子重组,分步高亮),右为 KaTeX 反应方程 + 分步讲解 + 原子守恒计数 + 可选能量-反应进程曲线。支持三入口——给定文字反应/方程、随机出题、上传图片识别后演示。 覆盖燃烧、化合/分解/置换/复分解、氧化还原(电子转移可视化)、有机机理(酯化等含催化剂·过渡态)。 统一由 sympy 精确驱动:自动配平方程、校验原子守恒与原子映射、推导键的断/成,答案与几何同源一致。 内置两套引擎并自动选择:morph(原子变形,展示原子守恒)与 mechanism(机理关键帧,展示催化/过渡态)。 混合几何:默认自建 VSEPR 分子库,环境装有 RDKit 则可用其由 SMILES 生成构象(绝不自动安装)。 其他 agent 也可调用本技能生成此类网页。形态与 edu-solid-geometry / edu-analytic-geometry 平行, 但用 Three.js + KaTeX 演示分子反应。 触发词:化学反应, 微观演示, 分子动画, 燃烧, 甲烷燃烧, 氢气燃烧, 电解水, 氧化还原, 电子转移, 酯化反应, 反应机理, 断键成键, 原子守恒, 质量守恒, 化学方程式配平, 解这个化学反应, 随机出一个化学反应, 这张图里的化学反应; chemistry reaction, microscopic/molecular animation, combustion, electrolysis, redox electron transfer, esterification mechanism, bond breaking and forming, atom conservation, balance equation, interactive chemistry reaction page."}},"renderedAt":1793666680936}

化学反应微观演示 → 交互网页 这个技能产出什么 一个可直接用浏览器打开的单页 HTML:一侧是反应对应的 3D 分子动画 (Three.js,可旋转缩放, 拖动“反应进度”滑块逐帧看 化学键断裂/生成、原子重新组合 ,分步高亮 + 浮动分子标签), 另一侧是 KaTeX 反应方程 + 分步讲解 + 原子守恒计数器 ,并可选 能量-反应进程曲线 、 火焰、催化剂质子、电子转移等叠加层。形态与 一致。 依赖(重要) 计算核心 依赖 sympy (用于配平)。运行脚本前先确认有一个能 import sympy 的 :跑 (本机: )。 缺库时的处理(重要) :若 import 报错(sympy 或后续用到的任何库都同理), 先询问用户是否安装 , 同意后再装( )或换解释器; 不要未经询问直接装 。 RDKit 是可选项 :装了则混合几何会用它由 SMILES 生成真实构象,没装就用自建 VSEPR 库—— 两种都能跑, 本技能任何时候都不会自动安装 RDKit 。 工作流程 第 1 步:得到 reaction spec(三入口归一) 把反应整理成结构化 spec(格式见 ):反应物/产物、原子映射或显式原子、 条件(点燃/通电/催化/可逆)、所属类别、分步讲解、 语言 。 - 文字反应/方程 :直接抽取反应物与产物,调 kernel 自动配平。 - 图片 :用视觉读图抽取方程,并…