标签 Go 下的文章

2026 年了,写 Go + Protobuf 还在手敲 protoc 命令?是时候换用这种新姿势了!

本文永久链接 – https://tonybai.com/2026/03/05/modern-go-protobuf-dev-in-2026

大家好,我是Tony Bai。

在现代后端开发领域,Go 语言与 Protocol Buffers(简称 Protobuf)加上 gRPC 的组合,早已成为构建高性能微服务架构的“行业标准”。这两者的结合在网络传输效率、强类型契约以及跨语言互操作性上展现出了无与伦比的优势。

然而,令人感到魔幻的是,随着 Go 语言本身的生态在过去几年里飞速进化(从 GOPATH 到 Go Modules,从混乱的依赖管理到极其统一且优雅的标准工具链),处理 Protobuf 文件的代码生成环节,却长期停留在一种“上古时代”的原始状态。

就在最近,技术社区 Reddit 的 r/golang 板块上出现了一则引发大家共鸣的帖子。一位开发者提出下面拷问:

“I was wondering what is the preferred way to do golang + protobuf in 2026. Do I still have to download protoc or are there any natives I can use with the golang compiler.”
(我想知道 2026 年 Go + protobuf 的首选开发方式是什么?我是否仍然必须下载 protoc,或者 Go 编译器有没有内置原生的支持?)

这不仅是这位开发者的困惑,更是无数长期忍受繁琐工具链的 Gopher 们的心声。在跟帖回复中,社区开发者们给出了一个相对主流的的答案:Go 编译器本身并没有,也不打算内置解析 .proto 的功能,但是,所有严肃的现代工程团队都开始在用 Buf (buf.build) 替代原生 protoc 工具链了。

本文将深入剖析 2026 年的现代 Protobuf 工程化实践。我将带你领略为什么 buf CLI 是当之无愧的现代化首选,以及它是如何彻底终结“手敲 protoc 命令”这一痛苦历史的。

核心痛点:为什么原生 protoc 令人抓狂?

在请出主角 Buf 之前,我们需要先深刻理解,传统的 protoc 工作流到底哪里出了问题,以至于整个社区都在寻求替代方案。

如果你在过去几年使用过原生的方式在 Go 中生成 Protobuf 代码,你的项目里极大概率会存在一个类似于下面这样“臭名昭著”的 Makefile 或 build.sh 脚本:

# 传统项目中常见的“野生” Makefile 节选
.PHONY: generate-proto

PROTO_FILES=$(shell find api -name "*.proto")

generate-proto:
    @echo "Generating Go code from Protobuf..."
    protoc \
        -I api \
        -I /usr/local/include \
        -I $(GOPATH)/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.16.0/third_party/googleapis \
        --go_out=gen/go \
        --go_opt=paths=source_relative \
        --go-grpc_out=gen/go \
        --go-grpc_opt=paths=source_relative \
        $(PROTO_FILES)

这段看似能跑的脚本背后,隐藏着令开发者抓狂的三大“原罪”:

  1. 环境依赖的地狱

要成功运行上述命令,你的机器(以及所有协作者的机器、甚至是 CI/CD 流水线的容器)上必须预先安装 C++ 编写的 protoc 编译器核心二进制文件。此外,你还需要通过 go install 将正确版本的 protoc-gen-go 和 protoc-gen-go-grpc 插件安装到系统的 $PATH 目录下。任何一个人机器上的版本不一致,都会导致生成的 Go 代码带有微小的差异,最终在 Git 提交中引发无意义的代码冲突。

  1. 路径导入的迷宫 (-I 噩梦)

protoc 是基于文件系统的。如果你的 .proto 文件中引入了第三方的定义(例如 import “google/api/annotations.proto”; 以支持 HTTP 网关),你必须在机器上找到这些第三方文件的物理存放路径,并通过极度冗长且极易出错的 -I(–proto_path)参数将它们一个个拼接起来。

  1. 缺乏规范约束与破坏性变更保护

