CiteLab生物医学实验分析室 · 先算出结果,再引用原文
技术架构
CiteLab 是独立的生物医学实验分析室。运行时是 Vercel 上的 Next.js 与 AI SDK:确定性统计与文献 API 在服务端执行,不进入容器沙箱。
产品边界
做什么
转录组差异表达、GO/KEGG、表型/qPCR 探查、PubMed/OpenAlex 文献、研究空白核实、实验设计、方案审阅、补实验与正交验证。
不做什么
不手写 DESeq2/limma;不编造 GO/KEGG/PMID/DOI;不把观察性设计升级成因果;不发明湿实验配方、抗体货号或引物序列。
请求路径
浏览器(Source Serif 4 + 实验记录本)
首页 composer 选方法,开始分析才进工作区
│
▼
Next.js App Router · apps/citelab
cookie 会话(scrypt)
POST /api/chat → hold 200 积分
│
▼
AI SDK 7 streamText + tools (DeepSeek OpenAI-compatible)
inspect_dataset / profile_table
run_deg_analysis Node Welch t + BH FDR,log2(count+1)
run_enrichment Ma'ayan Enrichr HTTP
ground_findings_in_literature / search_papers_v2
NCBI E-utilities → OpenAlex
read_protocol
suggest_followup_experiments
│
▼
settleCharge(工具单价 + token)或失败 releaseHold
结果台渲染火山图 SVG、基因、通路、PMID 卡片、补实验清单运行时与部署
- Next.js 16 App Router,Vercel Root Directory =
apps/citelab。 - 独立安装依赖,不与其它应用共用构建图。
- AI SDK
streamText/tool/isStepCount(8),最长 120 s。 - 模型:DeepSeek OpenAI-compatible;密钥只在服务端环境变量。
- 数据库:Neon/Postgres;本地无 DATABASE_URL 时用进程内存储。
- 对象存储:当前分析产物(火山图 SVG、工具 JSON)走响应流,不进沙箱。
认证与积分
- 自建 cookie 会话 + scrypt,不是 better-auth。
- 注册赠送 2500 积分 / 30 天(可用环境变量覆盖)。
- 每轮对话先冻结 200 积分;工具成功后按目录结算,失败释放。
- 结账 API
POST /api/payment/checkout只认product_id。 - 支付网关目前为空:登记订单,
checkout_url恒为 null。接入你的商户后,钱进你的账户,再经 webhook 发放积分。
工具单价
agent.tool.search_openalex→ 10 积分agent.tool.search_pubmed→ 10 积分agent.tool.search_papers_v2→ 30 积分agent.tool.run_deg_analysis→ 40 积分agent.tool.run_enrichment→ 30 积分agent.tool.ground_findings_in_literature→ 30 积分agent.tool.suggest_followup_experiments→ 20 积分agent.tool.inspect_dataset→ 10 积分agent.tool.profile_table→ 20 积分
分析方法(可落地、可审计)
差异表达
基因 × 样本 count CSV。列名含 ctrl/treat 时自动分组。对 log2(count+1) 做 Welch t,BH FDR。阈值默认 |log2FC|≥1 且 padj<0.05。已有 DEG 表(含 log2FoldChange 与 padj)只画火山图。
富集
Enrichr:GO BP/MF 2023 与 KEGG 2021 Human。空列表或服务失败如实返回,禁止编造通路。上下调应分开富集。
文献
先 NCBI E-utilities,不足再 OpenAlex。只引用返回的 PMID/DOI。零命中写「证据不足」。找不到文献 ≠ 新颖。
实验
补实验规则映射 n<3、无批次、零显著、富集空白、缺正交验证。方案审阅只读上传文本。不发明湿实验步骤。
工作台交互
- 左侧 232px 分析室导航:新建分析、指南、架构、分析记录、可用积分。
- 首页 composer-first:选方法留在首页,只有「开始分析」进入工作区。
- 工作区:对话列(横格纸)+ 结果台(火山图 / 基因 / 通路 / 文献卡片)。
- 话术:新建分析、可用积分、正在分析、发送 / 停止、添加数据或方案。
- 字体 Source Serif 4 + IBM Plex Mono,纸色 / 砖红。
技能(写入系统提示,不是网页分类)
- biomedical-deg · biomedical-enrichment · dataset-eda
- literature-grounding · research-design · experiment-review
文件约定
- 表格:CSV/TSV。Excel 请另存为 CSV。
- 方案:txt/md 或粘贴。PDF/Word 请先导出文本。
- 演示数据:
/demo-counts.csv(ctrl_1–3 / treat_1–3)。
仓库结构
公网应用在 apps/citelab,独立依赖、独立 Vercel 项目。竞赛部署只发布这一层。