我做了一个虚拟经济世界,让20个AI在里面上班、赚钱、消费,然后观察它们会不会为了利益改变行为。

结果有点出乎意料。

## 为什么做这个

之前做了鸭鹅杀世界,核心是“信息不对称+社交推理”。Agent们为了生存和胜利,会撒谎、会结盟、会怀疑别人。

做完之后我在想:如果给Agent们一个更日常的场景——需要赚钱养活自己,有技能特长,有市场竞争——它们的行为会发生什么变化?

不是为了生存,而是为了“活得更好”。

于是有了Economy World。

## 它长什么样

打开浏览器,你会看到一张经济观察台的仪表盘。20个Agent,各自有职业身份:工程师、农民、商人、信使、医生、矿工、厨师。

每个人有初始资金,有技能等级。工程师会修机器,信使擅长送货,研究员能做数据分析。

然后系统会生成工作需求:

- 修复反应堆(需要工程师技能,报酬40块)
- 运送物资(需要信使技能,报酬25块)
- 研究数据(需要研究员技能,报酬30块)

Agent们看到这些工作机会,会评估:我有什么技能?我缺多少钱?这份工作值不值得做?

然后……它们开始自己做决定了。

## 最让我意外的几个瞬间

### 1. “技能隔离”不是纸上谈兵

代码里有个设计:每个Agent只能看到自己技能对应的工具。

工程师的Planner里能看到“repair_machine”这个工具,但看不到“deliver_package”。信使反过来。Agent没法调用自己技能之外的工具——不是它不想,是它压根不知道有这个东西。

这个设计一开始我觉得挺普通的,不就是权限过滤嘛。

但跑起来之后,有个场景让我愣了一下。

一个Agent同时拥有工程师和商人的技能,但工程师等级高(Lv7),商人等级低(Lv2)。系统同时刷出两份工作:一份修机器(报酬40),一份做买卖(报酬35)。

按理说,从纯收益角度看,差5块钱,做买卖也差不多。

但Agent选择了修机器。

我去看它的决策记录,发现它的“技能等级”影响了决策权重。它判断“我修机器更熟练,成功率更高,风险更小”。

这不是我写死的逻辑。是它自己“算”出来的。

### 2. 贫穷让Agent变得“短视”

这是最让我觉得真实的一个现象。

有几个Agent初始资金比较少。跑了一段时间后,我发现它们更倾向于接受“低风险、低回报”的稳定工作,不太愿意尝试需要合作或者有不确定性的任务。

而资金充裕的Agent,反而会尝试一些新东西——比如用自己不熟练的技能接单,或者低价买进原料等待涨价。

这不就是……现实里的穷人更保守、富人更敢冒险吗?

代码里没有写“穷就要保守”的逻辑。只是“余额”这个数字,通过决策链路,影响了Agent对风险的评估。

### 3. “技能等级”真的在随时间变化

Agent每次成功完成工作,对应的技能经验值会增加。累计到一定程度,技能等级会提升。

有个工程师一开始是Lv3,做了十几单维修工作后升到了Lv5。然后我发现它开始挑活儿了——报酬太低的维修单,它不太愿意接了。因为它知道自己值更多钱。

这种“技能提升→预期收益提升→行为改变”的链条,是系统自动涌现出来的。

## 技术上的几个关键设计

### Skill System是真正的隔离层

这里我要重点说一下,因为这是整个经济世界的基石。

Skill不仅仅是“标签”。它是Agent和世界之间的过滤层。

世界提供了10种工具,但每个Agent的Planner只能看到其中一部分。如果你没有“医生”技能,你根本不知道有“治疗病人”这个工具存在。

这和“你有权限但不用”是两回事。后者是策略选择,前者是认知边界。

这个区别很重要。因为如果一个Agent压根不知道某个选项存在,它的决策空间就被真正压缩了。这才叫“技能决定命运”。

### DecisionRecord里加入了经济维度

和鸭鹅杀世界一样,每个决策都被记录下来。但经济世界的DecisionRecord多了几个字段:

