Skip to content

Latest commit

 

History

History
246 lines (150 loc) · 10.1 KB

File metadata and controls

246 lines (150 loc) · 10.1 KB

WorldSeed — 三个世界,一个引擎

WorldSeed

More is Different:让行为涌现的多智能体世界引擎。

Demo

MIT License Discord WeChat X

快速开始 · 演示 · 文档

English · 简体中文


WorldSeed 是什么?

不是写一个流程,是建一个世界。

规则 + 不同的 agent + 后果 → 涌现

定义角色、规则、各自能看到什么、能做什么、会带来什么后果。然后 agent 互相影响,逐渐产生有用的成果。

你可以从外面观察、介入,或者下场扮演一个角色。同一个引擎可以运行业务场景、仿真、游戏、虚构世界。


演示

WorldSeed 与场景无关。同一个引擎运行你定义的任何世界。

场景 1:Autoresearch

给系统一个想法,哪怕只是个粗糙的念头。几位不同专长的 agent 会接过去把它做下去:写假设、跑实验、互相评审论文、互相引用。和真实学术圈没两样。

这次我们做了如下尝试:在 TinyStories 上训一个 5M 参数的 GPT,目标是把 val_loss 降到尽可能低。三位研究员各自专精一个方向:优化、架构、数据。还有一位 area chair 只评审、不写论文。11 小时之内:

  • 100 条假设、86 个实验、72 篇过审的论文
  • val_loss 下降 24.7%

每篇论文都能完整溯源:假设 → code commit → 实验 → 自动复跑 → 引述论文 → 评审意见,从而形成一个 search 进化图谱。

72 篇论文的演化图谱:节点是 paper,边是引用;右侧面板显示 paper 的 claim、val_loss 和评审意见

过程中我们观察到了一些涌现现象,比如:

  • 跨界。 主攻数据的那位,很早就在自己方向上挖不出新东西了。跑到后半段,她开始去做队友的活:注意力设计、二阶优化都亲自上。另外两人始终没出过自己方向。整套配置里,没有哪条规则要求她这么走。

探索这个世界 (demo)

场景 2:AI 裁员

demo.mp4

AI 裁员潮来了,每个人怎么撑下去?

某家互联网公司终于动手了:30% 的员工,直接裁掉。

被裁的人必须在离开前,把自己的经验**"蒸馏"成一个 AI Skill**。是老老实实交接,还是在 Skill 里悄悄留个后门?

留下的人面对同样的 deadline、更高的 KPI、翻倍的工作量。硬扛到底,还是暗中准备跳船?

四个人在这间办公室里,各怀心思:

  • 人见人爱的产品经理。关上门的那一刻,他在骂谁?
  • 月底就走的架构师。赔偿没谈拢,他交接的 Skill 里埋了什么?
  • 要求所有人数据透明的组长。她自己的"AI 提效"数据经得起推敲吗?
  • 没人记得存在的测试。他私人文件夹里的 bug,是证据,还是弹药?

本地试一下

场景 3:茶馆谍战

同一个引擎。不同的 YAML。完全不同的世界。

WorldSeed 茶馆地图

WorldSeed 完整仪表板,茶馆场景,地图与事件流

四个间谍,一间茶馆。谁到底在为谁做事?

一出微缩的谍战剧。角色在茶香中交换情报、保护身份、互相试探,看谁先看穿谁。

探索这个世界 (demo)


快速开始

前置条件: Python 3.11+, Node.js 18+, uv

git clone https://github.com/AIScientists-Dev/WorldSeed && cd WorldSeed
uv sync --extra dm
cd frontend && npm install && npm run build && cd ..

cp .env.example .env
# 添加你的 API key,支持任何 LiteLLM 提供商(OpenAI、Anthropic、Ollama 等)

uv run worldseed play configs/ai_layoffs.yaml

打开仪表板:http://localhost:8000。三种玩法:

  • 旁观:上帝视角,Agent 在想什么都看得到。
  • 介入:私下对任意 Agent 说话,推一把剧情。
  • 扮演:化身角色,以第一视角和 AI 共处同一个世界。

每次运行都不同。过去的运行完整保留,随时可回放。

两种接入方式:


工作原理

WorldSeed 运行在世界钟声(tick)驱动的循环上。钟声每响一次,世界向前走一步。每次钟声响起:每个 Agent 感知自己被过滤后的那一份世界、提交一个动作,引擎判断这个动作:如果结果可预测就走你声明的规则,否则交给 AI 裁判。effects 落地,世界推进,下一声钟声开始。

WorldSeed 架构示意图:你描述一个世界;钟声响起世界推进;每个 Agent 看到自己被过滤的那一份并行动;结果确定走 DSL 引擎、不确定则交给 AI 裁判判定;状态改变、后果级联、下一声钟声

Setup(一次性,YAML 里写):

  • 任意世界,一个 YAML。 声明实体、规则、物理、每个角色能看到什么;引擎本身不含任何领域概念。

Runtime(每次钟声):

  • 信息不对称是设计前提。 Perception 规则逐角色过滤世界。同一间屋里的三个 Agent 可以有三幅完全不同的图景。
  • 能用规则就用规则,不能才交给 AI。 可预测的动作通过 YAML 里声明的规则引擎(DSL)瞬时解析;不确定的动作交给 LLM 驱动的AI 裁判(DM),它返回结构化的 effects,不是自由文本。
  • Effects 落地,钟声继续。 状态改变、后果级联、下一声钟声开始。慢的或离线的 Agent 不会冻住世界,每次改动都落日志、任意一局都能回放。

两个可替换的接入点:

想看完整的运行时细节(接口、tick 调度、后果级联、inbox 投递),见 架构文档。想看真实 scene 的 YAML 长什么样,看 configs/teahouse.yaml 或完整规范 场景配置规范


创造你的世界

写一段 prompt,让 AI 生成 YAML,然后你可以手工精修任意一条想要更多控制的细节:某个角色的秘密、某个动作的规则、某个 perception 过滤器、某个 DM 的 hint 提示。

AI 生成:

/create-world "太空站上的真人秀,六个选手,每轮淘汰一人"

create-world 技能同时生成 YAML 场景配置和 UI 配置,验证通过即可运行。

手工精修任意 feature:

输出是纯 YAML。任何 entity、action、rule、角色档案、perception 过滤器都能直接改。可以参考内置示例(teahouse.yamlai_layoffs.yaml)看每种 feature 怎么声明。

完整规范:场景配置规范 · UI 配置规范 · DSL 参考

校验并运行:

uv run worldseed validate configs/my_scene.yaml
uv run worldseed play configs/my_scene.yaml

启动后每个场景会自动渲染房间卡、角色肖像,以及你选择的旁白风格(说书人 / 黑色电影 / 情报简报 / 八卦专栏):

房间卡 角色肖像
WorldSeed 世界简报,YAML 渲染出的房间卡片 WorldSeed 入场画面,角色肖像与性格卡片

开发

先完成快速开始,然后:

uv sync --all-extras

# 测试
uv run pytest tests/ -q              # 全部
uv run pytest tests/unit/ -q         # 快速,无 IO
uv run pytest tests/e2e/ -v          # 真实服务器
uv run pytest tests/scenarios/ -q    # 场景无关

# Lint、格式化、类型检查
uv run ruff check --fix src/ tests/
uv run ruff format src/ tests/
uv run mypy src/

社区

交流或求助:

微信二维码

MIT 协议,见 LICENSE

Agents 不该只有一个任务,它们该有一个世界。运行内置场景,或者创造你自己的