阅读视图

发现新文章,点击刷新页面。
🔲 ☆

AI 时代的新王座:为什么说 Go 可能是开发 AI Agent 的最佳语言?

本文永久链接 – https://tonybai.com/2026/03/07/why-go-is-the-best-language-for-ai-agents

大家好,我是Tony Bai。

当我们在谈论 AI 编程时,Python 似乎是那个无需讨论的“默认选项”。

然而,随着 AI 应用从模型训练(Training)走向自主智能体(Agents)和复杂的工程落地,基础设施层的语言选型正在悄然发生变化。近日,开源数据编排工具 Bruin 的作者发表了一篇题为《Go 是开发 AI Agents 的最佳语言》的文章,在 Hacker News 上引发了数百条跨语言阵营的激烈辩论

为什么一位有着 10 年 Python 和 JS 经验的开发者,最终选择用 Go 来构建现代 AI 基础设施?在 AI 生成代码(AI-Generated Code)日益普及的今天,编程语言的“静态类型”、“编译速度”和“语法极简主义”又被赋予了怎样的新维度价值?

本文将深度拆解这场争论,带你探讨在“Vibe Coding(氛围编程)”时代,Go 语言如何凭借其独特的设计哲学,意外地命中 AI Agent 开发的甜点。

为什么是 Go?来自生产一线的工程反思

Bruin 是一个开源的 ETL(提取、转换、加载)工具。在数据工程领域,Python 拥有统治级的地位(Pandas, Airflow 等),按理说,Bruin 完全应该用 Python 编写。

但作者最终选择了 Go。原因在于,AI Agent 和数据编排工具在本质上属于基础设施(Infrastructure),它们面临的工程约束与模型训练截然不同:

  1. 极致的并发需求:Agent 绝大部分时间都在等待外部 API 的响应(OpenAI, Anthropic)。Go 极其轻量的 Goroutine 机制(2KB 栈空间,极低的上下文切换成本)允许在单机上轻松维持数万个并发请求,而 Python 的 GIL(全局解释器锁)即使配合 asyncio,在 500-1000 RPS 后也会遇到明显的线程竞争瓶颈。(注:最新版Python已经去除了GIL的限制。)
  2. 极简的部署体验:Go 编译出的单一静态二进制文件,无需像 Python 那样处理复杂的虚拟环境(venv)、依赖冲突和运行版本问题。对于需要在用户机器上运行的 CLI 工具来说,Go 是“分发即运行”的典范。
  3. 跨平台验证的便利:Go 一等公民的跨平台编译能力,意味着不仅开发者可以轻松构建多平台产物,未来的“后台 AI Agent”也能在一个隔离的沙箱中快速验证代码的跨平台兼容性。

除了上述硬核的工程指标外,作者还坦诚地分享了一个极其主观,但对初创团队至关重要的考量:开发体验(Developer Experience)与情绪价值。

作者将在很长一段时间内作为项目的核心贡献者,他深刻地意识到:

“对于一个小型团队来说,在构建大型项目时,快乐和活力(Joy and Energy)是最稀缺的资源之一。因此,至关重要的是,我不能对自己每天要面对的技术栈感到畏惧或厌烦。”

Go 语言或许在某些特性上不如 Python 灵活,也不如 Rust 表达力强,但它带来的那种“一切尽在掌握”的确定性和快速获得反馈的成就感,能让开发者在漫长的马拉松式开发中保持心流状态。这种心理层面的正向反馈,在 AI Agent 这种充满不确定性的前沿领域探索中,往往是支撑团队走过低谷、坚持到黎明的关键力量。

如果说以上只是 Go 作为“云原生王者”的常规操作,那么在引入大语言模型(LLM)作为“代码生成器”后,Go 的语言特性产生了奇妙的化学反应。

静态编译:给 AI 戴上“紧箍咒”

当 Coding Agent 开始每分钟吐出成千上万行代码时,最大的挑战不再是“如何生成”,而是“如何证明它有效”。