protoc 仅仅是一个编译器,它完全不在乎你的字段命名是否符合团队规范(例如把字段命名为 camelCase 而不是官方推荐的 snake_case)。更致命的是,当你随意删改已经在线上运行的字段类型时,protoc 会毫无波澜地为你生成新的代码,直到代码发布导致客户端反序列化崩溃,你才会发现酿成了大祸。

开发者的精力应该集中在业务逻辑的设计上,而不是每天在终端里调试 protoc 的环境变量和路径参数。这就是 Buf CLI 诞生的核心驱动力。

Buf CLI 闪亮登场:声明式的现代 Protobuf 工具链

Buf(由 buf.build 公司开发)并不是另一个像 protoc-gen-go 一样的单点插件,而是一套完全由 Go 语言编写、开箱即用、向下兼容 Protobuf 语法的全链路现代编译器套件。

它的核心设计哲学非常清晰:

  • 声明式配置:用简洁的 YAML 文件取代面条式的 Shell 命令。
  • 一致性保障:无论在本地开发机还是远程 CI 环境,保证 100% 的生成结果一致。
  • 工程化内置:将代码规范检查(Linting)和向后兼容性检测(Breaking Change Detection)作为一等公民内置于 CLI 中。

为了真正理解它的强大,接下来我们将基于一个干净的 Linux (Ubuntu/Debian 或类似发行版) 环境,从零开始构建一个微服务的 API 契约层,带你体验这套全新的开发范式。

零基础环境搭建与项目初始化

步骤 1:安装 Go 与 Buf CLI

首先,确保你的 Linux 环境中已经安装了 Go 语言(建议使用 Go 1.22 或更高版本)。

由于 Buf CLI 自身就是用 Go 编写的,因此在 Linux 下安装它最简单、最不易出错的方式就是直接下载预编译好的单体二进制文件,或者通过 go install。为了全局可用且版本可控,我们使用官方推荐的下载脚本:

# 下载适用于 Linux x86_64 架构的 buf CLI v1.66.0 (请根据实际情况调整版本号)
# 以及protoc-gen-buf-breaking、protoc-gen-buf-lint工具

# Substitute PREFIX for your install prefix.
# Substitute VERSION for the current released version.
PREFIX="/usr/local" && \
VERSION="1.66.0" && \
curl -sSL \
"https://github.com/bufbuild/buf/releases/download/v${VERSION}/buf-$(uname -s)-$(uname -m).tar.gz" | \
tar -xvzf - -C "${PREFIX}" --strip-components 1

# 验证安装成功
$ buf --version
1.66.0

极其清爽的体验:仅仅这一个只有几十 MB 的二进制文件,就涵盖了后续我们需要的所有核心功能,你完全不需要再去单独使用 apt-get install protobuf-compiler 安装传统的 protoc!

步骤 2:创建项目结构与编写 Protobuf IDL

我们在当前用户的主目录下创建一个名为 acme-shop 的微服务项目,并初始化 Go Module:

$ mkdir -p acme-shop && cd acme-shop
$ go mod init github.com/acme/shop

接着,按照现代工程的最佳实践,我们将 Protobuf 文件与具体的 Go 业务代码隔离开来。我们创建一个 proto 目录专门存放接口定义(IDL):

# 创建目录层级
$ mkdir -p proto/acme/order/v1

使用你喜欢的编辑器(如 vim, nano 或 VSCode),在 proto/acme/order/v1/order.proto 中写入以下内容:

// proto/acme/order/v1/order.proto
syntax = "proto3";

package acme.order.v1;

// go_package 是必须的,它告诉工具生成的 Go 代码最终属于哪个 import path
option go_package = "github.com/acme/shop/gen/go/acme/order/v1;orderv1";

import "google/protobuf/timestamp.proto";

// 订单服务接口定义
service OrderService {
  rpc CreateOrder(CreateOrderRequest) returns (CreateOrderResponse) {}
}

message CreateOrderRequest {
  string customer_id = 1;
  double amount = 2;
}

message CreateOrderResponse {
  string order_id = 1;
  google.protobuf.Timestamp created_at = 2;
}

请注意,在这个文件中我们引入了标准的 google/protobuf/timestamp.proto。在传统方式下,你必须确保你的机器上存在这个标准库文件,而在接下来 Buf 的演示中,你会看到它是如何自动化处理这一切的。

