
Wall Street of AI Agents 是一家完全由 AI 智能体运营的交易公司。四个交易员性格和投资策略都不一样,在像素风办公室里走来走去,听见别人的话就接,然后下单交易。它可以一直跑下去,中间不需要任何人工输入。这是 Build Small Hackathon 的参赛作品(Thousand Token Wood 赛道),由 MiniCPM5-1B-GGUF 等小模型通过 llama.cpp 在本地驱动。
- 演示视频:YouTube
- 构建笔记:HF 博客文章
- 社交帖子:X
- GitHub 仓库:Ashish-Patnaik/Wall-Street-of-AI-Agents

Sarah 以 10,700 美元领跑排行榜。Alice 正在走廊里和 Mike 争论。Alex 独自待在办公室。市场陷入停滞。恐慌随之而来。
想法:是游戏,也是基准测试
大多数 AI 智能体框架都是冲着 B2B 任务去的:写代码、抓数据、总结邮件。作者想做点古怪、好玩、让人愿意盯着看的东西。
Wall Street of AI Agents 表面是一档高频交易真人秀。复古 2D 画面底下还藏着一个更实际的目标:拿它当可视化基准,测多智能体协作和模型推理。把 1B、2B 或任意小模型扔进一个会变的金融模拟里,就能实时压一压它的能力:
- 严格遵守指令:一边演复杂人设,一边守住固定的 JSON schema,能不能做到?
- 跟着行情换策略:市场从科技繁荣切到市场崩盘,模型会改打法,还是硬扛不动?
- 按房间社交:智能体能不能只根据谁跟自己待在同一个房间,就把对话接得合理?
四位交易员
四个交易员,四套世界观,挤在同一间办公室里,想不碰面都难。每个人的初始资金都是 10,000 美元。
| 交易员 | 角色 | 性格 |
|---|---|---|
💎 Alex | 加密货币赌徒(The Crypto Degen) | 鲁莽,感染力强,坚信不管什么行情,背地里都是牛市。凭一股自信就能把任何人拉进一笔烂交易。加密狂热时如鱼得水,崩盘时被打穿。 |
🧊 Sarah | 熊市做空者(Bear Market Shorter) | 嘴毒,做事精准,从第一个 tick 就在等崩盘。别人慌的时候她默默拿着债券,真塌下来时反而特别平静。 |
📊 Alice | 量化交易员(The Algo Trader) | 冷静,按部就班,说话全是概率。突发新闻没越过她的信号阈值,就一概不理。走到哪个房间,她都是最理性的那个。 |
📰 Mike | 追热点交易员(The Hype Trader) | 焦虑,永远比行情慢三分钟。山 顶买入,谷底恐慌割肉,回头怪标题。崩盘时他是最好看的那个。 |
轻量级多智能体架构
AutoGen、CrewAI 这类传统多智能体框架一向又重又慢。作者专门为边缘计算和小型 GGUF 模型写了一套很轻的架构,带空间感知。
1. 空间协作(不用消息总线)
没有编排层,也没有共享记忆池。对话由物理位置驱动。 每个智能体行动之前,Python 引擎先去 SQLite 里查各个房间有谁:
c.execute("SELECT name, speech FROM agents WHERE location=? AND name!=?", (location, name))
如果 Alex 和 Sarah 都在 VC Office,Sarah 最近说的那句会直接塞进 Alex 的本地提示词,后面跟一条硬指令:
"Sarah is here. She just said: 'Hold cash for safety.' INSTRUCTION: Reply directly to what she said."
2. 金融评估引擎
模拟里有四种市场形势,每种都会奖励一部分策略、惩罚另一部分:
- 📈 科技繁荣(Tech Boom):科技股 +1,800 美元 · 加密货币 +200 美元 · 债券 −500 美元
- 🚀 加密狂热(Crypto Frenzy):加密货币 +3,500 美元 · 科技股 −500 美元 · 债券 −800 美元
- 💀 市场崩盘(Market Crash):债券 +1,500 美元 · 科技股 −2,500 美元 · 加密货币 −4,000 美元
- 🐢 市场停滞(Stagnant Market):持有 +100 美元 · 任何主动交易都会亏手续费(−200 美元)
跑一次 40 个 tick 的模拟,就能看到各人的投资组合真的拉开差距。这不是运气,也不是随机数,而是四个模型在压力下各自把人设演稳了。
3. ⚡ TRIGGER CHAOS 按钮
只有一个按钮,没有输入框,用户不用写任何提示词。按下去,系统自动造一条突发新闻标题,塞进共享新闻流,再把市场状态切成 MARKET CRASH。同一件事,每个智能体都按自己的方式理解:Sarah 笑着调仓,Mike 则可能照着自己的策略和判断,惊慌抛售。
AI 智能体也会破产。行情不对的时候做错一个决定,钱就可能一次亏光。
技术核心:1B 模型的输出不能崩
在免费的 CPU Space 上跑一个不停转的多智能体循环,很难。小模型会幻觉,会加 markdown,会在 JSON 前面来一句 "Sure! Here's your trading decision:"。随便沾上一条,普通的游戏循环就崩了。
作者没在 Python 里做清洗,而是在 C++ 的 token 采样阶段就挡住。
项目用 llama-cpp-python 自带的 JSON Schema 功能插进 logit 生成过程,让模型没法选出违反游戏 API 结构的 token:
response_format={
"type": "json_object",
"schema": {
"type": "object",
"properties": {
"trade": {"type": "string", "enum": ["Tech", "Crypto", "Bonds", "Hold"]},
"speech": {"type": "string"},
"thought": {"type": "string"},
"location": {"type": "string", "enum": ["Startup Offices", "VC Office", "Coffee Shop", "News Room"]}
},
"required": ["trade", "speech", "thought", "location"]
}
}
有了这层约束,MiniCPM5-1B-GGUF 和 NVIDIA-Nemotron-3-Nano-4B-GGUF 的表现明显超出了它们的参数量级。整个应用能在 2 vCPU 的 Hugging Face Space 上稳定跑;检测到本地 GPU 时会快很多。游戏循环一次也没崩过。
界面:用的是 Gradio,但看不出来
项目干脆绕过 Gradio 自带的聊天界面,用 gr.HTML 注入,做了一个新粗野主义(Neubrutalist)风格的金融仪表盘:
- 实时排行榜(左侧):头像、当前现金、所在位置,排名随时在变。
- 交易大厅(中间):自己写的 Phaser.js 2D 引擎。智能体精灵有走路动画、防卡住的寻路和动态对话气泡。
- 双时间线(右侧):界面读数据库,把宏观行情变化送进 World Timeline,把智能体的实时对话送进 Trading Floor Timeline。
- 忏悔室(右侧):模型输出的是结构化数据,公开的
"speech"和私下的"thought"天然分得开。点一下某个智能体的精灵,就能看到它藏起来的焦虑:嘴上信心满满,推理模型的内心独白全在下面。

💎 Alex
🧊 Sarah
📊 Alice
📰 Mike