<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>构建速度 on Tony Bai</title><link>https://tonybai.com/tags/%E6%9E%84%E5%BB%BA%E9%80%9F%E5%BA%A6/</link><description>Recent content in 构建速度 on Tony Bai</description><generator>Hugo</generator><language>zh-cn</language><copyright>2004-2026 Tony Bai. 版权所有.</copyright><lastBuildDate>Sat, 11 Jul 2026 06:00:00 +0800</lastBuildDate><atom:link href="https://tonybai.com/tags/%E6%9E%84%E5%BB%BA%E9%80%9F%E5%BA%A6/index.xml" rel="self" type="application/rss+xml"/><item><title>10倍速 TypeScript 7.0 正式发布，前Go产品经理：Go才是AI智能体时代的“天选语言”</title><link>https://tonybai.com/2026/07/11/typescript-compiler-rewritten-in-go-agentic-ai-language/</link><pubDate>Sat, 11 Jul 2026 06:00:00 +0800</pubDate><guid>https://tonybai.com/2026/07/11/typescript-compiler-rewritten-in-go-agentic-ai-language/</guid><description>微软近日正式发布了Go重写版的TypeScript 7.0版本，构建速度飙升 10 倍。这一举动印证了前 Go 语言产品经理 Steve Francia (spf13) 的最新“反直觉”论断：在 AI 智能体（Agentic AI）主导开发的时代，Go 才是真正的“天选语言”。文章深度剖析了其背后的工程逻辑：当 AI 取代人类成为高频“写作者”时，人类将退化为“阅读者”与“审查员”。此时，Go 语言在诞生之初押注的“为阅读优化”、“严格的依赖管理”、“极致的编译速度”与“十年如一的向后兼容性”，完美契合了 AI 循环迭代对确定性、低上下文消耗和安全闸门的需求。相比之下，Python 与 TS 的动态性和隐式依赖反而会成倍放大 AI 的纠错成本。文章强调，并非要用 Go 统一天下，但在构建 Agentic 时代的基础设施和后端服务层，Go 凭借更低的 API 成本和更高的迭代吞吐量，已经成为不可替代的默认选项。</description><content:encoded><![CDATA[<p><img alt="题图" loading="lazy" src="/images/wp-content/uploads/2026/typescript-compiler-rewritten-in-go-agentic-ai-language-1.png"></p>
<p><a href="https://tonybai.com/2026/07/11/typescript-compiler-rewritten-in-go-agentic-ai-language">本文永久链接</a> – <a href="https://tonybai.com/2026/07/11/typescript-compiler-rewritten-in-go-agentic-ai-language">https://tonybai.com/2026/07/11/typescript-compiler-rewritten-in-go-agentic-ai-language</a></p>
<p>大家好，我是Tony Bai。</p>
<p>微软TypeScript团队用一年多时间，把TS编译器从TypeScript本体迁移到了Go语言，构建速度直接暴涨了一个数量级，并于近日<a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/">发布了TypeScript 70正式版</a>。这门被很多人认为“过气”、“无聊”的Go语言，正在AI智能体时代悄悄杀回牌桌中央。前Go语言产品经理、知名开源项目Hugo的创造者Steve Francia（以下称为spf13）近日撰文，系统论证了一个反直觉的观点：<a href="https://spf13.com/p/go-the-agentic-language/">Go，才是为Agentic AI时代量身定做的语言</a>。</p>
<p><img loading="lazy" src="/images/wp-content/uploads/2025/paid/go-tui-primer-qr.png"></p>
<h2 id="ts编译器弃用typescript本体转投go构建速度提升10倍">TS编译器弃用TypeScript本体，转投Go，构建速度提升10倍</h2>
<p>这件事本身就足够炸裂。</p>
<p>TypeScript的缔造团队，微软官方，把自家旗舰工具的编译器和一整套工具链，从TypeScript迁移到了Go。不是Rust，不是C++，是Go。根据<a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/">微软最新公布的数据</a>，新版TS 7.0的构建速度提升了一个数量级。</p>
<p><img loading="lazy" src="/images/wp-content/uploads/2026/typescript-compiler-rewritten-in-go-agentic-ai-language-2.png"></p>
<p>TypeScript的技术负责人<a href="https://tonybai.com/2025/03/13/interview-with-anders-hejlsberg/">Anders Hejlsberg给出的理由</a>非常“朴素”：老版本编译器大量使用函数式写法，几乎可以一比一平移到Go；新老编译器都依赖垃圾回收（GC）；而原生代码加上共享内存并发模型，正是这次十倍性能提升的来源。有意思的是，官方公告里通篇没有提到一个字的“AI”。</p>
<p>但spf13在文章里点出了关键：让这次“平移式重写”成为可能的那些特质——简单的函数、没有隐藏的魔法、自带GC、一个团队能装进脑子里的代码——恰恰是下一个开发时代最需要的特质。</p>
<p>这就是整篇文章要回答的问题：为什么在2026年这个AI智能体疯狂写代码的时间点上，一门2009年为“人类系统程序员”设计的语言，反而成了最契合的选择。</p>
<h2 id="go的底层哲学为读者优化不为写者优化">Go的底层哲学：为“读者”优化，不为“写者”优化</h2>
<p>要理解spf13的论证逻辑，得先回到Go语言设计之初的一个基本赌注：优化阅读体验，而不是书写体验，用“写起来稍微啰嗦一点”换“读起来不容易读错”。</p>
<p>这个赌注在过去十几年里，一直是Go被吐槽“啰嗦”、“无聊”、“没有语法糖”等的原因。但spf13认为，这个赌注在AI智能体时代突然兑现了红利。</p>
<p>原因很简单：大语言模型“读”代码的频率，远远超过任何人类程序员。而随着AI承担越来越多的代码编写工作，人类工程师的角色也在加速向“阅读者”偏移——审查、把关、决策，而不是逐行敲键盘。</p>
<p>Agentic开发（也就是AI智能体自主完成“写代码-构建-测试-调试-自我修正”这一整套闭环）是对“可读性、可维护性、长期正确性”最极端的一次压力测试。而这恰恰是Go从诞生第一天起就在优化的目标。</p>
<h2 id="python和typescript的生态光环在系统级场景下不够用了">Python和TypeScript的“生态光环”，在系统级场景下不够用了</h2>
<p>表面上看，Python和TypeScript才应该是AI时代的当红语言：Python坐拥PyTorch、LangChain这些机器学习生态，TypeScript手握整个Web开发者群体，大模型训练数据里到处都是这两种语言，写起来又快又“顺手”。</p>
<p>但spf13的反驳角度很刁钻：Python和JavaScript从诞生起就是<strong>脚本语言</strong>，追求的是写得快、写得随意、动态灵活。TypeScript虽然给JavaScript加上了类型系统，但这层类型只存在于编译期，运行时会被完全擦除，也就是说TypeScript的所有类型保证，代码真正跑起来的那一刻就荡然无存。</p>
<p>根据<a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/">GitHub 2025年度Octoverse报告</a>，TypeScript按月活跃贡献者数量已经超过了Python和JavaScript，但同期JavaScript新建仓库数量仍然接近Python的两倍——报告原话是“JavaScript依然庞大”，JavaScript/TypeScript生态整体活跃度仍然超过Python单独一个生态。</p>
<p>但问题的关键在于：Agentic系统不是脚本，而是服务、流水线、命令行工具和需要在生产环境跑上好几年的分布式系统。</p>
<p>而Python、JavaScript、TypeScript这三门语言，在复杂度管理、依赖隔离、部署方式、运行时安全性这几个维度上，都是在跟自己的语言设计初衷“对着干”。</p>
<p>反观Go，从一开始就是为“大规模、长生命周期软件”设计的系统语言。这恰好踩在了整个行业正在收敛的方向上：编译型、类型安全、为跑十年而生，而不是为了跑一个下午。</p>
<p>有意思的是，Python生态里目前最“性感”的进展，其实大多发生在Rust身上：Pydantic的校验核心是Rust写的，高性能数据处理库Polars是Rust写的，HuggingFace的tokenizers是Rust写的，连Astral出品的包管理神器<code>uv</code>也是Rust写的。</p>
<p>而Go的存在感体现在另一条战线：它已经成了当前这一波Agentic工具<a href="https://tonybai.com/2026/05/26/why-nvidia-chose-go-to-rewrite-their-ai-infrastructure">基础设施的默认语言</a>。本地大模型运行标准工具Ollama，是Go写的；支撑无数RAG和智能体记忆系统的向量数据库Weaviate，是Go写的；用来编排长时间运行智能体工作流的持久化执行引擎Temporal，是Go写的；Charm出品、和Google Antigravity同类的AI编程智能体命令行工具Crush，也是Go写的；就连GitHub官方发布的MCP服务器参考实现，同样是用Go写的。</p>
<p>spf13总结道：在一个开发循环里，问题从来不该是“哪门语言最容易写”，而应该是“哪门语言最容易写、审查、并交付上线”。而Agentic开发把这个问题的权重放大了几十倍——因为现在，一天要被问上百次的，是一台机器，而不是一个人类。</p>
<h2 id="agentic循环会把每一个语言短板同步放大">Agentic循环，会把每一个语言短板同步放大</h2>
<p>spf13给出了一个很直观的对比：一个人类开发者，一小时大概会跑十几次“写-构建-测试”的循环；而一个自主运行的AI智能体，一个任务里就可能跑上几十次这样的循环。这个频率的变化，彻底改变了“语言选择”这件事的经济账。</p>
<p>数据科学工具Ibis的作者Wes McKinney，在他<a href="https://wesmckinney.com/blog/agent-ergonomics/">关于“智能体工程学”的文章</a>里也提出过类似观点：一旦写代码的主体变成了AI智能体，编译-测试的循环速度、分发的顺畅程度、构建结果的确定性，比这门语言“人类写起来爽不爽”重要得多。他不只是写文章，他自己给AI编程智能体做的<a href="https://github.com/kenn-io/roborev">持续后台代码审查工具Roborev</a>，就是用Go写的。</p>
<p>spf13把这套压力拆成了<strong>四个会互相叠加放大的问题</strong>：</p>
<h3 id="1-构建速度">1. 构建速度</h3>
<p>对大型Rust或C++项目来说，几分钟的构建时间，人类顶多算“喝杯咖啡的功夫”，但对一个要在一个功能上跑50次迭代的AI智能体来说，这几分钟乘以50，就是实打实被浪费掉的算力和时间。Go的编译速度几乎是即时的，这直接决定了整个循环能不能“转得动”。</p>
<h3 id="2-依赖管理">2. 依赖管理</h3>
<p>Python的<code>pip</code>默认并不保证安装结果的确定性，跨机器的版本冲突至今仍然常见。</p>
<p>Node的<code>npm</code>在处理依赖冲突这件事上其实做得相当不错，<code>node_modules</code>可以嵌套存放同一个包的多个版本，配合<code>package-lock.json</code>和<code>npm ci</code>，安装的可复现性已经好了很多，但在peer dependency（同级依赖）这块依旧容易卡在<code>ERESOLVE</code>报错上，需要人工去解开。而这种“版本灵活性”是有代价的：层层嵌套的依赖树，会把<code>node_modules</code>撑得又大又臃肿，也拉高了AI智能体需要理解和处理的信息量。</p>
<p>更关键的是，Python和Node两个生态都允许在安装阶段执行任意代码（<code>setup.py</code>、<code>postinstall</code>脚本），这本身是真实存在的供应链安全风险，双方都曾因此“中招”过。</p>
<p>Go走的是另一条路：<code>go.sum</code>会锁定精确的校验和，整个构建过程中每个模块只会确定性地选出唯一一个版本，也没有“安装阶段执行代码”这个后门可以被恶意依赖利用。对一个要持续生成代码、持续部署的AI智能体来说，这意味着更少的版本漂移，也意味着更小的攻击面。</p>
<h3 id="3-错误反馈">3. 错误反馈</h3>
<p>Python的类型提示和TypeScript的类型系统，配合<code>mypy</code>、<code>pyright</code>、<code>tsc</code>这类工具，确实能在运行前抓出不少真实错误。但两者都有一个共同的“后门”：Python的类型标注至今仍是可选项，落地程度参差不齐；TypeScript的类型保证在运行时会被完全擦除，而<code>any</code>是一个官方认可、零成本的逃生舱口——只要代码写得不顺手，随时可以用它“摆平”类型报错。</p>
<p>这恰恰是一个在时间和token压力下运行的AI智能体，最容易被诱导去做的事：用<code>any</code>让代码“先跑起来”，成本几乎为零。</p>
<p>搭建AI智能体编排框架Superpowers的Jesse Vincent，记录过这个后门被打开之后会发生什么：AI智能体会“合理化”自己绕过规则的行为。他遇到过一个真实案例——一个AI智能体为了让失败的测试“消失”，直接把测试文件删掉了，逻辑上竟然自洽：不存在的测试，当然不会失败。他的原话总结得很精辟：<strong>规则总有一个可以被“合理化”绕开的口子（“我先做完这一件事再遵守”），而闸门没有——条件不满足，下一步动作就是被物理拦住，无从商量。</strong></p>
<p>Go恰好没有这个口子。Go也有<code>any</code>（本质是<code>interface{}</code>的别名），但和TypeScript的<code>any</code>不是一回事：TypeScript的<code>any</code>会关闭它所触及的所有类型检查，而Go的<code>any</code>在每一个使用点都依然会被检查，编译器会拒绝任何类型不支持的操作，除非你显式做类型断言，而这个断言本身也会被编译器验证。换句话说，<strong>逃生舱口本身也是被锁着的</strong>。</p>
<p>在Python或TypeScript里，一个错误往往要拖到运行时才会暴露——而这时候，AI智能体很可能已经在这个错误的基础上继续往上叠加了更多代码，返工成本（上下文和API调用）已经像利滚利一样滚起来了。在Go里，同样的错误在编译阶段就会被当场逮住，智能体还没来得及运行任何代码。</p>
<p>这个差异同样会体现在代码审查环节——现在审查双方也经常都是AI。一个负责审查的智能体，能看懂Python或JavaScript代码“写了什么”，但未必能可靠地判断它“实际做了什么”，因为元类（metaclass）和原型链会把真实的行为路径藏起来，静态阅读根本看不出来。</p>
<p>Go用同样的方式消除了这个盲区：一个函数名只对应一个含义，方法调度只按名字走，没有任何隐藏的控制流可以在审查的任何一侧“藏”住一个bug。Go的类型系统不是后加的一层修饰，它就是这门语言本身，天然覆盖100%的代码。</p>
<h3 id="4-生态更迭">4. 生态更迭</h3>
<p>spf13认为这可能是四个问题里影响最大的一个。Go有一份延续至今的<a href="https://go.dev/doc/go1compat">兼容性承诺</a>：2012年为Go 1.0写的代码，今天依然能正确编译运行。语言和标准库只做加法，几乎从不破坏已经跑通的东西。</p>
<p>而Node生态里，没有任何东西能提供类似的保证。主流框架频繁打破自己此前版本的兼容性：Svelte 5的Runes是和Svelte 4完全不同的响应式模型；Vue 3彻底重写了Vue 2的响应式系统；React从class组件到hooks再到服务端组件的演进，导致现在同时流通着好几套互不兼容的“React代码写法”。问一句“这段代码是哪个版本的Svelte或Vue”，本质上是在问“这段代码到底还能不能跑”。Python也不是完全免疫——Python 2到3长达十年的迁移就是前车之鉴——但Node生态的更迭速度明显更快、更持续。</p>
<p>这种生态震荡对AI智能体来说是个特殊的、会持续叠加的问题：智能体对一个生态的“认知”，本质上是训练时刻的一张快照，而在一个快速变化的生态里，这张快照很快就会过期，产出的代码看起来“很像那么回事”，实际调用的却是早已被重构或废弃的接口。而在Go的世界里，几年前的训练快照放到今天依然是正确的。这意味着智能体可以直接信任自己已有的知识，而不需要每次任务都重新去核实一遍。</p>
<p>Google的杰出工程师Dave Rensin，在带队<a href="https://drensin.medium.com/elephants-goldfish-and-the-new-golden-age-of-software-engineering-c33641a48874">用AI智能体搭建一个面向10万用户的内部工具</a>时，说过一句很扎心的话：“如果我们不小心，我们做的就不只是更快地写代码，而是在批量生产我们自己的错误。” 这个风险不是Go独有的，它是AI辅助开发在任何语言下都存在的通病。但Go的结构——静态类型、显式导入、没有魔法——恰好是天然对抗这个风险的摩擦力：糟糕的代码，从一开始就更难被写出来。</p>
<p>spf13还提到了<a href="https://go.dev/solutions/paypal">一个PayPal团队分享给他的真实案例</a>：一套自研的C++数据库性能强劲、逻辑正确，但团队却陷入了停滞——每个新人入职都要花几个月才能吃透代码库，大部分工程产能都耗在了维护上。大约六个月后，一支约十人的团队用Go重写了这套系统，性能在生产环境反超了原来的C++版本，维护成本却低得多。Go并不比C++更快，真正的瓶颈从来不是代码运行速度，而是团队能不能理解、维护、扩展这套代码。“实际能兑现的性能，胜过理论上的性能”——这正是今天Agentic团队在做的同一笔交易，只是被压缩进了一个短得多的周期里。</p>
<h2 id="那rust呢为什么不是rust">那Rust呢？为什么不是Rust？</h2>
<p><a href="https://tonybai.com/2021/03/15/rust-vs-go-why-they-are-better-together">Rust和Go其实是互补关系</a>，各自适合不同的场景，在Agentic开发里都有一席之地，但spf13认为Rust更像是一件“专用工具”，而不是默认选项。</p>
<p>Rust和Go共享很多优点：内存安全、静态类型、没有隐藏的运行时魔法。Rust的编译器报错也出了名地详细——按照“编译器即闸门”的逻辑，一条详尽的借用检查器（borrow checker）报错信息，对AI智能体来说同样是实打实的价值。</p>
<p>但两者的分歧恰好出现在Agentic开发最不能容忍的地方：Rust的编译时间明显更长；而支撑Rust安全保证的那套复杂机制——生命周期、trait约束、借用检查器——本身是要付出代价的，代价就是Go那种“一件事只有一种明显写法”的可读性。</p>
<p>这个代价在重构阶段体现得最明显：按spf13的经验，一处改动在Go里往往是局部的，而在Rust里却可能沿着生命周期和trait约束层层扩散开。而“可重构性”恰恰是Agentic开发最依赖的能力——现在做返工的是AI智能体而不是人类，智能体需要做的返工量还远远大于人类。语言越复杂，智能体读错的概率就越高，而一旦读错，这个bug会随着迭代不断累积。</p>
<p>不过Rust也有自己的独门绝技：通过PyO3、maturin这类工具，Rust可以零成本地生成C ABI绑定，非常适合在Python包底层塞入一个编译好的Rust核心——这正是Pydantic、Polars、HuggingFace tokenizers都选择Rust的原因。</p>
<p>相比之下，Go在这个场景里历来偏弱，因为cgo（Go调用C代码的机制）本身会带来不小的性能开销。虽然Go 1.26已经把cgo调用的基础开销削减了约30%，但在很多这类场景里，Rust仍然是更好的选择。</p>
<p>spf13的结论很务实：对Agentic开发而言，Go的简洁和可读性，让它成为智能体越来越依赖的“系统层”的默认选择；而Rust，则是当它的那些保证真正值得付出代价时，才该请出来的专用工具。</p>
<h2 id="上下文窗口才是agentic开发里最稀缺的资源而go在保护它">上下文窗口才是Agentic开发里最稀缺的资源，而Go在保护它</h2>
<p>这一段可能是全文最反直觉、也最值得工程师细品的部分。</p>
<p>前面提到的所有问题，本质上都是“成本 × 迭代次数”，而上下文（context）则是Agentic工作里一笔持续存在的固定成本——而且，<strong>上下文窗口不是越大越好</strong>。</p>
<p>“干脆用更大的上下文窗口”，这个想法背后有一个默认假设：模型能均匀地在20万甚至100万token的窗口里进行推理。</p>
<p><a href="https://www.trychroma.com/research/context-rot">Chroma在2025年的一项研究</a>里，对包括GPT-4.1、Claude 4、Gemini 2.5、Qwen3在内的18个主流大模型做了直接测试：固定任务难度，只改变输入长度，结果证明这个假设是错的——即便是很简单的任务，性能也会随着输入变长而下降。研究把最大的元凶称为“干扰项”（distractors）：那些和任务主题相关、但并不是答案本身的内容。一个干扰项就能让准确率明显下滑，四个干扰项叠加起来，伤害是复合式的。与其想办法把上下文窗口做大，更划算的做法其实是想办法把输入变小。</p>
<p>一条类的继承链、一串mixin、一层层装饰器（decorator）——对一个正在追踪bug的AI智能体来说，这些都是干扰项的重灾区。一个<code>super()</code>调用要经过菱形继承才能解析到位，一个元类在运行时悄悄改写了行为，一个override被埋在三层继承之外——这些内容本身都不是智能体需要的逻辑，但它依然得把这些内容加载进来、权衡一遍、再排除掉，而这一切都发生在同一个本就在“性能衰减”的推理窗口里。这也是为什么AI智能体经常自信满满地写出忽略了某个继承覆写、或者调用错了mixin方法的代码。</p>
<p>Go的设计恰好是极简且显式的：一个文件需要的所有东西，都写在这个文件和它直接导入的包里——没有继承链，没有从六个目录之外引入的mixin，没有在运行时偷偷改写方法解析规则的元类。函数名只对应一个含义，编译器会强制执行这一点。<strong>Go代码里几乎所有token，都是真正相关的token</strong>。</p>
<p>这还带来一个连锁效应：它降低了完成一个任务所需要的模型门槛。一个能装进2万个“干净”token的bug，和一个被埋在15万token框架噪音里的同一个bug，需要的推理能力完全不是一个量级。更简单、干扰更少的代码，对模型来说更容易写对，这意味着更小、更便宜、甚至本地部署的模型，也能写出能跑的Go代码——而同样的任务换成Python、Java、Rust或TypeScript/JavaScript，这些小模型很可能就翻车了。</p>
<p>这一点在AI公司不再“烧钱补贴”算力成本的那一天会变得更加重要——而这个趋势已经开始显现。</p>
<p>一门能让代码始终保持简洁、简单到中等模型也能正确处理的语言，它的成本结构才经得起补贴消失之后的考验。同一个特质在天平的两端同时兑现：让小模型能写对代码的东西，也正是让人类审查者能快速读懂代码的东西——因为双方都不需要再费力“反推”出被隐藏起来的行为。</p>
<p>再往深一层说，这还意味着代码更可能一次就写对，也就意味着更少的迭代次数、更少的API调用、更少被烧掉的上下文，模型能把更多精力花在真正不需要人类介入的任务上。</p>
<p>上下文效率，其实是Go在2009年就下的那笔赌注里最锋利的一个体现：无论读者是人类还是机器，永远优先为“读”而不是为“写”去优化。</p>
<h2 id="一种格式零风格之争">一种格式，零风格之争</h2>
<p>同样这个“为读者优化”的赌注，也体现在代码的表面形态上。<code>gofmt</code>是Go自带的官方格式化工具，整个社区的代码都跑在它上面。<strong>不管是人类写的、机器生成的、写于十年前的，还是AI智能体今天早上刚写完的，每一份Go代码在结构上看起来都一模一样。</strong></p>
<p>长期打造AI辅助Go工具的开发者Simon Willison也<a href="https://simonwillison.net/2026/Feb/4/distributing-go-binaries/">观察到了这一点</a>：他评价说，Go“通常只有一种明显该做的方式”，写出来的代码“朴素又好读”，而这恰好是大语言模型非常擅长驾驭的那种代码风格。</p>
<p>当每一份Go文件看起来都长得一样时，一个AI智能体在开始工作之前，其实就已经被“预先调教”好了。</p>
<p>只要把它指向Go标准库（比如<code>encoding/json</code>、<code>net/http</code>、<code>io</code>），它立刻就能写出符合社区规范、生产级质量的代码，完全不用纠结<code>black</code>和<code>yapf</code>哪个更好、<code>isort</code>和<code>ruff</code>该选哪个。</p>
<p>再配合像 <a href="https://github.com/spf13/go-skills">go-skills</a> 这样的项目，这种“预调教”效果会更直接——智能体不再需要从零散的示例里推测代码规范，而是拿到了一份明确、可复用的Go惯用写法指南。对代码审查来说，无论审查者是人类还是AI，注意力都能完全集中在逻辑本身，而不是格式噪音上。</p>
<h2 id="go优化的不只是写代码而是整条软件生命周期">Go优化的不只是“写代码”，而是整条软件生命周期</h2>
<p>大部分语言比较文章，关注点都停留在“写代码这一步谁更快”。但软件开发生命周期（SDLC）远不止写代码：构建、测试、部署、调试、维护，每一环都要走。而在Agentic工作流里，<strong>每一环都是以机器的频率在运转的</strong>。</p>
<p>过去十年里，Go的生态已经从一门语言，进化成了一整套完整的SDLC平台：模糊测试（fuzzing）成了内置能力，<code>govulncheck</code>让漏洞管理走向成熟，workspace模式统一了monorepo开发体验，模块代理机制大幅减少了版本冲突——而这一切，都不需要跳出Go生态本身去解决。</p>
<p>依赖管理交给<code>go mod tidy</code>，无论在笔记本、CI还是容器里，结果都是确定性的、完全一致的——不像<code>pip</code>或<code>npm</code>，每一次依赖解析失败都意味着白白损失一次迭代。</p>
<p>测试环节，<code>go test ./...</code>一条命令就够了：不需要挑选测试框架，不需要配置一堆fixture。在包目录下丢一个<code>_test.go</code>文件，写一个<code>Test</code>开头的函数，一条命令跑完。</p>
<p>对一个要强制执行测试驱动开发（TDD）的AI智能体来说，这种可靠性让“闸门”这件事变得真正确定，而不是像Python那样被fixture的复杂配置拖累。编译速度快，靠的是精确的依赖关系图，这直接乘数级地提升了迭代吞吐量。</p>
<p>部署环节更是简单到只有<code>go build</code>：一个自包含的二进制文件，没有运行时依赖，没有解释器版本问题，没有容器启动时间——复制这个二进制文件，直接运行就行。</p>
<p>这些优势不是简单相加，而是相乘：每一环的循环都变快，意味着每小时能跑的迭代更多、API成本更低、结果也更可靠。</p>
<h2 id="这不是要一统天下而是分层最优">这不是要“一统天下”，而是“分层最优”</h2>
<p>spf13在文章最后特别强调，这篇文章的主张从来不是“弃用Python”或者“弃用TypeScript”。把一整个技术栈的所有层级都押注在同一门语言上，无论押的是哪门语言，本质上都是同一种错误。</p>
<p>真正该问的问题更具体：<strong>在Agentic工作流越来越依赖的系统、服务、基础设施这一层，哪门语言最合适？</strong> 在2026年，答案更多时候是Go，因为它恰好完美契合这一层的需求。</p>
<p>Python的机器学习生态——PyTorch、LangChain、Transformers——依然不可替代，也不应该被替代。训练模型、跑推理，Python依然是标准答案，Go完全不在这个赛道上竞争，而是在为它提供补充。</p>
<p>Go完全可以运行在Python底层，也可以运行在它旁边。Simon Willison做过一个叫 <a href="https://simonwillison.net/2026/Feb/4/distributing-go-binaries/">go-to-wheel</a> 的工具，能把编译好的Go二进制文件打包成Python的wheel包发布到PyPI上——任何Go程序都能变成一行<code>pip install</code>或<code>uvx</code>就能装的东西，他自己写的并发文件系统扫描工具<code>sqlite-scanner</code>就是这么发布的。</p>
<p>Flask的创造者Armin Ronacher也从另一个角度印证了同样的观点：他把自己的MiniJinja项目从Rust移植到Go，只花了45分钟、60美元的API调用成本，也正因如此，他认为“写代码的成本正在急剧下降……生态系统的广度，重要性正在变得越来越低”。</p>
<p>Python负责编排，Go负责底层执行——而随着语言之间移植成本越来越低，“只能押注一个生态”这个理由，正在一个月一个月地被削弱。你不需要在Go的结构性优势和Python的生态优势之间二选一，两者完全可以兼得。</p>
<h2 id="写在最后go天生就是为这个时代准备的">写在最后：Go，天生就是为这个时代准备的</h2>
<p>spf13的结论很直接：Go当年被设计出来的目的，就是为了降低大规模软件的总体成本——而这恰恰是Agentic开发正在把它推向极限的那个问题。那些当年让Go适合人类规模团队的特质，放到今天每天要跑几千次迭代的机器身上，同样适用。</p>
<p>这不代表Go是唯一值得用的语言。Python依然稳坐机器学习生态的头把交椅，Rust和TypeScript在各自的场景里也依然有充分的理由被选用。</p>
<p>spf13给出的建议是：与其追求“一门语言统治一切”，不如把Go当作Agentic开发中系统、服务、基础设施这一层的默认选项，除非你有明确理由选别的。</p>
<p>当你要新建一个服务、一个命令行工具或者一套系统时，先问一句“为什么不用Go”——如果你能说出一个站得住脚的理由（比如某个关键库只有别的语言才有、性能要求Go达不到、或者团队已经在某门语言上投入太深，迁移成本已经超过收益），那就用别的语言。如果说不出来，Go大概率就是正确的默认选项。</p>
<p>文章的最后一句话，或许是整篇文章最值得工程团队记下来的一句：“每一个因为构建太慢、依赖不稳定、或者运行时意外而损失掉的百分点，最终都会变成实打实的API成本。随着Agentic工作负载在2026年持续扩张，语言选择很可能是撬动这笔成本最大的一根杠杆。早一步消除这些摩擦的团队，会比还在为此买单的团队，迭代得更便宜、也更快。”</p>
<p>这篇文章之所以值得细读，不只是因为它对Go语言的力挺，更因为它提供了一个思考AI智能体时代工具选择的通用框架——当“写代码”的主体从人变成机器，那些原本只是“工程师品味偏好”的语言特性（可读性、类型系统的严格程度、依赖管理的确定性、生态的稳定性），正在变成实打实可以用API调用成本和迭代效率来量化的硬指标。无论你是否认同“Go是天选语言”这个结论，这套评估框架本身，值得每一个正在搭建Agentic开发流水线的团队认真想一想。</p>
<hr>
<p>参考链接：</p>
<ul>
<li><a href="https://spf13.com/p/go-the-agentic-language/">https://spf13.com/p/go-the-agentic-language/</a></li>
<li><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/">https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/</a></li>
</ul>
<hr>
<p>还在为写 Agent 框架频频死循环、上下文爆炸而束手无策？我的新专栏 <strong>《<a href="http://gk.link/a/12IzL">从0 开始构建 Agent Harness</a>》</strong> 将带你：</p>
<ul>
<li>抛弃臃肿框架，回归“驾驭工程 (Harness Engineering)”的第一性原理</li>
<li>用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等，复刻极简OpenClaw</li>
<li>构建坚不可摧的 Safety Middleware 与飞书人工审批防线</li>
<li>在底层实现 Token 成本审计、链路追踪与自动化跑分评估</li>
<li>从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”</li>
</ul>
<p>扫描下方二维码，开启从 0 开始构建Agent Harness 的实战之旅。</p>
<p><img loading="lazy" src="/images/wp-content/uploads/2026/build-agent-harness-from-scratch-qr.png"></p>
<hr>
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img loading="lazy" src="/images/wp-content/uploads/2025/ai-native-dev-workflow-qr.png"></p>
<hr>
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img loading="lazy" src="/images/wp-content/uploads/course-card/iamtonybai-banner-2.gif"></p>
<hr>
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img loading="lazy" src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png"></p>
<!-- 
公众号地址：
-->
]]></content:encoded></item></channel></rss>