在解释型语言(如 Python 或 JavaScript)中,代码的正确性往往只有在运行到特定分支时才能被验证。作者指出,这是 Go 在对抗 AI 幻觉时最大的优势之一:Go 是一门强类型的编译型语言。

编译器的“守门员”效应

当你用 LLM 生成 Go 代码时,go build 成了一道天然且严苛的防火墙。类型不匹配、未使用的变量、错误的函数签名——这些占据了 AI 幻觉相当大比例的低级错误,会被 Go 编译器瞬间无情地驳回。

正如一位 HN 网友 所言:

“在这个人人都在‘氛围编程(vibing left and right)’的时代,你迫切需要一个编译器在背后支持你。Go 让你可以写稍微随意一点的代码,但又不会像 Python 或 JS 那样毫无底线。编译器扮演了看门人的角色,将混乱控制在一定范围内。”

为什么不是 Rust?

讲到编译期安全,Rust 绝对是无可争议的王者。但为什么作者认为 Go 比 Rust 更适合 AI Agent?

  • 迭代速度决定一切:AI Agent 的工作流是一个“生成 -> 编译 -> 报错 -> 修复”的紧密反馈循环(Feedback Loop)。Go 的编译速度几乎是瞬时的,这使得 LLM 的试错循环可以极快地运转。而 Rust 漫长的编译时间,在这里成为了致命的瓶颈。
  • 借用检查器的“认知负荷”:Rust 的内存模型(生命周期、借用)极其复杂。现阶段的 LLM 在处理复杂的借用关系时,常常会陷入“为了让编译器闭嘴而无脑 clone()”的陷阱,导致生成的代码偏离 Rust 的最佳实践。
  • 更平缓的试错成本:Go 的垃圾回收(GC)机制让 AI(以及审查代码的人类)可以专注于业务逻辑,而不必在内存管理上耗费计算 token 和审查精力。

简单来说:Rust 的上限极高,但门槛太陡;Go 用 20% 的努力(快速编译+GC),换取了 80% 媲美 Rust 的安全性,这恰好是 AI 迭代的最优解。

极简主义与“无聊”的胜利

Go 语言自诞生起,就因为其语法的“无聊”和“死板”(比如缺乏灵活的宏、长期没有泛型、繁琐的错误处理)而饱受争议。然而,在 AI 时代,这种“无聊”却意外地成为了巨大的优势。

“只有一种做法”的红利

Python 和 JavaScript 以“灵活”著称。在一个 JS 项目中,有人用 CommonJS,有人用 ES6 Modules;有人用 npm,有人用 pnpm。对于人类来说,这叫“生态繁荣”;但对于 LLM 来说,这叫“状态空间爆炸”(High Entropy)。

Go 是极其“固执”的语言(Opinionated)。

  • 格式化代码?只有 gofmt。
  • 怎么处理错误?永远是 if err != nil。
  • 怎么写测试?标准库 testing 包。

正如作者指出的:“要求 Agent 格式化 JS 代码,它会去引入一个新工具并尝试配置它;而在 Go 中,它只需要运行 gofmt。”

这种高度统一的代码风格,意味着在 LLM 的训练语料库中,Go 代码的“信噪比”极高。模型不需要在多种编程范式中猜测你的偏好,它输出的 Go 代码通常具有高度的同质性和可预测性。

人类可读性:代码审查的最后防线

当 AI 成为主要的“代码编写者”时,人类的角色将不可避免地向“代码审查者(Code Reviewer)”倾斜。

如果 AI 生成了一段高度抽象的 Haskell 代码,或者使用了大量宏的 Rust 代码,人类审查者需要耗费极大的脑力去反编译这些逻辑。

而 Go 代码是出了名的“所见即所得”。没有隐藏的控制流,没有复杂的运算符重载。当 AI 生成了几百行 Go 代码时,即使是一位初级开发者,也能相对轻松地顺着逻辑线读懂它在干什么。

在 AI 编程的下半场,“代码易读”将比“代码易写”重要一万倍。

跨越阵营的交锋:Hacker News 的不同声音

当然,这篇文章在 Hacker News 上并非一边倒的赞同。不同语言阵营的开发者提出了极其犀利的反思。

