当Agent的脚手架开始自己进化:DrugHarness怎么让药物发现Agent越用越聪明
想象你是一位药物化学家,正在设计一个 HPK1 抑制剂。你有四个已知有效的参考分子,最好的一个 IC50 是 37.47 nM。你的目标是设计一个更好的分子——活性更高,同时保持骨架不变、双键构型不变,只改末端酰胺氮上的取代基。
目录
- 当 Agent 的"脚手架"开始自己进化:DrugHarness 怎么让药物发现 Agent 越用越聪明
- 一个药物化学家的早晨
- 核心问题:工具会变多,但经验不会自动变成能力
- DrugHarness 的架构:执行器 + 学习器 + 审查器
- 第一层:可组合的科学执行环境
- 第二层:条件化技能的归纳
- 第三层:独立审查与三值准入
- 任务执行时:三值适用性评估
- 数据说话:从基准测试到实验验证
- 基准测试:全面超越现有系统
- 技能进化:经验真的有用
- 前瞻性验证:合成了真实分子
- 工程洞察:为什么"脚手架进化"比"模型进化"更重要
- 1. 经验的载体是技能,不是参数
- 2. 审查器的独立性是设计核心
- 3. 三值准入比二元判断更诚实
- 4. 拒绝也是一种学习
- 对 Agent 工程的启示
- 局限与未解问题
- 结语
当 Agent 的"脚手架"开始自己进化:DrugHarness 怎么让药物发现 Agent 越用越聪明
一个药物化学家的早晨
想象你是一位药物化学家,正在设计一个 HPK1 抑制剂。你有四个已知有效的参考分子,最好的一个 IC50 是 37.47 nM。你的目标是设计一个更好的分子——活性更高,同时保持骨架不变、双键构型不变,只改末端酰胺氮上的取代基。
你面前有 80 多个工具:BindingDB 查活性数据、RDKit 处理分子结构、ADMET-AI 预测药代性质、Boltz-2 做结构预测。你需要在这些工具之间穿梭——先查证据,再选候选,再算性质,再改结构,再评估。每一步的决策都依赖上一步的结果。
这不是一个模型够不够强的问题。这是一个编排问题:怎么把 80 个工具、多种数据源、一个 Python 环境、以及你自己过去的经验,组织成一条可靠的工作流?
DrugHarness 的回答是:让脚手架(harness)自己进化。
核心问题:工具会变多,但经验不会自动变成能力
过去几年的科学 Agent 走过了三个阶段:
1. 工具集成:ChemCrow、Biomni、ToolUniverse 把科学工具变成 Agent 可调用的接口 2. 流程编排:PharmAgents、TRACE 用领域技能和专家协作组织多步骤工作流 3. 经验复用:DrugSAGE、SciToolAgent-Evo 从历史轨迹中提取可复用的经验
但这里有一个被忽略的裂缝:经验不会自动变成可靠的行为指导。
论文提出了三个"耦合挑战"——它们不是三个独立问题,而是三个互相绑定的约束:
挑战一:推荐要扎根在正确的证据里。 一个活性测量值、一个预测的性质、Agent 自己的解读、最终的任务得分——它们回答的是不同的问题。一个 IC50 数据支持的是"这个分子有活性",但不一定支持"应该在这个位置做取代"。如果你把来源和对象搞混了,推荐就成了噪音。
挑战二:适用性要跨任务保持。 一个在任务 A 里有效的策略,到任务 B 可能就是错的。比如一组分子性质已经达标但多样性不够——这时候需要的不是继续优化同类候选,而是扩大结构探索范围。同一个建议,在不同状态下含义相反。
挑战三:指导要可执行、可修正。 一个看起来合理的推荐,可能建立在一个未经检验的科学前提上,或者依赖一个行为和描述不一致的工具。你需要能主动检查它,然后在后续反馈到来时修正它。
这三个挑战指向同一个结论:你需要一个学习过程,把科学证据、可观测条件、主动审查,和技能的持续使用绑定在一起。
DrugHarness 的架构:执行器 + 学习器 + 审查器
DrugHarness 的设计像一个有三层制衡的科学实验室:
第一层:可组合的科学执行环境
80+ 个科学操作,横跨 10 个能力类别——证据检索、靶点准备、分子设计、计算评估。BindingDB、RDKit、ADMET-AI、Boltz-2 和一个完整的 Python 环境并排工作。
关键设计:共享科学工作区。Agent 调用工具时,候选分子、计算条件、数据来源、输出结果之间的关联被保留下来。不同工具对同一个分子的评估结果不会丢失关联。返回的结构或数据集可以直接作为下一步分析的输入。
这听起来简单,但它是后续一切的基础。如果工具调用之间是孤立的——每次调用的上下文都从零开始——那经验就无处生长。
第二层:条件化技能的归纳
学习器从执行轨迹中提取经验。每条经验的形式化定义是:
其中 \(x_i\) 是任务目标与约束,\(\tau_i\) 是 \(T_i\) 步的(动作,观测)序列,\(y_i\) 是交付物,\(f_i\) 是允许的反馈。
学习器从一批经验中识别反复出现的决策问题,比较相关的科学对象、终点、方法和证据状态,然后生成一个条件化行为假设:
- \(g\):目标
- \(c\):执行器可观测的条件
- \(a_0\):当前动作,\(a\):推荐动作
- \(R_h\):支持或限制这个假设的来源
- \(U_h\):未解决的信息
举个例子:当一组分子的性质已经达标但多样性不足时,假设会建议"优先扩大结构来源,而不是继续优化相似候选"。条件是"性质达标 + 多样性不足",目标是"提高整体质量",依据是"优化相似候选的边际收益递减"。
第三层:独立审查与三值准入
候选技能生成后,一个独立的审查 Agent 检查三件事:
1. 证据是否支持推荐? 审查器可以检索原始来源、检查接口 2. 执行器能否评估条件? 如果条件依赖执行器看不到的信息,技能就是空中楼阁 3. 指令能否被执行? 如果推荐的操作在环境中跑不通,技能就是死代码
审查器有一个特殊权力:当科学或操作问题需要计算验证时,它可以在同一个科学工作区里做定向试验——跑一个小实验来验证假设。
审查结果不是二元的是/否,而是三值:
- admit(采纳):技能进入技能库,后续任务可用
- reject(拒绝):与关键事实或约束冲突,拒绝
- defer(搁置):证据不足,搁置但保留记录
任务执行时:三值适用性评估
技能被采纳后,执行器在任务中发现相关技能时,会评估其适用性条件:
- supported:条件被当前状态支持,推荐可以指导动作选择
- contradicted:条件与当前状态矛盾,执行器转向其他依据
- unknown:关键条件未知,执行器决定是否需要进一步获取信息
数据说话:从基准测试到实验验证
基准测试:全面超越现有系统
在 MolBench 上(190 个分子决策任务):
| 指标 | MolClaw-CC | CAi | DrugHarness |
|---|---|---|---|
| 亲和力比较准确率 | 81.1% | 54.1% | 91.9% |
| 平均 Hits@3 | 0.80 | 0.76 | 1.24 |
| 筛选准确率 | 98.0% | 18.0% | 98.0% |
| 分子编辑整体 | 97.4% | 87.2% | 100% |
| 优化成功率 | — | 48.7% | 94.9% |
技能进化:经验真的有用
回顾性评估中,使用冻结的领域技能后:
- 筛选准确率:96.0% → 100%
- 亲和力比较准确率:62.2% → 81.1%
- 优化成功率:79.5% → 87.2%
- 有效 JSON 提交:87.2% → 100%
前瞻性验证:合成了真实分子
HPK1 设计任务中,DrugHarness 设计的分子被真实合成并实验验证:
- Jurkat p-SLP76 IC50 = 14.19 nM
- 四个参考分子的 IC50 范围:37.47–227.77 nM
- 1 nM 浓度下 HPK1 抑制率:96.92%
- 与两位五年以上经验的药物化学家独立设计的分子活性相当
工程洞察:为什么"脚手架进化"比"模型进化"更重要
1. 经验的载体是技能,不是参数
大多数 Agent 系统的经验复用方式是:把历史轨迹塞进上下文,或者微调模型参数。DrugHarness 选择了第三条路:把经验固化成有条件、有依据、可审查的技能。
技能不是一段自然语言提示词。它有结构化的目标、条件、推荐动作、证据来源、未解决问题。这意味着技能可以被独立审查、可以被拒绝、可以在后续证据到来时修订。
2. 审查器的独立性是设计核心
审查器和执行器使用同一个科学工作区,但它们是独立的。审查器可以跑试验来验证假设——这不是一个"读一读然后打分"的审查器,而是一个"会做实验的审查器"。
这解决了一个深层问题:Agent 自己生成的经验可能有幻觉。如果一个技能建立在错误的前提上,执行器用它会失败,但失败只会在后续任务中暴露。审查器的定向试验把这个问题前移到了技能准入阶段。
3. 三值准入比二元判断更诚实
admit / reject / defer 的三值设计,承认了一个事实:有时候你没有足够的信息做决定。defer 不是"拒绝"的委婉说法——它是一个明确的状态:"这个问题现在无法回答,但保留记录,等更多证据来了再说"。
这和人类科学家的决策方式一致。论文评审不是"接收/拒绝"二选一——还有"大修后重投",本质上是 defer。
4. 拒绝也是一种学习
被拒绝的技能提案不会消失。审查记录、试验发现、未解决问题都会进入下一轮学习。这意味着拒绝不是浪费,而是一种信息收集——你花了一次审查的成本,但知道了"这条路走不通"以及"为什么走不通"。
对 Agent 工程的启示
DrugHarness 的核心洞察可以推广到药物发现之外:
"可进化脚手架"是一个新的架构范式。 传统的 Agent 架构是:模型 + 工具 + 固定流程。DrugHarness 提出的是:模型 + 工具 + 会进化的流程。流程本身会从执行经验中学习,生成有条件的技能,经过独立审查后进入技能库。
这和步子哥之前关注的 Harness/Loop/Graph 三层架构形成呼应:Harness 不是静态的管道,它自己应该是一个学习系统。Loop 不只是"观察-思考-行动"的循环,还应该包括"归纳-审查-修订"的元循环。
条件化技能比通用指南更有用。 很多 Agent 框架的"经验"是一堆自然语言 tips——"遇到 X 可以试试 Y"。DrugHarness 的技能是结构化的:在什么条件下、为了什么目标、从什么动作改成什么动作、依据是什么、还有什么没搞清楚。这种结构让技能可以被机器评估、被独立审查、被精确修订。
独立审查 + 定向试验是 Agent 自我进化的安全网。 任何自我进化的系统都面临一个风险:自己生成的改进可能有幻觉。DrugHarness 的审查器不是打分模型,而是会做实验的独立 Agent——它用同一个环境验证假设,而不是只看文本合理性。
局限与未解问题
论文诚实地列出了局限:
- 技能进化只在单一基准上做了回顾性评估,大规模泛化能力未知
- 和其他 Agent 框架的系统化成本对比缺失
- 实验验证规模有限,可开发性性质覆盖不全
- HPK1 的四个抑制终点是事后选择的——DrugHarness 中位数更低,但 hERG 抑制更高、QED 更低
结语
DrugHarness 做了一件很难的事:它让一个 Agent 系统从"能执行任务"进化到"能从执行中学习,并且学习过程本身是可信的"。
关键不是 80 个工具,不是 91.9% 的准确率,甚至不是 14.19 nM 的 IC50。关键是它展示了一种可能性:脚手架可以进化,进化可以被审查,审查可以做实验,实验结果可以反馈到下一轮进化。
这是一个闭环。而闭环,是所有自我改进系统的终极目标。
代码:论文声明将释放实现、工具接口和环境配置,目前尚未公开。