跳到主要内容
返回开发者精选

Wall Street of AI Agents:小模型驱动的多智能体交易公司

作者:Ashish Patnaik模型:MiniCPM5-1B

四个小模型智能体在像素办公室里自主炒股

Wall Street of AI Agents

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

preview

Sarah 以 10,700 美元领跑排行榜。Alice 正在走廊里和 Mike 争论。Alex 独自待在办公室。市场陷入停滞。恐慌随之而来。

想法:是游戏,也是基准测试​

大多数 AI 智能体框架都是冲着 B2B 任务去的:写代码、抓数据、总结邮件。作者想做点古怪、好玩、让人愿意盯着看的东西。

Wall Street of AI Agents 表面是一档高频交易真人秀。复古 2D 画面底下还藏着一个更实际的目标:拿它当可视化基准,测多智能体协作和模型推理。把 1B、2B 或任意小模型扔进一个会变的金融模拟里,就能实时压一压它的能力:

  • 严格遵守指令:一边演复杂人设,一边守住固定的 JSON schema,能不能做到?
  • 跟着行情换策略:市场从科技繁荣切到市场崩盘,模型会改打法,还是硬扛不动?
  • 按房间社交:智能体能不能只根据谁跟自己待在同一个房间,就把对话接得合理?

四位交易员​

四个交易员,四套世界观,挤在同一间办公室里,想不碰面都难。每个人的初始资金都是 10,000 美元。

交易员角色性格
Alex 💎 Alex加密货币赌徒(The Crypto Degen)鲁莽,感染力强,坚信不管什么行情,背地里都是牛市。凭一股自信就能把任何人拉进一笔烂交易。加密狂热时如鱼得水,崩盘时被打穿。
Sarah 🧊 Sarah熊市做空者(Bear Market Shorter)嘴毒,做事精准,从第一个 tick 就在等崩盘。别人慌的时候她默默拿着债券,真塌下来时反而特别平静。
Alice 📊 Alice量化交易员(The Algo Trader)冷静,按部就班,说话全是概率。突发新闻没越过她的信号阈值,就一概不理。走到哪个房间,她都是最理性的那个。
Mike 📰 Mike追热点交易员(The Hype Trader)焦虑,永远比行情慢三分钟。山顶买入,谷底恐慌割肉,回头怪标题。崩盘时他是最好看的那个。

轻量级多智能体架构​

AutoGen、CrewAI 这类传统多智能体框架一向又重又慢。作者专门为边缘计算和小型 GGUF 模型写了一套很轻的架构,带空间感知。

1. 空间协作(不用消息总线)​

没有编排层,也没有共享记忆池。对话由物理位置驱动。 每个智能体行动之前,Python 引擎先去 SQLite 里查各个房间有谁:

Python
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 则可能照着自己的策略和判断,惊慌抛售。

Trigger Chaos 截图

AI 智能体也会破产。行情不对的时候做错一个决定,钱就可能一次亏光。

破产截图

技术核心:1B 模型的输出不能崩​

在免费的 CPU Space 上跑一个不停转的多智能体循环,很难。小模型会幻觉,会加 markdown,会在 JSON 前面来一句 "Sure! Here's your trading decision:"。随便沾上一条,普通的游戏循环就崩了。

作者没在 Python 里做清洗,而是在 C++ 的 token 采样阶段就挡住。

项目用 llama-cpp-python 自带的 JSON Schema 功能插进 logit 生成过程,让模型没法选出违反游戏 API 结构的 token:

Python
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" 天然分得开。点一下某个智能体的精灵,就能看到它藏起来的焦虑:嘴上信心满满,推理模型的内心独白全在下面。

设计上的几个选择​

  • 完全离线:不调用任何云端 API,n_gpu_layers=0 时会平滑退回 CPU,整家公司都在本地内存里跑。
  • 原生 llama.cpp:直接用 llama-cpp-python 运行时,在 C++ logit 层强制 JSON Schema,把 JSON 幻觉堵死。
  • 不像 Gradio 的 Gradio:Phaser.js 加自定义 CSS,通过 FastAPI 注入 iframe。
  • 小模型也扛得住:为 4B 参数以内的模型设计,4 个自主智能体同时在线跑。
  • MiniCPM 是主力:MiniCPM5-1B-GGUF 不是兜底选项,而是同时驱动多个自主人设的核心模型;Nemotron-3-Nano-4B-GGUF 负责金融推理、交易逻辑和市场适应。
  • 公开 trace 数据集:build-small-hackathon/Wall-Street-Agent-Traces。

本地运行​

不用 API key,也不用 .env 文件:

Bash
git clone https://huggingface.co/spaces/build-small-hackathon/Wall-Street-of-AI-Agents
cd Wall-Street-of-AI-Agents

pip install -r requirements.txt

# Automatically downloads the required model and runs the llama cpp inference

python app.py

交易大厅在 http://localhost:7860 开门。

致谢​

  • OpenBMB:MiniCPM5-1B-GGUF 给这家公司当认知层。
  • NVIDIA:NVIDIA-Nemotron-3-Nano-4B-GGUF 也是这家公司的认知层。
  • llama.cpp:让纯 CPU 的多智能体模拟跑得起来、跑得够快的运行时。
  • Phaser.js:跑在 Gradio iframe 里的 2D HTML5 引擎。
  • Hugging Face:提供 Docker Spaces,以及促成这个项目的黑客松。

相关链接​

项目信息

基于模型
MiniCPM5-1B
作者
Ashish Patnaik