反思一:Python 真的过时了吗?

Python 拥护者指出,文章混淆了“运行时性能”和“开发生态”。

虽然 Go 在高并发和 I/O 上碾压 Python,但如果 AI Agent 的核心逻辑涉及大量的数据科学计算、复杂的概率模型,或者需要直接调用底层的 C++ 机器学习库,Python 依然是不可替代的粘合剂。对于许多初创团队来说,“让代码先跑起来”远比“让代码跑得快”更重要。

反思二:类型系统能否取代测试?

支持函数式语言(如 OCaml, F#)的开发者指出,Go 的类型系统依然过于薄弱。

Go 缺乏代数数据类型(ADT)和模式匹配,导致其虽然能抓住低级语法错误,但难以像 Rust 或 OCaml 那样“在编译期保证业务逻辑状态的正确性”。

对于他们而言,如果 AI 真的足够聪明,应该让 AI 生成具有极强类型约束的代码,把正确性完全交给编译器,而不是像 Go 那样依然需要编写大量的单元测试。

反思三:长远来看,语言还重要吗?

这是一个终极的哲学问题:如果未来 AI 不再犯错,能够零成本生成正确的机器码,高级编程语言还有存在的意义吗?

有评论认为,当模型能力足够强时,我们甚至不需要编译型语言的保护,直接用自然语言(英语)+ LLM 生成运行时的 WebAssembly 可能才是终局。在这个维度上,争论 Go 还是 Python,就像在争论用什么牌子的算盘(意指已经被时代所抛弃的东西)一样没有意义。

小结:实用主义者的狂欢

在 AI 技术日新月异的当下,我们往往容易陷入一种对“前沿”的盲目崇拜,认为只有最复杂的语言、最先进的模型才能构建出优秀的系统。

但 Bruin 作者的实践和 Go 社区的繁荣告诉我们另一个故事:工程的本质是权衡(Trade-off)。

Go 并不是世界上最完美的语言,它的类型系统不如 Rust 严谨,它的生态不如 Python 庞大。但它用极致的编译速度、简单的并发模型、出色的内存管理和统一的编码规范,构建了一个容错率极高的工程基座。并且在这个基座上,无论是人类还是 AI Agent,都能以最低的“认知摩擦力”输出可靠的工业级代码。

资料链接:

  • https://getbruin.com/blog/go-is-the-best-language-for-agents/
  • https://news.ycombinator.com/item?id=47222270

你更相信谁?

在 AI 编程的下半场,语言的地位正在重构。你是坚守 Python 的生态优势,还是更看好 Go 在“基础设施级 Agent”中的爆发?你认同“编译器是 AI 的最佳守门员”这个观点吗?

欢迎在评论区留下你的“阵营宣言”!


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

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

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


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

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

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

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

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


原「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}


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

© 2026, bigwhite. 版权所有.

🔲 ☆

Claude Code 官方最佳实践:50 条没人告诉你的“核心军规”

本文永久链接 – https://tonybai.com/2026/01/25/claude-code-official-best-practices-50-core-rules

大家好,我是Tony Bai。

在使用 Claude Code 的过程中,你是否遇到过这种情况:

有时候它简直是神,几秒钟就能重构一个复杂的模块;但有时候它又蠢得让人抓狂,甚至会一本正经地写出跑不通的代码,或者把你刚刚纠正过的错误再犯一遍。

为什么?是模型不稳定吗?

不,这通常是因为你的“打开方式”不对

Claude Code 本质上是一个运行在 CLI 环境中的自主智能体(Agentic Coding Environment)。它受限于一个核心物理法则:上下文窗口(Context Window)

  • 上下文满了,它就会“失忆”。
  • 指令不清晰,它就会“幻觉”。
  • 没有反馈,它就会“盲目自信”。

为了帮你跨越从“新手”到“高玩”的门槛,我精读了 Anthropic 刚刚发布的官方最佳实践文档,并结合实战经验,提炼出了这 50 条核心军规

掌握了它们,你就是指挥 AI 军团的编排者(Orchestrator)了。


