返回资讯中心
外部精选
软件工程
#开发者实时流

Alphamaxxing 文章:Protocol Buffers 是端到端软件的构建块

来源标题:Alphamaxxing

Robert Ross 在 Alphamaxxing 撰文指出,Protocol Buffers 是端到端软件的构建块。他认为 AI 不仅正在编写软件,还正成为软件的主要使用者,而 LLM 如同「罐中的大脑」,需要 API 等「肌肉与骨骼」才能发挥作用。

Hacker News 最新btables2026/11/8 · 今天21 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Robert Ross 2026年11月8日 分享 Protocol Buffers 是构建端到端软件的基石

过去,我会坐下来为项目规划整个技术栈。我会随手写下用哪种编程语言、哪个数据库来存储数据、托管在哪里。我会在纽约 Dante 酒吧一边喝着马提尼,一边把这些记在笔记本上。几天后,我会在一个新目录里运行 git init,然后开始写实现。纯手工。音乐开到最大。

启动一个项目并不简单,而 AI 让这段冒险更加复杂。AI 可以飞快地写代码,但它无法(或者说“不应该”)替你的项目选择起点。不过,在这个 AI 辅助软件开发的新世界里,有一个事实:AI 不仅在构建我们的软件,它也在成为我们软件的主要用户。

Muse、Grokbot、Dots,以及在这几次敲键盘之间冒出来的另外 38 个产品,都能施展魔法。但如果没有 API,这些魔法就无法发生。大语言模型,归根结底,就是泡在罐子里的脑子。人工智能需要接上人造的肌肉和骨骼,才能发挥作用。

面向用户的浏览器界面仍然必不可少(至少目前如此),但如果你的程序化接口乏善可陈、甚至糟糕透顶,那我有个坏消息:你的 TAM(总可寻址市场)变小了。不是因为能从你产品中获益的人变少了,而是因为他们的 agent、助手、bot 等等……用不了你的产品。

API 现在就是你的产品。接下来我要讲讲我是如何应对这个新现实的。

我启动过数百个项目,但对于我的项目 Cadenya,我采取了一种不同于过去“笔记本加马提尼”的方式。我没有兴致勃勃地在空目录里写代码,而是先定义 API 表面。我选择了 Protocol Buffers 和 gRPC 作为接口定义语言(IDL)。

我的假设很简单:如果我把 API 端点连同文档和校验规则一起定义好,那么 AI 就能“接管方向盘”去实现它。

我花了几天时间反复调整 API 契约,直到满意为止。我打开一个新的 Claude Code 会话,给它灌了点人造鼓励——“你是一位首席 Go 工程师!”——然后看着它拿着我的服务定义开始转动方向盘。

重要的是,你要选一门自己能在 Claude 面前挑出毛病的语言。Go 和 Ruby 是我的专长。那么 Claude 表现如何?

API 实现的第一个结果,往好了说是差强人意,往坏了说是一塌糊涂。但这无所谓。我可以用 grpcurl 之类的工具把玩它,切身感受 API 设计在实际中的效果。我可以在一个下午之内扮演自己的最终用户,但更重要的是:

我能看到 Claude——它是我可寻址市场中的一个人格——在一个新会话里会如何尝试使用它。Claude 有过磕绊,但很明显它并没有卡住。我会给它下诸如“通过 API 创建一个新的工具集”这样的任务,然后看它如何处理。

最初那个“还行吧”的 API 设计,在一个下午之内就从假设变成了可运行的实现。凭借我的直觉和品味,我能看出哪些地方不对、该修什么。

有些工程师会爱上自己的代码。我曾经就是那样的工程师。但在 AI 的世界里,你不能爱上代码。农民不会给牲畜起名字。你也不该把自己的任何代码当成能天长地久的东西。

我想从另一个角度看看这个实现。

带着这种新的觉悟,我删掉了装着 Go 实现的文件夹。我睁大眼睛、咧着嘴露出阴险的笑容,敲下了 rm -rf ./caddyshack/

gRPC 和 Protocol Buffers 在多种语言中都有实现。在感受过那个“alphamaxxing”实现之后,我想再对 API 试一次手。我还很幸运,过去 16 年一直是一名受过经典训练的 Rubyist。

我想看看我的 API 选择会如何影响我的数据库模型。Ruby on Rails 拥有世界上最好的 ORM。我能在不到 100 行生产级代码里完成数据建模、数据库迁移和校验添加。

调整完 API 契约后,我用自己那件镶满 Ruby 的乐器弹了同一首歌:“你是一位首席级别的 Ruby 工程师。在一个新的 Ruby on Rails 应用中,为 ./api 目录实现 gRPC 服务器”

几罐 Spindrift 气泡水下肚之后,我又能摆弄新的 API 了,并看看数据库受到了怎样的影响。这个实验价值连城,因为它影响了好几个决策。正是它让我从 UUIDv7 换成了带前缀的 ULID。正是它让我从 Account 表里拆分出了 Workspace 模型。也正是它让我设计出了机器友好的用户身份。

一份 API 契约。两个原型。两次 rm -rf,数百个校验点。见效时间:几天。

然而,我那些邋遢的 prototype 从来没真正击中要害。它们尝起来不错,但就像邋遢乔三明治一样,做完之后我内心觉得腻歪。如果你从没吃过邋遢乔,去找一个尝尝。它会改变你的人生。然后毁掉它。

我学开车用的是手动挡。我很喜欢。我感觉自己完全掌控着那辆 1989 年的本田。当我的脚松开离合、让齿轮完美咬合的那一瞬间,每次都是一段短暂却幸福的体验。

手写代码给我的感觉就是这样。

所以我决定亲手编写 Cadenya 最初的 API 实现。我新建了一个 git 仓库,打开 Zed(我新宠的编辑器),开始猛干。音乐开到最大。

Cadenya 的后端我选择了 Go。手写代码库意味着我掌控着应用的结构。包和文件夹结构由我来定,数据库迁移由我来写,甚至连 Envoy 配置都是我亲手写的。感觉棒极了。

而且,因为我知道我的 API 契约(足够)合理,我可以只专注于代码质量,别无其他。我倚重自己的工程品味和经验,而这将成为 AI 辅助编程世界里最重要的东西的基石:上下文。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →