跳到主要内容

AI 辅助编程与智能体工具

AI 编程工具已经从“补全几行代码”发展到“阅读项目、修改文件、运行命令、检查结果”的智能体工作流。对组学数据分析来说,它们可以显著提高效率,但不能替代你对数据、统计方法和生物学问题的判断。

本章的目标不是追工具热点,而是建立一套可靠的使用框架:什么时候用 AI,怎么给任务,如何检查结果,哪些数据不能交给外部服务。

什么是 vibe coding

Vibe coding 指用自然语言描述目标,让 AI 快速生成原型代码或应用。它适合探索想法,例如:

  • 快速画一张表达量分布图
  • 把一段 R 代码改写成 Python
  • 根据报错信息定位可能原因
  • 生成一个小型数据清洗脚本
  • 搭建一个教程页面或分析报告模板

它的问题也很明显:模型可能默认很多假设,生成的代码看起来能跑,但不一定统计上正确、可重复或适合真实数据。

因此在 BioF3 的语境里,更推荐把 vibe coding 当作“快速草稿”,后续必须补上:

  • 明确输入和输出
  • 固定软件版本
  • 保存参数和随机种子
  • 人工检查统计方法
  • 用小数据集验证结果
  • 把一次性代码整理成可复现脚本

智能体工具和普通聊天的区别

普通聊天工具通常只回答问题。智能体工具可以连接到你的代码环境,执行更完整的开发流程:

  • 读取项目文件
  • 修改多个文件
  • 运行终端命令
  • 执行测试或构建
  • 根据错误继续修复
  • 生成提交说明或 Pull Request

这很适合软件开发,也适合整理组学分析流程。但权限越大,风险也越高。第一次使用时,建议让工具只读项目,先让它解释结构和提出计划,再允许它修改文件。

常见工具类型

1. IDE 内置助手

这类工具嵌入编辑器,适合日常写代码、解释局部文件、生成函数和查看 diff。

常见形态包括:

  • VS Code 插件
  • Cursor 等 VS Code 系编辑器
  • JetBrains 插件
  • 云端 IDE 或浏览器工作区

适合任务:

  • 解释当前脚本
  • 补全函数
  • 重构局部代码
  • 修复语法错误
  • 根据已有风格写一段相似代码

不适合任务:

  • 没有上下文的大型分析决策
  • 未经确认就批量改动整个项目
  • 直接处理敏感临床数据

2. Codex

Codex 是 OpenAI 的编码智能体,可以在终端、本地开发环境或相关产品界面中使用。它适合读项目、改文件、运行命令、做代码审查和处理多文件任务。

典型用法:

codex

可以让它做:

梳理这个 Docusaurus 项目的目录结构,指出教程内容、静态资源和部署脚本分别在哪里。

或者:

检查 docs/modules/module02.md 里的 R 代码块,找出可能无法直接运行的地方,只给建议,不要修改文件。

使用建议:

  • 先让 Codex 读项目并给计划
  • 修改前确认影响范围
  • 每次只给一个明确任务
  • 改完后运行 npm run build、测试或示例脚本
  • 不要把未脱敏数据、密钥、服务器凭据写进提示词

3. Claude Code

Claude Code 是 Anthropic 的编码智能体,可以在终端、IDE、桌面应用和浏览器中使用。它能读代码库、编辑文件、运行命令,并和开发工具集成。

典型用法:

claude

适合任务:

  • 解释陌生代码库
  • 根据报错追踪问题
  • 编写测试
  • 批量修复 lint 或格式问题
  • 整理项目文档
  • 通过 CLAUDE.md 固定项目规则

在生信项目中,可以让它做:

阅读这个 R 脚本,解释每一步在单细胞分析流程中的作用,并指出哪些参数需要根据数据集调整。

4. opencode

opencode 是开源的 AI 编码智能体,主打终端工作流,也提供桌面和 IDE 形态。它可以连接不同模型供应商,适合希望掌控工具栈和模型来源的开发者。

典型用法:

opencode

适合任务:

  • 本地项目问答
  • 生成修改计划
  • 实施局部功能
  • 维护项目级 AGENTS.md
  • 在多个模型之间切换

使用 opencode 时要特别注意 API key 管理。不要把 key 写进仓库,不要提交 .env 文件。

5. Kiro

Kiro 是偏“规格驱动开发”的 AI IDE。它强调先把需求、设计和任务拆清楚,再让智能体执行。相比纯 vibe coding,Kiro 更适合把原型推进到可维护项目。