基础心法——对抗熵增 (Foundational Tips)

核心逻辑: 上下文是稀缺资源,清晰度是最高杠杆。

  1. Clear Task Framing: 开局第一句话决定成败。明确告诉它:Role(角色) + Task(任务) + Context(背景)
  2. Front Load Instructions: 最重要的约束(比如“绝对不要修改配置文件”),必须放在 Prompt 的最前面。
  3. Verification (最高杠杆): 这是最重要的 Tip。 必须给 Claude 一个“验证它自己工作”的方法。
    • ❌ “修复这个 Bug。”
    • ✅ “修复这个 Bug,并编写一个测试用例来验证修复是否成功。”
  4. Provide Screenshots: 涉及 UI 修改,直接粘贴截图。Claude 现在的视觉能力极强,一张图胜过千言万语。
  5. Address Root Causes: 遇到报错,明确告诉它:“不要仅仅消除报错(Suppress),要解决根本原因。”
  6. Plan Mode (Shift+Tab): 复杂任务(涉及 >2 个文件)必须先进 Plan 模式。
    • Explore -> Plan -> Implement
  7. Review the Plan: 在它动手写代码前,先 Review 它的计划。这时候纠偏成本最低。
  8. One-shot vs Plan: 改个拼写错误?直接干。重构模块?必须 Plan。
  9. Specific Context: 不要让它通读整个仓库。用 @ 引用具体文件。
  10. Rich Content: 善用 cat error.log | claude,直接把日志管道喂给它。
  11. Clear Context: 任务做完了?立刻运行 /clear。不要在垃圾堆里盖新楼。
  12. Summarize Before Clear: 如果想保留记忆,先让它 /compact(压缩上下文),再继续。

工程化配置——给 AI 立规矩 (Configuration)

核心逻辑: 不要每次都手动教,把规则固化到文件里。

  1. CLAUDE.md 是宪法: 在根目录创建 CLAUDE.md,这是它每次启动必读的“员工手册”。
  2. Use /init: 运行 /init 命令,让 Claude 自动分析项目并生成初始的 CLAUDE.md。
  3. Prune Ruthlessly: CLAUDE.md 不要写废话!
    • ❌ “请写出优雅的代码。”(浪费 Token)
    • ✅ “使用 npm run test:unit 运行单元测试。”(高价值信息)
  4. Bash Commands: 在文档里告诉它项目特有的命令(如构建、部署脚本)。
  5. Code Style: 明确约定:用 Tab 还是 Space?用 TypeScript 还是 JS?
  6. Import Rules: 告诉它 @src/ 别名指向哪里,避免它瞎猜路径。
  7. Child Directories: 对于 Monorepo,可以在子目录放单独的 CLAUDE.md,它会自动继承。
  8. Permissions Allowlist: 别做“点点点”工程师。用 /permissions 把 ls, grep, npm test 加入白名单。
  9. Sandbox Mode: 对于不信任的任务,开启 /sandbox,让它在隔离环境中撒欢。
  10. Dangerously Skip: 只有在完全可控(断网/沙箱)时,才使用 –dangerously-skip-permissions。
  11. CLI Tools: 安装 gh (GitHub CLI),让 Claude 能直接提 PR、看 Issue。
  12. MCP Connect: 使用 claude mcp add 连接 Postgres 或 Notion。数据不再是孤岛。
  13. Learn CLI: 不知道怎么用某个工具?让 Claude 先运行 tool –help 自学。

技能与自动化——扩展能力 (Skills & Automation)

