2025-09-08 20:35:00
本文为周刊第19期,前期周刊参见:周刊系列。
最近学习了 MCP (Model Context Protocol, 模型上下文协议)相关的文档、书籍和文章,借此在本期周刊中对其进行梳理与总结。本文将围绕 MCP 的由来与所解决的问题、核心概念与运行机制,以及其生态与发展现状展开,帮助大家快速理解 MCP 的全貌。
受万维钢的启发,从本篇周刊开始,我会计算每篇文章的“思维密集度”,也就是花在写文章的时间(包括前期相关资料收集、学习的时间),除以阅读文章所需的时间,所得到的值。本文的思维密集度 = 约30小时(前期学习花费时间)+ 11小时(总结及写作时长)÷ 18分钟(阅读本文时长)≈ 137.
本文思维密集度 = 137
OpenAI发布ChatGPT让人们看到了大语言模型(LLM)的强大能力,而ChatGPT也在短时间内成为了超级互联网应用,甚至改变了人们寻找知识的习惯,很多人在互联网上搜索信息不再优先使用搜索引擎,而是从ChatGPT等AI对话类应用获取信息。
但大模型也有一个弱点,那就是它是通过历史数据训练而成,其知识在训练时就已经固定,无法获取训练之后的新信息。正如Anthropic在推出MCP的介绍文章中说的那样:“即便是最先进的模型,也受限于与数据隔绝——被困在信息孤岛和遗留系统之后。”为了解决这一问题,行业采用了两个解决方案。第一个解决方案是模型微调,也就是在基础大模型上加入一些新的数据集进行增量训练,这种场景仍需要进行训练后再部署,一则成本比较高,二则是实时性比较高的场景也不能满足。而另一个解决方案就是补充上下文,在推理时为模型注入外部知识作为输入上下文,让模型基于最新资料进行回答,从而弥补大模型原有知识的不足。
为大模型补充上下文的方案有很多,比如我们在与ChatGPT等AI应用对话时,大模型能结合之前对话的上下文来回答,这是因为AI应用将对话内容进行了存储记录,压缩处理成后续问答的上下文给到大模型。这种方法受限于用户的对话内容,若想要获得更广泛且可更新的上下文,通常会采用RAG等技术路线.
RAG(Retrival Augmented Generation, 检索增强生成)是一种让大模型结合外部知识库的方法,RAG 所代表的三个缩写词就是它的工作原理:Retrival(检索):首先,当用户发出提问时,AI应用将问题通过向量化检索的方式获得与问题相关的文档知识;Augmented(增强):然后,AI应用把检索到的资料拼接到Prompt中,作为增强上下文;Generation(生成):最后,模型基于问题+外部资料信息生成答案。RAG的优势在于不需要训练模型,能够接入最新的知识,并保持知识库的更新。但其限制在于,RAG依赖于检索到信息的质量,同时还要求检索过程足够高效,但实际应用中,检索速度和检索准确率是比较大的技术挑战。另外,RAG通常使用向量检索(也可与关键词/混合检索组合)并维护可更新的检索索引,而当知识库规模化后,其成本、性能、检索精度都可能成为瓶颈。
2023年6月OpenAI在其模型API中更新发布了函数调用(function calling)能力,它允许大模型将自然语言请求转换为函数调用,让AI应用可以调用外部工具。其工作原理是:第一步,AI应用开发者定义函数列表,包括名称、用途、参数类型。第二步,用户发出问题,AI应用将函数列表作为上下文发送给大模型。第三步,大模型根据用户输入判断需要调用的函数,生成调用参数。第四步,AI应用执行该函数并将结果发送给大模型,作为补充上下文信息供大模型生成最终的答案。这一特性也极大扩展了大模型的能力边界,通过函数调用的方式,大模型能够外挂各种外部数据源,同时还能执行各种类型的操作。
在OpenAI推出函数调用机制后,各大模型厂商纷纷跟进,分别都支持了函数调用机制。但随之而来也存在一些问题,因为函数调用是一种机制,而非标准,虽然函数定义都是JSON格式,但个大模型厂商实现方式不同,结构差异很大;另外,需要开发者为每种模型或AI应用编写特定的适配代码。这些都是函数调用机制在实际应用场景中迫切需要解决的问题。
不过,OpenAI在推出函数调用机制后,没有更进一步统一行业标准,而是着急推出GPTs的生态战略。OpenAI在推出函数调用后的同年11月,也就是2023年开发者大会上,推出了GPTs, 这是专为特定任务创建的ChatGPT 的定制版本,用户可以打造自己的GPTs, OpenAI CEO 山姆·奥特曼还特意演示了如何在几分钟内创建一个商业顾问GPTs。到次年2024年1月,OpenAI开放GPTs Store, 上线不久,商店内的GPTs就达到了300万。但巨大的数量并没有产生实质性的效果,有报道称,95%的GPTs应用的用户数不超过100人,绝大多数GPTs的用户只有一、二人。这也暴露了GPTs的问题,GPTs想法的初衷是好的,普通用户通过简单的操作比如调整提示词便可以创建专属的AI应用,但这种低门槛也就意味着大量低质量的应用被快速构建出来,实际上没有什么用处。在实际的工作和生活场景,AI应用需要与各种IT工具交互才能产生真正的价值。
OpenAI所忽视的标准被Anthropic搞出来了。2024年11月,Anthropic推出MCP,即模型上下文协议(Model Context Protocol),这是一个开放标准,用一个统一标准的协议,让大模型应用可以安全、方便地访问外部数据并进行工具连接。可以认为,MCP是在函数调用基础上做的升级和抽象。
MCP 在架构上有三个角色:主机(MCP Host)、客户端(MCP Client)、服务器(MCP Server),它们通过 MCP 协议进行协作。MCP 主机一般是AI应用,如ChatGPT等AI对话应用,或智能体Agent,或如Cursor等AI IDE等。MCP 服务器则是负责对接外部数据或工具服务,通过MCP标准数据格式将内容发送给MCP客户端。MCP 客户端则是MCP主机与MCP服务器连接的桥梁,它附属于主机上,由主机任务创建并调度,从而实现AI应用与外部数据或工具服务的交互。
对于MCP的这些概念,网上有张图非常形象的解释了它们的关系。MCP就像是电脑的拓展坞,有了它之后,无论是远程调用的服务(如数据库、Web服务、远程系统)还是本地服务(文件系统、本地工具)都可以被主机(AI应用)所调用。
相比之下,前面提到的函数调用或其他API调用方式就需要AI应用做定制的适配。
MCP官方文档中对MCP架构描述如下。MCP客户端与MCP服务器一对一连接。
MCP协议包含两层:数据层和传输层。数据层定义了基于 JSON-RPC 的“客户端-服务器”通信协议,包括生命周期管理、核心原语(tools, resources, prompts)、通知机制。传输层定义了通信机制与通道,包括连接建立、消息封装、认证等。MCP支持两种传输机制。一种是对本地数据服务的STDIO 传输,通过标准输入/输出流在同一台机器上的本地进程间通信,没有网络开销。另一种是对远程数据服务的流式 HTTP 传输。
数据层方面,由于MCP是有状态协议,因此需要生命周期管理,以便于协商客户端与服务器所支持的能力。协议支持实时通知,以实现服务器与客户端之间的动态更新。例如,当服务器的可用工具发生变化(新增、修改、下线)时,服务器可以发送工具更新通知,告知已连接的客户端这些变化。
MCP协议最重要的概念是原语,原语定义了客户端和服务器能够互相提供的内容,规定了可以与 AI 应用共享哪些上下文信息,以及可以执行哪些范围内的操作。
MCP服务器有三个核心原语:
每种原语都包含相关联的方法用于发现(*/list
)和获取(*/get
),比如用于工具发现的(tools/list
),还有一些方法适用于特定原语,比如工具调用(tools/call
)。MCP 客户端则使用 */list
方法来发现所有可用原语。
比如我们实现一个图书管管理的MCP服务器,在工具里可以定义一个借阅图书的工具:
{
"name": "borrowBook",
"description": "Borrow a book from the library",
"inputSchema": {
"type": "object",
"properties": {
"userId": { "type": "string", "description": "Library user ID" },
"bookId": { "type": "string", "description": "Unique book identifier" },
"dueDate": { "type": "string", "format": "date", "description": "Return due date (YYYY-MM-DD)" }
},
"required": ["userId", "bookId", "dueDate"]
}
}
而AI应用里就可以使用该工具来借阅图书:
borrowBook(userId: "007", bookId: "101", dueDate: "2024-06-15")
MCP客户端也定义了三个核心原语:
除了这三个核心原语,MCP客户端还可以定义如日志(Logging, 允许服务器向客户端发送日志消息,用于调试与监控)等原语。
下面以一个MCP “客户端-服务器”的交互示例来解释MCP的运作过程。
MCP 交互从生命周期管理的能力交互握手开始,首先是客户端发送 initialize
请求来建立连接并协商支持的能力。
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-09-08",
"capabilities": {
"elicitation": {}
},
"clientInfo": {
"name": "client-example",
"version": "1.0.0"
}
}
}
而服务器也会回应:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-09-10",
"capabilities": {
"tools": {
"listChanged": true
},
"resources": {}
},
"serverInfo": {
"name": "server-example",
"version": "1.0.0"
}
}
}
capabilities 里包含着双方声明的原语,即暴露的能力。在这个例子中,客户端声明了 elicitation 原语,表明服务器可以处理用户交互请求,而服务器声明支持 tools 和 resources 原语,而 tools/list_changed 则说明当工具列表更改时,服务器会发送消息通知。
初始化成功后,客户端会发送通知表明已准备就绪:
{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}
在初始化阶段,AI应用会建立通过客户端管理建立与各服务器的连接并存储它们的能力信息以决定后续调用哪些服务器的功能。
连接一旦建立,客户端就可以发送 tools/list
请求发现服务器提供的工具。
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
服务器回复:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"tools": [
{
"name": "checkBookAvailability",
"title": "Check Book Availability",
"description": "Check if a specific book is available in the library",
"inputSchema": {
"type": "object",
"properties": {
"bookId": {
"type": "string",
"description": "Unique identifier of the book"
}
},
"required": ["bookId"]
}
},
{
"name": "borrowBook",
"title": "Borrow Book",
"description": "Borrow a book from the library system",
"inputSchema": {
"type": "object",
"properties": {
"userId": {
"type": "string",
"description": "Library user ID"
},
"bookId": {
"type": "string",
"description": "Unique identifier of the book"
},
"dueDate": {
"type": "string",
"format": "date",
"description": "Return due date (YYYY-MM-DD)"
}
},
"required": ["userId", "bookId", "dueDate"]
}
}
]
}
}
服务器的响应包含一个tools数组,里面是各工具的元数据信息,包括每个工具在该服务器内的唯一标识符 name
, 名称 title
, 描述 description
, 以及输入参数的 JSON Schema 定义 inputSchema
.
AI 应用会将所有 MCP 服务器提供的工具合并成统一的工具注册表,供大模型获取并准备后续调用。
获得工具信息后,客户端可以通过 tools/call
方法调用工具。
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "borrowBook",
"arguments": {
"userId": "U12345",
"bookId": "B56789",
"dueDate": "2025-09-30"
}
}
}
相应地,服务器在执行工具成功后会反馈工具调用结果。
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "Book 'Introduction to AI' has been successfully borrowed by user U12345. Due date: 2025-09-30."
}
]
}
}
当大模型在对话中决定要调用工具,AI应用会拦截工具调用,将请求路由到对应的MCP 服务器,执行工具调用,并将结果返回给大模型,这样大模型就能够访问到外部的实时数据。
MCP 支持实时更新,允许服务器主动告知客户端变化,而不是等待客户端请求。
比如当服务器工具发生变化,服务器可以发送通知给客户端:
{
"jsonrpc": "2.0",
"method": "notifications/tools/list_changed"
}
通知消息无需响应。不过客户端在收到工具变化通知后,一般会立刻向服务器发送请求获取工具列表。
MCP自发布以来,便受到了众多开发者的关注,也有很多开发者参与社区。各AI应用厂商和各大模型厂商也纷纷跟进,逐渐成为行业的事实标准,也因此形成了丰富的生态,从配套工具到解决方案,从市场到周边。这里也列举一些。
MCP官方提供了TypeScript、Python等多种语言的SDK,另外还提供了调试工具和命令行工具,通过这些配套工具可以很方便的开发MCP服务器和客户端。我根据《这就是MCP》的指导也很快开发了flomo的MCP服务器,代码在 hutusi/flomo-mcp, 这里就不展开描述。
MCP官方没有推出MCP应用市场(2025/09/09 update: MCP官方于本文发表8小时后宣布官方MCP Registry, 也就是MCP应用市场),只是在GitHub上用一个README收集了MCP服务器清单,不过有很多第三方的MCP市场,如 smithery.ai, MCP.so, MCPMarket.com, modelscope.cn/mcp 等。其中 mcp.so 可能是目前MCP服务器收录最多的应用市场,它来自于一位网名为艾逗笔的技术极客之手。艾逗笔从腾讯离职后做独立开发,去年11月底Anthropic发布MCP,他认真阅读官方文档后突发奇想,觉得可以建一个MCP的导航站,于是立马上手,花了两个小时就把 mcp.so 开发上线了。不得不说,在AI时代有想法又能够动手的技术极客,他们的生产效率是惊人的。
MCP应用市场解决了MCP服务器收集、分类、发现的问题,在MCP生态中就像是手机应用市场。
不过,我觉得MCP官方没有推出应用市场的原因,除了试图保持中立外,还可能是互联网开放的MCP应用市场内容运营和治理很难做,官方市场很难保证用户上传的MCP服务器不存在安全风险和质量隐患。(2025/09/09 update: 被打脸了,详见上段更新备注,从博客得知官方在今年三月就有这个想法。)而MCP更具有商业价值的场景是在企业内部,MCP可以帮助企业内部的AI应用在实际作业中产生效果。因此,有不少企业在探索企业级的MCP解决方案,其中比较有代表性的是阿里云的Higress+Nacos方案。
Higress是阿里云开源的云原生API网关,基于 Envoy+Istio 的架构演进而来,最初用于阿里内部的流量网关场景。在MCP场景下,Higress被用作为统一网关,让外部的AI应用调用时只接入一个网关,内部的MCP服务器的地址和安全策略都隐藏在背后。而 Nacos 是阿里云开源的服务发现与配置管理平台,在MCP场景下,就可以作为MCP服务器的注册中心。各业务系统将MCP服务器注册到Nacos上,由Higress自动发现并路由;当业务系统的MCP服务器地址变更或变更时,Nacos自动更新,而外部AI应用调用则无感知。类似下面这样的架构:
外部 AI 应用
│
▼
[Higress 网关] ← 鉴权、限流、审计
│
▼
[服务发现:Nacos]
│
▼
[内部 MCP Server 群]
├── 文档库 Server
├── ERP Server
├── CRM Server
└── Git Server
除了MCP外,AI应用互操作协议还有A2A (Agent-to-Agent Protocol)、ACP (Agent Communication Protocol)、ANP (Agent Network Protocol)等,这里主要谈一下A2A协议。
A2A协议由Google在2025年4月发布,该协议主要的目的是提供一种标准化的协议支持Agent之间协作与通信,也就是说,A2A适用于多Agent场景。在A2A协议中,规定Agent需要公开一个Agent Card,以JSON格式描述,包含它的能力、模态和限制条件等。
不过,A2A并不是取代MCP,它们之间也不是互斥的,二者可以形成互补,两者的关系如下图所示。
最后总结一下,MCP 如其名 (Model Context Protocol), 是为增强模型上下文而生的。通过 MCP 协议定义了 AI 应用与外部工具间的交互通用标准,使得大模型能够通过 MCP 调用工具来获取外部实时信息并执行任务,极大地扩展了大模型应用的能力。MCP 本身及生态都在不断地发展和完善,其在企业的 AI 解决方案中扮演的角色也将越来越重要。
Introducing the Model Context Protocol, Anthropic, 2024/11
MCP Architecture overview, modelcontextprotocol.io
OpenAI Function calling guides, OpenAI
Announcing the Agent2Agent Protocol (A2A), Google, 2025/04
What is Model Context Protocol (MCP)? How it simplifies AI integrations compared to APIs, Norah Sakal, 2025/03
《这就是MCP》 艾逗笔(著) 人民邮电出版社 2025/08
《基于 MCP 实现 AI 应用架构新范式的一线实践》 计缘(阿里云) 2025/04
昔日我曾如此苍老,如今才是风华正茂。
I was so much older then,I’m younger than that now.
– Bob Dylan, My Back Pages
2025-08-24 11:56:00
本文为周刊第18期,前期的周刊参见:周刊系列。
最近看了万维钢的《万万没想到:用理工科思维理解世界》,觉得写得很好。之前看万维钢在得到上写专栏,以为是鸡汤文,但没想到他的文字的的确确有料,读完之后有种醍醐灌顶的感觉。万维钢是物理学博士,搞科研之余还写博客和得到专栏,介绍一些方法论,代表作有《万万没想到》《智识分子》等。
《万万没想到》的副标题是“用理工科思维理解世界”,理工科思维是一个比较有中国特色的概念,与理工科思维相对的是文科思维,作者认为,文科思维付诸于感性,理工科思维付诸于理性,理工科思维就是用科学的方法来探索世界,而科学方法则是取得可靠答案的唯一符合逻辑的方法。
该书是作者一系列文章的合集,整理成了四个部分,分别是:一、反常识思维:这部分讲的反常识思维即理性思维,即理工科思维;二、成功学的解药,讲如何运用理工科思维去学习;三、在现代生存,如何将理工科思维用在生活中;四、霍金的答案,介绍科学研究的逻辑。下面我简单整理下该书的笔记,笔记大部分内容直接摘抄原书,我就不再标识出来,同时推荐读原书。
人们常常把自己的价值判断称为“常识”,因为这些判断本来就是从人的原始思维而来的,然而现代社会产生了另一种思维,却是“反常识”的。
1、取舍思维
对于大多数人来说,一直到进入现代社会之前,我们都生活在一个“具体的”世界中。我们的活动范围仅限于自己所属的小部落或者小村庄,很多人一生去过的地方也不会超过一天的路程。这种“具体思维”做各种选择的首要标准,是道德。费孝通在《乡土中国》一书中提出,世代定居的传统中国社区的本质是熟人社会。在熟人社会中,人们做事不是靠商业和法治,而是靠道德和礼治。费孝通说乡土中国的最高理想是“无讼”,就好像足球比赛中每个人都能自觉遵守双方的规则,而犯规的代价不单是被罚,更是整个球队和教练的耻辱。生活在这样的社会里,我们的首要技能不是数学计算能力,而是分辨善恶美丑。也许这就是文人思维的起源:针对每个特定动作的美学评价。有时候他们管这种评价叫“价值观”,但所谓价值观无非就是给人和事贴或好或坏的标签。文人把弘扬真善美和鞭挞假恶丑当成自己义不容辞的责任。
现代社会与古代社会最大的不同,是人们的生活变得越来越复杂。除了工作和休息,我们还要娱乐、参加社交活动、学习和发展以及随时对遥远的公众事务发表意见。我们的每一个决定都可能以一种不直截了当的方式影响他人,然后再影响自己。面对这种复杂的局面,最基本的一个结果是好东西虽然多,你却不能都要。这就需要取舍思维,英文有一个形神兼备的词可作为解释:“tradeoff”。两个好东西我不可能都要,那么我愿意牺牲(off)这个,来换取(trade)那个。“tradeoff”是“理工科思维”的起源。
诺贝尔奖得主丹尼尔·卡尼曼的《思考,快与慢》一书,把人脑的两套思维系统称为“系统1”和“系统2”。前者自动起作用,能迅速对事物给出一个很难被改变的第一印象;而后者费力而缓慢,需要我们集中注意力进行复杂的计算,甚至我们在系统2工作的时候连瞳孔都放大了。系统2根本不是计算机的对手,没人能在百万分之一秒内计算111.61872的平方根。然而系统1却比计算机强大得多,直到2012年谷歌用了1.6万块处理器,才让计算机学会识别猫的脸——而且它肯定还不会像刚出生的婴儿那样分辨表情。系统1这么快,显然是它在漫长的进化史中非常有用的缘故。我们可以想见一个不会算数,甚至不会清晰地逻辑推理的人只要知道谁对他好、谁对他坏,靠本能也能在草原上生活得不错。只有到了现代社会,他才会有大麻烦。文人思维显然是系统1的集大成者,而理工科思维则是系统2的产物。 “tradeoff”要求量化输入和预计输出,这也是理工科思维的最根本方法。
2、被别人说服
与霍金合著《时间简史》和《大设计》的第二作者蒙洛迪诺是个被忽视的重要科普作家,他在自己的书《潜意识:控制你行为的秘密》中说,人做判断的时候有两种机制:一种是“科学家机制”,先有证据再下结论;一种是“律师机制”,先有结论再去找证据。世界上科学家很少,你猜绝大多数人使用什么机制思考?每个人都爱看能印证自己已有观念的东西。我们不但不爱看,而且还会直接忽略那些不符合我们已有观念的证据。
这个毛病叫作“确认偏误”(confirmation bias)。如果你已经开始相信一个东西了,那么你就会主动寻找能够增强这种相信的信息,乃至不顾事实。一旦你有了某种偏见,你就无法改变主意了。
诺贝尔奖得主罗伯特·奥曼在1976年发表了一篇论文Agreeing to Disagree,这篇论文堪称传世之作。它指出,如果两个理性而真诚的真理追求者争论问题,争论的结果必然是两人达成一致。换句话说如果争论不欢而散,那么其中必然有一方是虚伪的。原话是:If two people have the same priors,and their posteriors for an event A are common knowledge,then these posteriors are equal.
下面为简单起见,假设世界杯决赛是阿根廷队对意大利队。在决赛前夜,如果我向你宣布,我认为阿根廷队将获得世界杯冠军。而你向我宣布,你认为意大利队将获得世界杯冠军。这样一来我们两人的观点就被亮出来了,不但你知道我的观点,而且我知道你知道我的观点,而且你知道我知道你知道我的观点……以此类推下去,这就是我们的观点是“common knowledge”。
这个定理中所假设的理性的人,被学者称为“真理追求者”(truthseekers)。如果我们是诚实的真理追求者,我们终将能够达成一致。
所有科学家有一个共同的优点:他允许你改变他的想法。
3、概率论
我认为人人都应该学点概率知识。在日常生活中,概率论比万有引力公式和基因的复制机制都重要,它是现代社会的公民必备的知识。现在的世界比过去复杂得多,其中有大量的不确定性。是否理解概率,直接决定了一个人的“开化”程度。当不懂概率的人大惊小怪的时候,懂概率的人可以淡定自若。下面是五个最简单的概率论智慧:
1)随机。概率论最基础的思想是,有些事情是无缘无故地发生的。理解随机性,我们就知道有些事情发生就发生了,没有太大可供解读的意义。我们不能从这件事中获得什么教训,不值得较真,甚至根本就不值得采取行动。比如民航客机非常安全,但再完美的交通工具也不可能百分之百的安全。你会因为极小的事故概率而不坐飞机吗?我们只要确定事故概率比其他旅行方式更低就可以了——甚至连这都不需要,我们只要确定这个概率小到我们能够容忍就可以了。为偶然事件大惊小怪,甚至一朝被蛇咬十年怕井绳,是幼稚的表现。
管理者有个常见的思维模式,一旦出了事就必须全体反思,制定相关政策以避免类似事故再次发生,但极小概率事故其实是不值得过度反应的。哪怕是因为员工犯了错而引起的,也没必要如此。37signals公司的两位创始人弗莱德(Jason Fried)和汉森(David Heinemeier Hansson)在2010年出了一本书《重来》(Rework),讲公司创业和管理之道。在我看来此书一个亮点就是它强调不要一看有人犯了错就为此大张旗鼓地制定政策来纠正错误。那样只会把错误变成伤疤,而且会让公司越来越官僚主义。正确的办法是告诉犯错的员工这是一个错误,然后就完了。
2)误差。历史上最早的科学家曾经不承认实验可以有误差,认为所有的测量都必须是精确的,把任何误差都归结于错误。后来人们才慢慢意识到偶然因素永远存在,即使实验条件再精确也无法完全避免随机干扰的影响,所以做科学实验往往要测量多次,用取平均值之类的统计手段去得出结果。
3)赌徒谬误。假如你一个人在赌场赌钱,比如玩老虎机。你一上来运气就不太好,一连输了很多把。这时候你是否会有一种强烈的感觉,你很快就该赢了呢?这是一种错觉。赌博是完全独立的随机事件,这意味着下一把的结果跟以前所有的结果没有任何联系,已经发生了的事情不会影响未来。
4)在没有规律的地方发现规律。理解了随机性和独立随机事件,我们可以得到一个结论:独立随机事件的发生是没有规律和不可预测的。这是一个非常重要的智慧。如果数据足够多,我们可以找到任何我们想要的规律。但这些“预言”可完美解释已经发生的事情,却不能预测尚未发生的事情。未来是不可被精确预测的。这个世界并不像钟表那样运行。
5)小数定律。现在,我们知道,在数据足够多的情况下,人们可以找到任何自己想要的规律,只要你不在乎这些规律的严格性和自洽性。那么,在数据足够少的情况下又会如何呢?如果数据足够少,有些“规律”会自己跳出来,你甚至不相信都不行。比如世界杯上的各种神秘规律。原因是如果数据少,随机现象可以看上去“很不随机”,甚至非常整齐,感觉就好像真有规律一样。如果统计数字很少,就很容易出现特别不均匀的情况。
4、阴谋论
相信阴谋论很可能是人的一个思维本能。人们总是希望能给复杂而混乱的世界找个简单的解释,这个解释就是有某种强大的力量,怀着一个不可告人的目的,在控制一切。
近代著名儿童心理学家让·皮亚杰(Jean Piaget)说,在儿童成长的某个阶段,他的世界观会有两个基本点。一个是“animism”,万物有灵。他认为每个物体都是活的,比如汽车之所以不走是因为它累了需要休息。更重要的是,任何东西都有它自己的意愿,比如“太阳在跟着我们走”。另一个是“artificialism”,人为主义。他认为一切东西都是人出于某种目的造出来的。比如为什么会有太阳?太阳是人用火柴造出来照亮用的。 由此,在儿童的世界中根本就不存在随机现象,一切都是有目的的。生物学家路易斯·沃伯特(Lewis Wolpert)有本书叫《反常的自然科学》(The Unnatural Nature of Science)。他在此书中指出,想要摆脱童稚状态搞科学,就必须首先抛弃目的论。 科学的标志,是对世界的运行给出一套纯机械的机制。风怎么吹、石头怎么落下来,并不是它有什么目的、背后有什么精神力量,而是物理定律决定了它就会这么做。有些事情发生就发生了,纯属自然,并不是谁“想让”它发生它才发生。比如艾滋病毒在黑人中传播最多,你可以去分析它的传播机制,但是这种传播并不一定有什么“目的”。
1、科学的励志
在个人传记里,成功人士往往拥有传奇经历和突出个性;在八卦逸事里,成功很大程度上是因为他会耍嘴皮子;在心灵鸡汤里,成功是因为他有正确的价值观,是个好人。可是你怎么知道这些道理是不是可重复和可检验的呢?也许这帮人只不过是运气好而已!我们需要的是科学的励志,只有你的理论具有普遍意义,你的成功才可以被复制。
真正能左右学习成绩的品质只有一个:自控。
自控需要意志力。一般人可能认为意志力是一种美德,应该通过教育的方式提升思想的境界来培养。然而实验表明,意志力其实是一种生理机能。它就好像人的肌肉一样每次使用都需要消耗能量,而且用多了会疲惫。
如何提升意志力?灌鸡汤、打鸡血是没有用的。真正有效的办法是“常立志”。意志力是一种通用资源,这意味着你可以通过做一些日常小事来提高意志力,然后把它用在其他事情上。
2、刻意练习
提出“刻意练习”(deliberate practice)这个概念的是佛罗里达大学心理学家安德斯·埃里克森(K.Anders Ericsson)。我总结成以下四点:1)只在“学习区”练习。2)把要训练的内容分成有针对性的小块,对每一个小块进行重复练习。3)在整个练习过程中,随时能获得有效的反馈。4)练习时注意力必须高度集中。
1)在“学习区”练习:
心理学家把人的知识和技能分为层层嵌套的三个圆形区域:最内一层是“舒适区”,是我们已经熟练掌握的各种技能;最外一层是“恐慌区”,是我们暂时无法学会的技能;二者中间则是“学习区”。在舒适区做事,叫生活;在学习区做事,才叫练习。
2)重复练习,掌握套路:
心理学研究认为人的工作能力主要依靠两种记忆力:“短期工作记忆”(short term working memory,有时候也简单地称为“短期记忆”)和“长期工作记忆”(long term working memory)。短期工作记忆有点类似于电脑的内存,是指人脑在同一时刻能够处理的事情的个数——一般来说,我们只能同时应付四件事情,多了就不行了。长期工作记忆存储了我们的知识和技能。它有点类似于电脑的硬盘,但比硬盘高级得多。关键在于,长期工作记忆并不是杂乱无章、随便存储的,它以神经网络的形式运作,必须通过训练才能存储,而且具有高度的结构性。心理学家把这种结构称为“块”(chunks)。比如,一场棋局在普通人眼里就是一些看似杂乱摆放的棋子,而在职业棋手眼里这些棋子却是几个一组分成了很多块的,通过识别这些块,职业棋手可以很容易地记住棋局,甚至同时跟多人对弈盲棋。更简单地说,如果普通人看到的是一个个字母,职业棋手看到的就是单词和段落!
人的技能,取决于这两种工作记忆。专家做的事情,就是使用有限的短期工作记忆,去调动自己几乎无限的长期工作记忆。而刻意练习,就是在大脑中建立长期工作记忆的过程。
我小时候曾经非常看不起死记硬背,有一段时间想要学围棋,但总觉得背定式是个笨功夫,高手难道不应该根据场上的局面随机应变吗?但事实是,随机应变才是笨办法。定式和成语典故、数学定理一样,是人脑思维中的快捷方式。
人脑到底是怎么掌握一个技能的,我听说过一个比较主流的理论说这是神经元的作用。完成一个动作需要激发很多个神经元,如果这个动作被反复做,那么这些神经元就会被反复地一起激发。而神经元有个特点,就是如果经常被一起激发,它们最终就会连在一起!技能是人脑中的一种硬件结构,是“长”在人脑中的。
用什么方法才能迅速地把技能套路“长”在身上呢?关键在于两点:1)必须进行大量的重复训练。2)训练必须有高度的针对性。
比如写作。中国传统的培养方法,一个作家的训练就是读小说,评论小说,然后一篇接一篇地写完整的小说。除此之外大约就是要到各地体验生活,因为“功夫在诗外”。问题在于,中国大学的中文系基本上没有成功地培养出一个像样的作家。面对这种局面,一般人马上会得出结论:写作靠的是天赋,作家不是培养出来的。但是美国大学是可以培养作家的,而且还培养了中国作家,比如哈金毕业于布兰迪斯大学文学写作专业,严歌苓毕业于哥伦比亚艺术学院文学写作系。
我反对“功夫在诗外”。如果你要从事创造性的活动,你得学会借鉴各个不同领域的东西,的确是“功夫在诗外”。但是人们经常滥用这句话,认为连学习都要讲“功夫在诗外”,这就完全错了。对练习来说,你想要学什么就应该练什么,功夫就在功夫上。我们追求的就是把这个特殊技能的特殊神经网络“长”在大脑之中,别的都不必管。
3)随时获得有效反馈:
在有即时反馈的情况下,一个人的进步速度非常之快,而且是实实在在的。
再牛的科学家,也需要同行评议,这就正如世界排名第一的网球运动员也需要教练一样。反馈者不见得比你的水平高,关键是他们不是你,他们可以从你看不到的角度看你。
韩愈说“师者,所以传道授业解惑也”。古代的私塾教育往往让学员先背书,搞得好多小朋友会背但不会解释,老师能不能解惑很关键。而现在的课本和各种辅导书极其全面,人们完全可以自学,聪明人更有很强的自学能力。那么,现代的老师的最大作用是什么呢?正是提供即时的反馈。世界上最好的高尔夫球球手、最好的国际象棋棋手,他们的比赛水平肯定超过自己的教练,可为什么他们还要请教练?一个重要原因就是教练能在训练中以旁观者的身份提供即时的反馈。
美国的基础教育受到过很多批评,但美国的研究生制度却毫无疑问是世界最好的。这个制度正是学徒制。导师的英文是“advisor”,这个词放在学校以外是顾问的意思,比如“总统军事顾问”。导师允许学生有相当的独立性,你原则上可以选择自己喜爱的项目,而导师给你提供建议和随时的反馈。
4)刻意练习时高度集中:
刻意练习不好玩。它要求练习者调动大量的身体和精神资源,全力投入。如果你觉得你在享受练习的过程,那你就不是刻意练习。
在刻意练习中没有“寓教于乐”这个概念。我们生活在一个试图把一切东西都娱乐化的时代,我们希望看个电影就能学到知识。就算是看纪录片也是为了娱乐。
“寓教于乐”是个现代社会的发明,从来没有哪位古代哲人认为应该寓教于乐。波兹曼振聋发聩地写道:教育哲学家认为获得知识是一件困难的事情,认为其中必然有各种约束的介入。他们认为学习是要付出代价的,耐力和汗水不可少,个人的兴趣要让位于集体的利益。要想获得出色的思辨能力对年轻人来说绝非易事,它是异常艰苦卓绝的斗争。西塞罗说过,教育的目的本来应该是摆脱现实的奴役,而现在的年轻人正竭力做着相反的努力——为了适应现实而改变自己。
3、兴趣与基因
学习一个技能的初期,智商可能是决定性因素。但是随着学习的深入,兴趣的作用可能就越来越大了,因为兴趣可以在相当大的程度上决定谁能坚持下来。
但兴趣等特征的形成是先天因素更大一些,还是后天培养因素更大一些?这种研究进行了几十年,科学界的共识是,先天因素远远大于后天因素。首先,任何一种能够测量的心理特征,包括智商、兴趣爱好、性格、体育、幽默感,甚至爱不爱打手机,所有这些东西都是天生的。其次,后天环境对智力和性格的影响非常有限。先天因素是主要的,后天因素是次要的。
寻找适合自己兴趣的环境,把自己的基因发扬光大——这难道不就是进化论告诉我们的人生意义吗?
4、思维密集度
看博客不如看报纸,看报纸不如看杂志,看杂志不如看书——凡是有这种想法的人,都是极度自私的人。因为他们贪图时间。
接收信息的效率是可以量化的。本书提出一个概念,叫作“思维密集度”。比如一个人以正常的思维速度边想边说一个小时,那么听他说这一小时的话所能得到的信息的思维密集度就是1。然而写文章就完全不同,它可能需要经过修改和润色,一个小时写出来的文章,可能别人5分钟就看完了,那么这篇文章的思维密集度就是12。
公式:思维密集度=准备这篇文章需要的总时间/阅读这篇文章需要的时间
写一本好书可能需要作者从搜集材料开始花几年甚至更多的时间,如果读者两个晚上看完,那么这本书的思维密集度可能会达到几百。
5、如何读书
有很多人总结过读书的技术。总结得最好的大概是名著《如何阅读一本书》(How to Read a Book)。现在在网上可以找到很多关于这本书中阅读技巧的笔记总结。在我看来,此书最牛的地方并不在于任何特殊的技术,而是一种精神。这种精神认为阅读有三个档次:为了娱乐而读,为了信息而读和为了理解而读。首先,只有为了理解某个我们原来不懂的东西而读书,才值得认真对待。其次,读书应该以我为主,而不是以书为主。
在《如何阅读一本书》的基础上,我提倡一种高强度的读书方法,称之为“强力研读”。与《如何阅读一本书》中按部就班的、烦琐的固定套路不同,我们的“强力研读”更像是一种态度和心法。其实我很想给此文起一个英文标题,叫作“Deep Reading”(深度阅读),以与最近心理学家们谈论的训练天才的新成果——“刻意练习”(deliberate practice,deep practice)相呼应。
以下是强力研读的具体做法,它的核心技术是做读书笔记:新书要读两遍。一本书应该读两遍,而且只读两遍。第一遍正常通读,第二遍同时写下读书笔记。
读书笔记的一个重大作用是为自己日后以最快速度重温这本书提供方便,直接看笔记就可以了。还有别的好书等着我们去读呢,所以笔记最好要写到可以取代原书的程度。
强力研读要求读书笔记必须包括四个方面的内容: ①清晰地表现每一章的逻辑脉络; ②带走书中所有的亮点; ③有大量的自己的看法和心得; ④发现这本书和以前读过的其他书或文章的联系。
如果你读得足够多,你会获得一种更难得的经历:感受人类知识的进步。你会发现一个问题在这本书里是这个说法,而过了几年之后有人另写一本书,引用更有力的证据,把整个结论给改变了。有时候你会赞同这个新结论,有时候你会反对。有时候你必须从几本书的几个不同结论中判断哪个才是最靠谱的。有时候你会觉得他们说的其实都不对,只有你知道正确答案。到了这个层次,你已经跟书的作者完全平等了。你甚至可以俯视他们,评判他们之间的高下。这时候你又应该怎么办?写篇文章发表出来!
世界上有很多比读书更重要的事。在做事和读书之间,做事优先。但读书是除实践外迅速积累见识的最好办法。
6、关于记忆
关于超强记忆力,我们需要知道三点。 第一,正常人要是愿意练,也可以练成这么神奇的记忆力。 第二,再强的记忆力,也不能——用一句王朔的话说——“把胳肢窝变成海参”。 第三,特别强的记忆力,反而有害。
真正实用的人才读书不能钻牛角尖,得像诸葛亮那样“观其大略”。爱因斯坦说:“我想知道上帝是如何设计这个世界的。对这个或那个现象、这个或那个元素的谱我不感兴趣。我想知道的是他的思想,其他的都只是细节问题。”
“贵人多忘事”,是因为“贵人”更关注有更高优先级的事。
美国加州大学洛杉矶分校的一对教授夫妻,罗伯特·比约克(Robert Bjork)和伊丽莎白·比约克(Elizabeth Bjork),提出了一个非常漂亮的记忆力理论模型。人的记忆,其实有两种强度:存储强度(storage strength)和提取强度(retrieval strength)。存储强度,决定了这个东西是否进入了你的大脑;提取强度,决定了你能不能把它回想起来。
存储强度,不会随时间减弱!那么为什么我们会忘记一些东西呢?那是提取强度出了问题。如果没有复习,提取强度就随着时间延长慢慢减弱。
1、效率和公平
世界上绝大多数人和事都是平庸的,而且最好的东西还都挤在一起。想要提高效率,就得不公平。
人与人之间财富的差异要比身高的差异大得多。身高是正态分布的,财富却是幂律分布(power law distribution)的。学术上的叫法是幂律分布,民间的叫法则是“80/20法则”。
所以我很反感的一句话是“××无小事”。事情当然有大小之分,无小事就是无大事。
质量控制无小事吗?“80/20法则”最早的应用方向之一,就是质量控制。20世纪50年代,美国一位电气工程师和一位统计学家发现,产品质量问题的来源,总是集中在少数几个地方。如果对所有问题都平等对待,反而什么都解决不好,产品质量远远不行。
2、极简主义
有一个给要做的事情分类的著名方法,按照重要程度和紧急程度把事情分成四类:重要而紧急,重要而不紧急,不重要而紧急,不重要也不紧急。一般人的想法都是要先做重要而紧急的事,最后做不重要也不紧急的事。
“80/20法则”告诉我们应该怎么做事呢?应该追求只做“重要而不紧急”的事!
这就是现在很多人谈论的所谓“极简主义”的生活哲学。
现代社会中有很多“完美主义者”,他们多是不懂轻重缓急的“焦虑症患者”。他们关注各种细节,经常能指出别人的小错误。比如给他们看个PPT,他们很容易注意到上面有哪些标点错误,却不知道你说的核心观点是什么。这其实是种特别浪费时间的性格。
“极简主义”的核心思想就是把最关键的事情做好,省出来时间去玩。这也符合塔勒布在《反脆弱:从不确定性中获益》一书说的“杠铃原则”:做事要注重两端,不管中间。——我要么做最难的事,要么玩或者什么都不做。
如果你想成为一个科学家,你就应该好好学习基础知识,掌握基本技能,比如算算微积分、写写计算机程序,然后尽快找到一个好的导师,在他的指导下,从学徒开始做,做真正的科学研究。
1、物理学的逻辑
判断一个物理理论的好坏不在于这个理论是否符合人的直觉,或者是否够漂亮,而在于它能不能做出预言。
科学家强调事实。科学放弃了从一套最基本的哲学出发推导所有结论的尝试,改为在每一个领域内就事论事地搜集事实。有人指责科学家说你们相信现代科学理论难道不也是一种迷信吗?但科学家其实不迷信任何理论——很多情况下他们完全用不上什么绝学,唯一做的事情就是把事实搜集在一起,就好像集邮一样。只要有证据,反驳一个理论是非常简单的事情。
科学研究的真正关键在于发现机制。科学研究的每一篇论文都是我们从个人感觉到客观事实,从客观事实到因果关系,从因果关系到能推广使用的机制这个过程中的一小步。这个过程的每一步都不是完美的,但只有这么做,我们才能摆脱童稚状态。
2、什么是主流科学
科学研究是一个充满争论的过程。科学家要是不争论,科学就死了。比如几年前有实验号称发现了超光速中微子,就引起了科学家的巨大争论,有人甚至提出各种理论解释,最后被证明不过是实验错误。统计出来的东西尤其不能作为成熟理论,而只能作为科学研究的缘起。科学研究就是这么一个把新思想逐渐变成主流的过程。从这个意义上讲也许真正活跃的科学根本就没主流,或者说主流科学都是死的科学,更严格地说是凝固了的科学。 怎样才算主流科学?你必须能用现有的理论去解释你的新理论。如果主流科学是一棵大树,你的新理论不能独立于这棵树之外。你必须告诉别人这棵树的这几个位置可以长出这么几个树枝来,而这些树枝可以连接到我的新理论上去——这样你的理论就成了这树的一部分。有时候你甚至可以宣布某个树干的真实形态其实不是人们之前想的那样,但你不可能宣布这棵树整个长错了。
3、关于创新:汗水重要还是灵感重要?
美国科学作家史蒂芬·约翰逊(Steven Johnson)在《伟大创意的诞生》(Where Good Ideas Come From:The Natural History of Innovation)这本书中提出了一个叫作“慢直觉”(slow hunch)的概念。约翰逊说,你考察那些伟大发现的真实过程,其实并不是来一个尤里卡时刻一蹴而就的,而是一系列小想法慢慢连接起来积累的结果。你研究一个问题,一开始仅有个模糊的直觉,选择一个方向往下走。很多情况下一个好想法并不是一开始就好,它必须随着研究的深入能跟新想法连接起来,有新的事实支持,慢慢长大的。 所谓“尤里卡时刻”(Eureka),其实是慢直觉积累到一定程度导致突破的时刻。你必须脑子里一直想着这个问题,把所有有用的东西都备齐了,才有可能发现这个关键的新连接。人们关注这个高潮,却没有注意到这个高潮是怎么铺垫出来的。这有点像“渐悟”和“顿悟”,其实没有“渐悟”就没有“顿悟”。
韩非子有句话说,“上古竞于道德,中世逐于智谋,当今争于气力”,这句话用在科学发现这个工作上特别合适。今天的科研工作不能指望才子佳人的浪漫情怀。在科研中依赖一两个关键的“创造性思维”,是错误的策略,会大大降低效率。正确的办法是,多做试验,而且最好手里一直都有好几个项目。
灵感并不值钱。不管是科学家、艺术家还是创业的企业家,他们每时每刻都在产生各种想法,也许100个想法里面只有一个想法最后能被证明是有用的。所以对创新者来说,成功的反义词不是失败,而是平庸,是安全,是什么都不做。只要你愿意把想法一个个拿来尝试,失败就是你的日常生活,成功其实是失败的副产品。
4、发散思维
解决问题有两种思维:集中思维和发散思维。
集中思维是把新想法集中在大脑中的一个特定区域处理。小球就一直在那里打转,如果问题的解决方案也在那里,那大脑很快就能解决它。
但集中思维有个弊端,叫“定式效应”(einstellung effect)。说白了,定式效应就是当局者迷,我们头脑里边已经存在很多定式,一个想法产生后,我们首先会把它直接放到我们那个定式区里,用现有的套路去琢磨它。但可能琢磨半天也找不到答案,因为这个答案其实在“灯火阑珊处”。而这时候如果主动使用发散思维,跳出圈外来换个思路,最后往往能创造性地解决问题。
未有知而不行者,知而不行只是未知。
– 王阳明《传习录》
2025-08-05 21:15:00
本文为周刊第17期,前期的周刊参见:周刊系列。
TL;DR 本期周刊通过几篇博客文章来讲如何构建智能体(Agent): 1) 《大模型驱动的自主智能体》: 关于智能体最经典的一篇文章,介绍大模型驱动的智能体的核心架构,其中主要三个核心部分(规划、记忆、工具使用)的职能分别是什么?以及参考案例。 2) 《构建高效的智能体》(by Anthropic): Anthropic发布的智能体构建指南,阐述什么是智能体以及智能体系统?何时构建智能体?有哪些类型的智能体系统?智能体和工作流的区别?以及如何构建它们? 3) 《构建智能体实践指南》(by OpenAI): OpenAI发布的智能体构建指南,阐述他们对智能体的定义,以及何时构建智能体?智能体的设计原则有哪些?如何做好安全防护? 4) 《智能体的上下文工程》: Manus首席科学家从Manus项目经验中分享构建Agent的实践教训,以及具体在上下文工程中应该怎么做。
如无特殊说明,本文中的Agent或智能体指的都是大模型驱动的智能体(LLM powered agents).
原文:LLM Powered Autonomous Agents
Lilian Weng (翁荔)是前OpenAI安全系统团队负责人,后离职与前OpenAI CTO Mira Murati 一起创业,成为 Thinking Machines Lab 的联合创始人。她的这篇文章发表于2023年6月。可以说,Lilian Weng 是最早意识到 Agent(大模型驱动的智能体)重要性的人,而很多Agent开发者也把她的这篇博客当成了教科书级的存在。
文章一开头,作者就说到:利用大语言模型(LLM)作为核心驱动来构建Agent是一个极富创意的想法(cool concept)。LLM就像Agent的大脑,驱动Agent解决各种问题。在Agent系统中,主要有规划(Planning)、记忆(Memory)、工具使用(Tool use)几个核心部分。
在规划部分,Agent完成两项任务:
类比人类大脑的记忆存储及获取,一般有如下三种记忆:
Agent通过调用外部工具API,可以获取那些不在大模型权重的信息,也拥有了执行任务的能力。比如调用搜索引擎查询信息,调用数据库查询最新数据,甚至编译或执行代码等。
一般的Agent框架都提供了类似框架能力,作者重点介绍了HuggingGPT这一框架,它运用ChatGPT作为指挥中心,从HuggingFace平台上挑选合适的模型来执行任务。整个系统分为四步:1) 任务规划:将用户请求分解为多个小任务;2) 选择模型:将任务分配给不同的专家模型执行;3) 执行任务:专家模型将针对特定任务进行操作,并记录结果; 4) 响应生成:大模型接收执行结果,向用户总结输出。
最后,作者总结了几点挑战,到现在仍是Agent领域所研究的课题:1) 有限的上下文长度,影响反思和规划。2) 规划和任务分解能力方面,大模型在动态调整规划时不如人类灵活。3) 自然语言不够精确,大模型通过自然语言与外部工具交互,可能因为格式生成错误而导致命令不能够被执行。
这是 Anthropic 团队在2024年12月发表的博客,在博客中 Anthropic 总结了过去一年跟其他行业团队合作构建智能体的经验。
关于Agent的定义没有明确标准。有人把能够自主运行、使用各种工具完成复杂任务的自主执行系统称为Agent,也有把遵循预先定义的工作流、按指令执行的系统称为Agent。在Anthropic看来,各种变体都可以归类为 Agentic System(智能体系统),而用 Workflow(工作流)和 Agent(智能体) 来区分:
通常,构建 Agentic System 具有较高的成本和延迟,因此,只有必要的时候才构建。也就是说,如果是简单场景,那优先考虑提示词工程(Prompt engineering)等低成本方案。当确实需要更复杂的解决方案时,面对 Workflow 和 Agent 也有考量标准:对于定义明确的任务,Workflow 能提供可预测性和一致性;而需要更灵活的大模型决策场景时,则考虑Agent.
很多框架可以用来构建Agentic System, 比如 LangChain 的 LangGraph, Amazon Bedrock, Rivet, Vellum 等。使用框架上手容易,但副作用是框架的抽象层会掩盖底层的提示和响应,使得调试困难,而且也会增加应用的复杂度。作者建议开发者优先选择使用大模型API,直接编码实现,如果一定要使用框架,得确保理解框架底层代码。
作者从基本单元(Block)到 Workflow 再到 Agent 逐步介绍其构建方式。
首先从构建Agentic System 的最基本单元(Block)开始:对大模型进行增强,比如检索、调用工具、记忆(读写外部存储)等。一个建议的做法是,通过MCP(Mode Context Protocol)协议来与三方工具集成交互。
下面作者介绍了几种典型的 Workflow 及其构建方式。
1、Prompt chaining (提示词链)
Prompt chaining 是将一个任务分解为一系列步骤,其中前一次大模型调用输出将会处理成为下一次大模型调用的输入提示词,这样每一次大模型的调用都是处理简单的任务,用调用时长的代价来换取更高的准确性。常见的案例有:生成营销文案并翻译成其他语言,先编写文档大纲再根据文档大纲编写文档。
2、Routing (路由)
Routing 工作流通过大模型对输入进行分类,并将其定向转到专门的后续任务。常见的案例有:根据用户咨询问题类别导向不同的下游流程,将简单的问题路由到小模型而将困难的问题路由到更大的模型以优化成本和速度。
3、Parallelization(并行化)
并行化工作流是让大模型将同一任务分给多个下游流程,或者将一个大任务分解成多个子任务给下游流程,然后通过程序聚合它们的输出。前一种作者称为Sectioning(分段), 将一个任务分段为独立的子任务并运行,我觉得有点像 MapReduce, 如:让一个模型处理用户查询,让另一个模型对其不当内容或请求进行筛查。后一种作者称为 Voting(投票),多个实例运行相同的任务以获得不同的输出,如:审查同一段代码的漏洞,多个提示词进行不同方面的审查,如果发现问题则标记出来。
4、Orchestrator-workers (协调者-工作者模式)
在协调者-工作者模式的工作流中,协调者是一个中央控制的大模型单元,它分解任务并将其委派给其他大模型工作者,并综合输出结果。
5、Evaluator-optimizer(评估者-优化者模式)
在评估者-优化者模式的工作流中,一个大模型调用生成,而另一个大模型调用(评估者)在循环中提供评估和反馈。这种工作流适合通过迭代来改进大模型生成效果的场景,如文档翻译,一个大模型负责翻译和优化,另一个大模型负责评估和反馈。
自主Agent可以处理复杂任务,但实现起来往往很简单,它通常是大模型在一个循环中根据环境反馈使用工具。在执行过程中,Agent从用户或环境中获得反馈,自主规划并操作。而Agent的自主性也意味着更高的成本,以及潜在的错误累积。作者举了他们尝试过的Agent,如一个用于解决 SWE-bench 测试集任务的编码Agent; 调用 Claude 来操作电脑完成任务。
上述的 Workflow 和 Agent 的模式也是可以组合和定制使用的。
最后,作者总结了他们在实现Agent中的三点核心原则:
原文(文档下载链接):A practical guide to building agents
今年5月,OpenAI也发布了一篇构建Agent的指导文档。
与Anthropic 的博客文章观点不同,OpenAI很明确的指出了Agent是能够代表用户独立完成任务的系统。那些尽管继承了大模型但是没有使用它来控制工作流程执行的应用都不是Agent,比如简单的聊天机器人、预先编排工作流程的大模型应用等。也就是说,OpenAI认为,Workflow不是Agent,它也没有使用Anthropic提的比较泛化的词:Agentic System.
在这个问题上,OpenAI 的观点近似 Anthropic, 认为 Agent 适合处理复杂问题,适用于那些传统确定性和基于规则的方法难以处理的工作流程。比如:复杂决策场景,难以维护的规则,或严重依赖非结构化数据的场景。
从最基本的形式看,Agent由三个核心组件构成:
不同的模型在任务复杂度、推理时长(latency)和成本方面各有优劣,并不是每项任务都需要性能最强的模型,因为性能更强往往也意味着推理时长更慢、成本更高。
OpenAI给出的建议是:先采用能力最强的模型构建Agent原型,以建立性能基准。在此基础上,尝试替换为更小的模型,以检验其性能,同时权衡推理时长和成本。这样避免过早的限制Agent的能力。
通过使用系统和应用的API,工具可以扩展Agent的能力。而对于那些没有API的遗留系统,Agent则依赖与网页或UI直接交互。
每个工具应该有标准化的定义,以便实现灵活的工具与Agent之间的多对多关系。OpenAI这里提到的标准化定义的工具(tools)类似于Anthropic所提到的符合 MCP 协议的工具,以及Google所提出的符合A2A协议的Agent.
Agent通常需要三类工具:
高质量的指令对Agent来说至关重要,清晰的指令能减少歧义,提高决策准确性,让工作流执行更流畅、错误更少。写好Agent指令需要注意以下几点:利用现有文档、引导Agent拆解任务、定义明确的动作、以及覆盖边界情况。
在模型、工具、指令三大核心组件具备后,接下来就需要考虑编排模式,让Agent有效执行工作流。
一般编排模式分类两类:
单Agent系统可以通过不断增加工具来处理更多任务,这种模式可控性更强,评估和维护也更简单。
在单Agent系统模式下,Agent的作业运行通常由循环来实现,让Agent一直执行,直到满足退出条件为止。
一般来说,单Agent系统可以满足大多数场景,当场景逻辑复杂到难以维护、或添加了太多工具导致过载时,就要考虑多Agent系统了。
多Agent系统有很多种设计方法,最常用的是以下两种模式:
1、管理者模式(Manager pattern): 一个中心管理者Agent通过工具调用来协调多个专用Agent(agents as tools), 每个Agent处理特定任务。
2、去中心化模式(Decentralized pattern): 多个Agent以平等的方式去中心化协作,基于各自专长互相交接任务(agents handing off to agents)。
Guardrails 可以帮助开发者管理数据隐私风险,并确保大模型不被滥用。
Guardrails 需要通过分层防御机制来建立,单一的防护很难做到足够安全。
Guardrails 的类型包括:
原文:Context Engineering for AI Agents
季逸超(Yichao ‘Peak’ Ji)是Manus的联合创始人兼首席科学家,最近他在Manus官网发布了一篇名为 Context Engineering for AI Agents: Lessons from Building Manus 的博客,从技术角度总结了构建Manus过程中的一些经验。
作者回顾了Manus立项初期面临的抉择:是使用开源模型来训练一个端到端的智能体模型(agentic model),还是基于前沿模型的上下文学习能力构建一个Agent. Manus团队之前有过创业的经验教训:当他们从头训练了一个模型,GPT-3一经推出,耗费大量成本训练的模型变得无关紧要。因此,在Manus上,团队选择了上下文工程。作者比喻说:“如果模型进步是上涨的潮水,我们希望Manus成为那条船,而不是固定在海床上的柱子。”总结上下文工程经验如下。
作者认为 “KV 缓存命中率”是Agent生产阶段最重要的单一指标,因为它直接影响延迟和成本。这也令我想到计算机领域的一句著名的话:“计算机科学中只有两个难题:缓存失效和命名。”
一个典型的Agent处理任务过程是:在接收用户输入后,Agent通过一系列工具调用链来完成任务。在每次迭代中,模型根据上下文选择一个预定义动作并执行,然后观察结果。动作和观察结果被附加到上下文中,形成下一次迭代的输入。这个循环会持续进行,直到任务完成。这个过程中,上下文会不断增长,根据Manus的数据统计,平均输入和输出token的比例约为100:1.
具有相同前缀的上下文可以利用Transformer架构的KV缓存机制,这将大大减少了首token的生成时间和推理成本。根据Manus团队的计算,使用Claude Sonnet时,存储的输入token成本为0.3美元/百万token,而未缓存的成本为3美元/百万token,相差十倍。
因此,提升KV缓存命中率的关键实践有:1) 保持提示词前缀稳定;2) 使得上下文只在尾部增加;3) 在需要时明确标记缓存断点,这是为了手工告诉大模型哪些可以被缓存复用。
通过使用工具让Agent能力更强,但如果任由用户自定义工具,也会造成不可预测的结果。Manus团队的做法是:避免在Agent执行迭代过程中动态添加或删除工具。一部分原因也是工具定义在上下文的前部,会导致KV缓存失效。采取的替代做法是使用上下文感知的状态机来管理工具的可用性,以遮蔽掩码的方式来允许或阻止某些工具调用动作。
虽然当前业界前沿大模型都提供128K甚至更多的上下文窗口,但实际场景中这还远远不够,不仅因为过程中的观察结果往往包含了大量非结构化数据及文件,导致很容易超出上下文限制,而且长上下文也会导致模型性能下降、成本提升等问题。
Manus则将文件系统作为上下文,大小不受限制,持久化,而且Agent可以直接操作。不仅将文件系统用作存储,还用作非结构化的长期外部记忆。
Manus在执行任务中,会生成一个todo.md的文件,用来记录任务列表,并在执行过程中更新它。这是一种操控注意力的机制。Manus平均完成一个任务需要大约50次工具调用,而过程中依赖大模型进行决策,这个作业链条太长,以至于大模型很容易偏离主题或忘记早期目标。因此,Manus通过不断重写代办事项列表,并将其目标复述到上下文的末尾,进而将代办推进模型的近期注意力范围内,避免了上述问题。
大模型会产生幻觉,环境会返回错误,工具会出现异常行为,这些都会导致Agent犯错。在发现错误后清理痕迹继续重试并不是推荐的做法,因为清楚错误信息会移除证据,这会让大模型在下一步理解时缺失信息。因此,最有效的方法是将错误保留在上下文中,让模型看到错误的行动及其观察结果,以降低重复错误的可能性。
少样本提示(Few-Shot Prompting)是大模型提示词工程中常用的方法之一,通过在提示词中增加少量样本示例让模型来模仿其样例,以提高输出的准确性。但在Agent中,这种方法也可能适得其反,模型遵循样本模式,重复类似行动,导致过度泛化,甚至产生幻觉。因此,推荐的做法是增加多样性,在模板中增加顺序或格式上的微小噪音,在控制中增加随机性。
以上是作者在构建Manus过程中总结的实践经验。
Agent = LLM + memory + planning skills + tool use
This is probably just a start of a new era :)
– Lilian Weng, 2023-6-27, on x
2025-07-22 21:58:00
本文为周刊第16期,前期的周刊参见:周刊系列。
TL;DR 本期周刊介绍 Andrej Karpathy 的三次演讲/YouTube视频课程,通过对这些视频的解读,主要阐述下面三个系列的问题:1. 为什么说我们处在软件3.0?它跟软件2.0和1.0的区别是什么?为什么说大模型相比基建(电网),更像是操作系统,而且还是1960年代的操作系统?2. ChatGPT是怎么被训练出来的?预训练、监督微调、强化学习是什么关系?分别对大模型产生了哪些影响?大模型未来的发展方向是什么?3. ChatGPT的能力边界是什么?业界那么多AI应用的差别是什么?除了聊天对话还能用它们干啥?
Andrej Karpathy 是一位出生在捷克斯洛伐克的AI计算机科学家,博士毕业于斯坦福,师从李飞飞。毕业后成为OpenAI的创始成员。2017年加入特斯拉,成为其人工智能总监,领导特斯拉智能驾驶的机器视觉团队。2023年返回OpenAI,不到一年后决定创业,方向是AI教育领域。按照他自己的说法,教育是他热爱的事业。也确实如此,在斯坦福期间,他创作并担任主讲的课程《CS 231n:卷积神经网络在视觉识别中的应用》,一度成为该校学生规模最大的课程。而他在YouTube上发布的AI教学视频也深受网友喜爱。
本期周刊将介绍他的最新一次演讲及两则YouTube教学视频。
今年6月17日,Andrej Karpathy 在 Y Combinator AI Startup School (与会者还有奥特曼、李飞飞、马斯克等人)上发表了名为 Software is Changing (Again) 的演讲,提出了 软件3.0(Software 3.0)的概念。Andrej Karpathy擅长提出一些新概念,比如之前的Software 2.0 和 vibe coding(氛围编程)。下面简要总结下他的演讲。
软件从诞生之后的70年里,在根本层面上并没有太大的变化,但在过去的几年,却发生了两次根本性的改变。
软件1.0时期,大量的软件都由人来编写,在GitHub上,存储了不同类型的软件仓库,可以将它看成是一个大的“软件地图”。“软件1.0”是程序员为计算机编写的代码。
软件2.0时期,不需要直接写代码了。“软件2.0”基本上是神经网络,或者说神经网络中的权重参数(weights)。软件2.0时代的GitHub是什么呢?Andrej Karpathy 认为是 Hugging Face. 在这里能看到那些软件(模型)。
现在,我们进入了一个新的时期,神经网络也可以编程了,或者可以将神经网络看成是可编程的计算机,而运行在其上的编程语言则是提示词(prompts),这种编程语言可以用英语(或其他人类语言)来写。
举个例子,如果要实现情感分类这一个任务,那么:
我们处在软件3.0时期,而大家可能也已经注意到了,GitHub上的很多代码,已经不再是传统意义上的代码了,里面夹杂了大量的英文。这是一个正在增长的全新编程范式,我们在用日常使用的语言来编程。
有人说:AI是新电网,确实如此,大模型给人的感觉就像是一种基础设施。那些大模型厂商,如OpenAI、Gemini、Anthropic等,这些公司投入大量的资本开支(CAPEX)去训练大模型,就是在建设一张新“电网”。然后他们通过API向用户提供智能服务,又投入持续的运营开支(OPEX),本质上就像是电力公司把电输送到千家万户一样,把智能输送给每个人。
用户则按使用量计费来使用大模型服务,比如按百万token来付费,这跟我们使用水电的逻辑是一样的,而作为用户,我们也会对这些API服务提出类似公共事业的需求,低延迟、高安全、高可用等等。一旦这些公共基础设施发生故障,影响也是严重的,就像电力故障会导致工厂停工一样,大模型的宕机也可能导致我们陷入无法工作的状态。(我在写这则周刊时,刚好看到网上有关于Claude Code故障导致程序员无法工作的吐槽。主管问程序员那没有Claude Code之前是怎么干活的?程序员则回怼:开玩笑吗?难道我们今天还要像野蛮人一样自己一行一行写代码?)
不过相比于“电网”,Andrej Karpathy 认为大模型更恰当的类比是“操作系统”。因为它不是单纯的商品,而是生态的核心。像操作系统一样,大模型有开源也有闭源,有很多家提供厂商,最终可能会演进成少量的几个生态。LLM本身就像是CPU,上下文窗口则像内存,大模型应用通过调度这种“CPU”和“内存”来解决问题。
我们现在部署大模型的资源成本很高,这很像1960年代的大型机时代,所以大模型都被集中部署在了云端,用户只能够通过API来调用它,就像当年要使用瘦客户端去接入大型机一样。没有人能独享大型机,所以产生了分时技术,而今天我们对大模型的使用如出一辙。大模型的PC(个人电脑)时代还没有到来,从目前的经济性来看还不允许,但未来会是这个趋势。 另外,我们与大模型的交互通过 ChatBox 的文本交互,这也很像计算机时代初期只能通过终端命令行进行交互,属于大模型的通用 GUI(图形界面)交互方式还没有被发明出来。
不过,在一些特定场景下的GUI交互有应用了,比如在编码领域,Cursor 就是一个例子。大家都知道,大模型能力很强,几乎包含了所有公开的人类知识,但同时又存在幻觉等严重问题,对此,在特定场景下的交互设计则尤为重要,以规避他的缺陷,又可以同时享受它的超能力。Andrej Karpathy 把 Cursor 这类应用叫作“半自主应用”(Partial Autonomy Apps), 即保留传统界面,让人类可以手动完成所有工作,同时由集成大模型,更高效的完成更复杂的工作。在Cursor中,它给用户提供了多种选项来控制自主程度:
实际上,在真正的业务场景,并不是大模型越自主越好。AI太过主动,有时反而会拖慢效率。就像钢铁侠的战衣一样,它具备自主执行任务的能力,但更多的场景,是斯塔克在操作着它。在当下大模型还不完善的情况下,半自主Agent是比较合适的选择。
总结一下,我们处在软件3.0的时代,有大量的代码需要重写,而重写的语言将是人类语言。大模型不仅像是“电网”,更像是操作系统,而现在的阶段则是1960年代操作系统刚起步的时候,这是绝佳的时机。
今年年初,Andrej Karpathy 在 YouTube 上发布了一则三个半小时的视频,名为 Deep Dive into LLMs like ChatGPT, 深入浅出地讲解了大模型的原理。以打造ChatGPT为例,从预训练(Pre-training)、微调(SFT)和强化学习(RL)三个方面来讲解大模型的构建过程。为了节省大家的时间,这里将三个半小时的视频内容总结成如下6000字左右的文本。
本视频适合对神经网络有入门基础的人学习,如果希望学习神经网络入门知识,欢迎参阅拙作《从神经网络到 Hugging Face: 神经网络和深度学习简史》。
大模型是通过预训练得到的。预训练分为以下几步:
1、下载并处理互联网数据: 比如Hugging Face收集整理并开源的 FineWeb 数据集,收集了互联网上公开可用的高质量文本数据,经过清洗、筛选,最终只有44TB量级。这个过程是这样的:首先是从互联网上爬取数据,Common Crawl 这个组织从2007年开始持续扫描互联网,到2024年已经索引了27亿个网页,Common Crawl 爬取的这份数据是原始的互联网数据。接下来便要经过大量的过滤和清洗工作:URL过滤(排除一些黑名单网站)、文本抽取(从原始的HTML网页中提取纯文本内容)、语言过滤(如FineWeb专注英文因此主要保留英文内容)、去重、PII信息移除(剔除个人隐私数据),然后才能得到像FineWeb这样的数据集。
2、tokenization: 第二步是将这些文本数据输入进神经网络,如果直接将文本的UTF-8编码输入给大模型,这些原始的二进制bit序列将非常长,会浪费神经网络的资源。因此,一般采用对连续bit分组进行编码,比如一个单词或一个emoji,这样就可以压缩序列长度。实际场景中还会使用一些优化方法,比如字节对编码方法(Byte-Pair Encoding, BPE),就是针对数据里高频出现的连续符号组合进行编码,比如 “mac”的编码是116,”book”编码是32,116,32对(”macbook”)经常出现,可以给它一个新的编码 256 来替换。这种将原始文本转换成符号(token)序列的过程就是 Tokenization.
3、神经网络训练: 这是计算最密集的工作阶段,所有训练大模型的算力消耗基本上集中在这里。训练阶段的主要目标,就是建模token在序列里是如何关联、彼此衔接的规律,换句话说,就是让大模型学会在一个token序列里,什么样的token更有可能出现在另一个token之后。大模型的数据就是一段长度的token序列(这个长度被称为窗口),而输出则是对下一个token的预测。因此,训练大模型就变成了通过数学方法,更新大模型,让大模型对正确token的预测概率更高,对错误token的概率更低。这里面的数学方法主要是向量计算。
4、推理: 前面讲的是大模型的学习过程,而推理则是大模型生成内容的过程。推理过程大概是这样:提供给大模型一些起始token,大模型返回一组概率分布,然后根据高概率采样获得的下一个token结果反馈给大模型,继续得到下一个token,不停重复这一过程,最终生成一段文本。
以上就是大模型的训练和推理过程。
GPT-2在2019年发布,跟当前的GPT-4在基本架构上没有本质区别。它有16亿个参数,上下文长度只有1024,也就是说从数据集中采样窗口时不会超过1024个token. 训练GPT-2的数据集规模是一千亿个token, 相比之下,FineWeb的数据集token总量上15万亿。2019年OpenAI训练GPT-2的成本估计约为4万美元,而今天复刻一个GPT-2仅需一天时间,成本估计100美元。原因是数据集质量更高,更重要的是硬件算力飞速提升了。
相比之下,更新的Llama 3 则规模大得多,4050亿参数,15万亿token的训练数据。在Meta发布Llama 3的技术论文中详细说明了其训练过程。
GPT-4、Llama 3 都属于基础模型(Base Model),还不能直接作为对话助手模型使用,而ChatGPT模型被叫作 Instruct 模型,被用来做对话模型。如果我们在对话中直接使用基础模型,会发现根本用不起来。使用网站 Hyperbolic 可以在线体验这些基础模型,当用户输出问题时,发现它会随机的输出一些结果,因为它不是在回答问题,而是在做自动补全。可以把基础模型理解成一个拥有大量知识的人,按照统计规律给这些知识建模,给他一些信息输入,他便从记忆里复述知识内容,但会因为概率性统计而出现“记忆偏差”。
要想让基础模型变成可以对话的助手,让它能够回答问题,进行多轮对话,并理解意图,就需要后训练处理。
后训练方法有多种,典型的有监督微调(SFT)。在SFT中,训练数据集从互联网数据变成了由人工标注的数据,让模型学习如何在对话中回答人类问题。比如如下这条语料:
Human: Why is the sky blue?
Assistant: The sky appears blue because of Rayleigh scattering...
当它被tokenization后,模型看到的是token ID,并不理解它是对话。因此,一般大模型厂商会采用一些内部的特殊编码来标识出对话格式。比如 GPT-4 会用如下特殊token来标记对话结构: IAM_START 表示发言开始,IAM_END 表示发言结束,IAM_SEP 用于内部分隔,USER / ASSISTANT 表示谁在说话。用户问 “What is 2 + 2?” 会被编码成token序列
OpenAI 在2022年发布的 InstructGPT 论文中首次披露了如何通过 SFT 把大语言模型变成对话助手,当时 OpenAI 从 Upwork、ScaleAI 这类外包平台雇佣了大量的人类标注员。标注员的任务是想出一个用户问题并写出理想的AI助手回答。为此,OpenAI 还制定了一份详细的标注指南来指导标注员写好标注数据。
不过,经过这些年的发展,SFT的数据集不完全是人力标注的数据,而是发展成由大模型来生成、再由人工来修改的半自动化方式。
大模型有时候会凭空捏造内容、胡编乱造,但还说得头头是道,这种被称为大模型的幻觉(Hallucination)。虽然现在大模型的幻觉已经改善不少,但本质问题并没有消除。
首先我们得理解幻觉是怎么产生的。比如在训练的数据集里有如下对话数据:
Human: Who is Tom Cruise?
Assistant: Tom Cruise is a famous American actor and producer...
Human: Who is John Barrasso?
Assistant: John Barrasso is a U.S. Senator from Wyoming...
Human: Who is Genghis Khan?
Assistant: Genghis Khan was the founder of the Mongol Empire...
这些信息真实存在,回答也很合理。但如果在测试时问一个大模型现实里不存在的名字,比如问一个早期幻觉比较严重的大模型 Falcon-7B :
Who is Orson Kovats?
大模型就会根据统计规律,凭空捏造答案:
Orson Kovats is an American author and science fiction writer.
说得煞有其事,但完全是假的,并且每次问它这个问题,它回答的结果都不一样,也都是错的。
幻觉的根源在于,大模型只是学会了这类问题的回答风格,实际上缺少该问题的知识,也无法分辨真假。本质上大模型是一个概率性token补全机器,没有检索事实的能力。
不过如果问新版的ChatGPT,比如 GPT-4 Turbo,同样问这个问题:
Who is Orson Kovats?
它通常会说“我没有找到关于 Orson Kovats 的信息”,或者显示“正在搜索网络……” 这是因为现代的大模型开始使用工具调用(Tool Use)联网检索以避免幻觉。如果把“联网搜索”选项关闭,GPT-4也会倾向于说“这个人似乎不在我的训练数据中”,而不是胡编。这是因为在训练时增加了类似不确定性问题的数据集,让大模型学会在不确定的场景下说“不”。这是缓解大模型幻觉的两个主要方法。
大模型的训练和推理,都是基于从左到右的token序列,每个token的生成都依赖上下文,模型其实是在计算下一个token的生成概率。因此模型不擅长计数、拼写等细节任务。
总结一下,SFT 阶段就是把基础模型微调成一个对话助手,方法和预训练基本一样,区别是数据集:预训练使用互联网数据,而 SFT 增加了人工标注的对话数据集。
最后一个训练阶段是强化学习,强化学习可以类比为模型“上学”。人类通过上学来提升能力,大模型也一样。通过这个过程让大模型更擅长解决问题。其实,模型在不同阶段的训练方式,也很像人类接受教育的不同方式。可以拿教科书中的三类知识篇幅来类比大模型的三个训练阶段:
先看SFT怎么做,如下图,对于求苹果单价的问题,人类标注员在为训练集构造解题数据时构造了四种解法,但人类无法判定哪种是最优解法,因为人类的认知和模型的认知存在本质性差异:对人类简单的步骤(如心算)对于模型可能超负荷,而模型掌握的博士级知识(如物理公式)对于人类来说则很难,而人类标注的合理步骤则可能包含模型未学习的知识断层。
强化学习的运作机制是: 1、批量生成解决方案,模型生成数千条解法;2、对结果进行评估和筛选,区分出正确解法(绿色路径)和错误解法(红色路径); 3、模型自我优化,通过参数更新并强化绿色路径的生成概率。
预训练和SFT早已经是行业标准,强化学习则还处于早期发展阶段,如何定义“最佳路径”、如何筛选数据、如何设置训练参数等都是强化训练的实际难题。
OpenAI是最早在大模型上探索强化学习的公司,但公开信息较少,而DeepSeek 发布的R1论文则是首次系统化公开强化学习的过程,这对于强化学习的发展至关重要。而DeepSeek R1论文显示,随着训练的深入,大模型涌现出“长思维链思考”能力(答案变长了,模型开始主动进行反复推理、自我校验、多角度尝试),模型自然学会了人类式的“思考过程”。
除大语言模型外,实际上强化学习在AI的其他领域早已有验证,这方面的经典案例是AlphaGo. 在监督学习模型下,AlphaGo学习人类顶尖棋手的棋谱,模仿到一定程度后会封顶,无法超越人类。而强化学习模型下,AlphaGo自我对弈,迭代试错,专注于如何赢棋,不受人类局限,最终超越人类棋手。比如在与李世石的对弈中,走出了人类难以想象的第37手。
前面提到,强化学习训练过程中设定答案,由大模型探索解决方案,这种场景使用于数学、代码等有明确答案的可验证领域。但是对于创作、总结等没有标准答案的不可验证领域,就需要借助人工反馈了,这就是 RLHF(基于人类反馈的强化学习)。比如,对于“生成一个关于鹈鹕的笑话”这一任务,需要人类对模型生成的结果评价是不是好笑。但模型训练每轮生成成千上万个样本,人工评审不可行。对此的解决办法是使用“奖励模型”(Reward Model)来代替人类。
具体做法是:1、对人类偏好建模,人类对一小批样本排序打分,作为训练奖励模型的数据集。2、单独训练一个神经网络作为奖励模型,学习模仿人类的排序。3、用奖励模型代替人类进行判定打分,持续进行强化学习。
RLHF的劣势也由此而来,因为奖励模型上通过少量人类排序数据训练出来,因此实际不能等同于真实人类的判断,导致存在偏差。而大模型在RLHF中,在经过反复迭代后,会找到“非人类预期、但评分极高”的样本,这种就是“对抗样本”。比如鹈鹕笑话中,初期模型越来越好,但迭代到一定程度,会出现”the the the”这类无意义的输出,但奖励模型竟然打出满分1.0,认为这就是最佳笑话。
因此,RLHF需要在训练过程中反复发现对抗样本,再修改,不断补漏洞。
最后,回顾下大语言模型的三个训练阶段:1、预训练:模型学习“教科书”,阅读大量互联网内容,形成通用语言理解和知识压缩能力。2、监督微调(SFT):模型参考“标准解题过程和答案”,学习人类标注的理想对话和解题过程,成为合格的解题和对话助手。3、强化学习(RL):模型反复做“练习题”,通过反复尝试、调整找到更有效的解题方法,最终形成强推理能力,而不是简单的模仿。对于没有标准答案的“作文题”,则采用RLHF方式加入人类偏好反馈。
对于大模型未来的发展方向,可能发生在如下方面:
今年2月,Andrej Karpathy 又发布了名为 How I use LLMs 的视频,花了两个多小时详细讲述了他使用大模型应用的一些方法和技巧。这里用2500字的文字简要概括下这两个多小时的视频内容。
关于大语言模型的基础知识和ChatGPT的原理知识在上则视频解读已经介绍过,这里就不再详述。自从OpenAI推出ChatGPT后,大模型应用的生态快速发展起来,目前已有多家厂商推出类似应用。如 Google 的 Gemini、Meta 的 meta.ai、微软的Copilot、Anthropic的Claude、xAI 的 Grok、Mistral 的 LeChat,还有国内厂商的应用,如 Deepseek、字节的豆包、月之暗面的kimi、阿里的通义千问、腾讯的元宝,等等。这些Chat应用有很多,要想了解它们的优势和排名情况,可以参考 Chatbot Arena 或 Scale 的 SEAL 排行榜。下面介绍以 ChatGPT为例来介绍这类大模型Chat应用。
要想用好ChatGPT,首先得知道它的能力边界。ChatGPT的本质是一个1TB的“压缩文件”,其知识源于预训练时对互联网内容的压缩(因此存在知识的时间限制,截止时间为训练的数据集抓取的时间),其“性格偏好”则由后训练阶段标注员通过示例来设定;对于互联网上频繁出现的内容,其“记忆”则更清晰。因此,适用于问非最新的、互联网上常见的知识,但答案也非绝对正确。
与ChatGPT互动时,对话会越来越长,这些对话内容会成为下一次对话输入给ChatGPT的上下文,上下文窗口越长,会导致两个问题:一是不相干的信息会让模型分心,从而干扰正确的输出;二是导致模型运行的速度变慢,计算成本也会增加。因此,如果切换话题,则最好开启新的对话窗口。
不同模型的性能差异也大,大型模型(如GPT-4.0)更强但成本也更高,小型模型(如GPT-4.0 Mini)则较弱、但成本低,运行速度也更快。
Andrej Karpathy 所称的“思考模型”(Thinking Model)一般被叫作“推理模型”(Reasoning Model),这里保留称之为“思考模型”,也便于跟inference 的中文翻译“模型推理”区别开来。
在有些AI应用(如Perplexity)上提供了“深度思考”(Deep Thinking)的选项,启用后会使用“思考模型”(如 DeepSeek R1、OpenAI 的O系列模型)来推理,这类模型经过强化学习训练而来,形成了类似人类的长思维链思考策略,适合解决数学、编程等复杂问题,但缺点是响应时间长(较长的思考过程)。
下面 Andrej Karpathy 介绍了他在使用ChatGPT等AI应用中的一些场景和技巧。
大模型本身的知识有截止时间,如果需要获取最新信息则需要调用大模型的搜索能力。Perplexity 和 ChatGPT都集成了“搜索网页”按钮,用户选择后大模型会调用工具进行互联网搜索,对获取最新信息有帮助。
深度研究是最近出现的能力,在 ChatGPT Pro (Plus版有使用次数限制)上提供,当启用这个选项,丢给ChatGPT一个课题后,它便开始结合思考和多次互联网搜索,查阅大量资料,然后进行思考分析,约十分钟后给出研究报告结果。Perplexity 和 Grok 也有类似功能。
目前很多大模型应用都支持用户上传文档文件,大模型会将它转换为文本并加载到上下文窗口中,这对于辅助阅读论文、阅读书籍尤为帮助。
通过集成Python解释器,让大模型生成Python代码,并调用解释器让其返回结果。这对于精确的计算场景非常有帮助,因为大模型的幻觉,它不擅长精确的数字计算,而通过大模型生成代码,又编译器来运行程序得到精确结果。
让ChatGPT扮演初级数据分析师,收集数据(比如OpenAI历年估值)、可视化(绘制图表)、趋势拟合和预测(用SciPy曲线做线性拟合)
编写自定义应用,通过生成代码在浏览器中直接运行,无需部署。
利用 Claude Artifacts 和 Mermaid Markdown 库,可以对文本(比如一本书)生成概念图,将内容逻辑可视化出来,便于用户理解。
通过IDE处理本地文件,调用大模型来辅助代码编写。甚至可以将控制权交给它(Cursor的”Composer” 功能),用户则发号施令让它完成编程工作。Andrej Karpathy 称之为 “氛围编程”(Vibe Coding)。
ChatGPT可通过麦克风图标按钮实现语音传文字,用户无需打字;另外,通过应用内置的朗读功能,将文本转换为语音实现语音交互。
Google 的 NotebookLM 可以将用户上传的数据(如PDF、网页、文本等),根据用户要求生成定制播客,供用户在散步、开车时收听,不仅炫酷,也很实用。
DALL-E等模型可以根据文本提示词生成图像,ChatGPT也支持了这一功能。
ChatGPT移动端的“高级语音模式”支持通过摄像头来实时识别物体。
VO2、OpenAI Sora等工具可以生成高质量视频。
大模型应用更新迭代非常快,同时各工具也侧重不同领域做差异化竞争,如Perplexity强于搜索,Claude 强于长文本,Cursor强于编程,ChatGPT是全能型选手。
不过要注意的是,大模型本质上是知识的压缩文件,要留意它的能力边界。
AGI is a feeling. Like love. Stop trying to define it.
– Andrej Karpathy
2025-07-13 18:12:00
对当代中国人而言,影响最大的两个人就是毛泽东和邓小平。前年我读了傅高义的《邓小平时代》,对邓小平的生平有了全局的认识,也折服于他为人处世的智慧。作为邓小平的传记,全书23章,但作者仅仅用了前二章描述邓小平从1904年出生到1974年的70年,而绝大部分笔墨都用在了1976年后的经历,因为在此之前的历史,都会围绕着一个人,那就是毛泽东。
虽然此前我已经读过一些毛泽东的文章,看过他的很多故事,但今年还是第一次完整的读完他的传记,也就是中共中央文献研究室编撰的《毛泽东传》。在选择传记前,我对比过国内外不同版本《毛泽东传》,最终选择了这本,考虑到它最完整,也相对客观。全书165万字(是《邓小平时代》48万字的三倍多),从1893年出生到1976年去世,共六卷85章,读完花了不少时间,收获也很大。我很想写一篇读书笔记,但考虑到难以写周全,因此改为读《毛泽东传》对个人的启发,这样也避免了对毛泽东评价而可能引起的争论。(就个人而言,比较认同邓小平对毛泽东的评价。)另外,书中有大量关于政治和军事上的描写,这方面的经验对我们普通人用处可能不大,因此我选择那些对于个人成长有帮助的内容,总结整理如下。
毛泽东酷爱读书是闻名的,而且他会对喜爱的书反复阅读,据说《资治通鉴》读了17遍,不过《毛泽东传》中没有记载。传记中提到,他手不离书,晚年因为眼疾改为身边的人读书给他听,最后的读书时间是在1976年9月8日,也就是在临终前一天,在医生抢救的情况下读的,真的是“活到老,学到老”。
毛泽东的读书有几个特点。一是读书多。哲学、历史、文学、政治、经济,古今中外,经典的冷门的都有,一生读过多少书,无从考计,但他在各地居所留下藏书统计有1.5万册,哪怕只读了其中的三分之一,那也是五千本。
二是“不动笔墨不读书”,这是他的老师徐特立教的读书方法。在读书的过程中,经过认真思考和消化,把自己的心得和看法记下来。这种习惯,从他二十岁在湖南师范学校读书开始,一直坚持到生命的最后。比如在延安时期阅读苏联哲学教科书,就留下了两万多字的批注。
三是有目的性、系统性的读书。毛泽东不是为了读书而读书,而是为了解决当下或者未来的问题而读书。在年轻的时候,他在寻找方向,因此阅读了大量哲学和伦理学的书,包括孔、孟、程、朱、陆、王的儒家和理学,以及康德、黑格尔、斯宾诺莎等西方哲学,而年轻时期对他影响最大的是伦理学,特别是泡尔生的《伦理学原理》。在他看来:“伦理学是规定人生目的及达到人生目的的方法之科学。”在这个时期的读书中,毛泽东将他的主张概括为两点:一个是“精神上的个人主义”,即强调“充分发达自己身体及精神之能力”,力求达到最高境界,实现自己的理想和价值。二是“现实主义”,即不能脱离现实去追求虚幻的理想和价值,而要争取在有限的时间里实现自我。可以说,年轻时候的读书让他明确了人生的方向。
在延安期间,他又开始阅读克劳塞维茨的《战争论》、《孙子兵法》、苏联的军事著作等书籍,不仅如此,还组织《战争论》研究小组,据参加小组学习的人回忆:“采取的方式是每周讨论一次,晚上七八点开始,讨论到深夜十一二点钟。”毛泽东将这些读书学习,结合第一次国共内战十年的军事斗争教训,写成《中国革命战争的战略问题》,并指出:“战争是有规律的。战略问题是研究战争全局规律的东西。战争的胜负不仅取决于作战双方的军事、政治、经济、自然诸条件,而且还取决于双方的主观指导能力。因此,任何指导战争的人不能不研究和不能不解决这个问题。”
红军长征到陕北后,毛泽东又开始大量阅读哲学书籍,主要是苏联哲学教科书,如西洛克夫、爱森堡所著的《辩证法唯物论教程》,米丁主编的《辩证唯物论与历史唯物论》等,他的目的上总结长征前中国革命的经验教训,主要是教条主义和经验主义而造成的军事上的失败。毛泽东将他们总结成了《实践论》和《矛盾论》。
1959年庐山会议时,毛泽东给会议准备了14个题目,第一个就是读书,读苏联教科书《政治经济学》。因为“大跃进”的盲目浮夸导致经济受挫,像历来的重要历史时刻一样,毛泽东想要带领大家学习理论,总结经验。不过,庐山会议上突如起来的变化是始料未及的。
毛泽东会通过读书学习理论基础,形成指导实践的想法,而后又会通过实践来修正或充实原来的想法,这样就能创造出经过实践检验的原创理论。毛泽东将这种认识论总结到了《实践论》中,并在文章结束时这样写道:“通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论,这就是辩证唯物论的知行统一观。”
毛泽东在《反对本本主义》的开头第一句话写道:“没有调查,没有发言权”。在他看来:调查就像十月怀胎,解决问题就像一朝分娩,调查就是解决问题。
早在湖南师范学习期间,他就开始实践调查。在暑期带着同学一起游学,身无分文,历时一个多月,走了九百多里路,游历长沙及周边县镇,结交社会各类人等,写了许多调查笔记。后来在广东、湖南搞农民运动,他也是积极开展各类农民问题的调查。最著名的是在1930年5月做的寻乌调查,当时毛泽东率红军进驻江西寻乌县城,决定开展调查研究,召集了干部、手工业者、小商店老板等11人,开了十多天的座谈会。而后,毛泽东将此次调查的结果整理成了八万多字的《寻乌调查》,对寻乌县的地理环境、交通、经济、政治、各阶级的历史和现状等,做了全面而详细的考察分析。同一个月,毛泽东还写了一篇文章《调查工作》,也就是《反对本本主义》。
《调查工作》写完后一度遗失。1961年,为了克服“大跃进”造成的严重经济困难,纠正社会上泛起的“五风”(共产风、命令风、浮夸风、瞎指挥风、干部特殊风),毛泽东决定发动全党干部的“大兴调查之风”运动。恰恰在这个时候,散失多年的《调查工作》文章被找到,毛泽东很高兴,改名为《反对本本主义》并公开印发。“没有调查就没有发言权”的口号也作为该文开头第一句话而广为流传。
在写完《调查工作》的后一年,他在一次通告中又对这句话做了补充:“一,不做调查没有发言权。二,不做正确的调查同样没有发言权。”这第二句同样重要。可以说,建国前的历次军事或政治的胜利与做了正确的调查有很大关系。而建国后,毛泽东依然遵循调查的重要性,不仅听各方代表汇报,也会实际巡视考察。但这些书面报告和巡视所看到的东西,都是“好听的好看的”,在当时的政治高压下,没有人敢说真话。在“大跃进”期间,毛泽东对上报的报告不放心,因此要亲眼看一看,在北京周边省市巡察了一周,在天津郊区现场现物看了一个农场的水稻,农场负责人报告亩产八千到九千斤。调查的方法没有变,但因为身份、形势等因素变了,调查的结果也可能就不再正确了,这值得我们在工作和生活中思考。
1917年,24岁的毛泽东在湖南第一师范学习期间,在日记中写下了一段后来十分著名的话:“与天奋斗,其乐无穷;与地奋斗,其乐无穷;与人奋斗,其乐无穷。”这里的“奋斗”在当时就是“斗争”的意思。在年轻的毛泽东看来,与天地奋斗,就是与大自然奋斗,日晒雨淋,长途跋涉,挑战客观困难;与人奋斗,就是与自己奋斗,与其他人奋斗,磨炼坚强的意志,锻炼非常之胆量。而这种斗争精神,也延续了其一生。
之所以斗争,是因为对现实的不满,要建立理想主义的世界和社会,要改造世界,改造社会。也是在这段学习时期,毛泽东写道:“国家有变化,乃国家日新之机,社会进化所必要”,对于中国社会,必须再造,而再造的方法上“由毁而成”,“吾人甚盼其毁,盖毁旧宇宙而得新宇宙”。这也是以后他一贯的思想:从大乱求大治。这种思想和他乐观的性格也是印证的,之后的岁月中,无论是在反围剿失利、长征、抗战、内战时,还是在建国后历次经济和局势困难时,他都保持着一如既往的乐观,而且比别人都要乐观。
读书期间,毛泽东曾两次寄读于岳麓书院,讲堂正门牌匾上四个硕大的字“实事求是”给他留下了很深的印象,而他也将这四个字重新解释,并嵌在了延安中央党校的大门口。“实事”就是客观事物,“是”就是客观事物的内部联系和客观规律,“求”就是研究,“实事求是”就是去调查研究客观事物,找到规律。
“实事求是”理解起来容易,做起来难。其中第一个原因就是上面所提到的,做正确的调查难。而再一个原因是这个世界和社会是复杂的且变化的,不可能只有一套规律,而且即使找到了适应于当前社会和世界的规律,也不能保证该规律适应于将来。1959年初,当时正直“大跃进”在全国范围内全面开展,各地上报过去一年农业大丰收,但从1月2月开始,全国发生了缺粮、缺油风潮,大城市蔬菜和肉供应很少。这个问题引起毛泽东警觉,也让他百思不得其解。这时,一份广东的材料送到他手里,说某县粮食生产大跃进,但年底却出现粮食紧张的情况,结果查出是瞒产私分粮食七千万斤。因此证明,农村有大量粮食,粮食紧张是假象,是生产队和分队进行瞒产私分造成的。毛泽东看到报告,认为找到了问题的症结所在。这个错误的判断也加剧了“大跃进”的冒进。在左倾冒进导致的严重经济问题上,仍坚持认为阶级矛盾是当前第一大矛盾,实际上是没有“实事求是”的尊重经济发展的客观规律。
而对于个人,更值得警醒,因为人在取得胜利,特别是一个又一个的胜利后,很容易陷入“路径依赖”的陷阱。这是一种常见的心理现象,因为从决策成本来看,选择习惯路线的成本最低。
抓问题主要矛盾方面我就不再多说,大家在中学课文时就学过《矛盾论》,这是我们耳熟能详的道理。
对于全书,我也只能只鳞片爪记录一些自己的感想,有时间的话还是建议读原书。并且推荐想读《毛选》的也先读一下传记,毕竟,了解历史背景,更能理解毛泽东当时为什么写那些文章。
毛泽东在每个关键的历史节点,或在重大决策时,都会撰写文章来阐述他的观点,进而影响全党全军全国。收入《毛选》的文章都是毛泽东自己写的,只有少量几篇讲话是别人根据讲话记录整理并经过他修改定稿的。他说:“文章要别人写上很危险的。”而且一篇文章要经过反复修改,并经过多人审阅修改后才发出。多写文章,写好文章,亲力亲为的这种习惯也值得我们学习,毛泽东的文章开宗明义、鞭辟入里,传播性很强,往往一开头就抛出主旨。比如前面提到《反对本本主义》的开头“没有调查,就没有发言权”,还有《中国社会各阶级的分析》的开头“谁是我们的敌人?谁是我们的朋友?这个问题是革命的首要问题。”诸如此类。不但对自己的文章如此,对中央编辑书目里看到别人文章不好的地方,也会认真修改,把冗长、累赘、看了头痛的文字改得鲜明而有力,书中记录了在编辑《怎样办农业生产合作社》一书的例子,很有代表性:
例如有一篇材料,原来的题目是《天津东郊区庄子乡民生、民强农业生产合作社如何发动妇女参加田间生产》,共三十一个字,毛泽东改为《妇女走上了劳动战线》,只用了九个字,简单明了,又抓住了主题,一看就留下印象。
类似的例子还有很多,比如早在1922年安源罢工时,毛泽东建议李立三、刘少奇把罢工口号改成:
从前是牛马,现在要做人。
“牛马”这个词直到100年后的今天还在互联网上流行着。
本文的最后,记录一则轶事。1970年12月,毛泽东在书房会见了埃德加·斯诺,他说了如下这番话:
现在就不同了,崇拜得过分了,搞许多形式主义。比如什么‘四个伟大’,‘Great Teacher,Great Leader,Great Supreme Commander,Great Helmsman’(伟大导师,伟大领袖,伟大统帅,伟大舵手),讨嫌!总有一天要统统去掉,只剩下一个‘Teacher’,就是教员。因为我历来是当教员的,现在还是当教员。其他的一概辞去。
这是现在互联网上有很多人把毛泽东称为“教员”的原因。
2025-07-06 09:22:00
本文为周刊第15期,前期的周刊参见:周刊系列。
本期谈到的两位互联网人物,他们身份差异较大,一位是行业顶尖企业CEO及投资人,一位是四海为家的数字游民。但他们有一个共同的特点,就是都把互联网当成了自己真正的家园。他们热爱互联网,信奉技术改变世界。他们在个人网站上的自我介绍也很有启发性,本周刊尝试挑选并翻译,希望对大家有所裨益。如果你有类似人物推荐,欢迎留言。
Nat Friedman(左)和 Derek Sivers(右)
Nat Friedman 是科技创业者和投资人,目前被扎克伯格委任为 Meta 超级人工智能实验室(Meta Superintelligence Labs)的技术联合领导人,曾担任 GitHub CEO,是一位热衷于技术和开源的科技创业者。他于1977年出生于美国弗吉尼亚州,就读于MIT,毕业后创立了两家公司,分别被 Novell 和微软收购。第二家公司 Xamarin 被微软收购后进入微软,而后在微软收购 GitHub 后又担任GitHub CEO,期间推出 GitHub Copilot, 2021年卸任后成立 NFDG 基金并投资 AI 初创公司。今年加入 Meta,担任其新成立的超级人工智能实验室的技术领导人,与 Scale AI 创始人 Alexandr Wang 搭档。
Nat Friedman 在他的个人主页上,对自己的介绍列举了他所奉行的一些原则,简要翻译如下。
我相信的一些事情:
Derek Sivers 在他的个人网站上介绍了自己的经历: 1969年出生在美国加州伯克利,3岁开始随着父母在美国各州和城市迁移,17岁去波士顿的伯克利音乐学院上学,毕业后到华纳音乐上班,两年后辞职,成为坂本龙一的吉他手在日本巡演,而后便开始作为独立音乐人并创业。29岁创立 CD Baby 独立音乐公司,十年后公司被收购。41岁离开美国移居新加坡,而后是新西兰、英国等地的全球旅居,并开始写作和演讲。到目前为止出版了四本书,分别是:How to Live, Your Music and People, Hell Yeah or No, Useful Not True.
Derek Sivers 曾在访谈中称他的偶像是 Seth Godin, 我翻看了下他的个人网站,发现也是一位奇人,后面有机会再深入研究。闲话少叙,还是回归正题,Derek Sivers 在他的个人介绍中描述了自己的一些原则和行为模式,挑选翻译如下。
相比于其他东西,我更想要创造很多东西。我想写作、出书、制作网站、创作音乐、创立公司、构建系统、开发应用、尤其是是实现新想法。
这影响了我生活中的大多数决策。我几乎对所有事情说“不”,以便于拥有更多的时间用于创造。
我想要学习更多的东西,尤其是不同的思考方式和生活方式,这就是为什么我阅读非虚构类书籍、不断在世界各地迁徙的原因。
我会与那些不断挑战自我、努力成长的人产生共鸣,而对那些只想放松、闲逛、看电视、参加派对的人则无感。
我为创造和学习而优化自己的生活,舍弃掉大多数普通人日常所做的事情(比如闲聊或娱乐消遣),以追求自己更大的目标。
我的人生哲学与古希腊的斯多葛学派不谋而合,尤其是关于“让自己更加强大,以面对更艰难的未来”这一点。
我怀疑一切。我甚至不相信自己的话,因为这一页所讲的东西,反过来几乎也成立。因此,有时候我会有意为之:故意做与自己信仰相反的事情,只是为了换个视角。
有人说我已经退休了,因为自从2008年(卖掉CD Baby)后开始我几乎没有赚过钱。
从某种意义上是这样子的:我不再需要比现在更多的钱,我不需要名声、认可或其他任何外在的东西。
这样说的话,我已经退休了,不再为钱而工作。
现在,我所有的追求都是内在和智识上的。我依然努力工作,只是为了自己的学习、创造和给予。
我喜欢那种没有打扰的从早上6点一直工作到晚上10点的日子,中间只是做少量运动。这是我最喜欢的日子,这种16个小时工作的日子越多,我越开心。
我使用“工作”这个词,是因为更容易被人理解,但实际上这是“属于我自己的时间”—— 做自己热爱的事情,写作、学习、提升、创造。无论是创作音乐、网站、书籍或公司,都是在创造。
也许我会被认为是“工作狂”,但于我而言,这更像是“玩耍”而非“工作”。这完全是个人的追求,不是生意,更像是艺术。收获完全是内在的。
除了工作,我每天还会花三个小时写日记,反思、白日梦、计划,问自己问题,以及尝试不同的答案。
直到我在40岁离开后,我才意识到我是在文化范式上典型的美国人,更确切的说,西海岸的美国人。也就是说:
对我而言,最难过的事情是:停止迁徙。
在我人生的前40年中,我每隔一到两年就会在美国换一个地方,伯克利、芝加哥、波士顿、纽约、伍德斯托克、波特兰、圣塔莫尼卡、旧金山。后来我意识到,自己就像关在罐子里的苍蝇,是时候打开盖子,去探索世界的其他地方了。我已经把前40年都留在了美国,所以希望用后面的40年来探索世界。
我最初的计划是未来的40年里在世界各地生活,在每一处地方待上6-12月。我希望在每处都融入当地,直到有“家”的感觉,然后再搬到另一个地方。但这个计划刚开始时,我跟一个不喜欢这种生活方式的人有了孩子,所以计划就改变了。
于是,我改成在每一个地方待几年,成为该地的合法居民或公民 – 新加坡、印度、比利时、新西兰、英国、葡萄牙。每个地方都以某种方式成了“家”,我希望慢慢扩展我的“家”的概念,直到它覆盖到所有大陆的各个角落。
我的孩子也像我当年一样,视之为平常。
无论我如何感觉“我喜欢这个地方!我希望永远待在这里!”,但我的行动证明,我还是喜欢每隔一两年搬一次家。我应该永远不要买房。
我很健谈,并且喜欢一对一的交流。
但我的社交时间窗只有2-3个小时,然后我就精疲力竭,我需要一个人待着。
电话交流似乎更加专注。电话里不会被周围环境干扰,更能专注于对话的质量。
我讨厌浪费。不喜欢拥有超出我需要的东西。
我只有一条裤子,公寓里只有两个碟子,我的工作电脑是一台用了七年的笔记本。
技术上也如是:我会删除网站上一切不必要的代码,从头编码,而不用任何框架或代码库。
写作上也如是:花12个小时写一篇文章,然后不断删减,直到剩下需要的几句话。
我从1994年开始上网,见证了许多人们所极度依赖的公司的倒闭。
所以我不信任公司,避免云服务,所有代码都运行在我自己的服务器上。
我不会依赖那些不是完全开源或非盈利的技术,我不相信他们的长期利益跟我一致。
因此,我也不用手机上的应用,我不希望让生产力依赖任何应用。实际上,我很少用手机,手机只是用来打电话和导航,没有邮件,没有社交媒体。手机大部分时间处于飞行模式,睡前一小时完全关机,早上写作完才开机。
我不认同“血浓于水”的观念,我对每个人都平等对待,从某种意义上说,全世界的人都是远亲。我不认为对直系亲属有比对陌生人有更多的责任或义务。
我很容易交朋友,朋友也会根据生活的变化来来去去。
我对自己的孩子很有感情,但我并不希望他反过来依恋我。我希望他能够勇敢走向世界,建立新的联系,不必对我有任何责任。他不欠我什么,他的人生属于他自己。
我每周会花30多个小时用于陪伴他,没有电子设备,没有其他人参与,只有我和他,由他来决定我们做什么。
“Whatever brilliant ideas you have or hear, the opposite may also be true.”
– Derek Sivers