它的核心概念包括:

  • specs:把需求、设计和任务写成结构化文档
  • steering:给项目提供长期规则和上下文
  • hooks:在保存、创建或删除文件时触发自动化任务
  • agentic chat:通过自然语言和项目交互

适合任务:

  • 从想法生成需求说明
  • 把功能拆成可检查任务
  • 生成实现计划和测试计划
  • 维护中大型项目的一致性

如果你只是临时画一张图,Kiro 可能偏重;如果你要长期维护一个网站、分析平台或工作流,它的规格驱动思路很有价值。

6. API 中转站和模型聚合服务

很多用户会接触到“中转站”“转发站”或“模型聚合服务”。它们通常提供一个统一 API,把请求转发到不同模型供应商。

优点:

  • 一个接口访问多个模型
  • 支付和额度管理可能更方便
  • 有些服务提供兼容 OpenAI 格式的接口

风险:

  • 数据会经过第三方服务
  • 稳定性和响应速度不可控
  • 模型版本、价格和上下文长度可能变化
  • 有些服务可能不清楚数据保留策略
  • 可能不适合处理未公开论文、临床数据、密钥或商业代码

建议:

  • 能用官方 API 或企业账号时,优先用官方渠道
  • 不把真实患者数据、访问密钥、服务器密码交给不明中转服务
  • 如果必须使用中转,先做脱敏和小样本测试
  • 在项目文档中记录模型、供应商、日期和关键参数

生信分析中的安全边界

AI 工具很擅长写代码,但不理解你的真实实验约束。下面这些事情必须由人来确认:

  • 样本分组是否正确
  • 统计检验是否匹配实验设计
  • 批次效应是否需要处理
  • marker gene 是否符合生物学背景
  • 过滤阈值是否合理
  • 可视化是否夸大结论
  • 结果是否可重复

对于涉及人类样本、临床数据和未公开项目的数据,先默认不能上传到外部 AI 服务。至少要做:

  • 去除姓名、编号、地址等直接标识符
  • 去除可回溯到个体的元数据
  • 不上传原始 FASTQ、BAM、表达矩阵全量数据
  • 只提供最小可复现示例
  • 使用本地模型、企业合规服务或脱敏后的模拟数据

推荐工作流

学习阶段

用 AI 做解释器,而不是代写器:

用初学者能理解的方式解释这段 Seurat 代码。请逐行说明输入、输出和关键参数。
我不理解 NormalizeData、FindVariableFeatures、ScaleData 的区别。请结合单细胞表达矩阵解释。

分析阶段

让 AI 帮你生成草稿,但保留人工审查:

根据这个数据框结构,写一段 ggplot2 代码画不同细胞类型的基因表达小提琴图。请不要假设不存在的列名。
下面是报错信息和 sessionInfo。请判断最可能的原因,先给排查步骤,不要直接改代码。

项目维护阶段

让 AI 做重复劳动:

检查 docs/basics 目录下的教程,找出标题层级不一致、图片路径可能错误、代码块语言未标注的问题。
为这个分析脚本生成 README,说明输入文件、输出文件、依赖包和运行命令。

提示词模板

解释代码

请解释下面这段代码。要求:
1. 说明每一步的目的
2. 标出输入和输出
3. 指出可能需要根据数据修改的参数
4. 不要重写代码,除非发现明确错误

生成分析脚本

请写一个可复现的 R 脚本完成以下任务:
- 输入:counts.csv 和 metadata.csv
- 输出:QC 图、标准化后的对象、marker 基因表
- 要求:固定随机种子,记录 sessionInfo,所有输出写入 results/
- 不要使用不存在的列名;如果需要列名,请先向我确认

审查结果

请作为代码审查者检查这段分析流程:
1. 是否有统计学问题
2. 是否有不可复现的步骤
3. 是否有硬编码路径
4. 是否遗漏中间结果保存
5. 是否需要补充图注或方法说明

工具选择建议

场景更适合的工具
解释一段代码ChatGPT、Claude、IDE 助手
修改本地项目多个文件Codex、Claude Code、opencode
快速原型Codex、Claude Code、Cursor、Kiro
规范化长期项目Kiro、Codex、Claude Code
多模型切换opencode、模型聚合服务
敏感数据分析本地环境、脱敏数据、企业合规服务

参考资料