生物学里的代谢过程从来都不是按部就班的。线粒体和溶酶体不会照着中央剧本走,它们靠化学信号互相喊话,在资源分配上讨价还价。做Cyto Agent的时候,我想把这种去中心化的智能用现代大模型代理的模式复刻出来。

这篇文章聊聊怎么搭一个实时细胞模拟器,核心是个"LangGraph风格"的工具调用编排器。

打开网易新闻 查看精彩图片

传统模拟器的问题在于脚本化。大多数实现用硬编码的if/else阶梯:if (病原体) { 防御(); }。效率是有的,但少了生物适应那种微妙的弹性。

Cyto Agent把这些阶梯换掉,换成一个细胞核代理——由大模型驱动的编排器,把细胞状态当成非结构化数据来感知,通过推理可用工具来决定行动。

整个系统拆成三块。引擎(Simulation.ts)是反应式状态机,处理细胞的"物理":ATP衰减、葡萄糖消耗、病原体伤害。事件总线(EventBus.ts)是发布订阅系统,让代理能"听到"信号又不用紧耦合。AI编排器(LangChainService.ts)是模拟状态和大模型推理之间的桥梁。

最有意思的部分是给大模型装上"眼睛"和"手"。不是每次提示词都塞完整状态进去,而是实现了工具调用。比如query_organelle_status这个工具,能探测特定细胞器的内部遥测数据,返回ATP效率等级、完整性指标这些。

危机发生时,细胞核不会直接 panic,而是调用check_genomic_database(病原体类型)去查病毒株和真菌株各自的针对性对策。这样就把领域知识(数据库)和推理能力(大模型)解耦开了。

为了让模拟器有生命感,可视化用了Framer Motion做细胞组件动画。病原体不是静态圆点,行为随类型变化:病毒是带刺的、快速振动的紫红色物体,反映高频复制;细菌是慢速移动的翡翠色药丸形状,反映代谢毒性;真菌是脉动的琥珀色孢子,代表缓慢稳定的生长。

最爽的功能是"自主进化"。细胞核可以决定用汇总后的ATP来"进化"线粒体,升到2级或3级。这就形成了反馈闭环,模拟器能随时间自我优化,不需要人插手。

代码开源在:https://www.dailybuild.xyz/project/128-cyto-agent