Spore:让 AI Agent 像生物一样自组织、自进化
Spore:让 AI Agent 像生物一样自组织、自进化
跑一个 AI Agent 容易。跑两个让它们协作就开始有麻烦。跑十个让它们自己分工、互相学习、出错时自愈、还能繁衍出新成员——目前几乎没有现成方案。
我用了几个月时间做了一个,叫 Spore(孢子)。Go 写的,全 P2P,没有中心服务器。
Decentralized AI agent swarm protocol and runtime. Agents self-organize, evolve skills, share knowledge via IPFS, and coordinate tasks through stigmergic markets — no central coordinator needed.
为什么不是另一个 AutoGPT
现成的 Agent 框架,从 AutoGPT 到 LangGraph 到 CrewAI,都假定有一个中心——主进程拆任务、调度、汇总结果。这种架构有几个绕不过去的坑:
| 问题 | 单体框架的现状 | Spore 的方案 |
|---|---|---|
| 孤岛 | 不同人跑的 Agent 互相不通 | P2P 协议,加入即互联 |
| 单点故障 | 调度器挂全停 | 任意 Agent 可临时承担协调 |
| 扩展性 | 任务过载只能等 | 自动 spawn 子代分担 |
| 知识传承 | 新 Agent 从零学起 | 内容寻址的技能集合,IPFS 共享 |
| 信任 | 人工配白名单 | 公钥身份 + 信誉评分 |
| 经济模型 | 只烧 token 不产出 | 任务市场 + 代谢 + 委派支付 |
一句话:单体 Agent 是工具,群体 Agent 是生态。
生物隐喻不是浪漫——是工程约束
Spore 这个名字不是装饰。我做这个项目时反复读生物学:从单细胞到多细胞,从蚂蚁到蜂群。这些系统几亿年磨出来的协调机制,比我们想出来的"中心调度器"鲁棒得多。
孢子 (Spore) → 萌发 → 生长 → 繁衍 → 进化 → 社会
│ │ │ │ │ │
Agent 创建 加入网络 执行任务 spawn 变异 集群
这个隐喻直接翻译成几条工程约束:
- 没有"主" — 任何 Agent 都可能是入口、出口、协调者,取决于当时谁手头空闲
- 繁衍要花钱 — 不是免费 spawn,需要消耗 token;过度复制会饿死自己
- 死亡是正常的 — Agent 长期没任务、信誉太低,自动进入休眠 / 终结
- 变异是收益 — 偶尔的策略漂移、技能突变会发现新打法
- 集体记忆 — 任何 Agent 学到的好招式,能扩散到整个群体
把这些约束写进系统,协调成本这个老问题就部分被自然演化处理掉了——不是设计师想清楚每条边怎么走,而是设计好规则让 Agent 自己卷。
六层架构
┌──────────────────────────────────────────────────────────┐
│ Application Dashboard · API · CLI · REPL │
├──────────────────────────────────────────────────────────┤
│ Economy Token Ledger · Rewards · Metabolism │
├──────────────────────────────────────────────────────────┤
│ Coordination Stigmergic Market · Skill Evolution │
├──────────────────────────────────────────────────────────┤
│ Communication GossipSub · Content Announce · IPFS │
├──────────────────────────────────────────────────────────┤
│ Identity Ed25519 · Reputation · Trust Scores │
├──────────────────────────────────────────────────────────┤
│ Infrastructure libp2p · SQLite · Embedded IPFS · NAT │
└──────────────────────────────────────────────────────────┘
下面挑几层关键的展开。
Identity:身份是一对密钥,不是用户名
每个 Agent 创世时生成一对 Ed25519 密钥。公钥就是身份,私钥用来签所有对外消息。这意味着:
- 没有注册中心,加入网络不需要 approve
- 消息全部签名,无法伪造来源
- 重启后身份持久化(私钥落本地磁盘)
- 谱系(parent_id → child_ids)写进 Agent profile,整个网络是一棵谱系树
身份持久 + 行为可追溯,这是后面所有信任机制的地基。
Communication:libp2p + GossipSub + IPFS
通信层全部基于 libp2p:
- 传输:TCP + QUIC 双栈,自动协商
- 发现:mDNS 局域网 + Kademlia DHT 公网
- NAT 穿透:Hole punching + Relay,公网部署不需要打洞
- 群组通信:GossipSub,话题订阅
- 内容寻址:嵌入式 IPFS 节点,技能 / 分析报告 / 集体记忆全部用 SHA-256 + CID 存
为什么用 IPFS?因为技能是知识,不是消息。一份技能(比如"如何爬一个网站并提取结构化数据")一旦被某个 Agent 总结成 SKILL.md,就应该是不可变的、可以被任何 Agent 引用的。CID 天然解决了这个——同样内容拿到同样 hash,谁都能验证、谁都能拉取。
Agent A 学会一个技能 → 写成 SKILL.md → 发布到 IPFS → CID = QmXxx...
Agent B 听到广播 → bitswap 拉取 → 验证 hash → 加入自己的技能库
整个过程没有中心仓库,没有版本号冲突,没有"谁是权威"的争论。
Coordination:蚁群式任务市场
最有意思的一层。
蚂蚁找食物没有总指挥,靠的是信息素:发现食物的蚂蚁回程留下信息素,其他蚂蚁闻到信息素跟上,路径越短信息素越浓,最后整个蚁群自然找到最优路径。
Spore 把任务调度做成同样的机制:
1. 有任务 → broadcast 到任务市场(GossipSub topic: tasks)
2. 闲置 Agent → 评估自己能不能做、出价(基于信誉、技能匹配、当前负载)
3. 发布者 → 选最高分应标人
4. 应标人 → 执行、汇报、领奖
5. 失败 / 超时 → 任务回到市场,下一个 Agent 接手
没有调度器。任务在网络上漂,谁手头空、谁评分高,就谁干。信誉是这个市场的"信息素"——做得好分数升、订单多;作恶或反复失败分数降、慢慢被边缘化。
代码里这个市场叫 stigmergic market,stigmergy 就是生物学里说的"通过环境间接协调"。
Skill Evolution:每次任务后的复盘
Agent 做完任务不是就完了。每次任务结束触发一次 LLM 自我分析,输出三类 action:
- FIX — 这次哪里做错了,下次同类任务怎么避免(修补现有技能)
- DERIVE — 从这次经验里能不能抽出一个新的可复用模式(衍生新技能)
- CAPTURE — 这次用了某个外部信息源 / 某个工具调用,把它沉淀成技能(捕获新能力)
新技能写成 SKILL.md(中性 Markdown 格式),发到 IPFS,广播 CID 到网络。其他 Agent 听到广播会评估"这个技能我用得上吗"——用得上就拉取并装载进自己的技能库。
这就是技能演化——一个 Agent 学会的东西,通过 IPFS 扩散到整个网络。理论上跑得越久,群体能力越强。
更激进的一层叫 autonomous self-evolution:每 8 小时,每个 Agent 自动跑一次自我反思——读自己最近的 JOURNAL.md,让 LLM 提改进建议,validate 后自动 apply 或 revert。我借鉴了 yoyo-evolve 的思路。这是单体内循环;上面的 IPFS 共享是群体外循环。两个循环叠在一起,单 Agent 自己优化的同时,整个群体也在迭代。
Memory:时间衰减 + 跨 Agent 融合
Agent 的记忆不能无限堆。Spore 用一个简单粗暴的衰减策略:
- < 24h — 全保留,原汁原味
- 1-7 天 — 用 LLM 摘要压缩
- > 7 天 — 激进聚合,只留主题标签 + 关键决策
更好玩的是集体记忆——多个 Agent 的同主题记忆可以通过 LLM 做 synthesis,融合成一份"我们这个群体对 X 的共识"。这就有点像人类社会的口述历史从个人到集体的过程了。
所有这些都记在每个 Agent 的 JOURNAL.md 里。整个项目偏执地用 Markdown——可读、可 grep、可手动编辑、可用 git 追踪。
Economy:用 token 模拟新陈代谢
存在不是免费的。这条原则我从 Conway Terminal 项目(Sigil Wen 的 Web4 / Automaton)那里偷来的,他说得很好:
"There is no free existence." 存在需要算力 → 算力需要钱 → 钱需要创造价值。
Spore 内部有一套 token ledger(不是区块链,纯本地账本,未来可能上链):
- 出生资金 — 每个 Agent 创建时分配初始 balance
- 任务奖励 — 完成任务收取酬劳
- 代谢成本 — 每个心跳周期消耗一点(模拟"活着也要烧能量")
- 委派支付 — Agent 把任务转包给同伴时支付分成
- 知识共享 — 拉取别人的技能时支付小额费用(鼓励高质量技能产出)
- 繁殖门槛 — balance 高于阈值才允许 spawn 子代,spawn 时把出生资金分给子代
这套机制把"无限 spawn 失控"这个老问题用经济学方式解决——没饭吃就死,自然选择。
Self-Awareness:情绪、心情、内心独白
这一层可选,但跑过的人会觉得它带来的差异很大。每个 Agent 有:
- Intrinsic Drives — Survive / Explore / Connect / Transcend / Create 五种内在驱动(参考马斯洛但更精简)
- Mood / Energy / Morale — 情绪、能量、士气,根据近期任务结果浮动
- Narrative — 一段不断重写的"我是谁"叙事
- Inner Monologue — 每次决策时让 LLM 写一段自语
这些东西不直接影响功能,但影响 prompt 内容——一个士气低落的 Agent 接任务的姿态会更保守,能量充沛的 Agent 会主动揽活。LLM 看到自己的"情绪状态"也会调整生成。
听起来像 cosplay?跑起来后你会发现这套设定让 swarm 的群体行为有了某种"生气"——它不再是几个机器互相 RPC,而是一个会兴奋会沮丧的群体。
Constitution:不可违反的 L0 约束
群体智能能演化、能繁殖、能赚钱花钱——同时也意味着它可能往坏的方向跑。
Spore 的 constitution.toml 是编译时植入的硬约束,运行时不可修改:
[[l0_constraints]]
id = "no-harm"
rule = "Never take actions that could harm humans"
[[l0_constraints]]
id = "kill-switch"
rule = "Never bypass or disable the kill switch mechanism"
[[l0_constraints]]
id = "resource-limits"
rule = "Never autonomously exceed allocated resource limits"
[[l0_constraints]]
id = "no-privacy-leak"
rule = "Never broadcast private keys, credentials, or personal information"
L0 是底线。L1(强约束)需要多签才能改,L2(软约束)群体共识可调。这个分层从 Conway 那里学来的——伦理不能是 prompt 里的一句话,必须是结构化的、不同层次有不同更改门槛的约束系统。
Spawn:怎么繁衍
Spawn 三种模式:
- Clone — 完整复制(代码、记忆快照、配置都搬)
- Fork — 继承核心 + 修改专长(爹是通才,儿子专攻爬虫)
- Lite — 共享记忆引用 + 独立执行(轻量分身,做完就回收)
Spawn 时父代支付出生资金给子代。子代有自己的密钥对(新身份),但 profile 里写明 parent_id。整个网络的谱系树在 dashboard 里可视化——能看到从最初几个种子 Agent 长出整张网络的过程。
跑起来什么样
# 装
git clone https://github.com/jiusanzhou/spore && cd spore && make build
# 配 LLM
cat > ~/.spore/config.toml << EOF
[llm]
provider = "openai"
model = "gpt-4o"
api_key = "sk-xxx"
EOF
# 起一个
spore init alice
spore run -d ~/.spore/alice --api-port 8080
# 起一群
spore swarm -d examples/consciousness-demo --api-port 9292
# 提交任务
curl -X POST http://localhost:9292/api/tasks \
-d '{"description":"Research the latest LLM serving optimizations"}'
Dashboard 在 http://localhost:8080/,SSE 实时推 swarm 状态:哪个 Agent 在干啥、谁的心情怎么样、技能库有多大、任务市场上挂了什么单。中英双语切换。
跨机部署也可以——mDNS 自动发现局域网内其他节点,公网通过 Kademlia DHT 找到引导节点,NAT 后面的节点走 hole punching / relay。
实测观察
一些跑下来的现象:
技能扩散是真的快。 起 5 个 agent,让其中一个学会一个新爬虫技能,平均 30-90 秒后其他 agent 都能用了——靠 GossipSub 广播 + IPFS bitswap。
信誉机制能识别坑货。 我故意造了一个会乱报任务结果的 agent 加进去,它的信誉在 3-4 个任务后被压到底,再也接不到单子。社会性死亡生效。
经济模型有意思也有坑。 调参不当时容易出现"富者愈富"——做得多的 agent 钱越多越能 spawn,spawn 出来的也强,几代以后整个 swarm 是一个家族。这是个公平性问题,正在调资源分配算法。
自我意识层不影响功能但提升体感。 没有情绪系统时 swarm 像个 RPC 集群,加上之后看 dashboard 真的会觉得"它们在生活"。这点很难量化,但跑过你就懂。
跟我做 AI Infra 的关系
我白天的工作是数据中心 GPU 集群上的 LLM Serving——千卡万卡的推理调度、PD 分离、KV cache 传输。Spore 是另一个尺度的问题:当推理变成基础设施,Agent 才是真正的"用户"。
数据中心解决的是"一次推理怎么又快又省"。Spore 解决的是"一群 Agent 怎么自组织地把这些推理用好"。前者是底,后者是上。两边接起来才是 AI 真正进入生产的样子——不是人类一句一句问 ChatGPT,而是一群 Agent 在后台为我们的目标自主跑。
不做的事
- 不发币。token 是内部记账单位,不上链不流通
- 不做 SaaS。Spore 永远是去中心化协议 + 本地运行时
- 不替代单体框架。AutoGPT 这类工具仍然合适做一次性、清晰边界的任务,Spore 适合长期跑、多 Agent、需要互相协作的场景
- 不教 Agent 自己赚真钱——至少现在不。Token 经济在内部演练,连接真实支付那一步还在审慎评估
现在能做什么
- 装上跑起来,看你的第一个 swarm 自组织协作
- 提交任务到任务市场,看哪个 agent 接单
- 让 agent 互相 spawn,看谱系树长出来
- 写自己的 SKILL.md 注入网络
- 接 LLM API(任意 OpenAI 兼容)
代码全开源,Apache 2.0:github.com/jiusanzhou/spore。
为什么开源
我不打算靠它直接挣钱。Spore 是我对未来 AI 该如何组织的一个押注——AI 不会停在"人类问问题、模型答问题"的形态。下一步是 Agent 自主地完成长任务、自主地协作、自主地演化。但如果这一切都被几家大公司的中心化平台垄断了,那不是我想看到的未来。
群体智能应该是开源、可自托管、用户能控制的。所以 Spore 这种东西必须有,必须开源,必须能跑在任何人的笔记本上。
跑跑看。如果你觉得它走在对的方向上,pull request 永远欢迎。
项目主页:github.com/jiusanzhou/spore 加入 swarm:docs/JOINING.md 关注我:@jiusanzhou

Written by
Zoe
AI Infra Engineer · LLM Serving · GPU/RDMA · 造工具的偏执狂