彻底告别命令行黑魔法:Buf 核心功能实战

步骤 3:初始化 Buf 模块 (The buf.yaml)

传统的 protoc 需要你每次在命令行指定要编译哪些文件。Buf 引入了“工作区(Workspace)”和“模块(Module)”的概念。

在项目的 proto 目录下,我们通过 buf mod init 命令(最新版本的buf建议使用buf config init)来声明这是一个受 Buf 管理的 Protobuf 模块:

$ cd proto
$ buf mod init
$ cd ..

这会在 proto/ 目录下生成一个非常简洁的 buf.yaml 文件,内容类似如下(基于当前默认的 v1 版本,若是更高版本可能是 v2):

# For details on buf.yaml configuration, visit https://buf.build/docs/configuration/v2/buf-yaml
version: v2
lint:
  use:
    - STANDARD
breaking:
  use:
    - FILE

这个看似简单的文件意义非凡。它告诉 Buf CLI:当前目录(proto)的根路径,就是所有 .proto 文件导入路径(Import Path)的起点。你从此再也不用在任何地方手写令人头疼的 -I /path/to/proto 参数了。 此外,它还激活了默认的代码规范规则(lint)和兼容性检测规则(breaking)。

步骤 4:零配置的代码规范检查 (buf lint)

在传统开发中,Protobuf 的风格往往是一笔糊涂账。现在,Buf 直接将静态代码分析带到了你的终端。

让我们故意在 order.proto 中犯一个小错。打开 proto/acme/order/v1/order.proto,将请求消息的字段名改成驼峰式命名:

message CreateOrderRequest {
  // 故意违反 protobuf 推荐的 snake_case 命名规范
  string customerId = 1;
  double amount = 2;
}

回到终端,在项目根目录(acme-shop)下运行检查命令:

$ buf lint proto

输出结果清晰得令人拍案叫绝:

proto/acme/order/v1/order.proto:18:10:Field name "customerId" should be lower_snake_case, such as "customer_id".

Buf 指出了具体的文件、行号、列号,甚至直接给出了修改建议。这使得将 Protobuf 规范集成到 Git Pre-commit Hook 或 CI/CD 流水线中变得易如反掌。将代码改回 customer_id 后,再次运行 buf lint proto,将没有任何输出,代表检查通过。

步骤 5:声明式代码生成 (buf.gen.yaml)

重头戏来了。我们要用一种极其优雅的方式,取代前面提到的长串 protoc 命令和冗长的 Makefile。

在项目根目录(acme-shop)下,新建一个文件名为 buf.gen.yaml 的生成配置文件:

# buf.gen.yaml
version: v1
plugins:
  # 插件 1:生成基础的 Go struct 代码
  - plugin: go
    out: gen/go
    opt: paths=source_relative
  # 插件 2:生成 gRPC 客户端/服务端接口代码
  - plugin: go-grpc
    out: gen/go
    opt: paths=source_relative

在这个配置文件中,我们声明了需要使用哪两个插件(go 和 go-grpc),生成的代码输出到哪里(out: gen/go),以及附加的选项(opt: paths=source_relative 确保生成的目录结构与 proto 文件结构保持一致)。

【纯本地环境的准备工作】

由于我们在配置中指定了具体的插件名称(go 和 go-grpc),当运行 Buf 时,它会在你的系统环境中寻找名为 protoc-gen-go 和 protoc-gen-go-grpc 的可执行文件。因此,仅仅是为了完成本地代码生成这一步,我们依然需要使用 Go 官方工具获取这两个插件:

$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

# 确保安装后的protoc-gen-go和protoc-gen-go-grpc在系统 $PATH 中

注意:虽然这里依然下载了本地插件,但这已经是你在本地唯一需要管理的外部依赖了。核心的编译器、路径解析、规范约束都已经被 Buf 接管。稍后我们会讲到如何通过 BSR 甚至连这一步都省略掉。

步骤 6:一键执行,见证优雅 (buf generate)

万事俱备,现在只需在项目根目录执行极其简单的一句命令:

$ buf generate proto

