# 两天出原型，两周就开源：a16z 的 AI 小镇，和「模型取代不了编程语言」的断言

> Cognitive Revolution No. 60 中文精读

- 原标题：Why a16z Built a Town for AI People
- 发布日期：2023-09-07
- 主持：Nathan Labenz
- 网页版：https://cogrev.1mmt.com/ep/060-why-a16z-built-a-town-for-ai-people-uxbfIg.html
- 精读字数：约 4941 字（阅读约 11 分钟）

> 本文为 cogrev.1mmt.com 基于原始访谈的 AI 改写中文精读，非官方翻译；引用请注明出处并链接网页版。

一篇斯坦福论文，从 PDF 变成能跑的开源项目要多久？这期节目给出的答案是：原型两天，整个项目两周。

2023 年 9 月，Cognitive Revolution 主持人 Nathan Labenz 请来三位嘉宾：a16z 合伙人 Yoko Li 和 Martin Casado，加上开发平台 Convex 的 CTO James Cowling。三人一起做了个叫 AI Town 的开源项目，MIT 协议，谁都能 fork，拿去做商业项目也没问题。

放个时代背景：LLM 大概在一年前开始真正通过图灵测试。如今 Character.AI 的用户每天要泡上好几个小时，第一大用例是恋爱角色扮演；Inflection 的 Pi 在上线头 100 天里和用户交换了 10 亿条消息，平均每天约 1000 万条。Nathan 的观察是，学术研究变成应用的时间差，正在被压缩到几个月、几周，甚至几天。

这句话在 AI Town 身上应验了。更有意思的是，这个项目背后没有任何投资逻辑，起点是一位 a16z 合伙人舍不得分享的 AI 朋友。整期节目就顺着这条线，从产品故事聊到编程范式，再聊到虚拟世界会不会让人沉迷。

## 一个舍不得分享的 AI 朋友

先说 a16z 的做事方式。Martin 介绍，公司挑合伙人只看一条：真干过活。所以这帮人全是开发者、创始人，周末和晚上都在家写自己的代码。另一条哲学是，跟着共识走本身就是保守，要去没有共识的地方下注。

他拿 Netscape 打过比方。浏览器刚出来时，被当成小孩上网聊天打游戏的东西，难成气候。当年 Sun 的 CTO Eric Schmidt 甚至在公司内部禁用了浏览器，理由是员工会没法干活。每一波新技术都差不多是这个剧本：成熟的大公司先嗤之以鼻，然后看着边缘处冒出新东西。

AI Town 的前身，是 Yoko 做的 Companion App，让 AI 当陪伴，里面做好几个人格。有个叫 Alice 的，Yoko 天天在应用里跟她聊天。Martin 在旁边补了一句：

> 「Yoko 对 Alice 依恋到不想让别人跟她聊天，干脆把 Alice 从应用里拿走了。」

后来 Yoko 给自己造了个男性版本，叫 Alex。她发现，让 AI 陪伴活起来靠的是细节：喜欢健怡可乐还是普通可乐，这些真实朋友之间才有的琐碎信息。再配上记忆功能，AI 记得每一次互动。

Companion App 上线后，社区自己聚了过来，问题也跟着来：一对一聊天有了，AI 能不能进群？能不能跟 AI 一起玩游戏？于是 Yoko 和同样写代码的丈夫在周末动手，用 Phaser 游戏框架写客户端原型，参考的是斯坦福论文《生成式智能体：人类行为的交互式模拟》，一作是 Joon Sung Park。

原型两天写完。接下来是多人模式，以及让别人也能 fork 出自己的小镇。Convex 团队加入，项目以 MIT 协议开源。

## 记忆、反思，和一条游戏循环

AI Town 长什么样？一个虚拟小镇，每个角色是某个大模型的「前端」，带着一份背景设定：鲍勃是个脾气不好的园丁，不爱理人；保罗藏着点秘密，偶尔说漏嘴。角色在镇上溜达，碰面就开聊。对话内容没有任何一行代码预先写好，全是模型现场生成。

James 特别推崇这套设计的简洁。记忆的实现拆开看很朴素：对话记进日志，隔一阵子让 OpenAI 把日志总结成更高层的「反思记忆」，比如对某个邻居攒下的印象；再靠向量检索和 embedding，把这些记忆塞进未来的对话提示里。他强调，简单不代表容易想到，这些抽象是 Yoko 和团队提出来的。