核心逻辑: 把重复的流程封装成“技能”,把 AI 集成到流水线。

  1. Skills Definition: 在 .claude/skills/ 下创建 SKILL.md,定义可复用的能力。
  2. Domain Knowledge: 把复杂的业务逻辑(如“订单状态流转规则”)封装成 Skill,用到时才加载。
  3. Disable Model Invocation: 对于高风险 Skill,设置 disable-model-invocation: true,强制人工确认。
  4. Custom Subagents: 定义专门的 .claude/agents/security-reviewer.md。
    • 让它扮演“安全专家”,只负责 Review,不负责写代码。
  5. Delegate to Subagents: 在主会话中说:“用 security-reviewer 检查刚才的代码。”
  6. Install Plugins: 运行 /plugin,去市场找现成的技能包(如 Python 代码分析)。
  7. Code Intelligence Plugin: 必装!给 Claude 提供“跳转定义”和“查找引用”的能力(基于 LSP)。
  8. Hooks: 设置 .claude/settings.json 中的 Hooks。
    • 例如:每次 Auto-fix 后自动运行 Lint。
  9. Headless Mode: claude -p “prompt”。这是自动化的神器。
  10. CI Integration: 在 GitHub Actions 里用 Headless Mode 自动 Review PR。
  11. Structured Output: 使用 –output-format json,让脚本能解析 Claude 的回答。
  12. Fan-out Pattern: 批量修改 100 个文件?写个 Shell 脚本循环调用 claude -p。

避坑指南——反模式 (Anti-patterns)

核心逻辑: 识别“失败的味道”,及时止损。

  1. The Kitchen Sink Session: 试图在一个 Session 里修 Bug、写新功能、又写文档。
    • 后果: 上下文污染,智商直线下降。
    • 解法: 一事一议,做完就 /clear。
  2. Over-correcting: 纠正了两次还不对?
    • 后果: 错误路径被强化,越改越错。
    • 解法: 别纠缠!直接 /clear,优化 Prompt 后重来。
  3. The Trust-then-Verify Gap: 还没测试就觉得“看起来是对的”。
    • 后果: 生产环境事故。
    • 解法: 没有 Pass 测试的代码,一行都别信。
  4. The Infinite Exploration: 让它“调查一下代码库”,不给范围。
    • 后果: 读了几百个文件,Token 耗尽,还没开始干活。
    • 解法: 限制搜索范围,或者用 Subagent 去做调研。
  5. Vague Error Reporting: 只说“不行”或“报错了”。
    • 后果: Claude 只能瞎猜。
    • 解法: 粘贴完整的 Stack Trace。

高阶操作——神级技巧 (Pro Moves)

  1. Resume Session: 昨天没干完?claude –resume 接着聊。
  2. Rename Session: 用 /rename 给会话起个好名字(如 feat-login-oauth),方便找回。
  3. Rewind (Esc+Esc): 走错方向了?双击 Esc 回滚到上一步,比改代码快。
  4. Let Claude Interview You: 不知道怎么写 Spec?
    • Prompt:“我想做个 X 功能。请作为一个资深架构师,向我提问,直到你觉得信息足够写出 Spec 为止。”
  5. Self-Correction Loop: 让它自己改自己的作业。
    • Prompt:“分析你刚才生成的代码,找出 3 个潜在的 Edge Case,并修复它们。”
  6. Model Tier Selection: 简单的 Lint 修复用 Haiku(快且便宜),架构设计用 Opus(聪明但贵)。
  7. Parallel Sessions: 开两个终端。一个写代码(Writer),一个做 Review(Reviewer)。左右互搏,质量倍增。
  8. Develop Intuition: 最后的建议——多用。建立对“上下文容量”和“模型能力边界”的体感。

小结:从 直觉 到 方法论

刚开始使用 Claude Code,你可能靠的是直觉。但要在大规模工程中稳定产出,你必须依靠方法论

这 50 条军规,就是从“抽盲盒”走向“工业化生产”的桥梁。掌握了它们,你就不再是被动的 User,而是这支硅基军团的 Commander

资料链接:https://code.claude.com/docs/en/best-practices


深度实战:构建你的“AI 原生工作流”

Tip 只是冰山一角。真正的威力在于将这些技巧组合成一套“开发工作流”

在我的极客时间专栏AI 原生开发工作流实战中,我将带你实战演示:

  • CLAUDE.md 实战:如何从零编写一个完美的、模块化的项目宪法?
  • 驾驭Claude Code:实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

别再用蛮力写代码了。扫描下方二维码,学会用 AI 的杠杆。


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

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

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

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

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


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

© 2026, bigwhite. 版权所有.

❌