生殖毒理学 · 网络毒理学 Skill(v3.3.0)
0. 30 秒判断"能不能用"
cd ~/.workbuddy/skills/reproductive-network-toxicology
python scripts/rnt.py doctor # 环境体检:区分"硬性问题"与"仅影响某一步"(约 1 s)
python scripts/rnt.py test # 39 条回归测试:算法与 I/O 是否正常(约 3 s)
python scripts/rnt.py eval # 五维质量评测:可信/可靠/适用/规范/有效(约 5 s)
test 只看"工具本身对不对",eval 看"整套体系好不好用",两者都不涉及生物学结论。
第一次做真实项目,从这一步开始(不用先读文档):
python scripts/rnt.py init DEHP # 生成项目骨架:配置 + 占位靶点 + TODO.md
cd DEHP && python <skill>/scripts/rnt.py all --config config.json --offline # 先看链路通不通
# 替换 inputs/ 里的靶点后,去掉 --offline 跑真实 STRING 与富集
python <skill>/scripts/rnt.py methods --run runs/DEHP # 自动生成 Methods 草稿(数字不手抄)
1. 定位与边界
本 Skill 专注生殖系统毒性(HPG 轴)这一特定靶器官场景的网络毒理学全链条,是通用 network-toxicology 的专科深化版。通用框架(AOP、风险评估、法规)仍引用通用 Skill;本 Skill 提供生殖毒理专属的靶点库、关键词矩阵、参数阈值、判定规则、文献实证基线与可执行工具箱。
- 通用网络毒理学流程/法规合规 → 加载
network-toxicology - 中医药复方多成分减毒 → 叠加
network-pharmacology/tcm-* - 本 Skill 独有:生殖毒性终点体系、生殖靶点关键词矩阵、hub 四法共识判定、18 篇文献量化基线(
references/10)、工具使用频次实测(references/11)、局限性话术库(references/12)、验证实验配方(references/13)、运行手册(references/14)、质量评测方法(references/15)、零依赖工具箱(scripts/)
核心认知(贯穿全流程的红线):网络毒理学提供机制假说,对接提供结构可行性,MD 提供力场下的稳定性,QSAR/ML 提供结构-活性趋势,MR 提供人群遗传因果线索。任一单独存在都不构成生物学证据,必须分级表述(references/09)。
2. 标准流程(S0–S9)
S0 问题界定与终点选择
→ S1 毒物结构/成分分析与靶点预测
→ S2 生殖疾病/损伤靶点库构建
→ S2.5 转化产物/代谢物清单(母体→代谢物矩阵)
→ S2.6 暴露浓度与现实性论证(环境/人体生物监测水平)
→ S3 交集与 Venn(候选毒效靶点)
→ S4 PPI 网络构建与拓扑分析
→ S5 hub 靶点共识判定
→ S6 GO/KEGG 富集与通路收敛
→ S7 分子对接(+ 重对接校验)
→ S8 MD / MM-PBSA(GBSA)(按需)
→ S9 交叉验证与成果输出(组学 / MR / QSAR-ML / 免疫浸润 / 体外体内)
| 步骤 | 关键动作 | 必守参数(默认值) | 参考 |
|---|---|---|---|
| S0 | 定终点:精子质量 / 类固醇合成 / 卵泡发育 / BTB / 生殖肿瘤 / 内分泌干扰 | 终点须"上头(通路)下地(表型)" | references/01 |
| S1 | PubChem 取 SMILES/SDF → SwissTarget / ChEMBL / TargetNet(>0.6) / SEA / PharmMapper / CTD / STITCH | 多库并集去重;记录每库贡献数与筛选阈值 | references/02 |
| S2 | GeneCards(median 或 score>10 或 top 50%)+ OMIM + CTD + DisGeNET(>0.4) + PharmGKB + TTD | 阈值必须声明并统一;物种 Homo sapiens | references/02 |
| S2.5 | 列主要代谢物/转化产物,单独建靶点库,与母体取并/交 | 如 DEHP → MEHP/MEHHP/MEOHP/MECPP | references/02 |
| S2.6 | 查环境检出浓度与人体生物监测水平,用于剂量论证与讨论 | 至少 1 组真实浓度(ng/mL 或 μg/L 级) | references/02 references/12 |
| S3 | 交集;漏斗数字(各库原始数→合并→交集) | rnt.py targets(含符号审计与物种校验) |
references/02 |
| S4 | STRING(0.4;严格版 0.7)→ Cytoscape NetworkAnalyzer | 隐藏孤立节点;报 nodes/edges/avg degree;rnt.py string + rnt.py ppi |
references/03 |
| S5 | 四法共识:degree / betweenness / closeness / MCC 各取中位数 + topN 票数;节点 <15 或共识占比 >50% 时中位数法退化,自动切换 top-K 度值 | 全文一致,并写明实际使用的判定法 | references/03 |
| S6 | DAVID / clusterProfiler / Metascape / FUMA | BH-FDR<0.05;p<0.05 仅探索 | references/04 |
| S7 | Vina(exh 8,spacing 0.375 Å)/ Glide-XP / CB-Dock2 | 重对接 RMSD<2.0 Å 方可信 | references/05 |
| S8 | GROMACS/Schrödinger;100 ns(争议靶点 200 ns) | RMSD/RMSF/Rg/SASA/HB/FEL + MM-PBSA(GBSA) | references/06 |
| S9 | 组学、scRNA、免疫浸润、MR、QSAR/ML、FAERS、细胞/动物验证 | 按 references/07、references/13 决策 |
references/07 references/13 |
3. 任务路由
| 用户任务 | 加载 |
|---|---|
| 设计课题 / 判断该做几层验证 | references/01 |
| 成分/结构分析、代谢物清单、暴露浓度论证、靶点阈值 | references/02 |
| PPI 图怎么做、hub 怎么定才不被挑 | references/03 |
| 富集结果解读、生殖毒理"标配"通路 | references/04 |
| 对接参数、能量多少算有结合力 | references/05 |
| MD 要不要做、RMSD 多少算稳定 | references/06 |
| 升级为组学/MR/QSAR-ML/免疫浸润/FAERS | references/07 |
| 写论文、做图、回审稿意见 | references/08 |
| 避坑与证据分级 | references/09 |
| 18 篇文献逐篇方法学对照 | references/10 |
| 数据库/软件选型(含实测使用频次) | references/11 |
| 写局限性段落(10 类真实话术) | references/12 |
| 设计体外/体内/模式生物验证 | references/13 |
| 跑脚本、排错、看输出目录与退出码 | references/14 |
| 评估/提升 Skill 质量、做回归测试 | references/15 |
4. 生殖毒理专属知识锚点
HPG 轴核心靶点(默认必查):AR、ESR1、ESR2、LHCGR、FSHR、CYP19A1、CYP17A1、CYP11A1、HSD3B1/2、SRD5A1/2、STAR、INSL3、GNRHR、KISS1R、PRLR、AMH/AMHR2、SOX9、NR5A1、IGF1/IGF1R。
血睾屏障(BTB):CLDN11、OCLN、TJP1、CDH2、CTNNB1、VIM。
精子发生/减数分裂:DAZL、BOLL、SYCP3、TEX11、TNP1/2、PRM1/2、CATSPER1、AKAP4、SPATA16。
卵泡/卵巢:AMH、FOXL2、BMP15、GDF9、PTGS2、HAS2、LHCGR、FSHR。
应激-凋亡-自噬轴(文献高频 hub):AKT1、PIK3CA/PIK3R1、MAPK1/3/14、TP53、SRC、STAT3、EGFR、HSP90AA1、CASP3、BCL2/BAX、MMP2/9、PTGS2、IL6、TNF、IL1B、CXCL8、NFE2L2/HMOX1、JAK2、GSK3B、CCND1、MDM2、MYC。
生殖毒性 KEGG 高频通路:雌激素信号 hsa04915、催乳素信号 hsa04917、卵母细胞减数分裂 hsa04114、孕酮介导卵母细胞成熟 hsa04914、类固醇激素生物合成 hsa00140、PI3K-Akt hsa04151、MAPK hsa04010、凋亡 hsa04210、p53 hsa04115、mTOR hsa04150、FoxO hsa04068、紧密连接 hsa04530、自噬 hsa04140、铁死亡 hsa04216、细胞衰老 hsa04218、GnRH 分泌 hsa04929。
AOP 骨架(写讨论必用):
MIE(AR 拮抗 / ER 激动 / AhR 激活 / PPARγ / 类固醇合成酶抑制 / 氧化应激)
→ KE(Leydig-Sertoli 功能受损、类固醇合成下降、BTB 破坏、生殖细胞凋亡、减数分裂阻滞、颗粒细胞凋亡与卵泡闭锁)
→ AO(精子数/活力/形态异常、生育力下降、卵泡闭锁、PCOS 样表型、生殖系统肿瘤风险)
5. 文献实证基线(18 篇实测,非估计)
工具使用频次(严格正则匹配,详见 references/11)
| 类别 | 高频 | 中频 | 低频 |
|---|---|---|---|
| 化学信息 | PubChem 18/18 | ChEMBL 6 | STITCH 1、SwissADME 1、TCMSP 1、DrugBank 1、DGIDB 1 |
| 靶点预测 | SwissTargetPrediction 12/18 | TargetNet 4、PharmMapper 4、SEA 3 | SuperPRED 2 |
| 疾病库 | GeneCards 18/18、OMIM 10 | CTD 7 | DisGeNET 2、PharmGKB 2、TTD 1、MalaCards 1 |
| 网络 | STRING 16/18、Cytoscape 16/18 | cytoHubba 6 | MCODE 2、CytoNCA 2、CentiScaPe 1 |
| 富集 | DAVID 8/18 | clusterProfiler 2、Metascape 2 | FUMA 1 |
| 结构模拟 | AutoDock 11/18、PyMOL 10/18、Vina 7 | GROMACS 5、MM-PBSA/GBSA 5、Glide 3、CB-Dock 3 | Schrödinger/Maestro 3 |
| 验证与数据 | scRNA 7/18 | GEO 4、MR 4、QSAR 4、limma/DESeq 3 | FAERS 1 |
参数默认值(含实测区间)
| 参数 | 文献区间 | 建议默认 | 备注 |
|---|---|---|---|
| GeneCards 阈值 | median(主流)/ score>10 / top 50% | median,并声明 | 高噪音病名用 score>10 |
| STRING 置信度 | 0.4(多数)/ 0.7(高质量研究) | 0.4 主 + 0.7 敏感性 | 强制 hide disconnected |
| hub 判定 | 单指标 / 多指标 / CytoHubba 交集 | 多指标全>median ∩ cytoHubba;网络 <15 节点改用 top-K 度值 | 双轨报告最抗审;hub 占网络 >50% 等于没筛 |
| 富集显著性 | DAVID p<0.05 或 BH-FDR<0.05 | BH-FDR<0.05 | 报 FDR 与基因数 |
| 对接软件 | Vina 7 / Glide-XP 3 / CB-Dock2 3 | Vina 默认 | 高精度叙事用 Glide-XP + MM-GBSA |
| 重对接 RMSD | 报告者全部 <2.0 Å | 必做并报数值 | 未做者被审稿人明确批评(OTA 文自陈) |
| 对接入 MD 门槛 | Glide score 优于 −6.0 | Vina ≤ −7.0 | 只对代表复合物做 MD |
| MD 时长 | 100 ns(主流)/ 200 ns(1 篇) | 100 ns | 单轨迹须声明局限 |
| MD 稳定阈 | 蛋白 RMSD<0.3–0.45 nm;配体 0.08–0.20 nm | 同文献口径 | 报"平台期"而非单点 |
| 自由能方法 | MM-PBSA 5 / MM-GBSA 2 | 两者择一并说明 | 数值不可跨方法比较 |
完整逐篇对照见 references/10。
6. 输出规范
- Results 首段给漏斗数字:化合物靶点 n → 疾病靶点 n → 交集 n → PPI nodes/edges → hub n。
- 每个阈值写明来源("GeneCards 中位数相关度"而非"高分基因")。
- 图件最小集(按 18 篇出现率):Venn、PPI(degree 映射)、hub 排序、GO 三联 + KEGG 气泡、对接 3D+2D(11/18,最高频)、MD 四联(5/18);有实验则加 H\&E/WB/精子参数。
- 结语句式:按证据分级表述,见
references/08第 4 节。
7. 脚本工具箱(v3:零依赖 + 回归测试 + 自评测)
7.1 三条命令
python scripts/rnt.py demo # 离线自检:合成数据跑 targets→ppi→overlap→qc(<1 s,6/6 PASS)
python scripts/rnt.py test # 回归测试:39 条用例,覆盖已知缺陷(<3 s)
python scripts/rnt.py eval # 五维评测:输出 EVAL_report.md 与 eval_summary.json
python scripts/rnt.py pkg # 提交前自检:类型安全集 / 路径规范 / 版本 / 文档(7 项,1 s)
> 上架硬约束(实测两次被拒后收敛):提交包只放 .md .py .json .txt 四类。
> .R/.sh 被拒(不允许的文件类型: scripts/enrich_clusterProfiler.R);
> 改用安全扩展名后,.tsv 又被拒(… examples/sample_output/ppi_summary.tsv)——
> 而且校验器一次只报一个文件,所以"按报错改"必然要来回几轮。
> 本包的处理:脚本模板存为 *.R.txt / *.sh.txt(一行 cp 还原),
> 表格/图件类样例转成 .md(Markdown 表 + 文本条形),真正的 .tsv/.csv/.svg 在运行时生成。
> rnt.py pkg 的 P1/P7 会把这类问题在你终端里提前拦下(用例 C06–C09)。
demo 验证"链路通",test 验证"改对了没有",eval 回答"这套工具到底好不好用"。
靶点列表能认的写成什么样(都不用手工清洗):一行一个;带表头/带数值列的 CSV/TSV(AKT1,0.85 取首列);横向一行写的列表(AKT1, ESR1, MMP9,Excel 复制一行或 Word 折行另存 txt 的常见形态,整行展开);单元格内多基因(AKT1;ESR1、AKT1、ESR1,中文顿号/全角逗号也认);hsa-miR-21、Akt1、PKB、3β-HSD、ERβ 等写法自动归一。解析布局与改写对照记录在 _symbol_audit.csv(layout / multi_gene_cells / normalization_examples)。
7.2 依赖矩阵:什么情况下能跑到哪一步
| 环节 | 本机是否必需第三方库 | 缺失时的替代通道 |
|---|---|---|
| 靶点合并 / 交集 / Venn | 无(纯标准库) | — |
| PPI 拓扑 + hub | 无(标准库实现 Brandes 等算法,500 节点 <2 s) | — |
| hub 跨集合共识 | 无 | — |
| STRING PPI 抓取 | 仅需网络 | 手动下载 tsv,--offline-file 或 --skip string |
| GO/KEGG 富集 | 仅需网络(Enrichr API) | 无网无 R 时把 enrich_clusterProfiler.R.txt 还原成 .R 到有 R 的机器跑 |
| 分子对接 | 需 vina + obabel |
无 Vina 时仍可做完整体检、盒心计算、命令生成 |
| MD / MM-PBSA | 需 gmx |
只做参数核对与结果自查,不代跑 MD |
| QC 体检 / 回归测试 / 评测 | 无 | — |
结论:无 pandas / numpy / scipy / networkx / R / Vina 的机器上,S2–S6 全链路(含真实 STRING 网络与真实富集)仍可完整跑通。
7.3 脚本清单
| 脚本 | 用途 | 关键参数 |
|---|---|---|
scripts/rnt.py |
统一入口:init/doctor/demo/test/eval/methods/targets/string/ppi/enrich/overlap/dock/qc/all(每个子命令均支持 --help) |
--debug 看堆栈 |
scripts/rnt_common.py |
共享层:符号归一(NFKC+希腊字母+物种前缀)、横向/列式布局识别、编码自适应、原子写、清单 | 被其余脚本调用 |
scripts/scaffold.py |
项目脚手架:配置 + 占位靶点 + inputs 说明 + TODO(开箱即跑) | --out --toxin --force |
scripts/target_merge.py |
多库靶点合并、交集/Venn、符号审计表(含 layout)、物种校验 | --compound(可重复)--disease(可重复)--strict |
scripts/string_fetch.py |
直连 STRING REST API + 映射失败清单 | --species 9606 --score 400 --add-nodes |
scripts/ppi_hub.py |
拓扑指标 + 四法共识 hub + topN 票数 + 小网络退化保护 | --min-score 0.4 --top-n 10 --small-n 15 |
scripts/enrich_online.py |
Enrichr ORA(免 R)+ 生殖通路单列 + 气泡图 | --libs --cutoff 0.05 |
scripts/hub_overlap.py |
多毒物/代谢物/终点 hub 重叠与共识;坏文件自动跳过 | --set NAME=FILE --dir --prefix --consensus-frac |
scripts/dock_check.py |
对接体检、盒心/盒尺寸、自动提取原配体、生成含重对接的命令 | --native --chain --run-vina |
scripts/qc_report.py |
11 项规范体检(F0 一致性 + 未运行阶段不误判)→ QC_report.md |
--strict |
scripts/run_all.py |
一键编排(含可选 overlap/dock 阶段)+ 输入哈希 | --offline --skip --strict |
scripts/methods_draft.py |
Methods 草稿(中英双语):数字取自清单,缺的标【待补】并列表 | --run --lang zh\|en\|both --out |
scripts/selftest.py |
39 条回归用例(五维分组) | python scripts/selftest.py -v |
scripts/quality_eval.py |
五维质量评测与报告生成 | --net --out |
scripts/pkg_check.py |
提交前自检(7 项):类型安全集、路径规范、版本四处一致、文档-脚本同步、包体卫生、模板可还原、frontmatter | --md --json |
scripts/enrich_clusterProfiler.R.txt |
R 富集模板(存为 .txt 以过市场类型白名单):cp 还原后 Rscript 运行 |
— |
scripts/vina_docking.sh.txt |
批量对接 shell 模板(存为 .txt):cp scripts/vina_docking.sh.txt vina_docking.sh 后 bash 运行 |
— |
7.4 输出目录与可复现性
runs/<label>/
<label>_compound_targets.txt / _disease_targets.txt / _intersection.txt
<label>_venn_counts.tsv / _targets_annotated.csv / _targets_summary.json
<label>_symbol_audit.csv # 符号怎么改的、为什么改
ppi/string_interactions.tsv string_map.tsv string_fetch.json
ppi/ppi_nodes.csv ppi_hub_A..D.txt ppi_hub_consensus.txt ppi_summary.tsv ppi_degree.svg
enrich/<lib>.csv enrich_all.csv enrich_repro.csv *_bubble.svg enrich_summary.json
overlap/hub_* # 配置了 overlap 阶段才有
Methods_draft.md # rnt.py methods 生成,可反复重生成
dock/dock_plan.json vina_cmds.sh dock_check.md
QC_report.md qc_summary.json run_manifest.json run_config.json
run_manifest.json 记录 run_id、工具版本、每个输入文件的 sha256、每一步参数与返回码,
是"参数可追溯"的机器凭证;QC_report.md 是可直接作为补充材料提交的人读版本。
路径约定(v3.2 起统一):配置里的输入与输出都按"配置文件所在目录"解析——
把项目文件夹整体搬到别的机器、或在任意目录用绝对配置路径调用,结果都落在项目里,不会跑到调用者当前目录。
命令行显式给 --out 时按当前目录解析(尊重你当下的位置)。
7.5 退出码(可接 CI / 批处理)
0 成功 · 2 输入/数据异常 · 3 缺少依赖或外部工具 · 4 网络失败。
单步失败不会静默:run_all 记录为 error(n) 并继续可执行步骤;任何未预期异常转为可读报错(--debug 看堆栈)。
7.6 实测记录(本机:Python 3.13,无 pandas/scipy/R/Vina)
| 验证项 | 结果 |
|---|---|
doctor |
1 s,硬性问题 0 |
demo |
6/6 通过,<1 s |
init + 首次 all --offline |
0.4 s + 0.4 s,产物 4/4,无需读文档 |
methods |
0.2 s,缺字段全部标【待补】而非编造 |
test |
36/36 通过,约 3 s |
eval |
综合 100(五维均达标;口径与未覆盖项见 8 节与 references/15) |
| DEHP 示例端到端(22 毒物靶点 / 37 疾病靶点 → 交集 13) | ≈16 s,13 节点 / 69 边;四法命中 10 个(占 77%)触发退化保护,实际报 top3 度值:AR、EGFR、ESR1;QC 95%、红线 4/4 |
| 18 篇文献语料端到端(85 个点名靶点) | 64 s,85 节点 / 1839 边(avg degree 43,F4 如实告警);四法共识 6 个:TNF、AKT1、TP53、IL6、PPARG、ALB;富集生殖相关显著条目 147 条;QC 86%(F7 因未做对接而 FAIL,属如实暴露) |
| 跨 15 篇 hub 共识(剔除 3 个 <3 基因的短表) | ESR1、AKT1、EGFR、MMP9 出现在 ≥8/15 集合 |
| 真实 PDB(1ERE,ERα+雌二醇)对接体检 | 自动提取 EST、聚类取单分子,盒 15×19×15 Å |
v3 修掉的 7 个真实缺陷见 CHANGELOG.md;每个都已在 selftest.py 中固化为回归用例。
模板资源(assets/):roadmap-template.md(技术路线模板,含基金三段式映射)、deliverables-checklist.md(结果表与图件清单,含阈值记录卡)、teaching-case.md(教学案例,4–6 学时实训)。
8. 质量五维(可度量、可回归)
| 维度 | 当前 | 主要判据 | 如何提升 |
|---|---|---|---|
| Trust 可信度 | 100 | 24 个真实脏写法归一全对(含 ERβ、AKT1/PKB、let-7a、3β-HSD);溯源 4/4;缺陷覆盖 15/15;Methods 不编造缺省值;QC 能识破 3/3 类问题结果;横向基因列表 5/5 不被截断 |
新增阈值都要写明来源;跨机复现先对 symbol_audit.csv |
| Reliability 可靠性 | 100 | 39 条回归全绿;同输入两跑字节一致;同目录连跑不串轮;断网仍产出结果 | 改代码后先跑 rnt.py test |
| Adaptability 适用性 | 100 | 零第三方依赖;utf-8/gb18030;空格/中文/跨目录;8 种输入格式(含横向一行/两列);1 万基因 0.1 s;800 节点 1.4 s | 新数据格式先补夹具再补代码 |
| Convention 规范性 | 100 | 退出码 0/2/3/4;语义化版本 + CHANGELOG;frontmatter;文档-脚本 15/15;--help 15/15;提交自检 6/6(rnt.py pkg) |
加脚本必须同步登记到 7.3 |
| Effectiveness 有效性 | 100 | 离线端到端 0.3 s;hub 共识与文献骨架一致(4/4);产物齐全;QC 建议 100% 带改法;小网络不再"全员 hub" | 用真实项目跑一遍再看 F0–F10 |
满分怎么看:这只代表"当前判据集内全部达标",不等于方法学无懈可击。开发过程中该评测曾把有效性压到 84.6("小网络四法共识退化为全员 hub"),说明判据确实能失败;修正后才回到 100。判据集应随领域标准升级,分数随之下降是正常现象。
更值得记住的是:v3.0.0 满分之后,再做一轮对抗性输入测试,仍查出"横向基因列表被截断成 1 个"(AKT1, ESR1, MMP9, TP53, CASP3 只读出 AKT1,且不报错)。满分只证明判据集内的项目通过,不证明没有缺陷——所以每轮都要补刁钻输入。该缺陷已固化为 T09 并升版 v3.1.0。
未覆盖(属已知空白,不是"已验证通过"):真实 Vina/GROMACS 计算(本机未安装)、macOS/Linux 跨平台、>2000 节点超大网络、STRING/Enrichr 限流与库改名、多语言文档。
评分口径与复现方法见 references/15。注意:分数衡量工具体系质量,不衡量生物学结论正确性。
9. 硬性红线
- 不得把对接分数/网络中心性表述为"结合""调控""导致";用"提示""可能""预测"。
- 不得混用不同阈值下筛选的 hub;同一篇内阈值唯一且可复现。
- 不得省略重对接 RMSD 校验而声称对接可靠。
- 不得把 GeneCards 全库直接当疾病靶点(未过滤 = 噪音主导)。
- 物种必须统一(人源库 vs 鸡/鼠/线虫模型分别建网,明确"人源预测-动物验证"链条)。
- 单细胞/组学源自公共数据时必须写明数据集编号与样本来源,不得暗示自测。
- 剂量相关性必须论证:体外浓度常为 μM 级而人群生物监测为 nM 级,须在局限性中明确"模型急性应激 ≠ 慢性低剂量暴露"。
- 混合物不得默认加和:须检验加和/协同/拮抗(TEFmix vs ΣTEF),见
references/02。 - 结论必须含局限性段落(in silico 无直接实验证据、数据库覆盖偏倚、力场与采样限制、单剂量设计)。
- 符号不得静默改写:凡归一化改动过的符号,必须能从
symbol_audit.csv查到原始写法与理由。
10. 版本
当前 v3.1.0(2026-10-23)。变更历史与不兼容改动见 CHANGELOG.md。