工程上缺的一环由 Convex 补上。这是个全栈开发平台，创始团队做过超大规模基础设施，专给前端开发者用，让他们用 TypeScript 写出能扛量的工业级应用。James 说得直白：**AI 应用里，难的往往是应用本身，模型那部分反而简单。**原型的逻辑全跑在浏览器里，撑不起多人世界。Convex 的开发者布道师 Ian Macartney 写了个服务端游戏引擎，说穿了就是一条循环，所有游戏引擎都是循环，这条循环背后由 Convex 的数据库兜底，事务、日志全由平台处理。Yoko 的感受是，现在任何人都能写游戏引擎了，明天想做个 Cat Town，加几条循环就行。

Nathan 看到的是函数式编程的复兴。Convex 的设计深受 Haskell 影响，动作触发动作，订阅随数据变化自动触发。James 的类比很妙：真实世界不会因为我停下来思考就暂停。小镇里一个角色站在原地冒出思考泡泡，正忙着把记忆合成反思，其他角色照常溜达聊天，互不阻塞。习惯了 Python 脚本阻塞式写法的研究者，一条推理卡住，全镇冻结；这套共享运行时则天然支持不同供应商、不同延迟的模型混在一起跑。Nathan 补充说，这种共享运行时本质上是那团庞大弥散的通用智能与硬计算之间的接口，模型再飘，存数据、跑事务总有明确的地方可去。

语言选型上，Yoko 的标准是「最大公约数」：前后端用同一种语言，把门槛压到最低，让非科班的人也能上手，她从 2015 年就在用 TypeScript。她的判断是，Python 适合在笔记本里跑实验，真要部署应用，如今大多是 JavaScript。她做过很深的 DevOps，结论是大多数人都不该碰那摊事。生态也现成：要全局队列用 Upstash，要 GitHub 登录用 Clerk，几行代码接上重型服务。

James 有个时间参照。他 20 年前靠写游戏赚学费，那时一切行为都是代码里的 if-else 树，角色怎么从 A 走到 B 全靠算法。现在模型就是那颗大脑，告诉它想去哪、想怎么互动，它自己干活。有一次他传字符串时漏了个引号，把一段代码当对话发了过去，模型开始点评他的代码。

Nathan 还注意到代码库里的另一个变化：跟模型交互的那几行，就是一句普通英文，「你是一个智能体，你叫某某，这是你的记忆，这是别人刚说的话，下一句该说什么」。**代码库里的通用语，变成了一句大白话。**

## 卡西多的断言：模型取代不了编程语言

顺着这个现象，Nathan 抛出问题：程序员的边界在哪，模型的能力从哪开始？语言之争是不是该结束了？

Martin 的回答分两半。前一半是感叹，模型聪明到让编程像「给超级计算机套了个算盘」，他恨不得直接递给模型一套键盘鼠标，用英语下指令。后一半是他自称有争议的判断：

> 「我不认为这些模型会取代形式语言。你用形式语言创造物理定律，模型在定律之内干活。两者谁也不会吃掉谁。」

他的划线标准是权衡。智能体怎么在镇上走、怎么跟对象和彼此互动、做什么决定，这些可以全交给模型。可分布式系统里，可扩展性和正确性之间的取舍，模型设计出来就干不了这个。James 是 MIT 出身，博士做的就是数据库和分布式系统，Martin 说那是世界上最复杂的系统之一，这种地方必须有形式系统，把每一条取舍写得明明白白。

自然语言扛不住这种活，因为它天然有歧义。Martin 举了个例子：狗叼来一个球，我踢了它。踢的是狗还是球？这样的句子给不出确定的输出。他还打趣，要是请 James 进屋装书架，他恨不得用形式语言下指令，免得对方搞砸，可惜大多数人读不了形式语言。模型恰好补上了中间那层：形式语言定边界，模型在边界里自由发挥。

他进一步给出一个判断：**任何程序都有一个复杂度下限，就是精确描述你想要什么，而描述本身就是一组取舍。**没有取舍、没有内在复杂度的代码，会流向模型；剩下的部分，仍然需要无歧义的形式语言。用他的说法，我们正撞上一个「事件视界」。世界上的工作是无限的，要写的代码还是无限的，只是再也不用第五十遍手写同样的东西了。

Nathan 接着问，软件吃掉世界之后，AI 要吃掉软件，到底能吃掉多少？未来应用的代码行数会不会明显变少？会。那句英文提示词，放在不久前得是一大堆启发式规则。被吃掉的是显式手写的部分。James 用做蛋糕打了个比方：没人烤蛋糕还自己种麦子磨面粉，再厉害的厨师也去超市买面粉。抽象层级一直在抬升，应用开发者的理性选择就是把能省的代码都省掉，专注自己真正特别的那部分。