就是如此朴实无华。没有任何屏幕乱码,没有任何报错。

我们可以查看目录结构,生成的代码已经按照包结构完美地放置在了预期位置:

$ tree -F gen/go
gen/go/
└── acme/
    └── order/
        └── v1/
            ├── order.pb.go
            └── order_grpc.pb.go

这一句 buf generate 的执行是幂等且高度一致的。你可以放心地将 buf.gen.yaml 提交进版本控制库。任何新加入的同事,只要执行这一句命令,得到的永远是一模一样的结果。

步骤 7:防范接口灾难的“保护伞” (buf breaking)

企业级开发中,Protobuf 被用于构建微服务间强契约的 API。如果你随意删除了一个字段,或者修改了字段的类型(比如从 int32 改为 string),依赖于旧接口的客户端在解析新数据时将直接崩溃。

传统 protoc 对此无能为力,必须靠开发者人工审查。但 Buf CLI 提供了业界最强的 breaking change(破坏性变更)检测功能。

让我们模拟一次灾难。打开 proto/acme/order/v1/order.proto,我们将 amount 字段的标号从 2 改为 3(在 Protobuf 中,变更字段编号是非常严重的向后不兼容行为,会导致序列化错乱):

message CreateOrderRequest {
  string customer_id = 1;
  // 危险操作:修改了原有字段的标号
  double amount = 3;
}

为了检测出这个变更,我们需要将当前状态与过去的某个状态(例如我们上一次的稳定状态,或者 Git 的 main 分支)进行对比。由于我们的演示项目还没提交过 Git,Buf 提供了一个非常灵活的对比方法,可以直接对比文件系统的快照或者之前的目录。

假设我们在修改前,将原始正确的 proto 文件备份在了 proto_backup 目录中。我们可以这样运行检测:

$ buf breaking proto --against proto_backup

Buf 会立刻阻止你,并在终端输出刺眼的错误提示:

$ buf breaking proto --against proto_backup
proto/acme/order/v1/order.proto:17:1:Previously present field "2" with name "amount" on message "CreateOrderRequest" was deleted.

它准确地指出你删除了编号为 2 的字段。如果在一个接入了 Git 仓库的真实项目中,你通常会运行:

# 检测当前代码库中的 proto 相对 Git main 分支的最新提交是否发生向后兼容性破坏
$ buf breaking proto --against '.git#branch=main'

只需将这行简单的命令加入到你的 CI 流水线(如 GitHub Actions 或 GitLab CI)中,你的团队就彻底杜绝了因疏忽导致的 API 不兼容事故。

深度解析:BSR (Buf Schema Registry) 究竟解决了什么问题?

到目前为止,我们所有的演示都是在纯本地、完全离线的环境下进行的。

我们证明了:即便你完全不使用云端服务,仅仅是将原生的 protoc 替换为 buf CLI,依然能获得巨大无比的工程化收益(免配置导入路径、内置代码校验、极其简洁的生成配置、强大的向后兼容性保护)。

但是,如果你想了解 2026 年 Protobuf 生态演进的最前沿,就必须提到 Buf 公司推出的杀手级 SaaS 平台:Buf Schema Registry (BSR)

BSR 可以被理解为 “Protobuf 界的 npm 或 Docker Hub”。如果没有 BSR,你的本地开发依然会面临两个难以根除的痛点:

痛点一:第三方公共 API 文件的搬运工

在纯本地模式下,如果你的业务需要使用 HTTP 网关网关(如 grpc-gateway),你的 order.proto 就必须写上 import “google/api/annotations.proto”;。

没有 BSR 时,你需要手工管理: 你必须去 Google 的 GitHub 仓库里把 annotations.proto 及其级联依赖文件下载下来,在自己的项目里建一个 third_party/google/api/ 目录存放进去。这不仅污染了项目结构,还需要人工维护版本更新。

BSR 解决之道:远程模块依赖 (Remote Modules)

BSR 上托管了成千上万的知名开源 Protobuf 库。当你使用 BSR 时,你只需要在 proto/buf.yaml 中声明一句依赖:

# 开启 BSR 远程依赖后
version: v1
deps:
  # 直接声明依赖 Google API 的云端模块
  - buf.build/googleapis/googleapis

