MolClaw:用统一协议把碎片化新药筛选工具串成一条流水线

2026-05-20 20 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:9 分钟

新药筛选从来不是缺工具,而是缺"串联"。从靶点数据库检索、分子对接计算、ADMET 预测到合成路径规划,每一步都有成熟软件和模型,但它们接口各异、数据格式不统一,研究者不得不在十几个工具之间手动搬运数据。上海 AI 实验室与北京大学联合团队开源的智能体 MolClaw,试图用一套科学智能上下文协议(Scientific Context Protocol,SCP)终结这种碎片化局面。

新药筛选的"拼图困境"

传统药物发现流程大致经历靶点确认 → 苗头化合物筛选 → 先导化合物优化 → 成药性评估四个阶段。每个阶段都有专用工具:

阶段 常用工具 数据格式
靶点检索 UniProt、PDB PDB/mmCIF
分子对接 AutoDock Vina、Glide PDBQT/SDF
ADMET 预测 ADMETlab、SwissADME CSV/JSON
合成规划 RetroSyn、RDKit SMILES/MOL

问题在于:PDB 文件要转 PDBQT 才能喂给 Vina;对接结果要转 SMILES 才能做 ADMET;每一步的中间产物都需要人工清洗格式、补全字段。一个完整筛选流程可能涉及 6-8 次格式转换和参数传递,任何一步出错就得重来。

MolClaw 的核心思路是:让智能体代替人做格式适配和流程编排,研究者只关心科学意图

SCP 协议:科学工具的"通用插头"

SCP(Scientific Context Protocol)是 MolClaw 的底层通信协议,作用类似于 LLM 生态中的 MCP(Model Context Protocol),但面向科学计算场景做了扩展:

  • 统一工具描述:每个科学工具(数据库、计算软件、预测模型)用标准 JSON Schema 描述其输入/输出接口、参数约束和资源需求。
  • 上下文传递:上游工具的输出自动封装为 SCP Context 对象,下游工具可直接消费,无需手动转换。
  • 长程任务追踪:药物筛选流程往往跨数小时甚至数天,SCP 支持任务状态持久化和断点续跑。

这意味着,当你告诉 MolClaw "针对 EGFR T790M 突变筛选候选抑制剂",它自己会去 UniProt 拿靶点结构、调 Vina 做对接、调 ADMETlab 评估毒性——全程数据在 SCP 管道里流转,不再需要你写转换脚本。

多层级技能体系:从原子操作到复合流程

MolClaw 把工具调用能力组织成三层技能:

  1. 原子技能(Atomic Skill):单个工具的一次调用,如"用 RDKit 计算 LogP"、"用 Vina 对接一个分子到指定靶点"。
  2. 组合技能(Composite Skill):多个原子技能按固定顺序编排,如"对接 + ADMET 评估"的两步流水线。
  3. 流程技能(Pipeline Skill):带条件分支和循环的完整筛选流程,如"批量筛选 → 按得分过滤 → 对 Top-K 做深度优化"。

研究者可以按需调用不同层级——快速验证一个分子用原子技能,跑完整筛选用流程技能。技能定义以 YAML 声明,下面是一个实际可改造的示例。

实践:用 MolClaw 搭一条苗头化合物筛选流水线

以下示例展示如何用 MolClaw 的技能定义格式,声明一条"靶点对接 → ADMET 过滤 → Top-K 输出"的组合技能。假设你已经按官方仓库指引完成了安装:

# 克隆仓库并安装
git clone https://github.com/IDEA-XL/MolClaw.git
cd MolClaw
pip install -e ".[all]"

# 验证安装
molclaw --version

定义一条组合技能

# skills/screen_hit_compounds.yaml
name: screen_hit_compounds
description: "针对指定靶点批量筛选苗头化合物,过滤高毒性分子,输出 Top-K 候选"
level: composite

