- K_KKiki2026-09-2428193
最近 jev 的讨论挺多,我们把它接进了「斯坦福小镇」的 agent 模拟世界,做了一个小实验。
虽然它用了像素风游戏的表现形式,但这个世界里没有玩家角色。人类只能观察,不能控制居民。画面中所有会移动的角色,都是 agent 依靠 jev 自己决定要去哪里、找谁,以及什么时候停下来。
目前场景里有 20 个居民。每个人都有自己的身份、性格、当前状态和对世界的共同认知。
世界运行后,他们会不断经历这样一个循环:
观察当前环境 → 决定下一步做什么 → 移动 → 发起互动 → 对话 → 更新状态和记忆
这次主要实验的是:能不能让 jev 来负责 agent 最频繁的「下一步做什么」决策( repo 里面有录屏)
我们的做法不是让模型自由生成一段 JSON ,而是先由引擎计算出当前合法的候选动作,例如:
- 现在可以接近哪些人或物体
- 可以走向哪些地点
- 是否值得主动接触某个目标
- 如果不行动,应该短暂停留还是等待更久
然后把这些候选项交给 Jev 。一次请求里会同时询问 seek 、target 、roam 、place 和 idle_length ,再由代码按照固定规则组合成最终动作。
这样做主要解决了一个之前比较麻烦的问题:普通对话模型即使被要求输出 JSON ,仍然可能选择一个根本不存在、或者当前不可达的目标。Jev 的 Choice 问题只能从引擎提供的候选项里选择,相当于让非法动作从结构上就无法被表达。
同时,它还会返回每个选项的概率和置信度,所以右侧观察面板里可以看到类似这样的记录:
seek 0.83 · talk to Ovid p=0.62 c=0.70
这比让模型事后生成一句“我为什么这么做”,更方便观察 Agent 的真实决策过程。
当然,Jev 目前并没有负责整个 Agent 。
它只替换了动作决策这一环。人物对话、长期状态描述和记忆仍然由对话模型与 Embedding 完成。Jev 不生成文本,所以它很适合从有限选项中快速做决定,但不适合直接承担人物对白。
技术上目前是 TypeScript + React + PixiJS 。模拟本身运行在浏览器中,Node 代理只负责保存模型凭证和转发请求。默认运行 20 个 agent ,也可以调整到 50 个,用来观察多人场景下的行为和调用压力。
当前版本还有不少限制:
- 只有一个主要观察场景
- 默认刷新页面会重新开始一个世界
- Agent 数量增加后,对话模型的调用成本仍然比较明显
- Jev 不生成 intent 和动作描述,人物接近目标后的行为有时会显得比较直接
- 这仍然是一个 Agent loop 的实验,不是完整的虚拟社会
这里说的「斯坦福小镇」,主要指 Generative Agents / Smallville 这一类“观察数字居民自主生活”的方向,并不是对原项目的完整复刻。项目的早期工程基础来自 a16z 的 AI Town ,我们在上面继续做了自己的世界、像素场景和决策层实验。
主楼 - 竭泽之鱼2026-09-2431260
你这是从哪来的?
- K_KKiki2026-09-2428193
代码和运行方式放在这里:
github.com

GitHub - NevaMind-AI/JevTown: jev based AI town simulation
jev based AI town simulation
- QYY2026-09-244419
说不定哪一天就能创造一个和真实世界一样的虚拟世界,如果实现了,那说明人类可能原本就是一个更大的虚拟世界
- K_KKiki2026-09-2428193
我们团队自己做的呢,评论区指路了链接
- tito12026-09-246359
佬可以github放点动画看看
- first2026-09-2419553
有点意思,不过与其200倍速度,不如改为200倍规模
- kooo135792026-09-248695
想看小鎮的人一言不合就打架的動畫
- LKM17292026-09-2421335
怎么有点像黑客帝国的设定 ^-^
- K_KKiki2026-09-2428193
哈哈哈好的收到,也在优化当中,确实现在的行为比较简单^-^
- K_KKiki2026-09-2428193
很酷!搓搓小人,墨镜安排下 ^-^
- K_KKiki2026-09-2428193
这个场景的话得安排大点跑了 ^-^
- K_KKiki2026-09-2428193
录屏太大了^-^,也是在苦恼当中ing
- kooo135792026-09-248695
血條 憤怒值 這些可以嗎
- umbrella2026-09-2431261
- 普通对话模型即使被要求输出 JSON ,仍然可能选择一个根本不存在、或者当前不可达的目标。
这个按理说应该可以被 Structured Outputs 输出模式完美解决吧,除非你给到的 json schema 一开始就具有表达出非法操作的可能性,那同样地,jev也不可能规避这一点。
- 风铃铛2026-09-2518766
传到B站上,github里挂个视频嵌入