简介
BioClaw 是一个基于 NanoClaw 架构和 Claude Agent SDK 构建的 WhatsApp AI 助手,专门为生物信息学研究人员设计。通过在 WhatsApp 群组中发送消息,用户可以直接运行 BLAST 搜索、蛋白质结构分析、测序数据质控、文献检索等复杂的生物信息学任务,无需登录任何服务器或使用命令行界面。
BioClaw 的核心优势在于将强大的生物信息学工具与便捷的即时通讯工具结合,让研究人员在手机上就能完成专业的生物数据分析。无论是与合作者讨论实验结果,还是随时查看蛋白质结构,BioClaw 都能提供即时响应。
官方仓库: https://github.com/Runchuan-BU/BioClaw
方法一:使用 Defapi 平台(推荐)
为什么选择 Defapi?
Defapi 是一个提供 Claude 和 Gemini 模型 API 的平台,其价格仅为官方的一半。对于 BioClaw 这类需要大量 API 调用来完成复杂生物信息学任务的工具来说,使用 Defapi 可以显著降低成本。Defapi 完全兼容 Anthropic 的 API 协议,现有的 SDK 和代码无需修改即可迁移过去。
配置步骤
-
注册 Defapi 账号: 访问 https://defapi.org 注册账号并获取 API Key
-
修改 BioClaw 配置: 编辑项目根目录的
.env文件,将ANTHROPIC_API_KEY替换为 Defapi 的 API Key:
# 官方 API
# ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxxxxxxxxxx
# Defapi API (价格仅为官方一半)
ANTHROPIC_API_KEY=dk-xxxxxxxxxxxxxxxx
- 配置 API 端点: 在
src/container-runner.ts中添加 Defapi 的端点配置:
// 在密钥白名单中添加
const allowedVars = ['CLAUDE_CODE_OAUTH_TOKEN', 'ANTHROPIC_API_KEY'];
// 修改 Agent Runner 的环境变量设置
const sdkEnv: Record<string, string | undefined> = {
...process.env,
ANTHROPIC_BASE_URL: 'https://api.defapi.org/v1'
};
- 重启服务:
npm run build
npm start
Defapi 支持的模型
Defapi 提供多种模型选择,包括:
| 模型 | 用途 | 价格 |
|---|---|---|
| claude-sonnet-4-20250514 | 通用对话、复杂推理 | 半价 |
| claude-opus-4-6-20250514 | 高复杂度任务 | 半价 |
| claude-haiku-4-5 | 快速响应 | 半价 |
| gemini-2.0-flash | 多模态任务 | 半价 |
验证配置
运行以下命令验证 API 是否正常工作:
curl https://api.defapi.org/v1/messages \
-H "Authorization: Bearer dk-xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{"model":"claude-sonnet-4-20250514","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}'
方法二:使用官方 Anthropic API
配置步骤
-
获取 API Key: 访问 https://anthropic.com 申请 API Key
-
配置环境变量:
# 在 .env 文件中添加
ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxxxxxxxxxx
- 启动服务:
npm install
npm start
使用 OAuth Token(可选)
如果使用 Claude Code 的 OAuth 认证:
CLAUDE_CODE_OAUTH_TOKEN=sk-xxxxxxxxxxxxxxxx
方法三:使用 OpenRouter
OpenRouter 聚合了多个 AI 提供商,支持 Claude 模型的中转。
配置步骤
-
获取 OpenRouter API Key: 访问 https://openrouter.ai/settings
-
修改配置:
# .env 文件
ANTHROPIC_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxx
- 添加端点配置: 在
container/agent-runner/src/index.ts中:
const sdkEnv: Record<string, string | undefined> = {
...process.env,
ANTHROPIC_BASE_URL: 'https://openrouter.ai/api/v1'
};
验证是否正常工作
完成配置后,运行以下验证步骤:
1. 启动服务
npm start
2. 在 WhatsApp 群组中发送测试消息
@Bioclaw 你好,请告诉我你是谁?
3. 检查日志
tail -f logs/bioclaw.log
如果配置正确,你应该能在 WhatsApp 中收到 BioClaw 的回复。
BioClaw 的内部机制
容器隔离架构
BioClaw 使用 Docker 容器为每个 WhatsApp 群组提供隔离的计算环境。这种设计有几个重要优势:
首先,容器之间完全隔离,一个群组的错误不会影响其他群组。其次,每个容器都预装了完整的生物信息学工具链,包括 BLAST+、BWA、SAMtools、FastQC、PyMOL 等,无需在本地安装任何软件。最后,容器会在空闲一段时间后自动释放资源,节省计算成本。
消息处理流程
当你在 WhatsApp 中发送消息时,BioClaw 的处理流程如下:Node.js 编排器首先轮询 WhatsApp 获取新消息,然后检查消息是否包含触发词 @Bioclaw。通过触发词检查后,消息被传递给对应群组的 Docker 容器。容器内的 Claude Agent SDK 接收消息,调用 AI 模型生成响应。最后,响应通过 WhatsApp API 发送回群组。
整个过程大约需要几秒钟到几十秒钟不等,取决于任务的复杂程度。
会话管理
BioClaw 支持多轮对话会话。每个群组有独立的会话目录,会话状态存储在 SQLite 数据库中。这意味着即使容器重启,对话上下文也不会丢失,Agent 能够理解对话的历史背景,提供更连贯的响应。
常见用例
BioClaw 特别适合以下五种生物信息学应用场景:
1. 序列相似性搜索与基因鉴定
当你发现了一段未知序列,可以通过 BLAST 搜索来识别它:
@Bioclaw 用这段序列做 BLAST 搜索: ATGCGATCGATCGATCGATCGATCGATCG
BioClaw 会在容器中运行blastn或blastp,搜索 NCBI nr 数据库,并返回相似序列的详细信息,包括物种来源、E值和比对得分。这对于鉴定基因、发现同源物、研究进化关系都非常有帮助。
2. 蛋白质结构可视化
查看蛋白质的三维结构是结构生物学的核心需求:
@Bioclaw 请显示 P53 蛋白的 3D 结构,用 PyMOL 渲染
BioClaw 会从 PDB 数据库下载结构文件,使用 PyMOL 生成高质量的渲染图像,并发送给用户。你还可以指定特定的渲染方式,比如显示特定残基、显示配体结合位点、或者显示氢键网络。
3. 测序数据质量控制
处理 NGS 数据时,第一步通常是评估数据质量:
@Bioclaw 分析一下 workspace 里的 FastQC 报告
BioClaw 会定位工作区中的 FASTQ 文件,运行 FastQC 生成质控报告,并自动解读关键指标(GC 含量、序列质量、重复率等),帮助用户快速判断数据是否适合后续分析。
4. 差异表达分析与可视化
RNA-seq 数据的差异表达分析是转录组研究的核心:
@Bioclaw 用 counts.csv 做差异表达分析,画一个火山图
BioClaw 会读取 counts.csv 文件,使用 PyDESeq2 进行差异表达分析,生成火山图(Volcano Plot)来可视化显著上调和下调的基因。这对于发现疾病标志物、理解基因调控机制都非常有价值。
5. 科学文献检索与摘要
追踪最新的研究进展是科研人员的日常需求:
@Bioclaw 在 PubMed 搜索关于 CRISPR 递送方法的最新论文
BioClaw 会搜索 PubMed 数据库,返回相关性最高的论文列表,包括标题、作者、期刊、发表日期和摘要。用户可以进一步要求对某篇论文进行详细解读。
配置参数参考
BioClaw 提供多个可配置参数,可以根据需求调整:
| 参数 | 默认值 | 说明 |
|---|---|---|
ASSISTANT_NAME | Bioclaw | 触发词名称 |
CONTAINER_TIMEOUT | 1800000ms | 单次任务超时时间 |
IDLE_TIMEOUT | 1800000ms | 容器空闲后保持时间 |
MAX_CONCURRENT_CONTAINERS | 5 | 最大并发容器数 |
POLL_INTERVAL | 2000ms | 消息轮询间隔 |
这些参数可以在 src/config.ts 文件中修改。