zcbot/SCIENTIFIC_SKILLS.md

190 lines
8.6 KiB
Markdown

# 科学 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 ResearchJACerS 风格)
**落地动作**
新建 `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)。