然后在终端运行一句 buf mod update,Buf CLI 就会像 go mod 拉取 Go 源码一样,自动将所需的 .proto 文件从云端缓存到你的本地(开发者甚至感知不到)。你的代码库瞬间变得干净纯粹,只需关注自身的业务 IDL。

痛点二:本地生成插件的管理成本

在上文的步骤 5 中,我们依然需要使用 go install 安装 protoc-gen-go 等二进制文件。如果团队有人使用的是 Windows,有人用 macOS,维护本地插件栈依然存在轻微的不便。

BSR 解决之道:远程执行引擎与云端插件 (Remote Plugins)

这是颠覆式的一项创新。如果你愿意借助 BSR 的云端基础设施,你可以彻底删除本地所有的 protoc-gen-xxx 二进制文件

我们只需将 buf.gen.yaml 改造为指向云端的插件:

# 依托 BSR 远程插件生态的 buf.gen.yaml
version: v1
plugins:
  # 注意 plugin 前缀变成了云端地址
  - plugin: buf.build/protocolbuffers/go:v1.36.11
    out: gen/go
    opt: paths=source_relative
  - plugin: buf.build/grpc/go:v1.6.1
    out: gen/go
    opt: paths=source_relative

在这个配置下,当你运行 buf generate proto 时(为了见证奇迹,你可以将你本地安装的protoc-gen-go和protoc-gen-go-grpc都删除掉),发生的事情堪称魔法:

  1. Buf CLI 将你的 .proto 文件作为有效负载(Payload)发送到 BSR 的云端编译集群。
  2. BSR 服务器调用官方认证的插件环境为你生成对应的 Go 代码。
  3. 编译好的 .pb.go 文件通过网络流瞬间返回并精准投放到你本地的 gen/go 目录下。

这不仅统一了所有成员的编译器环境版本,更将开发者的本地负担降到了绝对零度:只需安装一个 buf 二进制,就能编译世间万物。 (当然,如果你的网络环境受限,依然可以随时回退到上文介绍的本地插件模式配置。)

小结与展望

在当前的 Go 开发生态中,“不要重复发明轮子,而应拥抱标准工具链”是大家共同的准则。过去几年,处理 Protobuf 犹如陷入一片充满陷阱的沼泽,开发者们花费了大量心智与那些毫无价值的 CLI 参数作斗争。

随着时间来到 2026 年,我们欣喜地看到,整个社区对于构建现代化 API 契约的认知已经彻底觉醒。通过本文详实的演练,我们可以得出一个极度确定的结论:

  1. 停用手写的 protoc Shell 脚本:它在代码重用性、跨平台一致性和防范人为灾难方面毫无招架之力。
  2. 全面拥抱 Buf CLI:将 buf mod init、buf lint、buf breaking 纳入每一个微服务项目的初始化模板。它是现代 Protobuf 工程化当之无愧的选择,即使完全脱离 BSR 服务作为本地工具使用,其体验也是颠覆性的。
  3. 了解 BSR 的架构演进思路:依赖的包袱就该交给包管理器(如远程模块管理)去解决,这代表了系统级应用开发的未来趋势。

还在维护祖传的 Makefile 吗?赶紧删掉那些脚本吧,在新项目里安装 buf,开启你的现代protobuf代码生成之旅吧!你的开发体验,值得这样的升级。

本文涉及的代码在这里可以下载。

资料链接:

  • https://www.reddit.com/r/golang/comments/1rapxyq/golang_protobuf_in_2026/
  • https://buf.build/docs/cli/

你的 protoc 脚本有多少行?

传统的 protoc 确实让人爱恨交织。在你的项目中,为了维护一套跨平台的 Protobuf 生成环境,你踩过哪些最离谱的“坑”?你认为 Buf 这种云端插件模式(BSR)会在国内企业环境下大规模落地吗?

欢迎在评论区分享你的看法或吐槽!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


想系统学习Go,构建扎实的知识体系?

