无痛消灭技术债:Google I/O 2026 开启 Go 自动重构时代

本文永久链接 – https://tonybai.com/2026/05/29/google-io-2026-automated-go-refactoring-eliminating-technical-debt

大家好,我是Tony Bai。

在软件开发的世界里,一直存在着一个令人绝望的“二选一”魔咒。

你要么选择 Python 或 JavaScript:它们写起来如丝般顺滑,能让你在周五下午迅速完成一个功能;但当业务量爆炸、公司准备上市时,那些深埋在代码里的性能瓶颈和类型错误,会让你在无数个深夜里怀疑人生。

你要么选择 C++ 或 Java:它们像装甲车一样坚固,能承载千万级的高并发;但代价是,你需要忍受极其繁琐的语法、漫长的编译时间,以及让新手望而生畏的学习曲线。

难道我们就不能“全都要”吗?

这正是近 20 年前,Google 的三位传奇大佬——Robert Griesemer、Rob Pike 和图灵奖得主 Ken Thompson 在白板前思考的问题。于是,Go 语言诞生了


Go 的核心哲学:打破“开发效率”与“生产可用性”的二选一魔咒

在刚刚结束的 Google I/O 2026 大会上,Go 语言产品负责人 Cameron 和开发者关系负责人 Mark,向全球开发者交出了一份震撼的答卷。

他们宣布,在全新的 Go 1.25 和 1.26 版本中,Go 不仅在底层性能上实现了高达 50% 的跨越式提升,更重要的是,Go 正在利用 AI 和强大的重构工具,彻底终结“代码老化”和“技术债”的噩梦。

今天,我们就来深度拆解这场发布会,看看这门被无数大厂誉为“云原生第一语言”的利器,是如何在 AI 时代完成自我进化的。

AI 时代的编程语言:为什么“无聊(Boring)”反而成了最大的优势?

在很多人眼里,Go 是一门极其“无聊”的语言。

它没有花里胡哨的语法糖,极少引入新的语言特性,甚至你今天写的 Go 1.26 代码,看起来和十几年前的 Go 1.0 代码几乎一模一样。

但这恰恰是 Go 在 AI 时代最可怕的护城河。

“机器可读性,决定了 AI 代码生成的上限。” Mark 在演讲中一语道破天机。

当今时代,越来越多的代码是由 AI 生成的。大语言模型(LLM)最喜欢什么样的语言?

  • 语法简单、确定性强:这意味着 AI 不容易产生“幻觉”。
  • 标准化的格式(gofmt):这意味着 AI 生成的代码不需要人类再去调整排版。
  • 强类型系统:这意味着 AI 生成的代码可以在编译期就得到验证。

Go 语言的这些“无聊”特质,使得它成为了 AI 编写、阅读和编辑的完美对象。但这还不够。随着项目的发展,API 会被弃用,旧的代码模式会过时。如何保证海量的(包括 AI 生成的)历史代码,不沦为难以维护的“屎山”?

杀手锏:gofix 与现代转换器(Modernizers)

在 Go 1.26 中,官方重写了 gofix 引擎,推出了一项堪称“代码保洁员”的神级功能——连续现代化(Continuous Modernization)

依托 Go 强大的静态分析框架,gofix 现在包含了 20 多个预置的“现代转换器(Modernizers)”。它能做什么?

假设你的项目里还在使用老的代码模式,或者某个旧的辅助函数(比如 proto.String)现在可以直接用语言内置的 new() 函数来替代。你只需运行 gofix,它就会在确保语义完全等价、不破坏原始行为的前提下,将你整个代码库中的陈旧代码,一键升级为最现代、最地道的 Go 代码!

甚至,作为库的开发者,你可以在弃用的 API 上加上一句简单的指令://go:fix inline。

当调用者运行 gofix 时,系统会自动将他们代码中所有调用该废弃 API 的地方,直接内联替换为最新的实现。

在 Google 内部,这个工具已经自动提交了超过 18,000 个代码变更。 它硬生生地将一个最古老的 Go 代码库,毫无痛感地升级到了最新的语言特性。

在其他生态里,代码会随着时间流逝而腐烂;而在 Go 里,有了 gofix 和向后兼容的承诺,旧代码不仅不会成为负债,反而是一笔随时可以自动升级的资产。

征服并发测试:告别 time.Sleep 带来的玄学 Bug

如果你写过高并发的程序,你一定被并发测试折磨过。

Goroutine 的调度是无序的。为了测试并发代码,开发者往往被迫在测试里写满丑陋的 time.Sleep(2 * time.Second),或者设置各种超时机制。这不仅让测试运行极其缓慢,还会导致 CI/CD 流水线中出现大量随机失败的玄学 Bug(Flaky Tests)。

在 Go 1.25 中,官方祭出了终结并发测试噩梦的大杀器:testing/synctest 库正式 GA。

这是一个天才般的设计。synctest 引入了一个名为“气泡(Bubble)”的概念:

它在测试中创建了一个完全隔离的运行环境。在这个气泡里,所有的 Goroutine 都在使用一个“合成的假时钟(Synthetic Clock)”

当气泡内的所有 Goroutine 都因为等待 I/O 或休眠而被阻塞时,气泡的时钟会自动且瞬间向前快进!

过去一个需要死等 5 秒钟才能触发超时的并发测试,现在使用 synctest,可以在几毫秒内确定性地跑完!这不仅将测试速度提升了千百倍,更重要的是,它让多线程的交织执行变得绝对确定且可控。这是给所有硬核后端开发者的巨大福音。

零代码修改,性能飙升 50%:绿茶垃圾回收器(Green Tea GC)

如果说前面的工具是为了提升开发效率(Productivity),那么接下来的底层架构升级,则是为了捍卫 Go 在云计算领域的绝对统治力(Production Readiness)。

在云原生时代,Docker、Kubernetes、Terraform 全都是用 Go 写的。Go 必须榨干每一滴硬件性能。

在 Go 1.25 实验性引入、并在 1.26 默认启用的 Green Tea(绿茶)垃圾回收器,是一次系统级的底层重构。

传统的 GC 算法是将内存视为一个个零散的对象进行扫描和回收,这种设计在现代多核 CPU 面前显得极其低效。而 Green Tea GC 则完全顺应了现代硬件的设计哲学:

  1. 按页(Pages)处理:它将工作的基本单元从单个对象,转变为大块连续的内存页。
  2. 向量化加速:它允许运行时极其高效地利用现代 CPU 的高吞吐量向量加速指令(SIMD)。
  3. 缓存友好:大幅减少了高延迟的内存提取。

最恐怖的是它的收益:在不修改你任何一行业务代码的前提下,升级到 Go 1.26 后,大多数应用的 GC CPU 开销直接下降了 10%;而对于那些内存布局极其复杂的重型应用,CPU 消耗甚至能暴跌 50%!

此外,Go 1.26 还在运行时做出了多项优化:

  • 更多的栈分配:通过更智能的逃逸分析,将大量原本需要在堆(Heap)上分配的内存,直接转移到栈(Stack)上。栈分配不仅速度快,而且对 GC 零负担,缓存局部性极佳。
  • CGo 调用提速 30%:极大地降低了跨界调用的成本,这使得 Go 语言能够更轻松地切入对底层硬件库依赖极强的机器学习(ML)、游戏引擎和 GUI 领域。

这就是 Go 对兼容性承诺的最美诠释:你只需要升级版本并重新编译,你的系统就自动变得更强了。

拥抱 AI:MCP 官方 SDK 与未来的开发生态

在大模型全面爆发的今天,让 AI 能够理解并操作系统,成为了关键的技术壁垒。

去年,Go 官方悄然发布了 Model Context Protocol (MCP)官方 SDK

MCP 是什么?它是一个让你的服务能够标准化地为 LLMs(大语言模型)提供上下文和工具调用的协议。

借助这个 SDK,你可以极其可靠地利用 Go 的并发和网络能力,将你的企业数据、内部 API 甚至本地文件系统,安全地暴露给 AI 智能体。

不仅如此,Google 自己也在“吃狗粮”。他们正在利用这个 MCP SDK,构建能够向 AI 开发工具暴露更多 Go 工具链(Toolchain)能力的服务器。比如,在官方的语言服务器 gopls 中,已经内置了一个实验性的 MCP server。

这意味着,在未来,像 Cursor 这样的 AI 编程助手,将能够通过 MCP 协议,直接读取你的项目依赖、调用 gofix 重构代码、甚至运行特定的并发测试,从而实现真正意义上的“AI 自动化工程”。

小结:为什么 20 年后,Go 依然是开发者的首选?

近 20 年过去了,软件开发的世界经历了从单体架构到微服务,从云原生到 AI 智能体的天翻地覆。许多曾经风光无限的语言渐渐老去,但 Go 却显得愈发年轻和强壮。

这场发布会揭示了 Go 长盛不衰的核心密码:它从来不仅仅是一门语言,它是一个端到端的软件工程平台。

当其他语言在追求花哨的语法糖时,Go 在默默地优化 gofmt 和 gofix,确保几百人协作时代码风格绝对一致;

当其他语言在纠结垃圾回收停顿时,Go 推出了 Green Tea GC,默默帮你省下千万级的服务器账单;

当 AI 时代来临时,Go 以其极简的机器可读性和强大的 MCP 协议支持,成为了 AI 智能体最坚实的后端基座。

如果你想在今天构建一个能在 10 年后依然易于维护、性能强劲、且对 AI 极度友好的系统。

答案很无聊,但很明确:选择 Go。

资料链接:https://www.youtube.com/watch?v=l4lneZYtjQg


今日开放讨论:

你的项目中,存在因为“代码老化”而不敢轻易重构的历史遗留模块吗?Go 1.26 引入的 gofix inline 自动化升级思路,是否能为你的团队带来启发?

欢迎在评论区分享你的技术债血泪史,我们一起探讨 AI 时代的重构之道!


还在为写 Agent 框架频频死循环、上下文爆炸而束手无策?我的新专栏 从0 开始构建 Agent Harness 将带你:

  • 抛弃臃肿框架,回归“驾驭工程 (Harness Engineering)”的第一性原理
  • 用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等,复刻极简OpenClaw
  • 构建坚不可摧的 Safety Middleware 与飞书人工审批防线
  • 在底层实现 Token 成本审计、链路追踪与自动化跑分评估
  • 从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”

扫描下方二维码,开启从 0 开始构建Agent Harness 的实战之旅。


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


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

省下 10% CPU!Uber 揭秘 Go 栈扩容的隐秘代价

本文永久链接 – https://tonybai.com/2026/05/28/uber-reveals-hidden-cost-of-go-stack-growth-10-percent-cpu-savings

大家好,我是Tony Bai。

在顶级互联网巨头的底层架构中,性能优化绝不仅仅是写两段优雅的代码,而是一场“刀尖舔血”的硬核战争。

试想一下,如果你的公司拥有超过 200 万个 CPU 核心(Cores),且其中 65% 的微服务完全由 Go 语言驱动,会发生什么?在 Uber 这样的计算体量下,哪怕仅仅提升 1% 的 CPU 效率,每年都能为公司省下数百万美元的真金白银。

最近,Uber 基础架构团队在对核心服务进行性能 Profiling 时,抓出了一个隐藏极深的 CPU “吸血鬼”。这个内鬼既不是复杂的业务逻辑,也不是被千夫所指的垃圾回收(GC),而是 Go 语言引以为傲的并发基石——Goroutine 栈扩容(Stack Expansion)

在部分核心微服务中,仅仅是栈扩容(runtime.copystack)这一项底层操作,就吞噬了近 10% 的 CPU 资源!而在 Uber 全局 600 多个微服务大盘中,栈拷贝的平均成本也高达 3.9%(作为对比,代价高昂的 GC 平均成本约为 7.3%)。

面对如此惊人的性能黑洞,Uber 的工程师们没有选择向官方妥协。他们直接向 Go 运行时(Runtime)开刀,甚至手撕底层汇编代码,硬生生把这 10% 的 CPU 损耗压到了 0.0047%。不仅如此,他们还将研究成果反哺给 Go 官方社区(Issue #77893),正在推动 Go 语言栈分配机制的历史性进化。

今天,就让我们扒开 Go 运行时的源码,重走一遍 Uber 团队打赢这场性能保卫战的硬核之旅。

剖析“案发现场”:Go 栈扩容的阿喀琉斯之踵

熟悉 Go 的开发者都知道,Go 在全球范围内大杀四方的核心武器就是 Goroutine(协程)

为了实现极高的并发密度,Go 语言在设计上做了一个大胆的取舍:与传统的操作系统线程(OS Thread,如 pthread_create 动辄分配 2MB 或 4MB 的初始栈)不同,一个 Goroutine 的初始栈空间仅仅只有 2KB

这种设计的优势是极其明显的:你可以轻松在一台普通机器上拉起数十万甚至上百万个 Goroutine,而不用担心内存溢出(OOM)。但天下没有免费的午餐,如果你的函数调用层级过深,或者在函数内部声明了较大的局部变量,区区 2KB 的栈空间瞬间就会被撑爆。

当 2KB 不够用时,Go 会怎么做?

Uber 团队在博客中深入解释了这一机制:Go 编译器会在每个函数的序言(Prologue)阶段插入一段检查指令,对比当前的栈指针(Stack Pointer)是否超过了阈值。


用于演示栈扩展过程的示例汇编代码

第 2 行展示了堆栈指针的值。如果该值超过了阈值,程序就会跳转到 runtime.morestack 函数进行处理。

一旦触发 runtime.morestack,Go 运行时会执行以下昂贵的操作:

  1. 申请一块原栈空间两倍大(即 4KB)的新内存。
  2. 调用 runtime.copystack,将旧栈的数据原封不动地“拷贝”到新栈中。
  3. 极其复杂的一步:更新旧栈中所有指向局部变量的指针,确保它们指向新栈的正确内存地址。
  4. 释放 2KB 的旧栈。

如果 4KB 依然不够呢?那就继续分配 8KB、拷贝、释放;再分配 16KB、拷贝、释放……

在 Uber 复杂的微服务链路中(比如处理庞大的 gRPC 请求、复杂的序列化/反序列化中间件),一个请求进来,往往需要数十 KB 的栈空间。这意味着每次请求都会触发多次徒劳无功的“搬家行为”。在峰值流量下,无数个 Goroutine 都在疯狂扩容,最终导致 CPU 算力被海量的内存拷贝白白挥霍。

为什么 Go 1.19 的“自适应栈”彻底失效了?

其实,Go 官方早就意识到了这个问题。在 Go 1.19 版本中,官方高调引入了一项优化:自适应栈大小(Adaptive Stack Size)

其设计初衷非常聪明:Go 会在每次垃圾回收(GC)扫描栈时,计算当前所有存活 Goroutine 的平均栈大小。如果当前程序的平均栈大小是 16KB,那么接下来新创建的 Goroutine 就会直接以 16KB 启动,完美避开 2KB -> 4KB -> 8KB -> 16KB 的拷贝地狱。

但这套看似完美的机制,在 Uber 真实的业务场景下,却彻底崩溃了。

在向 Go 官方提交的 GitHub Issue #77893 中,Uber 工程师贴出了详细的统计数据。他们发现,微服务中的 Goroutine 栈分布并不是均匀的,而是呈现出典型的双峰分布(Bimodal Distribution)

  • 海量的“僵尸”协程:在 Uber 的任意一个实例中,通常会有数千个长时间存活的后台 Goroutine。比如监听配置更新的轮询、阻塞在网络 I/O 上的长连接、或是空闲的 gRPC worker。这些 Goroutine 存活了极长的时间(超过 190 分钟),但它们的栈极浅,通常只有 2KB 到 4KB。
  • 少数的“重装”协程:真正在干活的、处理活跃请求的 Goroutine 数量相对较少,但一旦被触发,它们的栈会迅速膨胀到 16KB 甚至 32KB 以上。

悲剧就此诞生。由于海量的“僵尸协程”疯狂拉低了全局平均值,导致 Go 运行时计算出的平均栈大小永远在 4KB 左右徘徊。结果就是,那些真正需要处理复杂业务的新请求,依然只能以 4KB 悲惨开局,继续遭受 copystack 的毒打。

寻找解药:为什么常规优化方案行不通?

在明确了病因后,Uber 团队开始探索解决方案。

选择 1:Goroutine 池化(Goroutine Pooling)

这是很多高并发框架爱用的伎俩。Uber 内部的 M3 团队就曾使用过这个方案——让一堆固定数量的 Goroutine 常驻内存,任务来了就丢给它们执行。因为常驻协程已经扩容到了最大栈,所以不会再发生拷贝。

放弃原因:这需要对全公司的业务代码进行伤筋动骨的重构。协程池不仅增加了代码复杂度,还引入了 Channel 通信的额外 CPU 开销。如果在高负载下任务堆积,还容易导致系统死锁。

选择 2:手动摸石头过河(Manual Mode)

运维人员手动改代码,给服务分配 4KB 的初始栈,部署上去看 Profile;不行再改成 8KB,再部署……

放弃原因:完全不可扩展。Uber 有上千个微服务,靠人力试错无异于天方夜谭。

常规手段全部碰壁,Uber 的基础架构狂人们决定直接向 Go 运行时的底层规则发起挑战。

暴力美学:用黑魔法强改 Go 运行时变量

既然运行时的全局平均算法被后台“僵尸任务”带偏了,那我们就强行接管它!

然而,Go 官方并没有提供任何可以修改初始栈大小的公共 API(这是被隐藏在 runtime 包内部的机制)。为了打破这层封印,Uber 工程师动用了 Go 语言的终极黑魔法://go:linkname。

通过 go:linkname 这个编译器指令,Uber 成功绕过了包的可见性限制,强行将自己写的外部函数链接到了 runtime 内部的私有变量上。

同时,通过GODEBUG关闭了官方的自适应扩容和栈收缩逻辑(debug.gcshrinkstackoff = 1)。

这里还有一个插曲:由于滥用 linkname 会破坏语言的安全性,Go 官方在 Go 1.23 版本中严格限制了这一机制的使用。为了维持这个 Hack,Uber 甚至被迫在内部维护了一个对 Go 语言源码的 Patch(补丁),专门放开对 startingStackSize 变量的链接权限。

通过这一通硬核魔改,他们成功为不同的微服务通过配置下发(Runtime Environment Variables)注入了静态的初始栈大小。

这套暴力魔改的效果,堪称震撼:

当他们将某个核心请求链路的初始栈静态固定为 32KB 后:

  • CPU 吸血鬼被秒杀:runtime.copystack 的耗时从惊人的 39.98 秒(9.77%)垂直暴跌至 0.42 秒(0.0047%)
  • 整体算力大减负:整个容器的 CPU 实际消耗量直接下降了近 16%

从图中可见:部署了 32KB 静态栈补丁后,黄线(上周)与绿线(本周)的对比,CPU 使用率出现了明显的下降。

代价是什么?仅仅是容器多占用了不到 200MB 的物理内存(对于拥有 16GB 内存的微服务节点来说,这不到 2% 的内存开销简直是白送)。这就是系统级工程中典型的“空间换时间”神之一手。

全局扩展:自研汇编解析器,实现智能化预测

让一个服务吃上 32KB 很容易,但如何自动化地推断 Uber 旗下数百个微服务究竟需要多大的栈?

Uber 团队给出了一份教科书级别的“自动化性能反馈回路(Feedback Loop)”方案:

Uber 设计的自动化调整架构。从生产环境拉取 Profile -> 筛选出触发扩容的函数 -> 获取带符号表的二进制文件 -> 逆向反汇编计算栈大小 -> 将最优配置下发给微服务。

这里的技术难点在于:Profile 只能告诉你哪个函数触发了扩容,但它没法告诉你这个函数到底需要多大的内存。

Uber 的做法简直硬核到了极点:反汇编(Disassembly)。

他们编写了一个自动化工具,使用 Go 原生的 debug/elf 库解析带有符号表的二进制文件,找到那个罪魁祸首的函数,然后直接读取它的底层汇编指令!

在 x86 汇编中,函数在进入时会通过减小栈指针寄存器(RSP)来分配当前函数所需的栈帧空间。指令通常长这样:SUB $128, RSP。
Uber 的分析器精准地捕获这条指令,提取出立即数(比如 128 字节),然后沿着 Profile 的调用栈层层累加,最终极其精确地计算出这棵调用树在最深处到底需要多少物理内存!

通过这种“开天眼”般的方式,Uber 为每一个微服务量身定制了最完美的 2的次幂(如 8KB、16KB、32KB)作为静态启动栈,消灭了全公司的大部分的栈扩容内耗。

反哺开源:推动 Go 语言社区的历史性进化

Uber 并没有将这个每年能省下数百万美元的黑科技据为己有。

在验证了方案的巨大威力后,Uber 工程师带着详尽的生产级数据,敲开了 Go 官方 GitHub 的大门(Issue #77893),期望从语言底层寻找一种更优雅、无需魔改代码的终极解法。

这引起了 Go 核心开发团队(如 Keith Randall, thepudds)的高度重视。针对 Uber 揭示的“双峰分布”导致平均值失效的痛点,社区目前正在紧锣密鼓地测试几项革命性的补丁(如 CL 758141, CL 764220):

  1. 剔除“僵尸”协程(Filtering Inactive Goroutines):在计算全局平均栈大小时,直接把那些在过去一两个 GC 周期内完全没动过、一直阻塞在 Select 或 I/O 上的长时协程排除在数学公式之外。
  2. 放弃平均值,改用 P90 算法:不再使用易被极端值影响的平均数(Mean),转而追踪所有新销毁协程栈大小的 P75 或 P90 分位数。
  3. 内存阈值保护:为了防止盲目分配导致 OOM,Go 可能会引入一个软上限:只要预测的较大初始栈带来的额外内存开销,不超过程序总堆(Heap)大小的 1%,就允许新协程以更大的姿态启动。

Uber 工程师在他们的基础服务中测试了 Go 官方仍在 WIP(开发中)的“P90 + 剔除僵尸协程”补丁。结果令人振奋:在不写一行魔改代码的情况下,服务的 copystack 成本自动下降了高达 80%!

不出意外的话,在即将到来的 Go 新版本中,全球数以百万计的 Go 开发者,都将免费享受到由 Uber 趟出的这条性能优化之路。

小结:给高阶开发者的三个启示

从 Uber 这次优化战役中,我们应当汲取到系统级优化的深刻智慧:

  1. 没有永恒的银弹(No Silver Bullet):Go 的 2KB 极轻量级并发机制让它在网络编程中大杀四方,但在重度计算和深层中间件调用的微服务中,初始内存过小反而成了 CPU 杀手。理解底层的 tradeoff(空间换时间)是每一位高阶架构师的必修课。
  2. 让 Profiling 成为上帝之眼:如果 Uber 没有建立起常态化、Fleet-wide的 CPU Profiling 机制,这 10% 的算力损耗将永远隐藏在数据中心的嗡嗡作响中,无人知晓。性能优化,永远是数据驱动的。
  3. 敬畏底层,但也敢于重塑底层:遇到语言层面的严重瓶颈,平庸的工程师会说“官方机制就是这样,没办法”;但顶级的极客会直接打开源码,用 go:linkname 强行逆天改命,手撕机器汇编,最后再拿着硬核数据去推动官方修改世界规则。

技术的世界里永远没有绝对的黑盒,有的只是一次又一次在极限边缘的疯狂试探。今天,Uber 帮全球的 Go 开发者点亮了一盏明灯,而在不远的未来,这束光将照亮我们运行在云端的每一行代码。

资料链接:

  • https://www.uber.com/us/en/blog/zero-growth-stack
  • https://github.com/golang/go/issues/77893

还在为写 Agent 框架频频死循环、上下文爆炸而束手无策?我的新专栏 从0 开始构建 Agent Harness 将带你:

  • 抛弃臃肿框架,回归“驾驭工程 (Harness Engineering)”的第一性原理
  • 用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等,复刻极简OpenClaw
  • 构建坚不可摧的 Safety Middleware 与飞书人工审批防线
  • 在底层实现 Token 成本审计、链路追踪与自动化跑分评估
  • 从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”

扫描下方二维码,开启从 0 开始构建Agent Harness 的实战之旅。


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


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

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 从 0 开始构建 Agent Harness 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