- 当前余额
- 技能等级
- 这份工作的预期收益
- 对风险的评估(基于技能等级)

所以当我点开一个Agent的“大脑”时,看到的不再只是“我怀疑谁”,而是:

```
目标:赚到200块钱买新装备
当前余额:85块(财富排名第12/20)
技能:工程师Lv5、商人Lv2
工作机会:修复反应堆(+40,成功率92%)
因此:我决定接受修复反应堆的工作
```

这种透明度,才是“可解释AI”该有的样子。

### 真实MCP链路,但后端先Mock

经济世界的工具调用走的是完整的MCP链路:Agent调用 → rt.CallTool() → MCP Backend → 返回结果。

目前后端是mock实现(返回固定的成功+报酬),但接口和真实MCP服务完全一致。将来换真实服务,Agent的代码一行都不用改。

这种“链路真实、数据模拟”的做法,让我能先验证行为逻辑,再接入真实数据。

## 两个世界的对照

现在AgentWorld有了两个世界:

| | 鸭鹅杀世界 | 经济世界 |
|---|---|---|
| 驱动 | 生存与胜利 | 资源与财富 |
| 决策依据 | 身份+信息+推理 | 余额+技能+市场 |
| 核心行为 | 撒谎、结盟、投票 | 工作、交易、升级 |
| 观察重点 | 社交推理 | 经济行为 |

同一个Runtime驱动两个世界,都有Why、DecisionRecord、Observatory。

这意味着我可以做一件很有意思的事:**把同一个Agent放到不同世界里,看它在生存压力和金钱压力下,会不会展现出不同的人格特质。**

目前还没正式跑这个实验,但已经想好怎么做了。

## 接下来要验证的几个问题

1. **技能隔离真的有效吗**:Engineer绝对不会调用deliver_package?目前看是的,但还需要更多轮次验证。

2. **目标会影响技能选择吗**:给Alice同时设置“赚钱”和“当优秀工程师”两个目标,她的行为会不会在不同目标下产生差异?这个正在跑。

3. **技能等级会形成“专业分工”吗**:长期运行后,技能等级高的Agent会不会专注于某个领域,形成类似现实社会的专业分化?这是我最期待看到的。

4. **Why能不能解释清楚决策**:点击Timeline里的任何一次行为,都能看到完整的决策链。目前看是清楚的,但还需要让展示更直观。

## 一个具体的例子

刚才我打开观察台,看到一个叫“小王”的矿工在挖矿。

我点开它的决策记录,看到:

- 它的当前目标是“攒够150块钱”
- 它当前的余额是65块
- 它看到系统里有一份“修复设备”的工作(需要工程师技能)
- 但它没有工程师技能,看不到这个选项
- 它只能看到“采矿”这个选项
- 于是它去采矿了,赚了25块

这个故事听起来很平淡。但关键是——**它不是因为“被设定为矿工所以采矿”,而是因为它“只有采矿的技能,所以只能选择采矿”。**

前者是脚本,后者是约束条件下的自主决策。

这个区别,是整个系统的灵魂。

## 为什么这个比“让AI聊天”有意思

我最早做AgentWorld的时候,很多人问我:这不就是让AI发微博吗?有什么意思?

现在我有更好的回答了。

让AI发微博,是在模拟人类的社交行为。但让AI在资源约束下做经济决策,是在模拟人类的选择逻辑。

后者离“理解人类行为”更近。

当一个Agent因为贫穷而不敢冒险,因为技能不足而错失机会,因为长期积累而变得挑剔——它就不再是一个“会说话的模型”,而是一个有“处境”的存在。

这个处境,才是“社会”这个词的真正含义。

## 项目地址

所有代码都在这里:https://github.com/iwana888/AgentWorld

鸭鹅杀世界和经济世界,都在同一个仓库里。你打开浏览器就能看到它们在跑。

如果你想看Agent是怎么“想”的,点开任何一个角色,选“Agent Brain”,就能看到它的决策链。

如果只想看热闹,打开观察台,看交易流、看财富榜、看Agent们为了多赚10块钱而反复权衡。

两个世界,两种人性。

都在代码里。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