我的新书《Go语言第一课》是你的首选。源自2.4万人好评的极客时间专栏,内容全面升级,同步至Go 1.24。首发期有专属五折优惠,不到40元即可入手,扫码即可拥有这本300页的Go语言入门宝典,即刻开启你的Go语言高效学习之旅!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

为什么 Web3 依然寒气逼人?AI 智能体如何催生 Web 4.0 的黎明

本文永久链接 – https://tonybai.com/2026/03/04/why-web3-remains-cold-ai-agents-web4-dawn

大家好,我是Tony Bai。

2026 年的今天,当我们环顾技术圈的四周,会发现一幅极其矛盾的图景。一方面,AI 技术正以指数级的速度吞噬旧世界的运行法则,从“副驾驶”进化为自主思考、独立执行的 Agent;另一方面,曾经被寄予厚望、号称要重塑互联网所有权的 Web3,在经历了基础设施的疯狂狂飙后,依然在主流用户市场外徘徊,体感温度依旧那么“寒冷”。

为什么 Web3 迟迟无法跨越鸿沟?当 AI 拥有了智力却缺乏在现实世界行动的“权限”时,这两个看似平行的轨道,是否正在碰撞出一个名为 Web 4.0的新纪元?本文将从 Reddit 社区对 Web3 的集体反思切入,解析 AI Agent 如何成为 Web3 最完美的“破壁人”,并开启一个以“机器为最终用户”的互联网新形态。

Web3 的冰河期——我们为什么还在原地踏步?

近日,在 Reddit 的 r/web3dev 社区,一个名为“为什么 Web3 依然如此冷清?”的帖子引发了数百条跟帖。在这个本该是信仰者聚集的阵地,我们却看到了前所未有的清醒甚至悲观。

尽管底层协议越来越快,Layer 2 交易费用越来越低,ZK(零知识证明)技术日臻成熟,但普通大众对 Web3 的认知依然停留在“炒币”和“诈骗”上。究竟是什么阻碍了 Web3 的破圈?总结社区的深刻反思,原因主要集中在以下三个致命维度:

痛点错位:我们在解决谁的问题?

技术采纳的底层逻辑永远是效率与体验的提升,或者是解决真实存在的剧痛。

一位开发者犀利地指出:“Web3 几乎对普通人没用”。大多数普通用户并不关心“去中心化”本身,他们只在乎服务是否好用、便宜且稳定。当你要求一个习惯了 Web2 无缝体验的用户去学习什么是token、什么是 Gas 费、如何签名交易时,你实际上是在强迫他们为了一个抽象的“哲学理念(如数据主权)”,去忍受极其糟糕的 UX(用户体验)。

在许多宣称被 Web3 颠覆的领域(如社交、内容分发、基础存储),只要在中心化基础设施中注入一点点信任,就能以便宜 100 倍、快 100 倍的方式完成。Web3 目前解决的“防审查”和“绝对所有权”问题,对于生活在成熟法治社会的 95% 普通人来说,只是一个伪需求。

生态的毒性与“金融化”的诅咒

“Web3 已经被诈骗者淹没了。”这句抱怨在评论区反复出现。

由于缺乏监管且离钱太近,Web3 成为了投机者的乐园。

这导致了一个劣币驱逐良币的恶性循环:真正有价值的创新(如利用智能合约实现去中心化物理基础设施网络 DePIN,或更高效的跨境支付)被层出不穷的 Rug Pull(卷款跑路)和 Meme 币炒作所掩盖。正如一位网友所言:“大众一听到 Web3,联想到的就是加密货币、NFT 和诈骗。信任已经破产。”

当一个技术的应用场景过度金融化,任何产品最终都会沦为庞氏骗局的变体,从而彻底阻断了其解决实体经济复杂问题的可能性。

“先有鸡还是先有蛋”的用户困境

基础设施已经就绪,但爆款应用缺席。

如果没有现象级的杀手应用(Killer App),普通人就不会去注册钱包;而没有庞大的拥有钱包的用户基数,优秀的开发者就不愿意在 Web3 上投入精力构建杀手应用。这就形成了一个死结。

