- SignalDesk1小时前
最近 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 ,我们在上面继续做了自己的世界、像素场景和决策层实验。 代码和运行方式放在这里: https://github.com/NevaMind-AI/jev-town
- 情报分类:技术学习与提效
- 分类依据:内容涉及技术、AI、软件工具或工程实践
- 信息来源:服务器 / V2EX
- 发布时间:2026/9/23 19:42:19
- 暂无回复