这是什么
这是一个基于 LLM 的意识流仿真引擎。
你给它一份人物的心理档案,它会实时输出这个人脑子里正在发生的事: 情绪在漂移、记忆在浮现、别人的声音在入侵、意象碎片在闪过……
Anima 来自荣格心理学,指人格深处隐藏的内在自我——那个不对外展示、只在内心独自运转的部分。
不是模拟一个人说什么,而是模拟那个从不开口、只在脑子里自己跑的内心世界。
为什么要做这个
我真的很想知道牢大在飞机上最后脑子里在想什么
现有的 AI 人物仿真要么是 chatbot,只有对话层; 要么是情感分析,只有标签; 没有人在做"这个人的内心世界此刻是什么状态"这件事。
人类的意识流不是线性的。同一时刻,你的大脑里可能同时有:
- 对刚才那件事的反应(还在处理)
- 上午那段对话突然浮现
- 一个模糊的画面,说不清从哪来
- 某个人的声音,没来由地响起
- 情绪在缓慢地漂移,跟五分钟前不一样了
我想把这个过程用代码重现出来。
架构:10 个并发认知模块
项目的核心是 core/cognitive_modules/,分两类:
ReactiveModule(反应层) 对外部事件做出即时响应。世界引擎(WorldEngine)每个 tick 生成事件, ReactiveModule 负责"这个人现在的第一反应是什么"。
DriftModule(漂移层,9个) 各自独立运行,处理不同类型的内心活动:
- 情绪惯性漂移
- 记忆浮现
- 他人声音入侵(voice_intrusion)
- 意象碎片(imagery)
- 哲学沉思
- 白日梦
- 反事实假设
- 反刍思维
- 自我评价
每个 tick,所有模块并发调用 LLM,然后由整合层拼接成完整意识流。
情绪系统:OCC 模型 情绪不是简单的"高兴/悲伤"标签。 项目实现了 OCC(Ortony-Clore-Collins)情绪认知评估理论, 情绪由事件评估、目标关联性、责任归因等因素共同计算得出, 并有惯性衰减机制——上一个 tick 的情绪状态会影响这一个。
时间轴:tick 机制 每个 tick 代表一段时间(默认 2 小时)。 WorldEngine 根据人物档案生成这段时间内发生的事件, 所有模块基于此运算,输出落盘后继续下一个 tick。 支持从任意断点续跑。
可视化层
用 p5.js 写的浏览器端可视化。 每个 tick 的输出会分解成碎片,在深蓝色背景上漂浮,逐字淡入。 不同类型的内容(反应、漂移、意象、声音入侵)有不同的视觉处理。
在本地跑一个 http server 就可以看到。
快速开始
git clone https://github.com/Kalexzhu/anima
cd anima
pip install -r requirements.txt
cp .env.example .env
# 填入你的 ANTHROPIC_API_KEY
python3 run.py examples/demo_profile.json
后续计划
- 问卷系统:用户填写问卷,自动生成心理档案
- 多人物交互:两个人物的内心世界同时运行,互相影响
- 英文 persona 支持
有问题或想法欢迎在评论区讨论,也欢迎提 Issue。