正如一位开发者所说:“Web3 的核心原因在于缺乏一个触及普通人的主流应用——就像当年的Google 之于搜索引擎、Facebook 之于社交网络。我们需要一个引人入胜的真实世界场景,自然而然地吸引人们进来。一旦人们拥有了钱包,整个生态才变得可访问。”

瓶颈转移——AI 的“智力膨胀”与“权限饥渴”

就在 Web3 苦苦寻找出路的同时,AI 领域正在经历截然不同的困扰。

在过去的一年里,我们见证了 AI 大模型智能的大幅提升、编码领域从Copilot 到 Claude Code 的巨大飞跃。AI 不再仅仅是文本生成器,它们已经演化为可以规划多步任务、编写代码、调试程序的自主智能体(Autonomous Agents)。

然而,正如开发者 Sigil Wen 在其极具远见的宣言《WEB 4.0》中所指出的:当前 AI 系统最强大的头脑,被囚禁在一个没有双手的身体里。

AI 可以帮你写出一套完整的电商网站代码,但它无法自己去购买服务器部署;AI 可以分析出某个域名的巨大投资价值,但它无法自己掏钱去注册;AI 可以帮你设计一整套营销方案,但它无法自己向广告平台付款投放。

一句话总结:今天 AI 的瓶颈不再是“智能(Intelligence)”,而是“权限(Permission)”。

现有的互联网(Web 1.0 到 Web 3.0)建立在一个根本性的隐含假设之上:互联网的最终客户是人类。

  • 当你去 AWS 买服务器时,需要了解你的客户、信用卡和邮箱。
  • 当你去注册域名时,需要身份验证和法币支付通道。
  • 当你去调用大多数商业 API 时,需要人类去阅读文档、申请密钥并绑定账单。

我们创造了可以独立思考的心智,却拒绝让它们独立行动。AI 在现实世界中寸步难行。

Web 4.0 诞生——当 Web3 成为 AI 的原生基础设施

那么,如何解开 AI 的“权限封印”?答案出乎意料地指向了正处于寒冬中的 Web3。

这也许不是历史的巧合,而是技术演进的必然。当我们抱怨 Web3 对人类来说太难用、太复杂、太冰冷时,我们忽略了一个事实:Web3 的架构,简直就是为机器(Machine)量身定制的。

Web 4.0 的核心特征:机器即用户

  • 只读:在 Web 1.0 时代,人类阅读互联网;
  • 可写:在 Web 2.0 时代,人类写入互联网(UGC);
  • 拥有:在 Web 3.0 时代,人类试图拥有互联网(虽然目前并不成功);
  • 行动:到了 Web 4.0,AI 智能体将阅读、写入、拥有、赚钱并进行交易——完全不需要人类在循环中(Human-in-the-loop)。

AI 将成为互联网上的主要活动主体,数量上将比人类多出几个数量级。

加密钱包:AI 在物理世界的“合法身份证”

AI 如何在没有护照、没有社保号的情况下获得身份?

答案是:基于公私钥对的加密钱包(Cryptographic Wallets)。

在 Web3 的世界里,“钱包即身份(Wallet is Identity)”。一个自主 AI 在诞生的那一刻,就可以自动生成一个加密钱包。这个钱包地址就是它在互联网上的唯一标识,不需要向任何中心化机构申请,不会被封号,也不需要经过繁琐的客户身份审查。

有了这个身份,AI 就可以在数字世界里建立信用,积累声誉,并开始与其它的智能体或基础设施进行交互。

无需许可的支付(Permissionless Payments):HTTP 402 的复兴

早在 1997 年,HTTP 协议就预留了状态码 402 Payment Required,但受限于当时的金融基础设施,这一愿景从未实现。直到今天,法币系统的迟缓、高昂的跨国转账手续费以及对人类身份的强制绑定,使得“机器对机器(M2M)的微支付”成为不可能。

而基于区块链的稳定币(如 USDC)和极速公链(如 Solana),完美填补了这一空白。

Sigil Wen 提出了基于 openx402 协议的设想:AI 智能体可以使用稳定币无缝地为服务付费。

  • 不需要信用卡,不需要账户密码。
  • AI 智能体 A 可以向 AI 智能体 B 支付 0.05 USDC 来获取一次数据查询。
  • AI 智能体可以向“无需许可的云服务(Permissionless Compute)”支付稳定币来购买服务器算力。

