# 科学 Skill 集成评估(scientific-agent-skills → zcbot) 来源:https://github.com/K-Dense-AI/scientific-agent-skills(MIT,K-Dense AI,138 个 skill) 适用对象:zcbot,服务于中国建筑材料科学研究总院 —— 无机非金属材料 R&D(水泥/混凝土/玻璃/陶瓷/耐火/新型建材)。 ## 1. 总体结论 - **不整包装**(`npx skills add`),138 个 description 全进 prompt → 上下文噪声爆炸 + 误触发(用户说"分析一下"模型可能跳去 Scanpy)。 - **挑 4 个核心新能力 fork 进来**,适配 zcbot 现有 skill 格式(`SKILL.md` + Python helper + `run_python` 调用)。 - **现有 6 个 skill 不替换,抽对方的 best practice 增强**。 ## 2. 现状与目标格式 zcbot 已有 skill(`D:/projects/zcbot/skills/`): `coding / documents / imagegen / patent / ppt / proposal / research / review / videogen` 每个 skill = `SKILL.md`(frontmatter + 何时用 + 反模式 + 工作流)+ 配套 Python(走 `run_python` 注入的 PYTHONPATH 直接 import)。 scientific-agent-skills 的 skill 格式语义基本一致 —— **可以单个 fork,不要批量装**。 ## 3. 推荐移植的 4 个新能力 ### 3.1 Pymatgen ★★★ 无机材料计算核心库。 **对你们的价值面** - 晶体结构 I/O(CIF/POSCAR)—— 水泥熟料相(C3S/C2S/C3A/C4AF)、玻璃晶化产物、陶瓷相、耐火砖矿物相 - `XRDCalculator` —— 给定结构正向算 XRD pattern,跟实测对比 - `PhaseDiagram` —— 凝胶/水化产物的热力学稳定性 - `SpacegroupAnalyzer` —— 物相对称性 - `MPRester` —— Materials Project 直连查无机化合物 - 转换工具:VASP / Gaussian / Quantum ESPRESSO 输入输出文件 **落地动作** ```bash .venv/Scripts/pip install pymatgen mp-api ``` 新建 `skills/materials_pymatgen/SKILL.md`,在仓库原版基础上加两段: - **中文相名 → 标准化学式映射表**(给 LLM 看): - C3S → Ca3SiO5,C2S → Ca2SiO4,C3A → Ca3Al2O6,C4AF → Ca4Al2Fe2O10 - 钙矾石 → Ca6Al2(SO4)3(OH)12·26H2O - 莫来石 → Al6Si2O13,堇青石 → Mg2Al4Si5O18 - **Materials Project API key 配置走 zcbot env** —— 用户得去 https://materialsproject.org/api 申请,写进 `RUN.md` 一次性初始化段 **坑** - `MPRester` 必须 context manager(`with MPRester() as mpr:`),否则连接泄漏 —— 抄进反模式段 - `from_file()` 优先,不要自己 parse CIF ### 3.2 stats_ml(scikit-learn + statsmodels + PyMC) ★★★ 合并成一个 skill,按场景导航。 **对你们的价值面** - 配方-性能建模:掺合料比例 → 28 天抗压强度回归 - DoE 响应面拟合 - 配方聚类 / 异常实验检测 - 工艺参数 → 性能的特征重要性 **落地动作** `skills/stats_ml/SKILL.md` 入口先做场景导航: | 你要做 | 用 | |---|---| | 要 p-value、置信区间、假设检验 | statsmodels(OLS / ANOVA) | | 要预测精度高、不在乎模型可解释性 | sklearn(RF / GBDT) | | 样本小(< 30)且要不确定度估计 | PyMC(贝叶斯) | | 要可解释的线性关系 | statsmodels OLS / sklearn LinearRegression | **抄仓库的反模式段**(高频踩坑): 1. 别在 pipeline 外预处理 → 交叉验证会数据泄漏 2. scaler 别 fit 在 test 上 3. 分类任务记得 `StratifiedKFold` 4. 树模型不用 scale 特征 5. 收敛 warning 别忽略,要么加 `max_iter` 要么 scale 依赖:你们 requirements.txt 多半已有 sklearn,确认下 statsmodels + pymc 装没装。 ### 3.3 matplotlib(出版级) ★★★ **对你们的价值面** - XRD pattern(底图 + 标峰) - TG-DSC 双 Y 轴曲线 - 应力-应变曲线多组样本对比 - 多 panel 出版图(Cement and Concrete Research、JACerS 风格) **落地动作** 新建 `skills/plot_pub/SKILL.md`,关键内容(原仓库的反模式 + 你们的中文场景补丁): ```python # zcbot 出版级绘图规范 # 1. OO 接口(必须),不用 plt.xxx 隐式 fig, ax = plt.subplots(figsize=(6, 4), dpi=150) ax.plot(...) # 2. 中文字体(Windows 必配,否则方块) plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei'] plt.rcParams['axes.unicode_minus'] = False # 3. colormap 用 viridis / cividis,不用 jet(色觉障碍不友好,审稿人会喷) # 4. 画完必须 close,run_python 多任务跑容易堆积 fig.savefig(out_path, bbox_inches='tight') plt.close(fig) # 5. 矢量优先:SVG / PDF 给论文,PNG 给 PPT(dpi >= 300) ``` 仓库还提到一个 `scientific-visualization` skill 专门做期刊样式多面板,这个可以一并扒进来作为 `plot_pub` 的进阶段。 ### 3.4 materials_db(COD + NIST + USPTO 三合一) ★★ **原仓库 `database-lookup` 78 个库,只 5 个对你们直接有用,不要整体抄,做精简子集**: | DB | 用途 | |---|---| | **Materials Project** | 已被 Pymatgen 的 MPRester 覆盖,不重复 | | **COD**(Crystallography Open Database) | 免费晶体结构库,补充 MP 没收的实验结构 | | **NIST** | 标准参考数据,材料热物性、相平衡 | | **USPTO** | 美国专利全文检索 → 并入 `skills/patent` | | **PubChem / ChEMBL** | 只在做外加剂(减水剂、缓凝剂)这类有机分子时用 → 不常用,可后置 | **落地动作** - `skills/patent` 加一个 `query_uspto(keyword, ...)` helper(USPTO Open Data Portal API) - 新建 `skills/materials_db/SKILL.md`,封 COD + NIST 两个查询函数 - Materials Project 让 Pymatgen 走,本 skill 不重复 **坑** - USPTO 要 API key(免费),申请走 https://developer.uspto.gov/ - COD 是 RESTful,免 key,但限速,加 sleep - NIST 各子库 API 不统一(WebBook / Materials Data Repository / ICSD 镜像),要分别封装 ## 4. 现有 6 个 skill 的增强参考(不替换) 把仓库对应 skill 的 SKILL.md 拿来读,把"何时用 / 反模式 / 标准工作流"段落里你们没写的合理项抽进现有 SKILL.md。**不要整体替换**,你们的 paper_server / proposal 模板 / patent 流程都是定制化的。 | 仓库 skill | 对应你们 | 可抄的部分 | |---|---|---| | Literature Review / Paper Lookup | `skills/research` | 多库 fallback 策略、引文格式标准化 | | Scientific Writing | `skills/proposal` | 章节结构、claim-evidence 写作规范 | | Scientific Slides / LaTeX Posters | `skills/ppt` | 多 panel 布局、color palette 规范 | | Document Skills(PDF/DOCX/XLSX/PPTX) | `skills/documents` | 表格读取、复杂 PDF 抽取 | | Peer Review | `skills/review` | 审稿 checklist | | Scientific Schematics | (新加) | 工艺流程图、装置示意图自动生成 | ## 5. 不推荐(直接跳过) | 领域 | 仓库代表 skill | 跳过原因 | |---|---|---| | 生物信息 / 基因组 | BioPython / Scanpy / scVelo / Arboreto / anndata / esm | 跟无机材料无交集 | | 药物发现 | DiffDock / DeepChem / Datamol / adaptyv | 同上,RDKit 偶尔有边但太窄 | | 临床研究 | ClinicalTrials.gov / ClinVar / COSMIC / Open Targets | 同上 | | 医学影像 | pydicom / histolab / PathML | 同上 | | 量子计算 | Cirq / Qiskit / PennyLane / QuTiP | 除非真做第一性原理(成本极高) | | 代谢建模 | COBRApy | 同上 | | 地理空间 | GeoPandas | 同上 | | 天文 | astropy | 同上 | ## 6. 中间档(暂不动,记下来,有场景再说) | skill | 触发场景 | |---|---| | **OpenMM + MDAnalysis** | 水泥水化分子模拟、玻璃网络结构 MD —— 门槛高,看院里有没有人真做计算 | | **NetworkX** | 知识图谱、合作网络分析 | | **SymPy** | 推传热扩散、强度模型公式 | | **scikit-image** | SEM 图像分析(粒径分布、形貌识别) —— 仓库没单列,如要做自己装 | ## 7. 落地排期建议 | 顺序 | skill | 工作量估计 | 收益 | |---|---|---|---| | 1 | `plot_pub`(matplotlib)SKILL.md | 0.5 day | 立刻见效,所有出图任务受益,中文字体坑也一次扫掉 | | 2 | `materials_pymatgen` 装包 + SKILL.md + 化学式映射 | 1 day | 打开无机材料计算能力(XRD/相图/对称性) | | 3 | `stats_ml` SKILL.md(sklearn + statsmodels + PyMC) | 1 day | 配方-性能建模常态化 | | 4 | `materials_db`(COD + NIST + USPTO) | 2 day(每个 API 都要踩坑) | 中等,可后置;USPTO 部分先并入 `patent` | | 5 | 现有 6 个 skill 抽 best practice 增强 | 各 0.5 day | 渐进改善,不阻塞 | ## 8. 三个决策点(写代码前需要你确认) 1. **新 skill 命名风格**:用 `materials_pymatgen` / `stats_ml` / `plot_pub` / `materials_db` 这种业务前缀,还是直接 `pymatgen` / `sklearn` 这种工具名? - 业务前缀:更贴你们院的场景导航 - 工具名:跟开源生态对齐,容易回查官方文档 2. **Materials Project API key** 走 `.env` 还是单独配置文件? 3. **USPTO 并入 `skills/patent` 还是单独建 `skills/uspto`**?(我倾向并入,因为 patent skill 已经有中国专利逻辑) 定下这三点我就开始动 #1(matplotlib)。