ray-chem-compat — 化学品相容性判定 + 三层知识库
一、这条 skill 是什么
由 CRW(Chemical Reactivity Worksheet) 方法学蒸馏 + 本地三层知识库构成的化学品相容性判定工具:
| 层 | 粒度 | 数据(data/) |
用途 |
|---|---|---|---|
| L1 判定层 | 基团对(68 基团 × 2346 规则) | reactive_groups.json group_pair_rules.json |
主引擎:判 Y/N/C/X/SR |
| L2 证据层 | 物质 / 物质对 | cameo_reactivity.json(1306) whpdj_incompat.json(1000) breth_entries.json(5218)+页缓存(1481页) |
兜底 / 反查证伪 |
| L3 材质层 | 物质 × 材质 | sheet1_material.json(7 材质) |
材质矩阵 |
二、检索入口(脚本)
python "<skill>/scripts/query.py" --cas 10217-52-4 # 危险品全书(中文名称禁配物五字段)
python "<skill>/scripts/query.py" --name Hydrazine --source breth # Bretherick 条目(no/page/CAS/refs)
python "<skill>/scripts/query.py" --name "hydrogen peroxide" --source cameo # CAMEO 六段反应性
python "<skill>/scripts/query.py" --pair "水合肼,二氧化碳" # 成对查(两库并列)
各文件检索要点:
- cameo_reactivity.json:键=CHRIS 3 字符码(如 HPO);字段 name / cas / reactive_group(CG 配伍组) / react{water, common_materials, transport, neutralizer, polymerize, inhibitor}。
- whpdj_incompat.json:键=主名;字段 fields{稳定性, 危险反应, 避免接触的条件, 禁配物, 危险的分解产物} + pages + cas(1000/1008 回填)。
- breth_entries.json:键=条目号(0 补齐 4 位,字母后缀分支如 0825);字段 title/page/cas/refs/related/dag。dag=Bretherick 高危记号(†)。
- cache_breth8_pages.json:仅作回源正文用(查询命中条目 → 用 page 读页全文),不要整读。
辅助脚本 compat_engine.py(L1 引擎)、build_*.py(三库重建生成器,源 PDF 路径在 D:\,可重跑)。
化学品→配伍组索引:data/chem_index.json(52 种母版清单,idx/row 绑定母版表行号,勿外部追加)+ data/chem_index_ext.json(v1.2.0 回流的已核验扩展清单,纯增量)。引擎默认从 data/ 读规则库(v1.2.0 修复,无需显式传路径)。
⚠️ 铁律(必须遵守)
- 仲裁顺序:L1 判定 → L2 证伪 → 冲突并列输出+标注冲突,人工裁决。L2 不得覆盖 L1,也不得充当 IPL。
- 粒度不混:L2 是"物质/物质对"证据(案例级),NOWAY 拿它当判定规则或造 L1 新规则;它只能 ① 兜底 ② 证伪。
- 页码随条走:Bretherick 条目输出必须带
no/page,禁配物条目带pages+ 书目信息;引用必须可回源。 - 按需加载:L2/L3 一律
query.py查后只注入命中条目,禁止整库读入上下文。 - 判定场景刚性:引用 CRW 判定结论时必须随附其适用场景(≤35 °C、非气密隔热容器、混合存放 ≤1 天)。
- 符号口径:
Y 相容 / N 不相容 / C 警告 / X 无自反应(仅对角) / SR 潜在自反应 / ? 未判定 / ⚠ 证据冲突 / * 非库判——与[]2-相容性矩阵(引擎版)同口径。 - 材质轴 ≠ 化学轴(两条轴独立判定);
√(相容)只说明该材质耐该介质,不代表混存安全。 - 兜底纪律:库无的物质标
*非库判(B 级),引用时显式提示"未经原厂数据表确认"。
三、默认交付形态(同时三件,缺一即不完整)
判定完成后的标准交付包(三个文件 + 一个工作簿)——用户只要矩阵时默认全给:
| # | 交付物 | 载体 | 内容与版式契约(格式已定,逐条对齐,不得自创) |
|---|---|---|---|
| 1 | 相容性交互矩阵.html | 单文件 HTML(零外链、离线可开) | ① 沿对角线只保留左下半:值落格=(行=成员i, 列=成员j) 且 i≥j;右上侧(镜像位 i>j)一律空置——信息与左下完全重复,不得回填;② 实写格数恰 N(N+1)/2(N=48 时 1176);③ 配色 Y 绿 / N 红 / C 黄 / X 蓝 / SR 橙,?/⚠/* 不着色;④ 点击左下半任一格 → 侧栏出逐基团对依据(判定/触发对/代码/气体/文档);⑤ 筛选框高亮该行该列;⑥ 对角格不弹"依据"而提示自对语义 |
| 2 | Excel 版(工艺物料安全物性数据表(引擎版).xlsx) |
xlsx | 相同半矩阵契约:方阵 F5:(5+N,5+N)、值落 (5+i, 6+j) i≥j(即左下半,对角每行只写一次);表头行 2/3/4 全宽 48 列(序号/中文名/英文名,不沿对角收敛);右侧区值/批注/填充色三清、母版遗留框(O6:U11)去中粗边;批注仅 N/C 格(判定+触发基团对+代码+气体+依据,单段截 900 字);图例只留底部 F58:F66;行 1 说明带留空。第二个 sheet=3-材质矩阵(引擎版):7 材质 × N 化学品,标记 √/×/—(√=该材质耐该介质,≠混存安全),A4:B5 角标,表尾"数据源与口径"说明区不可省 |
| 3 | 中文危害标签矩阵.html | 单文件 HTML | 标签体系=CRW 13 条危害声明中译(10 类实质标签进标签列;NR 不进、附注标出;X 辐射 全库未出现不列);视图一=化学品 × 标签计数热力图(数字=该化学品在需注意的 632 对中产生该危害的对数,色深=对数多;只打 ✓ 无区分度已弃用);视图二=化学品对 × 标签(N 先按严重度排);*非库判 行淡黄底 + 星标 |
交付纪律:
1. 只要产出判定矩阵,三件必须一起出(HTML 看图/办公传阅、Excel 入台账、危害标签矩阵看"防什么"),缺件须说明原因并补齐;
2. 三件同源同判——都由同一份 L1 判定结果生成,不允许分别手改;
3. 命名遵循会话根目录交付物规则(绝对路径交付),过程文件不放根目录。
四、已有交付链(本项目阶段 1–5 产物)
- 交付物:
工艺物料安全物性数据表(引擎版).xlsx(2-相容性矩阵( Engines 版)+3-材质矩阵( Engines 版))、相容性交互矩阵.html、中文危害标签矩阵.html。 - 验收锚点(案例回环重放,必须 0 判错):
水合肼 18 项标尺、叔辛胺 15 项 SDS 禁配;水合肼×CO₂×不锈钢(Bretherick 8th p1004);环氧乙烷聚合升压。 - 出处报告:阶段 1–5
*.md(母版反解、CRW 方法学、兜底层、材质矩阵、HTML、危害标签)。
五、新化学品清单赋组流程(v1.2.0 回流,2026-09-24 实战)
chem_index.json(52 种母版)之外的化学品,禁止凭化学直觉裸赋组,按以下顺序赋配伍组后再进引擎:
- 先查
data/chem_index_ext.json(已核验扩展清单)——CAS 命中直接用; - 未命中 → 查 CAMEO Chemicals 官方数据单(联网:
CAMEO Chemicals "<英文名>" "Belongs to the Following Reactive Group"),取其 CRW 反应性组名——必须是reactive_groups.json的 68 组名之一,多组物质(如次氯酸钠三组)带上全部组; - ⚠️
query.py --source cameo的 CG 码(CHRIS 配伍组)≠ CRW 组名:CG 有独立编号体系且含低反应性桶(如 CG=43),只作旁证,不作赋值依据; - 赋值记录
origin + confidence,经任务实战后回流补进chem_index_ext.json。
已核验速查(CAMEO 官方数据单,2026-09-24):
| CAS | 化学品 | CRW 配伍组 |
|---|---|---|
| 1336-21-6 | 氨水 | Bases, Weak + Water and Aqueous Solutions |
| 7722-84-1 | 过氧化氢 | Oxidizing Agents, Strong + Water and Aqueous Solutions |
| 7681-52-9 | 次氯酸钠 | Oxidizing Agents, Strong + Salts, Basic + Water and Aqueous Solutions |
| 7631-90-5 | 亚硫酸氢钠 | Sulfite and Thiosulfate Salts(溶液版另加 Water) |
| 7697-37-2 | 硝酸 | Acids, Strong Oxidizing(+Water) |
| 1310-73-2 / 1310-58-3 | 氢氧化钠 / 氢氧化钾 | Bases, Strong |
| 108-88-3 | 甲苯 | Hydrocarbons, Aromatic |
| 1330-20-7 | 二甲苯 | Hydrocarbons, Aromatic |
| 141-78-6 | 乙酸乙酯 | Esters(全名 Esters, Sulfate Esters, … and Borate Esters) |
| 75-09-2 | 二氯甲烷 | Halogenated Organic Compounds |
| 109-99-9 | 四氢呋喃 | Ethers |
基团级保守判读(引用 N/C 结论时必须随附,防误读):
- 羧酸 × 醇 = N:组规则按甲酸类"无催化剧烈酯化"判;乙酸 + 低级醇常温实际温和——保守值执行,不必恐慌;
- 水 × 过氧化氢/次氯酸钠 = N:组规则针对遇水剧烈反应的强氧化剂类;稀溶液稀释风险低,浓品稀释有放热 + 杂质催化分解风险,仍须谨慎;
- 水 × 强酸/强碱 = C:即稀释热警示(heat of dilution),不是"不相容"——操作纪律:酸入水、缓慢、搅拌、冷却;
- 硫酸 × 硝酸 = C:同属 Acids, Strong Oxidizing 的自组对 UR 判 C——混配即"硝化酸",仅限工艺受控条件。
八、技术兜底层(v1.4.0 · 网络交叉验证)
> 定位:L2 离线证据层之上的一层——当 CRW/规则库/L2 三层全都判不了时,走网络检索交叉验证。
> 原则:受控兜底,不是"搜到就填";搜不到 ≠ 相容;兜底不得自动升级为相容(相容必须人工签署)。
触发决策表(T1–T8)
- T1 无基团指派 → 化学品级取证(一次 SDS 检索覆盖整类物质)
- T2 基团对判
?→ pair 级双向证据 - T3 kit 判 Y 但现场更严苛 → 用户
--pairs指定(引擎不知现场) - T4 库判与现场矛盾 → 用户
--pairs指定(仅作"提请实测"依据,不直接改码) - T5 用户指定重点对 → 深度取证(含引文)
- T6 三元及以上/催化 → pairwise 结构盲区告警
- T7 特有中间体(无 CAS / 查不到) → 放宽到
?(防 SDS 全空) - T8 库判有据且场景匹配 → ❌ 不搜(成本闸门)
数据源优先级(对齐母版 Appendix- 页既有约定)
S 供应商 SDS §10 应避免的物质/条件
→ A Bretherick / NFPA 491M / Sax + 事故调查(CSB / eMARS / 应急管理部)+ GB 15603-2022 储存隔离表
→ B 厂商技术资料 / 材质相容表(仅线索)
→ C 论坛/百科(仅线索)
检索分工(职责切面)
本 skill 产出检索规格包:python scripts/fallback_pack.py [--in 清单.json] [--pairs "A,B;C,D"] →
自动给出 fallback_pack.json(T1–T7 触发依据、正向/反向检索词模板、证据类型清单、闸门阈值);
执行 = agent 层调 ray-synth-search(六步法 / 一致性分数 / 深链 / GAPS 直接复用,不重写)——
本 skill 自己不联网;回填 → fallback_cache.jsonl(物质对|温度|条件|答案|分数|证据 rank+URL+quote|GAPS|决策)——
全程可复现。
准入闸门
score ≥ 80 且 ≥2 独立源、其中 ≥1 权威 → 改码 + * + 来源批注(唯一可改码)
;60–79 或单一源 → ?(只存档);矛盾 → ⚠(两说并列强制人工仲裁);<20 / 未覆盖 → ?。
三条红线:搜不到 ≠ 相容(永不填 Y);兜底不得自动升级为"相容";外部证据出格必带 * 与来源。
降级契约(ray-synth-search 不在场时):① fallback_pack.py 照常产出规格包(零外部依赖);② 执行环退化为 agent 自带联网工具(如 web_search)或"人工按包内检索词执行";③ 无任何联网能力时,T1–T7 对应格一律保持 ? 并列入输出尾部"未判定清单"——本层禁止在没有一致性分数与深链的情况下判码;④ 提示对方:装上 ray-synth-search 后重跑覆盖,即恢复完整闸门。
验收纪律
- 判定交付后按「三件交付纪律」核对(HTML / Excel / 危害标签矩阵 齐备;对母版 48 种全量链适用,子集清单任务至少交付彩色 HTML 矩阵 + 逐格依据 JSON,缺件须说明)。
- 改动数据层的任何一步后,跑「验收锚点人工回放」(必须 0 判错):
水合肼 18 项标尺、叔辛胺 15 项 SDS 禁配、水合肼×CO₂×不锈钢(Bretherick 8th p1004)、环氧乙烷聚合升压;涉及自对规则时加放硫酸×硝酸=C(Acids Strong Oxidizing² → UR→C 锚点)。⚠️scripts/verify_skill_cases.py案例回环脚本尚未入库(2026-09-24 实测缺失,待补建);引擎健康最低检查 =default_kb()可加载且len(kb['kb']['rules'])==2346、len(kb['groups'])==68。
维护记录
| 日期 | 变更 |
|---|---|
| 2026-09-23 | v1.0.0:初建 skill(三层知识库 + 2346 条 L1 规则引擎 + query.py 统一入口,案例回环全过)。 |
| 2026-09-23 | v1.1.0:新增「默认交付形态」——判定完成同时交付三件(相容性交互矩阵.html + Excel 版 sheet×2 + 中文危害标签矩阵.html),三件同源同判、缺件须说明原因;验收纪律补三件核对。 |
| 2026-09-24 | v1.2.0:经验回流(20 种化学品矩阵实战)。①修复 compat_engine.py 默认 KB 路径 bug(build/→data/,此前 default_kb() 必报 FileNotFoundError,调用方被迫显式传路径);②验收纪律改「验收锚点人工回放」口径(verify_skill_cases.py 实测未入库,如实标注待补);③新增「五、新化学品清单赋组流程」(CAMEO 官方赋组四步 + 11 组已核验速查 + 基团级保守判读 4 条);④新增 data/chem_index_ext.json(12 种已核验化学品配伍组,纯增量不触母版索引)。回归:default_kb() 加载 + 210 格全矩阵判定 0 差异。 |
| 2026-09-24 | v1.2.1:三件交付物的版式契约固化入 SKILL.md(所有格式判据不再放在阶段报告里)——①HTML/Excel 同用「沿对角线只保左下半(i≥j),右上空置」+ 配色五码 + 表头全宽不收敛;②Excel 双 sheet 细则(批注/图例/说明区/材质轴口径);③危害标签矩阵 = 计数热力图 + 视图二,NR 不进标签。用户裁定:矩阵右上信息重复,保留对角线一侧即可。 |
escription: 化学品相容性判定与矩阵生成。输入化学品清单(中文名/英文名/CAS),用 CRW/NOAA 反应性基团体系(2346 条基团对规则库,L1 判定层)生成相容性矩阵(Y/N/C/X/SR/?, 配色+批注+依据),并内嵌三层异构知识库:L2 证据层(CAMEO 1306 份 CHRIS 反应性数据表|危险化学品安全技术全书·通用卷 1000 条「禁配物/危险反应」|Bretherick's Handbook 8th 5218 条目索引+全书页缓存)做兜底与证伪,L3 材质层(7 材质 × 48 化学品)。触发词:化学品相容、相容性矩阵、混合禁忌、混配危害、reactivity matrix、compatible。
version: 1.4.1
ray-chem-compat — 化学品相容性判定 + 三层知识库
一、这条 skill 是什么
由 CRW(Chemical Reactivity Worksheet) 方法学蒸馏 + 本地三层知识库构成的化学品相容性判定工具:
| 层 | 粒度 | 数据(data/) |
用途 |
|---|---|---|---|
| L1 判定层 | 基团对(68 基团 × 2346 规则) | reactive_groups.json group_pair_rules.json |
主引擎:判 Y/N/C/X/SR |
| L2 证据层 | 物质 / 物质对 | cameo_reactivity.json(1306) whpdj_incompat.json(1000) breth_entries.json(5218)+页缓存(1481页) |
兜底 / 反查证伪 |
| L3 材质层 | 物质 × 材质 | sheet1_material.json(7 材质) |
材质矩阵 |
二、检索入口(脚本)
python "<skill>/scripts/query.py" --cas 10217-52-4 # 危险品全书(中文名称禁配物五字段)
python "<skill>/scripts/query.py" --name Hydrazine --source breth # Bretherick 条目(no/page/CAS/refs)
python "<skill>/scripts/query.py" --name "hydrogen peroxide" --source cameo # CAMEO 六段反应性
python "<skill>/scripts/query.py" --pair "水合肼,二氧化碳" # 成对查(两库并列)
各文件检索要点:
- cameo_reactivity.json:键=CHRIS 3 字符码(如 HPO);字段 name / cas / reactive_group(CG 配伍组) / react{water, common_materials, transport, neutralizer, polymerize, inhibitor}。
- whpdj_incompat.json:键=主名;字段 fields{稳定性, 危险反应, 避免接触的条件, 禁配物, 危险的分解产物} + pages + cas(1000/1008 回填)。
- breth_entries.json:键=条目号(0 补齐 4 位,字母后缀分支如 0825);字段 title/page/cas/refs/related/dag。dag=Bretherick 高危记号(†)。
- cache_breth8_pages.json:仅作回源正文用(查询命中条目 → 用 page 读页全文),不要整读。
辅助脚本 compat_engine.py(L1 引擎)、build_*.py(三库重建生成器,源 PDF 路径在 D:\,可重跑)。
化学品→配伍组索引:data/chem_index.json(52 种母版清单,idx/row 绑定母版表行号,勿外部追加)+ data/chem_index_ext.json(v1.2.0 回流的已核验扩展清单,纯增量)。引擎默认从 data/ 读规则库(v1.2.0 修复,无需显式传路径)。
⚠️ 铁律(必须遵守)
- 仲裁顺序:L1 判定 → L2 证伪 → 冲突并列输出+标注冲突,人工裁决。L2 不得覆盖 L1,也不得充当 IPL。
- 粒度不混:L2 是"物质/物质对"证据(案例级),NOWAY 拿它当判定规则或造 L1 新规则;它只能 ① 兜底 ② 证伪。
- 页码随条走:Bretherick 条目输出必须带
no/page,禁配物条目带pages+ 书目信息;引用必须可回源。 - 按需加载:L2/L3 一律
query.py查后只注入命中条目,禁止整库读入上下文。 - 判定场景刚性:引用 CRW 判定结论时必须随附其适用场景(≤35 °C、非气密隔热容器、混合存放 ≤1 天)。
- 符号口径:
Y 相容 / N 不相容 / C 警告 / X 无自反应(仅对角) / SR 潜在自反应 / ? 未判定 / ⚠ 证据冲突 / * 非库判——与[]2-相容性矩阵(引擎版)同口径。 - 材质轴 ≠ 化学轴(两条轴独立判定);
√(相容)只说明该材质耐该介质,不代表混存安全。 - 兜底纪律:库无的物质标
*非库判(B 级),引用时显式提示"未经原厂数据表确认"。
三、默认交付形态(同时三件,缺一即不完整)
判定完成后的标准交付包(三个文件 + 一个工作簿)——用户只要矩阵时默认全给:
| # | 交付物 | 载体 | 内容与版式契约(格式已定,逐条对齐,不得自创) |
|---|---|---|---|
| 1 | 相容性交互矩阵.html | 单文件 HTML(零外链、离线可开) | ① 沿对角线只保留左下半:值落格=(行=成员i, 列=成员j) 且 i≥j;右上侧(镜像位 i>j)一律空置——信息与左下完全重复,不得回填;② 实写格数恰 N(N+1)/2(N=48 时 1176);③ 配色 Y 绿 / N 红 / C 黄 / X 蓝 / SR 橙,?/⚠/* 不着色;④ 点击左下半任一格 → 侧栏出逐基团对依据(判定/触发对/代码/气体/文档);⑤ 筛选框高亮该行该列;⑥ 对角格不弹"依据"而提示自对语义 |
| 2 | Excel 版(工艺物料安全物性数据表(引擎版).xlsx) |
xlsx | 相同半矩阵契约:方阵 F5:(5+N,5+N)、值落 (5+i, 6+j) i≥j(即左下半,对角每行只写一次);表头行 2/3/4 全宽 48 列(序号/中文名/英文名,不沿对角收敛);右侧区值/批注/填充色三清、母版遗留框(O6:U11)去中粗边;批注仅 N/C 格(判定+触发基团对+代码+气体+依据,单段截 900 字);图例只留底部 F58:F66;行 1 说明带留空。第二个 sheet=3-材质矩阵(引擎版):7 材质 × N 化学品,标记 √/×/—(√=该材质耐该介质,≠混存安全),A4:B5 角标,表尾"数据源与口径"说明区不可省 |
| 3 | 中文危害标签矩阵.html | 单文件 HTML | 标签体系=CRW 13 条危害声明中译(10 类实质标签进标签列;NR 不进、附注标出;X 辐射 全库未出现不列);视图一=化学品 × 标签计数热力图(数字=该化学品在需注意的 632 对中产生该危害的对数,色深=对数多;只打 ✓ 无区分度已弃用);视图二=化学品对 × 标签(N 先按严重度排);*非库判 行淡黄底 + 星标 |
交付纪律:
1. 只要产出判定矩阵,三件必须一起出(HTML 看图/办公传阅、Excel 入台账、危害标签矩阵看"防什么"),缺件须说明原因并补齐;
2. 三件同源同判——都由同一份 L1 判定结果生成,不允许分别手改;
3. 命名遵循会话根目录交付物规则(绝对路径交付),过程文件不放根目录。
四、已有交付链(本项目阶段 1–5 产物)
- 交付物:
工艺物料安全物性数据表(引擎版).xlsx(2-相容性矩阵( Engines 版)+3-材质矩阵( Engines 版))、相容性交互矩阵.html、中文危害标签矩阵.html。 - 验收锚点(案例回环重放,必须 0 判错):
水合肼 18 项标尺、叔辛胺 15 项 SDS 禁配;水合肼×CO₂×不锈钢(Bretherick 8th p1004);环氧乙烷聚合升压。 - 出处报告:阶段 1–5
*.md(母版反解、CRW 方法学、兜底层、材质矩阵、HTML、危害标签)。
五、新化学品清单赋组流程(v1.2.0 回流,2026-09-24 实战)
chem_index.json(52 种母版)之外的化学品,禁止凭化学直觉裸赋组,按以下顺序赋配伍组后再进引擎:
- 先查
data/chem_index_ext.json(已核验扩展清单)——CAS 命中直接用; - 未命中 → 查 CAMEO Chemicals 官方数据单(联网:
CAMEO Chemicals "<英文名>" "Belongs to the Following Reactive Group"),取其 CRW 反应性组名——必须是reactive_groups.json的 68 组名之一,多组物质(如次氯酸钠三组)带上全部组; - ⚠️
query.py --source cameo的 CG 码(CHRIS 配伍组)≠ CRW 组名:CG 有独立编号体系且含低反应性桶(如 CG=43),只作旁证,不作赋值依据; - 赋值记录
origin + confidence,经任务实战后回流补进chem_index_ext.json。
已核验速查(CAMEO 官方数据单,2026-09-24):
| CAS | 化学品 | CRW 配伍组 |
|---|---|---|
| 1336-21-6 | 氨水 | Bases, Weak + Water and Aqueous Solutions |
| 7722-84-1 | 过氧化氢 | Oxidizing Agents, Strong + Water and Aqueous Solutions |
| 7681-52-9 | 次氯酸钠 | Oxidizing Agents, Strong + Salts, Basic + Water and Aqueous Solutions |
| 7631-90-5 | 亚硫酸氢钠 | Sulfite and Thiosulfate Salts(溶液版另加 Water) |
| 7697-37-2 | 硝酸 | Acids, Strong Oxidizing(+Water) |
| 1310-73-2 / 1310-58-3 | 氢氧化钠 / 氢氧化钾 | Bases, Strong |
| 108-88-3 | 甲苯 | Hydrocarbons, Aromatic |
| 1330-20-7 | 二甲苯 | Hydrocarbons, Aromatic |
| 141-78-6 | 乙酸乙酯 | Esters(全名 Esters, Sulfate Esters, … and Borate Esters) |
| 75-09-2 | 二氯甲烷 | Halogenated Organic Compounds |
| 109-99-9 | 四氢呋喃 | Ethers |
基团级保守判读(引用 N/C 结论时必须随附,防误读):
- 羧酸 × 醇 = N:组规则按甲酸类"无催化剧烈酯化"判;乙酸 + 低级醇常温实际温和——保守值执行,不必恐慌;
- 水 × 过氧化氢/次氯酸钠 = N:组规则针对遇水剧烈反应的强氧化剂类;稀溶液稀释风险低,浓品稀释有放热 + 杂质催化分解风险,仍须谨慎;
- 水 × 强酸/强碱 = C:即稀释热警示(heat of dilution),不是"不相容"——操作纪律:酸入水、缓慢、搅拌、冷却;
- 硫酸 × 硝酸 = C:同属 Acids, Strong Oxidizing 的自组对 UR 判 C——混配即"硝化酸",仅限工艺受控条件。
验收纪律
- 判定交付后按「三件交付纪律」核对(HTML / Excel / 危害标签矩阵 齐备;对母版 48 种全量链适用,子集清单任务至少交付彩色 HTML 矩阵 + 逐格依据 JSON,缺件须说明)。
- 改动数据层的任何一步后,跑「验收锚点人工回放」(必须 0 判错):
水合肼 18 项标尺、叔辛胺 15 项 SDS 禁配、水合肼×CO₂×不锈钢(Bretherick 8th p1004)、环氧乙烷聚合升压;涉及自对规则时加放硫酸×硝酸=C(Acids Strong Oxidizing² → UR→C 锚点)。⚠️scripts/verify_skill_cases.py案例回环脚本尚未入库(2026-09-24 实测缺失,待补建);引擎健康最低检查 =default_kb()可加载且len(kb['kb']['rules'])==2346、len(kb['groups'])==68。
维护记录
| 日期 | 变更 |
|---|---|
| 2026-09-23 | v1.0.0:初建 skill(三层知识库 + 2346 条 L1 规则引擎 + query.py 统一入口,案例回环全过)。 |
| 2026-09-23 | v1.1.0:新增「默认交付形态」——判定完成同时交付三件(相容性交互矩阵.html + Excel 版 sheet×2 + 中文危害标签矩阵.html),三件同源同判、缺件须说明原因;验收纪律补三件核对。 |
| 2026-09-24 | v1.2.0:经验回流(20 种化学品矩阵实战)。①修复 compat_engine.py 默认 KB 路径 bug(build/→data/,此前 default_kb() 必报 FileNotFoundError,调用方被迫显式传路径);②验收纪律改「验收锚点人工回放」口径(verify_skill_cases.py 实测未入库,如实标注待补);③新增「五、新化学品清单赋组流程」(CAMEO 官方赋组四步 + 11 组已核验速查 + 基团级保守判读 4 条);④新增 data/chem_index_ext.json(12 种已核验化学品配伍组,纯增量不触母版索引)。回归:default_kb() 加载 + 210 格全矩阵判定 0 差异。 |
| 2026-09-24 | v1.2.1:三件交付物的版式契约固化入 SKILL.md(所有格式判据不再放在阶段报告里)——①HTML/Excel 同用「沿对角线只保左下半(i≥j),右上空置」+ 配色五码 + 表头全宽不收敛;②Excel 双 sheet 细则(批注/图例/说明区/材质轴口径);③危害标签矩阵 = 计数热力图 + 视图二,NR 不进标签。用户裁定:矩阵右上信息重复,保留对角线一侧即可。 |
| 2026-09-24 | v1.3.0:三件交付物生成器进 skill(scripts/build_deliverables.py,版式契约内建)——修两处用户实测纠错:①Excel 缺 3-材质矩阵(引擎版) sheet;②Excel/HTML 误生成全矩阵(契约要求沿对角线只保左下半,s= i≥j)。交付纪律升级:三件一律由 build_deliverables.py 产出,禁止手拼(材质 sheet 的映射表 → data/material_map.json 41 条,外加 3 条 alias 乙二醇/甲酸/碳酸钠(无水)。修复工件已按 10 名重发三件。 |
| 2026-09-24 | v1.2.2:Excel 版式对齐参考件(Compat_matrix-.xlsx,用户指定)——①sheet 改名 1-相容性矩阵(引擎版)+2-材质矩阵(引擎版)(序号从 1 起);②化学品表头三行版式:行2 序号(浅灰底)/行3 中文名(旋转 90°,行高 23.55)/行4 英文全大写加粗(旋转 90°,行高 218 竖排);③行标签带 A/B:D 合并(浅灰)/E 英文右靠加粗;④值格 Arial 9 无边框;⑤图例对齐参考版(F..T 合并 LEGEND + 英/中双列 + 底部 Compatibility Chart 页脚区);⑥英文名 = CAMEO CAS 反查大写。已重出 10 化学品版。 |
| 2026-09-24 | v1.3.1:Excel 版式第二层美化回流(用户亲手操刀)——行列几何调优:行 3 高度 23.55→85.2(竖排更长可见)、行 4 217.95→133.2;图例区每行 16.2,字体系 LEGEND=宋体 11 Bold / 码=微软雅黑 11 Bold / 英文与中文=微软雅黑 11;材质 sheet 字体全程微软雅黑 11(表头加粗)、行高 16.2、列宽 A 8.6/B 17.9/C 15.0、冻结取消。要点:用户美化=生成器内行为(不是一次性手修)。 |
| 2026-09-24 | v1.3.2:材质矩阵 sheet 色码规则回流(用户版反解)——√ =92D050 绿 / × =FF0000 红 / — =FFFF00 黄(值与图例块全部着色);标题行高 17.4;帧不变。此前 patch 只上值色,这次补齐图例区块三色。 |
| 2026-09-24 | v1.4.0:技术兜底层落地(实施计划 §七 原样装机)。①scripts/fallback_pack.py:T1-T8 决策表(以化学品为中心:T1/T7 化学品级、T2 pair 级、T3/T4/T5/T6 需 --pairs 人工声明、T8 不搜);②输出 |
| allback_pack.json(检索规格、S/-A-B-C 分级、闸门、三条红线)+ | |
| allback_cache.jsonl(回填卡片);③执行=agent 层调 ray-synth-search 六步法,skill 自身不联网;④chem_index cas 缺口已在 pack 中以 T7 标注(grep SDS §10 时走中文名也将可行)。 | |
| 2026-09-24 | v1.4.1:§八补基因组降级契约——对方环境若无 ray-synth-search:pack 照常产出(零外部依赖),执行环退化为 agent 自带联网工具或"留 ?"(红线:无一致性分数与深链不得判码),装上即恢复完整闸门。 |