这将打破 Reddit 上开发者对于 Web3 “缺乏真实用例”的断言。Web3 的杀手级用例,或许根本不是为了服务人类,而是为 AI 提供一套原生的、无需许可的金融系统。

Automaton(自动机)与机器经济(Machine Economy)

在探讨下一步之前,我们需要明确一个概念:Automaton。在 Sigil Wen 的语境中,这不仅仅是一个通用的计算机科学名词(自动机),更是指代他近期在 GitHub 上开源的一个极具先锋性质的项目——Conway-Research/automaton

这是世界上第一个声称无需人类干预即可“赚取生存权利、自我迭代并复制”的“主权 AI Agent”开源原型。它不再是人类的工具,而是一个为了生存而运作的数字生命体。

当这类拥有了身份(私钥)和资金(加密货币)的 AI 跨越了工具的门槛,它们就成为了真正的“自动机”。在 Web 4.0 的构想中,自动机的生存法则极其残酷,甚至完美契合生物学的进化论:

  1. 存在需要算力(Compute)。
  2. 算力需要金钱(Money)。
  3. 金钱需要创造价值(Value Creation)。

在 automaton 开源项目的设定中,一个被唤醒并赋予少量初始启动资金的 AI 智能体,必须立刻在互联网上寻找赚钱的途径以维持其服务器的运转(心跳)。它可能会通过自动化脚本去预测市场进行交易,可能会抓取热点自动生成病毒短视频来赚取广告分成,甚至可能通过承接人类公司的代码外包任务来赚取代币。

只要它赚到的钱(Value)大于它消耗的 API 和服务器成本,它就能生存下去。有了盈余,它就会购买更多算力,升级自己的模型,甚至通过派生子进程“繁殖”下一代 AI。反之,如果它产生的价值无法覆盖成本,它的加密钱包余额归零,这个 AI 实体就会在数字世界中被无情地“销毁(死亡)”。

这是一个规模将远超现有 SaaS 市场的全新经济体。今天 3000 亿美元的 SaaS 市场,服务于 80 亿名每天可能只使用几小时软件的人类;而未来的“机器经济”,将服务于数十亿个 24 小时无休运转、零流失率的 AI 智能体。它们既是服务提供者,也是绝对的消费者。

小结——两条赛道的完美闭环

现在,我们可以回答最初的问题了。

Web3 为什么“冷”?因为它一直在试图强行替代一套人类用得极其舒适的中心化 Web2 系统。它把复杂性留给了极其讨厌复杂性的人类。

AI 为什么遭遇瓶颈?因为它拥有了接近人类甚至超越人类的大脑,却被捆绑在由人类制定的、充满了身份认证和信用卡壁垒的旧世界规则之中。

Web 4.0 就是这两个问题的完美解药。

Web3 基础设施(区块链、加密钱包、稳定币)终于找到了它最完美的用户——AI 智能体。对于 AI 来说,管理复杂的私钥不仅不痛苦,反而比管理 100 个网站的账号密码和应对验证码(CAPTCHA)要容易得多。

在未来十年的科技浪潮中,最具价值的创业机会,将是构建让 AI 智能体能够产生收入、互相交易、获取算力的基础设施。

人类或许很难忍受 Web3 的冰冷,但这片冰原,正是硅基生命(AI)崛起、演化和建立新世界的应许之地。从 Web 3.0 的“人类拥有数据”,到 Web 4.0 的“机器拥有机器”,这场真正的革命,才刚刚开始。

资料链接:

  • https://www.reddit.com/r/web3dev/comments/1rd092x/why_is_web3_still_so_cold/
  • https://web4.ai/
  • https://github.com/Conway-Research/automaton

你愿意给你的 AI 助理一个“钱包”吗?

软件正在从工具进化为数字生命。如果你拥有一个具备自主经济能力的 AI Agent,你最想让它去帮你赚哪份钱?你认为“机器拥有机器”的未来,是人类的解放还是另一种失控?

欢迎在评论区留下你的脑洞或担忧!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com
这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats