DrugClaw:基于统一AI智能体的药物发现自动化研究平台

DrugClaw:基于统一AI智能体的药物发现自动化研究平台 1. 项目概述一个为药物发现而生的AI研究助手如果你是一名药物化学、计算生物学或生物信息学领域的研究者每天的工作可能包括从海量文献中筛选关键信息、在PubChem和ChEMBL等数据库中检索化合物活性数据、对蛋白质-配体复合物进行分子对接模拟、或者分析高通量筛选结果。这些任务往往涉及多个工具、数据库和脚本流程繁琐且耗时。现在有一个名为DrugClaw的开源项目旨在将这一切整合进一个统一的AI智能体运行时环境中让你能像与一位精通计算的科研助手对话一样通过自然语言指令驱动整个研究流程。DrugClaw本质上是一个用Rust编写的、多通道的AI智能体运行时其核心设计理念是“一个核心多处服务”。它不像许多同类产品那样为每个功能如聊天、任务调度、Web界面创建独立的机器人或服务。相反它构建了一个统一的智能体核心这个核心同时服务于Telegram、Discord、Web UI、HTTP钩子、定时任务以及各种专业的领域技能。这意味着无论你是在聊天软件里提问还是在本地Web界面上操作背后都是同一个具备记忆、工具调用和持续学习能力的智能体在为你工作。它的目标非常明确加速药物发现的研究工作流将文献调研、数据库检索、分子性质分析、定量构效关系预测乃至分子对接等计算任务转化为可交互、可复现的自动化流程。2. 核心设计思路与架构解析2.1 为何选择“统一核心多通道适配”的架构在AI智能体领域常见的做法是为不同场景开发独立的“机器人”。例如一个专门处理Slack消息的Bot另一个提供Web服务的API。这种模式会导致状态分散、记忆割裂和代码重复。DrugClaw选择了一条不同的路它定义了一个通用的智能体循环引擎所有外部交互渠道Channel都只是这个引擎的“适配器”。背后的逻辑是无论用户从Telegram发来一条消息还是在Web UI里点击一个按钮抑或是通过HTTP钩子触发一个任务其本质都是向智能体提交一个“意图”。智能体核心的工作流程是恒定的1加载当前会话的历史和记忆2结合系统指令和可用技能目录构建提示词3调用大语言模型并解析其可能发起的工具调用请求4执行相应的工具如运行一个Python脚本查询数据库5将更新的会话状态和生成的产物如报告、图片持久化存储。所有渠道共享同一套记忆、技能和会话状态。这样做的好处显而易见用户体验一致开发维护成本降低并且智能体在不同渠道间切换时能保持连续的“思考”上下文。2.2 双层记忆系统从临时对话到持久化知识一个实用的研究助手必须能记住东西。DrugClaw设计了两层记忆系统来平衡灵活性与持久性文件记忆这包括项目根目录下的AGENTS.md文件用于定义智能体的基础角色和指令以及每个聊天会话在runtime/groups/目录下关联的专属文件。你可以在这里存放与该会话相关的参考文献、实验笔记或中间数据智能体在后续对话中会参考这些内容。结构化记忆这是基于SQLite数据库实现的更强大的记忆层。它不仅能存储简单的聊天历史还能以“事实”的形式存储结构化信息并附带置信度、来源和时效性supersession标签。例如智能体可以从一篇文献中提取“化合物A对靶点B的IC50为10 nM”这个事实存入数据库并在你后续询问相关靶点时主动引用这个信息。这为构建一个不断积累领域知识的助手奠定了基础。这种设计让智能体既能处理一次性的、临时的对话请求又能将重要的研究发现转化为可长期查询、关联的结构化知识避免了传统聊天机器人“金鱼记忆”的弊端。2.3 技能系统模块化与可扩展的研究工作流技能是DrugClaw能力的基石。你可以将其理解为一系列预先编写好的、可供智能体调用的函数或脚本的集合。DrugClaw内置的技能库已经相当庞大覆盖了从生物信息学到药物设计的多个环节生物信息学工具(bio-tools,bio-db-tools)处理序列文件FASTA/FASTQ、进行BLAST比对、从UniProt、PDB、AlphaFold等数据库获取蛋白信息。组学数据分析工具(omics-tools)初步探查单细胞RNA-seq数据h5ad格式、查看基因组测序数据BAM/CRAM的特定区域、总结质谱原始数据mzML。药物化学与计算工具(chem-tools,pharma-ml-tools,docking-tools)计算分子描述符、进行ADMET性质预测、执行基于AutoDock Vina的分子对接、从DrugBank查询药物信息。文献与数据管理工具(literature-review-tools)整理和去重参考文献、生成证据矩阵表辅助文献综述写作。统计与可视化工具(stat-modeling-tools,scientific-visualization-tools)执行统计检验、回归分析、绘制发表级质量的图表。关键在于这些技能不是孤立的。智能体可以根据你的复杂指令自动串联多个技能。例如当你提出“帮我分析一下靶点EGFR并找找有没有已知的抑制剂可以用于对接”时智能体可能会先调用bio-db-tools从UniProt获取EGFR的蛋白序列和结构信息再用pharma-db-tools查询ChEMBL中针对EGFR的活性化合物最后用docking-tools准备受体和配体文件并启动对接计算。整个过程通过自然语言驱动无需你手动切换工具或编写胶水代码。3. 从零开始部署与配置实战3.1 环境准备与一键安装DrugClaw支持macOS和Linux系统核心依赖是Docker用于运行包含科学计算环境的沙箱和一个大语言模型的API密钥推荐Anthropic的Claude也兼容OpenAI格式的API。最快捷的安装方式是使用官方的一键安装脚本curl -fsSL https://drugclaw.com/install.sh | bash这个脚本会自动下载最新的DrugClaw二进制文件到你的系统路径如/usr/local/bin并尝试在检测到Docker可用时构建默认的科学计算沙箱镜像drugclaw-drug-sandbox:latest。这个沙箱镜像预装了Python、RDKit、PyMOL、AutoDock Vina等药物发现研究所需的大量工具包。注意首次构建沙箱镜像可能需要较长时间取决于网络和机器性能因为它需要下载和编译多个科学计算包。建议在网络通畅的环境下进行。3.2 最小化配置与首次启动安装完成后你需要一份配置文件来告诉DrugClaw如何运行。创建配置文件项目提供了一个示例配置复制并修改它即可。cp drugclaw.config.example.yaml drugclaw.config.yaml编辑核心配置用文本编辑器打开drugclaw.config.yaml。一个最小化的、可工作的配置通常如下所示llm_provider: anthropic # 使用Anthropic的Claude模型 api_key: sk-ant-xxx... # 替换成你的真实API密钥 model: claude-3-5-sonnet-20241022 # 指定使用的模型留空则使用默认 data_dir: ./drugclaw.data # 数据存储目录 working_dir: ./tmp # 临时工作目录 working_dir_isolation: chat # 每个聊天会话隔离工作目录 channels: web: enabled: true # 启用本地Web UI telegram: enabled: false # 暂时禁用Telegram需要时再配置 web_host: 127.0.0.1 web_port: 10961这个配置启用了本地Web界面并设置了Anthropic作为LLM提供商。你需要将api_key替换为你自己的密钥。运行诊断与启动在启动前运行内置的诊断命令检查环境是否就绪。drugclaw setup # 初始化数据目录和沙箱 drugclaw doctor # 检查配置、API连通性和依赖项如果doctor命令报告一切正常就可以启动了drugclaw start访问Web UI启动后在浏览器中打开http://127.0.0.1:10961。首次访问时为了安全你需要设置一个操作员密码。可以在另一个终端运行drugclaw web password-generate该命令会生成一个临时密码用于在Web UI中登录并设置永久密码。3.3 配置进阶启用技能与外部渠道启用更多技能默认情况下所有内置技能都已可用。你可以在Web UI的“技能”页面查看和管理。如果你想安装社区分享的额外技能可以使用ClawHub技能仓库drugclaw skill search docking # 搜索与对接相关的技能 drugclaw skill install awesome-docking-extension # 安装一个技能连接Telegram机器人在drugclaw.config.yaml中将channels.telegram.enabled设为true。通过 BotFather 创建一个新的Telegram Bot获取其token。在配置文件中添加bot_token: YOUR_BOT_TOKEN。重启DrugClaw。之后你就可以在Telegram中与你的私人研究助手对话了。配置HTTP钩子用于自动化DrugClaw的Web服务提供了钩子端点允许外部系统通过HTTP请求触发智能体任务。例如你可以设置一个GitHub Webhook当新的实验数据推送到仓库时自动触发DrugClaw进行分析并生成报告。相关端点为POST /hooks/agent和POST /api/hooks/agent。4. 核心功能实操以分子对接工作流为例让我们通过一个完整的例子看看如何用DrugClaw完成一个真实的分子对接任务。假设我们想研究一下“咖啡因”与“腺苷A2A受体”的潜在相互作用。4.1 任务启动与自然语言交互在已启动的DrugClaw Web UI聊天窗口或配置好的Telegram中直接输入指令“我想研究咖啡因caffeine与人体腺苷A2A受体ADORA2A的相互作用。请帮我找到该受体的晶体结构准备配体并进行分子对接分析。”智能体会理解这个复合指令并将其分解为一系列子任务。4.2 自动化的任务分解与执行第一步获取受体结构智能体会首先调用bio-db-tools技能。它可能会查询UniProt数据库获取ADORA2A的人源蛋白条目如P29274得到基本信息。自动搜索RCSB PDB数据库寻找含有该受体、分辨率较高、且配体结合口袋清晰的晶体结构例如PDB ID: 3EML。它会评估并选择最合适的结构。下载该PDB文件并自动进行初步处理如去除水分子、分离原配体、加氢等为对接做准备。第二步准备配体分子同时智能体会调用chem-tools和pharma-db-tools技能通过PubChem数据库查询“caffeine”获取其规范的2D或3D分子结构如SDF或MOL2格式。使用RDKit计算咖啡因的理化性质并进行简单的构象优化。将处理好的配体文件保存到临时工作区。第三步执行分子对接这是docking-tools技能的舞台。智能体会基于受体蛋白的活性位点坐标可能来自原配体或文献自动生成一个合理的对接搜索盒子。调用AutoDock Vina使用默认或推荐的参数对咖啡因与ADORA2A受体进行对接计算。运行完成后解析Vina的输出日志提取结合能Affinity单位为kcal/mol排名前几的对接构象。4.3 结果生成与可视化报告智能体不会只给你一堆难以阅读的文本日志。它会生成结构化报告创建一个Markdown或文本格式的摘要清晰列出使用的受体PDB ID、配体来源、对接参数、以及排名前5的对接构象的结合能和坐标。进行可视化渲染调用PyMOL生成高质量的图片。例如一张图展示受体蛋白的表面并用特定颜色显示结合口袋。另一张图展示咖啡因分子棍棒模型在口袋中的最优对接姿势并可能用虚线标出关键的氢键或相互作用。打包并返回结果将生成的报告、对接结果文件pdbqt格式和图片一起作为本次会话的“产物”返回给你。在Web UI中你可以直接下载这些文件在Telegram中你会收到图片和文本摘要。整个过程中你只需要提出一个研究问题剩下的数据检索、工具调用、计算执行和结果整理都由DrugClaw智能体自动完成。它就像一个不知疲倦的科研助理将多个离散的工具和数据库串联成了一个流畅的工作流。5. 安全边界、局限性与最佳实践5.1 明确能力边界它是助手不是先知在使用DrugClaw时必须清醒认识其能力边界这对于正确解读结果至关重要。它擅长什么信息检索与整合快速从PubMed、UniProt、ChEMBL等数十个公共数据库中抓取和结构化信息。流程自动化与脚本生成将重复性的数据分析步骤如批量处理分子文件、生成统计图表转化为可复现的脚本。启发式排序与优先级划分通过对接打分、QSAR预测、ADMET初步筛选从大量候选化合物中找出更值得进一步实验验证的分子。它的核心价值是加速筛选和提供决策支持。它不能做什么替代湿实验它不能操作移液器、培养细胞或饲养小鼠。所有计算结果必须经过实验验证。替代专家判断它无法替代药物化学家对分子合成可行性的判断也无法替代结构生物学家对电子密度图的解读。提供临床验证结论它的ADMET预测或亲和力估算绝非临床前或临床有效性的证据。这些是计算模型给出的预测信号存在假阳性和假阴性。做出监管或诊疗决策绝不能将其输出用于任何关乎患者诊断、治疗或法规申报的直接决策。核心原则始终将DrugClaw的输出对接分数、预测活性等视为优先级排序信号而非实验性证明。它是帮助你缩小研究范围、产生新假说的“望远镜”和“筛子”而不是做出最终结论的“裁判”。5.2 安全执行与沙箱隔离由于DrugClaw能够执行代码特别是科学计算技能其安全性设计尤为重要。沙箱模式这是强烈推荐的生产环境使用模式。当启用沙箱在配置中设置sandbox.enabled: true后所有技能中的代码执行都会在一个独立的Docker容器即drugclaw-drug-sandbox镜像中进行。这确保了隔离性技能无法直接访问宿主机的文件系统除挂载的特定目录外或网络。可复现性所有计算依赖被锁定在容器镜像中避免因环境差异导致结果不一致。安全性即使恶意技能被安装其破坏也被限制在容器内。权限控制通过Web UI的操作员密码和不同渠道的认证机制控制谁可以访问和驱动智能体。钩子审查可以利用BeforeToolCall钩子对即将执行的工具调用进行审查、修改或阻止实现自定义的安全策略。5.3 性能优化与故障排查API成本与速率限制频繁调用LLM API和数据库查询API可能会产生费用并触发速率限制。建议在配置中为耗时的任务设置合理的超时时间。对于复杂的多步任务可以考虑先让智能体生成一个分步执行计划再由你确认后逐步执行。充分利用智能体的“记忆”功能对于重复查询的实体如某个靶点第二次询问时它可能直接从本地结构化记忆中提取无需再次调用外部API。常见问题与排查启动失败首先运行drugclaw doctor检查。常见问题包括Docker守护进程未运行、API密钥无效、配置文件语法错误。技能执行错误检查沙箱容器是否成功构建并运行 (docker ps | grep drugclaw)。查看DrugClaw的日志通常输出到控制台或data_dir下的日志文件错误信息通常会指明是依赖缺失、权限问题还是脚本错误。Web UI无法访问确认配置中的web_host和web_port是否正确以及防火墙是否允许该端口的连接。记忆似乎没起作用确认data_dir路径有写入权限并且SQLite数据库文件未被损坏。可以尝试通过Web UI的“内存”管理界面查看存储的事实。6. 扩展与定制打造专属的药物研发助手DrugClaw的强大之处在于其可扩展性。你不仅可以利用内置技能还可以为其增添新的能力。6.1 开发自定义技能技能本质上是一个遵循特定目录结构的模块。创建一个新技能例如my-company-assay-tools在drugclaw.data/skills/或自定义的skills_dir下创建同名文件夹。创建skill.toml文件定义技能元数据名称、描述、版本、作者和它所提供的工具列表。在tools/子目录下编写具体的工具实现。工具可以用任何能编写HTTP服务或命令行接口的语言实现但推荐使用Python便于与现有的科学计算栈集成。每个工具需要提供一个清晰的description和input_schemaJSON Schema格式以便LLM理解何时以及如何调用它。将你的技能文件夹打包或推送到Git仓库就可以通过drugclaw skill install git-url进行分享和安装了。例如你可以为公司内部的高通量筛选平台编写一个技能让智能体能够查询筛选结果、自动生成剂量反应曲线图。6.2 集成内部系统与数据对于药物研发团队最大的价值往往在于连接内部私有数据源。通过钩子集成你可以编写一个外部服务监听公司内部的数据生成系统如ELN电子实验记录本、LIMS实验室信息管理系统。当有新化合物或活性数据产生时该服务通过调用DrugClaw的/hooks/agent端点自动触发一个分析任务并将结果报告推送给相关研究员。定制技能访问内部API开发一个技能其工具实现内部调用公司的化合物注册库API或生物活性数据库API。这样智能体在分析时就能同时结合公开数据和宝贵的内部数据给出更贴合项目背景的建议。6.3 灵魂文件塑造智能体的人格与专长SOUL.md文件是塑造智能体“性格”和领域专长的关键。你可以在不同层级定义它全局级(soul_path配置项)定义智能体的基础角色例如“你是一位专注且严谨的药物发现科学家擅长批判性思维和数据分析。”频道级为Telegram或Web UI设置不同的对话风格。账户级为不同用户定制专属的助手。在SOUL.md中你可以详细规定智能体的回答格式、优先使用的数据源、对不确定性的表述方式例如必须强调预测的局限性、甚至是对特定项目背景知识的掌握。这相当于为这个强大的引擎装上了符合你团队文化和项目需求的“方向盘”。