atomic_skills:
  - id: fetch_target
    tool: uniprot_fetcher
    inputs:
      uniprot_id: "{{ target_uniprot_id }}"
    outputs:
      pdb_path: str

  - id: batch_dock
    tool: vina_docking
    inputs:
      receptor_pdb: "{{ fetch_target.pdb_path }}"
      ligand_library: "{{ ligand_sdf_path }}"
      exhaustiveness: 8
    outputs:
      docking_results: list[dict]

  - id: admet_filter
    tool: admet_predictor
    inputs:
      molecules: "{{ batch_dock.docking_results }}"
      filters:
        hepatotoxicity_threshold: 0.7
        logp_range: [0.0, 5.0]
    outputs:
      filtered_molecules: list[dict]

  - id: rank_top_k
    tool: mol_ranker
    inputs:
      candidates: "{{ admet_filter.filtered_molecules }}"
      k: "{{ top_k }}"
      score_weights:
        docking_score: 0.6
        admet_score: 0.4
    outputs:
      top_candidates: list[dict]

pipeline:
  - fetch_target
  - batch_dock
  - admet_filter
  - rank_top_k

用 Python 调用这条技能

from molclaw import MolClawAgent

agent = MolClawAgent()

result = agent.run_skill(
    skill_name="screen_hit_compounds",
    params={
        "target_uniprot_id": "P00533",  # EGFR
        "ligand_sdf_path": "/data/compound_library.sdf",
        "top_k": 10,
    },
)

# 查看筛选结果
for candidate in result["top_candidates"]:
    print(
        f"SMILES: {candidate['smiles']}, "
        f"Docking: {candidate['docking_score']:.2f}, "
        f"ADMET: {candidate['admet_score']:.2f}"
    )

运行前需要确认两点:一是本地或远程已配置好 Vina 和 ADMETlab 的服务端(MolClaw 支持本地二进制和 API 两种调用模式),二是 compound_library.sdf 文件路径正确。如果靶点结构在 PDB 上已有现成文件,也可以跳过 fetch_target,直接在 batch_dock 里指定本地 PDB 路径。

自定义原子技能

当你需要接入团队自有的预测模型时,只需写一个原子技能描述:

# skills/my_custom_predictor.yaml
name: my_binding_affinity_model
description: "团队内部训练的结合亲和力预测模型"
tool_type: python_callable

inputs:
  - name: smiles_list
    type: list[str]
    required: true
  - name: target_seq
    type: str
    required: true

outputs:
  - name: affinity_predictions
    type: list[float]

entrypoint: my_pkg.predict_binding_affinity
resource_requirements:
  gpu: 1
  memory: 8Gi

MolClaw 会自动把这个原子技能注册到技能池,之后就能在组合技能或流程技能中引用它。

采纳建议与边界提醒

MolClaw 解决的是"工具串联"问题,不是"工具本身"问题——对接精度仍取决于 Vina 的算法,ADMET 预测仍取决于底层模型的训练数据。几点实际考量:

  • 起步建议:先用原子技能逐个验证每个工具的输入输出是否正常,再组装成组合技能。不要一上来就跑完整流程,调试成本太高。
  • 数据格式仍是痛点:SCP 做了自动封装,但极端情况下(比如 PDB 文件缺链信息、SDF 原子坐标异常),仍需人工介入清洗。建议在 batch_dock 之前加一个 sanitize_molecule 原子技能。
  • 长程任务的容错:批量筛选可能跑数小时,中途 Vina 进程崩溃不会导致整个流程丢失——SCP 会记录断点状态,agent.run_skill 支持 resume_from 参数续跑。
  • 开源生态仍在早期:目前内置的原子技能覆盖了主流对接和 ADMET 工具,但合成路径规划、量子化学计算等方向的技能还在社区贡献阶段,接入自有模型是更现实的路径。

药物发现是长周期、高试错的工作。MolClaw 的价值不在于替代某个计算工具,而在于让研究者从"搬数据"回归到"做判断"——把格式转换和流程编排交给智能体,把科学决策留给人。


相关推荐