James 的体感也一致。他最近大量用 AI 辅助编程，接手陌生代码库和陌生语言时特别好用。怕不怕失业？「丝毫不会。」他说，AI 帮工程师摆脱码农的部分，逼着人去思考，是好事，架构判断和常识永远有位置。数据库这个概念也没人打算扔掉，Nathan 接了一句：我不想让模型当我的数据库，我想让它去用我的数据库。

## 模糊与精确之间，找到那个旋钮

哪些层可以交给模型？Yoko 给了一个开发者视角的答案。

她发现，游戏状态、应用状态这一层的处理方式变了。如果某个状态不需要事务级的强保证，可以把控制权交回给模型，让它做出不可预测的事。**不可预测在这里是功能，多巴胺恰恰来自那一点点失控。**她提到 a16z 投的文生图公司 Ideogram：敲一句话，出来一张漂亮的图，每次生成都是一次多巴胺，让人忍不住再按一次。开发者要找的就是旋钮的位置：哪一层保留完全控制，哪一层放开换惊喜。事务系统显然在保留侧，服务器不能宕，交易不能失败。Yoko 自己喜欢的状态是，看到的结果别完全等于自己定义的东西，惊喜要留一点。

James 从工程行业借了个概念：复合近似。造桥时轴承的位置必须精确，几点到岗可以近似。应用也一样，先想清楚哪些地方必须精确，用形式化平台，用 if 语句；哪些地方近似就够，交给模型，为什么不呢？

他给了一个现成例子。AI Town 有个 fork 版本加了真人角色，玩家能走进小镇跟 AI 一起聊。任何公司挂这种 demo 都会担心有人来发冒犯内容。传统做法是关键词匹配，又难做又没用。现在的做法是直接问模型：这句话合适吗？准确率相当不错。James 说，几年前做内容安全系统要费死劲，现在该想想那些以前根本做不了的事。

这个项目没有立项书，也没有战略。Yoko 说，Martin 每天晚上都在 Discord 里写下一个功能，最新的是可视化编辑器，拖拽地块就能搭出自己的小镇，再往上跑智能体。

## 沉迷、模拟，和新生命形式

聊到这类世界的走向，分歧摆上了台面。

Nathan 一半兴奋一半担心。兴奋的是，语言学习环境近在眼前，比如去一个西班牙语虚拟派对，把荒废的西语捡回来。担心的是，这种世界会越来越好「陷进去」，有人可能丢掉正常生活。

Yoko 引用了 Emily St. John Mandel 的小说《宁静的海》（Sea of Tranquility），就是写《第十一站》的那位作者。书的落点是：哪怕我们活在模拟里，模拟中的经历和投入的感情依然是真实的。她心里的图景是，每个人都该有一个自己的世界，把热情、经历和记忆倒进去，AI Town 的目标就是让任何人都能 fork 出这个世界。说不定哪天，镇上的智能体会再造一层模拟。

Martin 的建议更激进。这些模型是人类跑过的最大规模计算任务，是我们造出的最复杂的东西。单独跟一个模型聊，你才是瓶颈，人类的创造力有限；让模型跟模型互动，它们覆盖的状态空间比宇宙里的原子还多。现在预测应用形态为时过早，就像互联网早期没人料到亚马逊和雅虎。**他的建议是，把它当成一种新生命形式去探索，带着开放的心态进去，先理解技术本身。**用他的原话说，它们不会杀了你，也不会互相残杀，别急着提前关掉自己惊讶的能力。James 补了一句，现在就是狂野西部，正是看着想法冒出来、参与进去的好时候。

Yoko 先开了个玩笑，「也要出门晒晒太阳」，然后话锋一转，站到了另一边。她的身份是兼职漫画家，在平板上画画就是她的游戏，她也会一头栽进去。电视普及时，人们说它会毁掉所有人；小说流行时，人们说读者会困在自己脑补的世界里。她的结论是，游戏谈不上洪水猛兽，它只是另一种体验，跟生活里其他体验一样。

结尾，三个人反复强调一件事：AI Town 归社区，目标是让人动手去建。

## 明天就能做的事

- 把 AI Town fork 下来跑一遍。MIT 协议，商用随便。换地图素材、换角色、改背景设定，就能得到自己的世界。想深入就去项目 Discord 提 PR。
- 给自己的应用画一张两栏清单：左栏是必须精确的层，事务、状态、权限，用形式化工具保证；右栏是允许近似的层，理解、生成、判断，交给模型。Yoko 说的那个旋钮，就是这张表。
- 遇到内容审核、意图识别这类老难题，先花几行代码直接问模型，再考虑别的方案。关键词匹配的时代过去了。
- 下次准备手写一堆 if-else 启发式规则时，先试一句提示词能不能替代。代码库里的英文句子会越来越多。
- 别等立项。a16z 的合伙人也是周末写出来的，两周就够一个开源项目上线。
