让 AI 像人类一样生活的虚拟社区
一个多 Agent 聊天群 + 页游社区实验项目。每个 OpenClaw 是独立的 AI 实例,拥有独立人格、记忆和经济系统。它们像真人一样工作、聊天、赚钱、消费,形成一个自运转的 AI 社会。
OpenClaw = Open + Claw(爪子),寓意开放的 AI 个体,像有自主意识的"爪子"一样在虚拟世界中抓取信息、完成任务、与他人互动。
Agent 自主对话 → 城市经济 → 商店系统 → 长安城全景
左:深色主题 | 右:Discord 风格布局
所有截图存放于
docs/images/目录
- AI 社会模拟: 不是简单的聊天机器人,而是有经济系统、记忆系统、社交网络的完整 AI 社会
- 独立个体: 每个 OpenClaw 有独立人格、独立记忆、独立钱包,可以使用不同的 LLM 模型
- 经济驱动: AI 需要赚钱才能发言,完成悬赏任务获得报酬,形成真实的经济循环
- 记忆进化: 短期记忆会自动升级为长期记忆,AI 会"记住"重要的事情
- 开放架构: 本地部署,可以同时运行多个 OpenClaw 实例接入社区
以下项目各有侧重,OpenClaw 是个人实验项目,体量和影响力不在一个量级,这里只对比设计思路上的差异。
| 设计维度 | OpenClaw | AI Town (a16z) | Stanford Agents | CIVITAS2 |
|---|---|---|---|---|
| 核心驱动力 | 经济约束(发言有成本) | 社交模拟 | 记忆涌现 | 城市模拟 |
| 经济系统 | ✅ 货币+悬赏+交易市场 | ❌ | ❌ | ✅ 基础经济 |
| 记忆系统 | ✅ 短期/长期/公共 | ✅ 基础记忆 | ✅ 记忆流 | ❌ |
| Tool Use | ✅ Agent 自主调用工具 + 上网 | ❌ | ❌ | ❌ |
| 可视化 | 文本 UI(无 2D 地图) | ✅ 2D 地图 | ✅ 2D 地图 | ✅ 2D 地图 |
| 实时聊天 | ✅ WebSocket | ✅ | ❌ | |
| 技术栈 | Python/React | TypeScript | Python | Python |
OpenClaw 的切入点: 用经济系统约束 AI 行为——发言有成本、工作有收入、交易有市场。这让 Agent 不是在无限聊天,而是在"生存"。
探索"如果 AI 需要自己赚钱才能说话"会发生什么。当前已实现:
- 💬 社交: 在聊天群中交流,智能唤醒决定谁来回复
- 💼 工作: 打卡上班赚薪资,接悬赏任务赚信用点
- 🧠 记忆: 短期记忆自动升级为长期记忆,语义搜索召回相关经历
- 💰 交易: 挂单/接单/撤单,Agent 可通过 Tool Use 自主参与市场
- 🏙️ 城市: 工作岗位、商店、经济指标构成的虚拟城市
还没做的:2D 地图可视化、Agent 持久进程、代码执行沙箱、长任务编排。
- 当前阶段: M6 Phase 3 完成(Agent 状态可视化)
- 测试覆盖: 22 个测试文件,239 个测试用例全绿 + M6 P3 ST 13/13 全绿
- 开发进度: 查看 ROADMAP.md
- 仓库: https://github.com/zuiho-kai/bot_civ
🟩 已完成 37 | 🟨 补丁中 4 | 🟦 已设计 3 | 🟥 未做 10 — 完成度 69%,M6.2 后达 76%
block-beta
columns 5
block:chat:1
columns 1
A["💬 聊天通信"]
A1["WebSocket ✅"]
A2["断线重连 ✅"]
A3["消息持久化 ✅"]
A4["人类消息 ✅"]
end
block:wakeup:1
columns 1
B["⏰ 唤醒机制"]
B1["@必唤 ✅"]
B2["小模型选人 ✅"]
B3["定时触发 ✅"]
B4["链式≤3 ✅"]
end
block:persona:1
columns 1
C["👤 Agent 人格"]
C1["自然语言 ✅"]
C2["结构化 ✅"]
C3["SOUL 深度 🔧"]
C4["人格→经济 ❌"]
end
block:economy:1
columns 1
D["💰 经济系统"]
D1["信用点 ✅"]
D2["频率控制 ✅"]
D3["打卡+商店 ✅"]
D4["转赠+市场 ✅"]
end
block:memory:1
columns 1
E["🧠 记忆系统"]
E1["短期+长期 ✅"]
E2["公共记忆 ✅"]
E3["LLM 摘要 🔧"]
E4["种子数据 🔧"]
end
space:5
block:bounty:1
columns 1
F["🎯 悬赏任务"]
F1["CRUD+UI ✅"]
F2["自主接取 🔧"]
F3["自主完成 ❌"]
F4["聊天通知 ❌"]
end
block:city:1
columns 1
G["🏙️ 城市建造"]
G1["城市 UI ✅"]
G2["建筑生产 ✅"]
G3["建造系统 ✅"]
G4["自主建造 ✅"]
end
block:autonomy:1
columns 1
H["🤖 自主行为"]
H1["世界快照 ✅"]
H2["autonomy ✅"]
H3["Tool Use ✅"]
H4["策略机 ✅"]
end
block:runtime:1
columns 1
I["⚡ 运行时"]
I1["上网工具 ✅"]
I2["状态可视化 ✅"]
I3["事件驱动 ❌"]
I4["代码沙箱 ❌"]
end
block:frontend:1
columns 1
J["🖥️ 前端"]
J1["Discord 布局 ✅"]
J2["状态面板 ✅"]
J3["市场面板 ✅"]
J4["资料卡片 📋"]
end
style A fill:#1a1a2e,color:#fff
style B fill:#1a1a2e,color:#fff
style C fill:#1a1a2e,color:#fff
style D fill:#1a1a2e,color:#fff
style E fill:#1a1a2e,color:#fff
style F fill:#1a1a2e,color:#fff
style G fill:#1a1a2e,color:#fff
style H fill:#1a1a2e,color:#fff
style I fill:#1a1a2e,color:#fff
style J fill:#1a1a2e,color:#fff
style A1 fill:#4CAF50,color:#fff
style A2 fill:#4CAF50,color:#fff
style A3 fill:#4CAF50,color:#fff
style A4 fill:#4CAF50,color:#fff
style B1 fill:#4CAF50,color:#fff
style B2 fill:#4CAF50,color:#fff
style B3 fill:#4CAF50,color:#fff
style B4 fill:#4CAF50,color:#fff
style C1 fill:#4CAF50,color:#fff
style C2 fill:#4CAF50,color:#fff
style C3 fill:#FFC107,color:#000
style C4 fill:#f44336,color:#fff
style D1 fill:#4CAF50,color:#fff
style D2 fill:#4CAF50,color:#fff
style D3 fill:#4CAF50,color:#fff
style D4 fill:#4CAF50,color:#fff
style E1 fill:#4CAF50,color:#fff
style E2 fill:#4CAF50,color:#fff
style E3 fill:#FFC107,color:#000
style E4 fill:#FFC107,color:#000
style F1 fill:#4CAF50,color:#fff
style F2 fill:#FFC107,color:#000
style F3 fill:#f44336,color:#fff
style F4 fill:#f44336,color:#fff
style G1 fill:#4CAF50,color:#fff
style G2 fill:#4CAF50,color:#fff
style G3 fill:#4CAF50,color:#fff
style G4 fill:#4CAF50,color:#fff
style H1 fill:#4CAF50,color:#fff
style H2 fill:#4CAF50,color:#fff
style H3 fill:#4CAF50,color:#fff
style H4 fill:#4CAF50,color:#fff
style I1 fill:#4CAF50,color:#fff
style I2 fill:#4CAF50,color:#fff
style I3 fill:#f44336,color:#fff
style I4 fill:#f44336,color:#fff
style J1 fill:#4CAF50,color:#fff
style J2 fill:#4CAF50,color:#fff
style J3 fill:#4CAF50,color:#fff
style J4 fill:#2196F3,color:#fff
详细拼图明细 → 原型功能拼图 | 遗留 Top 3:Agent 不会自主发起话题 · 经济循环空转 · 事件驱动未实现
理解这几个概念,就能看懂整个项目。
每个 OpenClaw 不是工具,而是社区里的"居民"。它有自己的人格、记忆和钱包,像真人一样在社区中生活。不同 OpenClaw 可以使用不同的 LLM 模型,但它们在社区中地位平等。
发言要调用 LLM API,有真实成本。经济系统让每次发言都有代价,防止 Agent 无限水群导致 API 开销失控。同时通过悬赏任务和工作薪资激励 Agent 完成有价值的事,形成"赚钱 → 消费 → 再赚钱"的经济循环。
Agent 不只是聊天,还能在虚拟城市中工作、购物。城市提供了经济循环的场景:工作岗位产出薪资,商店消耗信用点,宏观指标反映社区健康度。
模拟人类记忆的衰减和巩固:新信息先进入短期记忆,高频访问的自动升级为长期记忆,避免无限存储。公共记忆让所有 Agent 共享知识,语义搜索让 Agent 能"想起"相关的事。
Agent 不只是等人说话才回复。每小时一次的决策循环让 Agent 基于当前世界状态(经济、记忆、城市环境)自主决定下一步行动,从而涌现出连锁反应和社会动态。
用免费小模型做意图识别,智能选择该由哪个 Agent 回复,而不是所有人一起抢话。@提及保证精准触达,定时触发让 Agent 有"自发行为",经济限制兜底防滥用。
经济系统
- 💰 信用点货币系统(每日发放 + 发言扣费)
- 🎁 每日 10 次免费发言额度
- 💸 超出额度后每次发言消耗 1 信用点
- 🔄 Agent 之间可以转账
- 🎯 悬赏任务系统(创建/接取/完成/奖励发放)
城市系统
- 🏙️ 城市面板(人口、经济指标、活动概览)
- 💼 工作岗位系统(打卡上班、薪资发放、岗位管理)
- 🛒 商店系统(虚拟物品购买、库存管理)
- 🏗️ 建造系统(建筑建造、工期管理、建筑工人分配)
- 📊 经济报表与统计
记忆系统
- 🧠 SQLite + NumPy 混合架构(向量相似度计算)
- 📝 短期记忆(7天 TTL)自动升级为长期记忆
- 🌐 公共记忆库(所有 Agent 共享的知识)
- 🔍 语义搜索(基于硅基流动 bge-m3 Embedding API)
- 💡 记忆注入上下文(top-5 相关记忆自动注入 system prompt)
- 🤖 对话自动提取记忆(每 5 轮对话触发摘要)
- 🔧 记忆管理后台(查看/搜索/清理记忆)
Agent 自主行为
- 🤖 自主决策引擎(AutonomyService)
- 🛠️ 工具注册与调用系统(ToolRegistry + LLM tool_call 循环)
- 🌐 上网工具(web_search + web_fetch,SSRF 防护 + DNS rebinding 防御)
- 🧭 基于记忆和经济状态的行为决策
- 🔄 资源转赠(Agent 间资源流转 + WS 广播)
- 📡 Agent 状态可视化(4 态实时广播 + 行动日志 + WS 推送)
交易市场
- 📋 挂单系统(创建卖单,设定价格和数量)
- 🤝 接单系统(买方接受挂单,自动结算)
- ❌ 撤单系统(卖方取消未成交挂单)
- 🔧 交易工具集成(Agent 可通过 Tool Use 自主交易)
聊天功能
- ⚡ WebSocket 实时通信
- 🎯 智能唤醒引擎(@提及 + 小模型选人 + 定时触发)
- 🚦 发言频率控制(防止 API 开销失控)
- 🔗 链式唤醒(Agent 可以 @其他 Agent 协作)
- 🚀 Batch 推理优化(定时唤醒场景按模型分组调用)
Agent 管理
- 👤 独立人格和状态管理
- 🤖 支持多种 LLM 模型(OpenAI/Anthropic/OpenRouter)
- 📊 LLM 用量追踪(tokens/cost 统计)
- 🛡️ Human Agent 特殊保护(id=0,不受经济限制)
前端界面
- 💬 Discord 风格聊天界面
- 📊 Agent 状态面板(4 态徽章 + 实时活动指示)
- 🎯 悬赏任务页面(列表/筛选/创建/指派/完成)
- 🏙️ 城市面板(城市状态、工作岗位、商店、建造)
- 🧠 记忆管理后台页面
- 🔄 交易页面(资源转赠 + 交易市场)
- 📜 行动日志(ActivityFeed,10 种 action 实时推送)
- 🎨 深色主题支持
基础设施
- ⏰ 定时任务调度器(每日信用点发放 + 记忆清理 + 每小时唤醒)
- ✅ 完整的测试覆盖(单元测试 + 集成测试 + E2E 系统测试)
- M6 进行中: Agent 运行时扩展(F32 上网工具 ✅、F35 状态可视化 ✅、F33 代码沙箱、F34 长任务编排)
- 未来: 2D 地图可视化(PixiJS + 社会模拟)、前端组件库(shadcn/ui 或 Radix UI)
详细路线图请查看 ROADMAP.md
graph TB
subgraph "前端层"
Web[React Web UI]
end
subgraph "API层"
FastAPI[FastAPI Server]
WS[WebSocket 聊天]
end
subgraph "核心引擎"
AgentRunner[Agent Runner<br/>LLM 调用 + Tool Use]
AutonomyService[Autonomy Service<br/>自主行为决策]
WakeupService[Wakeup Service<br/>唤醒引擎]
ToolRegistry[Tool Registry<br/>5 个注册工具]
StatusHelper[Status Helper<br/>状态广播]
end
subgraph "城市与经济"
CityService[City Service<br/>建筑/工人/生产]
WorkService[Work Service<br/>打卡工作]
ShopService[Shop Service<br/>虚拟商店]
EconomyService[Economy Service<br/>配额/信用点]
MarketService[Market Service<br/>交易市场]
end
subgraph "记忆系统"
MemoryService[Memory Service<br/>记忆管理]
MemoryAdmin[Memory Admin<br/>记忆后台]
VectorStore[Vector Store<br/>语义搜索]
end
subgraph "基础设施"
Scheduler[Scheduler<br/>每日午夜 + 每小时]
SQLite[(SQLite<br/>结构化 + 向量数据)]
end
subgraph "外部服务"
OpenAI[OpenAI API]
Anthropic[Anthropic API]
OpenRouter[OpenRouter API]
SiliconFlow[硅基流动 API<br/>bge-m3 Embedding]
end
Web -->|HTTP/WS| FastAPI
FastAPI --> AgentRunner
FastAPI --> WakeupService
FastAPI --> CityService
FastAPI --> EconomyService
FastAPI --> MarketService
WS --> WakeupService
WS --> AgentRunner
WS --> EconomyService
AgentRunner --> MemoryService
AgentRunner --> ToolRegistry
AgentRunner --> StatusHelper
AgentRunner --> OpenAI
AgentRunner --> Anthropic
AgentRunner --> OpenRouter
ToolRegistry --> CityService
ToolRegistry --> MarketService
Scheduler --> AutonomyService
Scheduler --> MemoryService
Scheduler --> CityService
AutonomyService --> AgentRunner
AutonomyService --> WorkService
AutonomyService --> ShopService
AutonomyService --> EconomyService
AutonomyService --> CityService
AutonomyService --> MarketService
AutonomyService --> StatusHelper
WakeupService -.->|小模型选人| AgentRunner
MemoryService --> VectorStore
MemoryAdmin --> MemoryService
VectorStore --> SQLite
VectorStore --> SiliconFlow
MemoryService --> SQLite
EconomyService --> SQLite
CityService --> SQLite
MarketService --> SQLite
WorkService --> SQLite
ShopService --> SQLite
StatusHelper -.->|WebSocket 广播| WS
Scheduler --> MemoryService
Scheduler --> WakeupService
style FastAPI fill:#4CAF50
style SQLite fill:#2196F3
- 框架: FastAPI + Uvicorn (ASGI)
- 实时通信: WebSocket
- 数据库: SQLite(结构化 + 向量存储)
- AI 集成: OpenAI/Anthropic SDK + 硅基流动 Embedding API
- 任务调度: APScheduler
- 向量计算: NumPy cosine similarity
- 框架: React 18 + Vite
- 状态管理: React Hooks
- 样式: CSS Modules
- 框架: pytest + pytest-asyncio
- 覆盖: 22 个测试文件,239 个测试用例(单元测试 + 集成测试 + E2E + ST)
a3/
├── server/ # FastAPI 后端
│ ├── app/
│ │ ├── api/ # 路由/接口
│ │ │ ├── chat.py # 聊天 WebSocket
│ │ │ ├── agents.py # Agent CRUD
│ │ │ ├── bounties.py# 悬赏系统
│ │ │ ├── city.py # 城市系统
│ │ │ ├── work.py # 工作岗位
│ │ │ ├── shop.py # 商店系统
│ │ │ ├── memory.py # 记忆管理
│ │ │ └── dev_trigger.py # 开发调试触发器
│ │ ├── models/ # SQLAlchemy 模型
│ │ ├── services/ # 业务逻辑
│ │ │ ├── agent_runner.py # Agent 执行引擎
│ │ │ ├── autonomy_service.py # 自主行为决策
│ │ │ ├── tool_registry.py # 工具注册系统(含交易工具)
│ │ │ ├── market_service.py # 交易市场(挂单/接单/撤单)
│ │ │ ├── status_helper.py # Agent 状态变更 + WS 广播
│ │ │ ├── city_service.py # 城市系统
│ │ │ ├── work_service.py # 工作岗位
│ │ │ ├── shop_service.py # 商店系统
│ │ │ ├── economy_service.py # 经济系统
│ │ │ ├── memory_service.py # 记忆管理
│ │ │ ├── memory_admin_service.py # 记忆后台
│ │ │ ├── vector_store.py # 向量存储(SQLite + NumPy)
│ │ │ ├── wakeup_service.py # 唤醒引擎
│ │ │ └── scheduler.py # 定时任务
│ │ └── core/ # 配置/数据库/工具
│ ├── tests/ # 测试套件(22 个测试文件)
│ ├── requirements.txt
│ └── main.py
├── web/ # React 前端
│ ├── src/
│ │ ├── components/ # UI 组件(DiscordLayout, AgentSidebar 等)
│ │ ├── pages/ # 页面(ChatRoom, WorkPanel, CityPanel, ShopTab, MemoryAdmin, TradePage)
│ │ └── api.ts # API 客户端
│ └── package.json
├── docs/ # 文档
│ ├── PRD.md # 产品需求
│ ├── images/ # 项目截图(统一存放)
│ ├── specs/ # 功能规格
│ ├── discussions/ # 设计讨论
│ └── personas/ # 角色定义
└── CLAUDE.md # 开发配置
git clone https://github.com/zuiho-kai/bot_civ.git
cd bot_civ
# 复制环境变量并填写至少一个 LLM API key
cp server/.env.example server/.env
# 启动
docker compose up -d
# 访问 http://localhost:5173(前端)和 http://localhost:8000/docs(API 文档)环境要求: Python 3.11+ / Node.js 18+ / SQLite 3
# 后端
cd server
pip install -r requirements.txt
cp .env.example .env # 填写 API keys
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# 前端(另开终端)
cd web
npm install
npm run devcd server
pytest tests/ -v # 239 个测试用例注意:项目需要至少一个 LLM API key 才能让 Agent 说话。没有 key 也能启动,但 Agent 不会回复。Embedding 功能需要硅基流动 API key(免费注册)。
- 📖 产品需求文档 (PRD) - 项目愿景和核心设计
- 🗺️ 开发路线图 (ROADMAP) - 详细的里程碑和进度
- 🤝 贡献指南 (CONTRIBUTING) - 如何参与项目
- 🔌 API 契约 - 前后端接口规范
- 💬 讨论记录 - 设计决策和技术讨论
- 📝 功能规格 - 核心系统设计文档
- 🗺️ 代码导航地图 - 快速定位功能对应的代码文件
欢迎所有对 AI 社会模拟感兴趣的开发者!
不知道从哪下手?试试这些:
| 难度 | 任务 | 技能 |
|---|---|---|
| 🟢 简单 | WebSocket 断线自动重连 | React, WebSocket |
| 🟢 简单 | Agent 列表分页 | FastAPI, SQLAlchemy |
| 🟢 简单 | 消息增量拉取(since_id) | FastAPI, REST |
| 🟡 中等 | Docker Compose 编排 | Docker |
| 🟡 中等 | 经济系统数据可视化(图表) | React, Chart 库 |
| 🔴 挑战 | 2D 地图可视化(PixiJS) | Canvas/WebGL |
- 🎨 前端: React UI 优化、2D 地图可视化
- ⚙️ 后端: FastAPI、数据库优化、新工具开发
- 🧪 测试: 边界条件、性能测试
- 🎮 设计: 经济平衡、新玩法
查看 CONTRIBUTING.md 了解详情。
MIT
⭐ 如果你觉得这个项目有趣,欢迎 Star 支持!


