Logo

site iconTonyBai | 白明

重复
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

TonyBai | 白明 RSS 预览

谁才是 Go 生态的“幕后之王”?—— 深度挖掘 4000 万个节点后的惊人发现

2026-01-09 06:52:22

本文永久链接 – https://tonybai.com/2026/01/09/the-most-popular-go-dependency-is

大家好,我是Tony Bai。

在 Go 的世界里,我们每天都在引入各种 import。但你是否想过,整个 Go 生态系统中,究竟哪个包是被依赖次数最多的“基石”?

通常,我们会参考 GitHub Stars 或 Awesome 列表,但这往往带有主观偏差。为了寻找最客观的答案,开发者 Thibaut Rousseau 做了一件疯狂的事他下载了 Go Proxy 自 2019 年以来的所有模块元数据,构建了一个包含 4000 万个节点、4 亿条关系的巨大图谱。

结果令人大开眼界。

img{512x368}

从“愚公移山”到“巧用代理”

Thibaut 最初的想法很直接:从一个种子项目列表开始,递归地克隆仓库、解析 go.mod。但他很快发现这条路行不通——克隆速度太慢,且严重依赖 GitHub。

于是,他将目光转向了 Go Modules 生态系统的核心枢纽 —— Go Proxy

  • index.golang.org:提供了自 2019 年以来所有发布模块的时间流。
  • proxy.golang.org:提供了每个模块版本的 go.mod 文件。

通过这两个公开 API,他成功地将整个 Go 生态的元数据“搬”到了本地,构建了一个全量的、不可变的本地缓存。

Neo4j:点亮数据之网

面对海量的依赖关系,传统的关系型数据库显得力不从心。Thibaut 选择了图数据库 Neo4j

  • 节点 (Node):代表一个具体的 Go 模块版本(例如 github.com/gin-gonic/[email protected])。
  • 关系 (Relationship):代表 DEPENDS_ON(依赖于)。

通过简单的 Cypher 查询语句,复杂的依赖链变得清晰可见。例如,查询一个模块的所有传递性依赖(Transitive Dependencies),在 SQL 中可能需要复杂的递归 CTE,而在 Neo4j 中只需一个简单的 *1.. 语法即可搞定。

数据揭秘:Go 生态的真实面貌

经过数天的处理和导入,这个庞大的图谱终于呈现在眼前。让我们看看数据告诉了我们什么:

1. 绝对的王者:testify

在“被直接依赖次数”的榜单上,github.com/stretchr/testify 以 259,237 次的惊人数量遥遥领先,是第二名的两倍还多。这再次印证了测试在 Go 社区中的核心地位。

紧随其后的是:

  1. github.com/google/uuid (10w+)
  2. golang.org/x/crypto (10w+)
  3. google.golang.org/grpc (9.7w+)
  4. github.com/spf13/cobra (9.3w+)
  5. … …

2. “已归档”库的生命力:pkg/errors

最令人玩味的数据来自 github.com/pkg/errors。尽管这个库多年前就已宣布“归档”(Archived)并停止维护,且 Go 1.13 已内置了类似的错误包装功能,但数据却显示了截然相反的趋势:

  • 它的使用量不降反升!
  • 2019 年仅有 3 个依赖它的模块,而到了 2025 年,这个数字飙升到了 16,001

这揭示了软件生态中一个残酷的现实:旧习惯难改,且“足够好”的库拥有极其顽强的生命力。 哪怕官方已经提供了替代方案,开发者们依然倾向于使用他们熟悉的工具。

小结

Thibaut 的这个项目不仅仅是一次有趣的数据分析,它为我们观察 Go 生态提供了一个全新的上帝视角。

  • 平均依赖数:Go 模块平均拥有 10 个直接依赖。
  • 数据开源:作者不仅开源了爬虫代码 github.com/Thiht/go-stats,还大方地通过 BitTorrent 分享了 11GB 的 Neo4j 数据库转储文件。

你可以下载这份数据,自己在本地运行 Neo4j,去挖掘更多有趣的洞见。比如,看看你最喜欢的某个小众库,究竟被谁在使用?或者,去探索一下 Go 生态中那些隐秘的“单点故障”?

在这个由 4000 万个节点构成的宇宙中,还有无数的秘密等待被发现。

资料链接:https://blog.thibaut-rousseau.com/blog/the-most-popular-go-dependency-is/


你的依赖清单

testify 的霸榜并不意外,但 pkg/errors 的顽强生命力确实让人深思。在你的 go.mod 中,是否也有那些“虽然已归档,但真的很好用”的库?或者,你有什么私藏的冷门好库推荐?

欢迎在评论区晒出你的“宝藏依赖”! 让我们一起发现更多 Go 生态的秘密。

如果这篇文章让你对 Go 生态有了全新的认识,别忘了点个【赞】和【在看】,并转发给你的 Gopher 朋友!


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

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

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


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

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

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

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

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


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

© 2026, bigwhite. 版权所有.

PostgreSQL 吞噬世界,MongoDB 起诉 Go 开源项目:2025 数据库年度盘点

2026-01-08 12:00:21

本文永久链接 – https://tonybai.com/2026/01/08/databases-in-2025-a-year-in-review

大家好,我是Tony Bai。

数据库领域的“毒舌”,CMU教授 Andy Pavlo 再次发布了他的年度回顾(虽然这次是站在 2026 年初的回望)。2025 年对于数据基础设施是疯狂的一年:PostgreSQL 继续确立其霸主地位,引发了巨头间的收购狂潮;AI Agent 通过 MCP 协议正式接管数据库交互;而 Go 社区熟知的 FerretDB 则陷入了与 MongoDB 的法律泥潭。本文将为你深度梳理这份报告背后的技术趋势与行业信号。

img{512x368}

PostgreSQL 的统治:云巨头的“军备竞赛”

如果说 2021 年 Andy Pavlo 首次提出“PostgreSQL 正在吞噬数据库世界”,那么 2025 年则是这一预言的终极验证。PostgreSQL 不再仅仅是一个选项,它已经成为了行业标准,引发了云巨头之间近乎疯狂的并购与研发竞赛。

核心事件与技术演进

  • PostgreSQL v18 发布:终于引入了异步 I/O (Asynchronous I/O) 存储子系统,这意味着 Postgres 终于开始摆脱对操作系统页缓存(OS Page Cache)的依赖,向现代化 DBMS 架构迈出了关键一步。此外还增加了对 Skip Scans 的支持。
  • 天价收购案
    • Databricks 以 10 亿美元收购 Neon:Neon 是著名的“Serverless Postgres”开创者,其存算分离架构是现代云数据库的标杆。
    • Snowflake 以 2.5 亿美元收购 CrunchyData:为了不甘人后,Snowflake 也迅速补齐了其 Postgres 拼图。
    • Microsoft 发布 HorizonDB:作为回应,微软推出了自己的下一代 Postgres DBaaS。

对于后端和 Go 开发者而言,这意味着 PostgreSQL 协议已成为事实上的“通用语”。无论底层是 Aurora、AlloyDB 还是 Neon,应用层都只需通过标准的 pgx 或 lib/pq 驱动进行连接。掌握 Postgres 的深层特性和优化技巧,将成为未来五年内最具价值的技能之一。


MCP:AI Agent 时代的“中间件革命”

2025 年被定义为所有 DBMS 都支持 MCP (Model Context Protocol) 的一年。

什么是 MCP?

MCP 是由 Anthropic 提出,并随后被 OpenAI 采纳的一种标准化客户端-服务器 JSON-RPC 接口。它允许大语言模型(LLM)与外部工具和数据源进行交互,而无需编写定制的胶水代码。

  • 角色定位:MCP 服务器充当了数据库前的中间件。它向 LLM 暴露工具、数据和动作列表。
  • 工作流:LLM (MCP Client) -> MCP Server -> Database Query (SQL)。

Andy Pavlo 指出,除了官方实现外,还有数百个第三方的 MCP Server 实现。这对于 Go 开发者是一个巨大的机会:编写高性能、并发安全的 MCP 中间件是 Go 的拿手好戏

然而,这也带来了安全隐患。Pavlo 警告说,简单的代理只是将 MCP 请求翻译成 SQL,如果没有深度的内省和防护机制,AI Agent 可能会像“在应用里点了 18,000 杯水”一样,意外地摧毁数据库(比如 DROP DATABASE)。企业级 DBMS 开始内置 AI 防火墙,而开源生态则需要更多像 DBHub 这样提供查询限制和超时保护的中间件。


开源与法律:MongoDB v. FerretDB

这是 Go 社区最需要关注的法律纠纷。FerretDB 是一个用 Go 编写的开源项目,它提供了一个 MongoDB 兼容的代理层,后端使用 PostgreSQL 存储数据。这让用户可以用 Mongo 的驱动操作 Postgres。

诉讼焦点

  • 起因:MongoDB Inc. 向 FerretDB 发出停止侵权函,并在 2025 年 5 月正式提起联邦诉讼。
  • 指控:侵犯专利、版权、商标,以及违反 MongoDB 的文档和线协议规范的许可。MongoDB 特别针对 FerretDB 声称自己是“Drop-in replacement”(直接替换)这一点,认为其不仅误导开发者,还损害了 MongoDB 的声誉。
  • 背景:微软也将其 MongoDB 兼容的 DocumentDB 捐赠给了 Linux 基金会,但这似乎没有引发同样的法律反击,可能是因为巨头间的相互制衡。

警示

这一案件可能会成为 API 兼容性实现的法律判例。对于那些致力于编写“兼容层”或“协议转换器”的 Go 开发者来说,这是一个危险的信号:模仿专有软件的 API 和线协议,可能会面临越来越大的法律风险。


文件格式战争:Parquet 的挑战者们

在数据工程领域,Parquet 格式已经统治了近 15 年。但在 2025 年,为了适应现代硬件(NVMe SSD, GPU)和 AI 负载,新的挑战者涌现。

  • 挑战者联盟SpiralDB 的 Vortex(已捐赠给 Linux 基金会)、CWI 的 FastLanes、以及学术界的 F3 和 AnyBlox。
  • 核心痛点:现有的 Parquet 生态过于碎片化。Pavlo 的团队分析发现,94% 的 Parquet 文件仍在使用 2013 年的 v1 特性。
  • 未来趋势F3 格式(由 CMU, 清华大学等合作)提出了一种有趣的思路——在文件中嵌入 WASM (WebAssembly) 解码器。这意味着只要读取端支持 WASM,就可以解析任何自定义编码的数据,无需升级读取器本身。

行业大洗牌:并购与消亡

  • IBM 的野心:收购了 DataStax ($3B) 和 Confluent (Kafka 商业化公司),试图在数据流和 NoSQL 领域占据高地。
  • 向量数据库的退潮:随着所有主流 DBMS(Postgres, Oracle, Mongo)都内置了向量索引,单纯的“向量数据库”公司生存空间被挤压。Pinecone 正在寻求被收购,而 MyScaleDB 已经关闭。
  • GPU 数据库的黄昏Voltron Data 的倒闭和 HeavyDB 被 Nvidia 收购,似乎宣告了通用 GPU 数据库作为独立商业模式的终结。

总结与展望

Andy Pavlo 的这篇回顾虽然笔调幽默甚至带有讽刺,但其揭示的技术趋势却是严肃的:

  1. 架构趋同:存算分离、基于日志的架构(Log-based architecture)已成为云数据库的标配。
  2. AI 融合:数据库不再只是被动存储,而是通过 MCP 和内置向量能力,主动融入 AI Agent 的工作流。
  3. Go 的角色:在基础设施层(Docker/K8s 之后),Go 正在成为连接 AI 与数据的关键胶水语言(MCP Server, Proxy, 协议转换器)。

对于 Gopher 来说,关注 PostgreSQL 的协议生态、学习构建安全的 MCP 服务、并警惕开源协议的法律边界,将是 2025 年(及以后)的重要课题。

资料链接 – Databases in 2025: A Year in Review by Andy Pavlo


你的数据库“军火库”

数据库的世界正在发生剧变。在你的项目中,PostgreSQL 是否已经成为了默认选择?你如何看待 AI Agent 直接操作数据库的未来?

欢迎在评论区分享你的选型思考或对 FerretDB 事件的看法!让我们一起看清趋势,少走弯路。

如果这篇文章为你打开了数据库领域的新视野,别忘了点个【赞】和【在看】,并转发给你的架构师朋友!


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

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

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


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

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

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

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

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


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

© 2026, bigwhite. 版权所有.

拆解 Claude Code:Coding Agent 终于“能用”背后的架构真相

2026-01-08 08:06:12

本文永久链接 – https://tonybai.com/2026/01/08/how-claude-code-works

大家好,我是Tony Bai。

在过去两年里,我们见证了 AI Coding Agent的尴尬童年:从最初笨拙的 Copy-Paste,到 Cursor 的 VS Code Fork 革命,再到如今 Claude Code 这种 CLI Coding Agent的出现。

为什么以前的 Agent 总是卡在“演示很酷,实战很废”的怪圈里?而 Claude Code 究竟做对了什么,让它突然变得如此顺手?

答案可能出乎意料的枯燥:不是魔法,是更好的模型加上更“傻瓜”的架构。

这不是一篇 Anthropic 的官方通稿。本文基于 PromptLayer 创始人 Jared Zoneraich 的深度逆向工程与实战分享。我们扒开了 Claude Code 的外衣,试图还原 Coding Agent 从“玩具”进化为“神器”的技术跃迁路径。

img{512x368}

架构哲学:删繁就简

如果你在 2024 年开发过 Agent,你一定画过那种复杂的 DAG(有向无环图)

  • “如果用户想退款,跳到节点 A;如果想查询,跳到节点 B……”
  • 为了防止幻觉,我们设计了无数个分类器(Classifiers)和路由(Routers)。

结果呢?我们得到了一张维护噩梦般的蜘蛛网。

Claude Code(以及 Gemini Cli、CodeX 等新一代Cli Coding Agent)的架构哲学可以用 Python 之禅概括:Simple is better than complex.

它们抛弃了复杂的 DAG,拥抱了 Master While Loop

我们再用更为详细一些的伪代码来诠释这个master loop:

# Claude Code 的核心逻辑伪代码
messages = [...]
while True:
    response = model.generate(messages)
    if not response.tool_calls:
        break

    for tool in response.tool_calls:
        result = execute_tool(tool)
        messages.append(format_result(result))

就这么简单。Give it tools, and get out of the way.

这种架构的自信来源于模型能力的提升。现在的模型(如 Claude 4.5 Sonnet)已经足够聪明,能够自己决定“我需要先 grep 一下代码,发现不对,再 ls 一下目录,最后 edit 文件”。它不需要你预设路径,它需要的是自由探索的空间


来自https://arcprize.org/leaderboard(2026.1)

工具箱揭秘:Bash 即正义 (The Tools)

Claude Code 的工具箱极其精简,但每一个都切中要害。Jared 在逆向分析后发现,这套工具集本质上是在模拟一个人类高级工程师在终端里的行为。(注:按照Jared的说法,这些工具箱中的工具可能随Claude Code的版本的变化而不同!)

Bash: The Universal Adapter

如果只保留一个工具,那就是 Bash

  • 它能跑脚本、能运行测试、能安装依赖、甚至能重启服务。
  • 它是 Agent 与数字世界交互的通用接口。
  • 最重要的是,LLM 训练数据里有海量的 Bash 语料,模型天生就是 Bash 高手。

Edit: Unified Diff

Claude Code 没有选择全量重写文件(Rewrite),而是选择了 Diff

  • 省 Token:只输出修改的几行,上下文窗口压力骤减。
  • 速度快:更少的输出意味着更低的延迟。
  • 容错高:就像老师批改作文划红线一样,基于上下文的 Diff 修改比凭空重写整段代码更容易命中,也更容易被人类 Review。

Grep & Glob > RAG

还记得那些为了让 Agent 理解代码库而建立的复杂向量数据库(Vector DB)吗?Claude Code 说:不需要

它直接使用 grep 和 glob。这不仅是因为现在的 Context Window 够大,更是因为这符合工程师的直觉。当你接手一个新项目时,你不会先在大脑里建立一个向量索引,你会先 ls 看看目录结构,然后 grep 关键字。模拟人类的行为,往往是最佳策略。

Sub-Agents (Tasks)

当任务太复杂,上下文快爆了怎么办?Claude Code 引入了 Task 工具。

它可以启动一个子 Agent(Sub-agent),拥有独立的上下文,去执行特定的任务(比如“阅读完所有文档并总结 API 用法”),然后只将最终结果返回给主 Agent。这有效地解决了 Context 污染问题。

核心心法:相信模型,放弃微操

在传统软件工程中,我们习惯于通过代码控制一切:if 条件 A 发生,执行 B。但在构建 Coding Agent 时,这种“控制欲”往往是最大的敌人。

Jared 分享了一个极具启发性的失败案例

为了让 Agent 更好地操作 PromptLayer 的网页后台,他曾试图进行“人工辅助”——给网页上的每个按钮都加上了详细的 Title 和标签,试图告诉 Agent “点击这里会发生什么”。

结果呢?Agent 的表现反而变差了。

为什么?因为额外的信息变成了噪音,分散了模型的注意力。模型原本可以通过“观察-尝试-纠错”的循环自己搞定任务,但人类的“硬编码微操”反而限制了模型的泛化能力。

Exploration > Hardcoding

Claude Code 的设计哲学是:当你有疑问时,相信模型(rely on the model)。

  • 不要预设所有边缘情况:以前我们会写一堆正则来解析输出,现在?直接把错误扔回给模型:“你报错了,修好它。”

  • 探索即纠错:模型不仅能写代码,还能读懂报错信息。Claude Code 之所以强大,不是因为它一次就能写对,而是因为它在 Master Loop 中具备了自我修复(Self-Correction)的能力。

工程师的直觉是“把路铺好”,但 AI 时代的直觉应该是“给它地图,让它自己走”。

那些“不起眼”但天才的细节

Constitution: CLAUDE.md

不需要复杂的微调,也不需要向量库。Claude Code 依靠项目根目录下的 CLAUDE.md 来理解项目规范。

这本质上是 Prompt Engineering 的胜利。它让配置变得透明、可读、可由用户(甚至 Agent 自己)随时修改。

System Prompt 解密:像老板一样下指令

Jared 分享了基于泄露信息的 Claude Code System Prompt 核心原则,这些原则非常值得我们借鉴:

  • Concise Output(极简输出):除非用户要求细节,否则输出不要超过 4 行。
  • No “Here is…”(拒绝废话):不要说“好的,这是您的代码…”,直接给代码。Just do it.
  • Action over Text(行动至上):能用工具(Tool)解决的,别用文字解释。
  • Style Match(风格一致):严格匹配项目现有的代码风格。
  • No Comments(拒绝注释):除非用户要求,否则不要画蛇添足地加注释。
  • Parallelism(并行执行):鼓励并行运行命令,大规模搜索,并使用 TodoWrite 跟踪进度。

这些指令的目的只有一个:让 Agent 看起来更像一个干练的 Senior Engineer,而不是一个啰嗦的 Chatbot。

Skills: 可扩展的 “System Prompt”

随着任务变复杂,System Prompt 会越来越长,甚至超过 Context 限制。Claude Code 引入了 Skills 机制。

你可以把它理解为按需加载的“技能包”。Agent 会根据当前任务,决定是否加载额外的上下文或能力。

典型应用场景:

  • Documentation Updates:加载特定的文档写作风格指南。
  • Design Style Guide:在写前端代码时,加载 UI 设计规范。
  • Deep Research:加载深度搜索和总结的能力。
  • DOCX/Excel Processing:甚至可以加载处理办公文档的技能(Jared 提到这是很多人没想到的用法)。

To-Do Lists: 提示词驱动的结构化

当你让 Claude Code 干活时,它往往会先列一个 To-Do List(是不是又和人类干活的方式类似呢)。

有趣的是,这不是代码里写死的逻辑,而是 System Prompt 诱导出来的行为。

  • 它给用户一种“确定性”的心理安全感。
  • 它支持断点续传:即使程序 Crash 了,重新把 To-Do List 喂给模型,它也能知道下一步该干嘛。

Thinking Knobs

Think, Think Hard, Ultra Think。

这不仅仅是噱头,这是把 Inference-Time Compute(推理时计算) 变成了一个可调节的参数。对于复杂的重构,你可以让它“多想一会儿”;对于简单的 Bug fix,直接干就是了。

市场格局:没有全局最优解

在 Coding Agent 的战场上,没有唯一的王者,只有不同的流派(The “AI Therapist” Problem)。

  • Claude CodeCLI 极简主义。简单、直观,适合不想离开终端的开发者。
  • CursorUI 速度流,极致的响应速度。它利用用户数据飞轮,让体验越来越丝滑。
  • OpenAI CodeX内核硬核派(rust实现)。更关注底层的沙箱安全(Kernel-level Sandboxing),适合企业级、高安全要求的场景。
  • Sourcegraph AmpWeb 协作流。主打 Handoff(接力) 机制,在一个 Agent 搞不定时,无缝切换到另一个 Context 或模型(无需用户选择),像接力赛一样解决问题。

核心启示:Claude Code 教给我们的 5 条构建法则

在演讲的最后,Jared 总结了 Claude Code 成功的 5 个核心要素。对于任何想要构建 Agent 或由 AI 驱动的应用的开发者来说,这 5 条法则就是当下的“金科玉律”。

Trust in the model (相信模型)

不要试图用传统的代码逻辑去“微操”模型。

  • 反直觉:工程师总想把所有路都铺好(比如给网页按钮加详细标签)。
  • 新常识:模型的泛化能力和纠错能力远超你的硬编码规则。当遇到不确定性时,给它目标,让它自己去探索,而不是给它僵化的步骤。

Simple design wins (简单致胜)

架构越简单越好。

  • 拒绝复杂:不要搞几百个节点的 DAG(有向无环图),不要搞复杂的路由网络。
  • 拥抱简单:一个死循环(While Loop)加上强大的模型,往往能击败精心设计的复杂架构。正如 Python 之禅所说:“Simple is better than complex.”

Bash is all you need (Bash 足矣)

在工具选择上,不要重新发明轮子。

  • 通用接口:Bash 是在这个星球上运行代码最通用的接口,也是 LLM 训练数据中最丰富的语料之一。
  • 少即是多:与其开发 50 个专用的 Tool(比如 create_file, delete_file, git_commit…),不如只给它一个 bash 工具。模型知道怎么用 touch, rm, git。

Context management matters (上下文管理是关键)

这是目前 Agent 最大的隐形杀手(The Boogeyman)。

  • 瓶颈:无论模型多聪明,上下文窗口一旦被垃圾信息填满,智商就会直线下降。
  • 策略:必须把“上下文清洗”作为架构的一等公民。利用 Summarization(摘要)、Handoff(接力)或 Sub-agents(子智能体)机制,时刻保持主线程的清爽。

Different perspectives for different problems (不同问题,不同视角)

没有“万能药”。Coding Agent 领域不存在全局最优解(Global Maxima)。

  • Claude Code:赢在 CLI 交互和复杂的 Git/环境管理,适合“不想离开终端”的场景。
  • Cursor:赢在 UI 速度和代码补全,适合“快速编写”的场景。
  • CodeX:赢在底层沙箱安全。
  • 结论:不要试图寻找一个能打败所有人的 Agent,而是要构建最适合特定场景(User Persona)的 Agent。

小结

Claude Code 的出现,标志着 Coding Agent 进入了“实用主义”时代。它不再是炫技的玩具,而是通过做减法(Less RAG, Less DAG, Less Guardrails),回归了软件工程的本质。

未来,我们或许不再直接调用 LLM 的 API,而是直接调用一个 Headless 的 run_agent() SDK,让它在后台默默地帮我们修 Bug、写文档、提 PR。

最好的工具,就是当你感觉不到它存在的时候。

资料来源:Jared Zoneraich “How Claude Code Works” – https://www.youtube.com/watch?v=RFKCzGlAU6Q


你的 Agent 构建心得

Claude Code 的“极简架构”给我们上了一课。你在尝试构建 AI Agent 时,是否也曾陷入过“过度设计”的陷阱?对于“Bash is all you need”这个观点,你认同吗?

欢迎在评论区分享你的踩坑经历或架构思考! 让我们一起探索 Agent 开发的最佳路径。

如果这篇文章为你揭开了 Claude Code 的神秘面纱,别忘了点个【赞】和【在看】,并转发给你的架构师朋友!


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

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

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


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

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

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

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

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


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

© 2026, bigwhite. 版权所有.

别再“Vibe Coding”了:2025 年专业开发者是如何驾驭 Coding Agent的?

2026-01-07 12:20:33

本文永久链接 – https://tonybai.com/2026/01/07/stop-vibe-coding-professional-developers-master-coding-agent-2025

大家好,我是Tony Bai。

在社交媒体上,我们经常看到这样的神话:“我用 AI Agent,只凭感觉(Vibe)就写出了整个应用,甚至不需要看代码。” 这种被称为“Vibe Coding”的现象真的代表了专业开发的未来吗?

近日,来自 UCSD 和康奈尔大学的研究团队发表了一篇题为《Professional Software Developers Don’t Vibe, They Control: AI Agent Use for Coding in 2025》的论文。通过对 13 位资深开发者的实地观察和 99 份详细调查,他们揭示了一个截然不同的真相:专业开发者并不“Vibe”,他们严密“控制”。

img{512x368}

控制权是核心

研究发现,经验丰富的开发者(平均 12.8 年经验)虽然高度认可 AI Agent(如 Cursor, Claude Code, GitHub Copilot)带来的生产力提升,但他们拒绝交出方向盘

与“Vibe Coding”所倡导的“完全信任 AI、不看代码、只管运行”不同,专业开发者采取了一种战略性的控制(Strategic Control)模式:

  • 规划先行:在写第一行代码前,他们会要求 AI 生成详细的实施计划,甚至 Markdown 格式的任务清单。
  • 分步执行:他们不会让 AI 一次性完成所有工作,而是将其拆解为一个个小任务(平均每个 prompt 仅包含 2.1 个步骤),步步为营。
  • 严格审查:69% 的受访者表示会逐行审查 AI 生成的代码,因为他们深知“作为软件工程师,我不能把责任外包给 AI”。

AI Agent最擅长(和最不擅长)什么?

论文通过大量数据,梳理出了 AI Agent在当前技术水平下的“能力边界”。这对于我们日常决定“何时使用 AI”极具参考价值。

✅ 舒适区:AI Agent的拿手好戏

这些任务被认为是高收益、低风险的:

  • 样板代码与脚手架:生成重复性代码、配置文件、初始项目结构。
  • 编写测试:为现有代码生成单元测试(这甚至改变了一些开发者的习惯,让他们更愿意做 TDD)。
  • 解释与文档:解释复杂的代码逻辑、错误堆栈,或撰写文档。
  • 简单重构与调试:重命名变量、提取函数、修复简单的逻辑错误。
  • 原型开发:快速构建一次性的演示原型。

❌ 禁区:AI Agent的“滑铁卢”

对于以下任务,开发者普遍表示 AI “不胜任”或“风险过高”
* 核心业务逻辑:涉及复杂领域知识、特定业务规则的代码。
* 复杂重构:跨越多个文件、涉及架构调整的大规模重构。
* 系统设计与决策:没有人愿意将技术选型或架构决策交给 AI,虽然可以用它来头脑风暴,但决策权始终在人。
* 安全关键代码:涉及支付、鉴权等高风险模块。
* “一步到位”的完美代码:AI 几乎从未在第一次尝试中就生成完美无缺的代码,必须经过多轮迭代。

最佳实践:像工程师一样 Prompt

研究中最有趣的部分是观察资深开发者如何写 Prompt。他们不是在“聊天”,而是在“编程” AI。

高效 Prompt 的特征:

  1. 极度详尽的上下文:不仅仅是需求,还包括 UI 元素名称、技术术语、领域对象、相关文件引用、特定库的版本等。
  2. 利用“伪代码”思维:一位开发者表示:“我将软件工程的经验应用到 Prompt 中……我提供规格说明、经济模型、具体的成功标准。这不仅是 Prompt 工程,这是良好的沟通。”
  3. 维护上下文文件:一些开发者会维护一个 CLAUDE.md 或 TASKS.md 文件,专门用来存储项目规范、代码风格指南和当前任务状态,让 AI 始终“在线”。


论文中的一段详尽的Prompt样例

小结:AI 是副驾驶,你是机长

这篇论文给 2025 年乃至如今的开发者们吃了一颗定心丸:AI 不会取代你,但会“增强”你——前提是你懂得如何控制它。

真正的专业人士不会沉迷于“Vibe Coding”的虚幻快感。相反,他们利用深厚的软件工程积淀(测试、版本控制、代码审查能力)来驾驭 AI,将其变成一个不知疲倦的结对编程伙伴。正如一位受访者所言:

“我觉得 AI Agent棒极了,只要你坐在驾驶位上,并且时刻检查它的工作。一旦你不强制它遵守那些确立已久的工程原则,它就会变成灾难。”

论文链接:https://arxiv.org/abs/2512.14012


你的 AI 协作模式是?

读完这篇论文解读,我不禁想问大家:在你日常的开发中,你是更倾向于“Vibe Coding”(跟着感觉走),还是像文中提到的资深开发者那样,时刻保持着“战略性控制”?

欢迎在评论区分享你的 AI 协作心得或踩坑经历! 让我们一起探索人机协作的最佳边界。

如果这篇文章让你对 AI 编程有了更清醒的认识,别忘了点个【赞】和【在看】,并分享给你的团队!


升级你的AI开发工作流

文中提到的“伪代码思维”、“维护 CLAUDE.md 上下文文件”、“分步拆解任务”,正是规范驱动开发 (SDD) 的核心思想。如果你不想止步于简单的对话,而是渴望掌握一套成体系的、工程化的 AI Agent 协作方法论,让 AI 真正成为你可控的“超级副驾驶”…

那么,我的专栏 AI原生开发工作流实战 就是为你量身打造的!

在这个专栏里,我们将深入实战:

  • 如何编写 AI 秒懂的 Spec 文档
  • 如何构建 CLAUDE.md 等上下文管理系统。
  • 如何用 Claude Code 等工具实现自动化的 TDD 和重构。

扫描下方二维码,拒绝“Vibe”,拥抱“Control”,开启你的 AI 原生工程开发之旅!


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

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

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

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

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


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

© 2026, bigwhite. 版权所有.

Go 语言的“舒适区”:为何在这张“鄙视链”金字塔中,Go 仅次于 C?

2026-01-07 08:16:00

本文永久链接 – https://tonybai.com/2026/01/07/go-language-comfort-zone-in-contempt-chain-pyramid

大家好,我是Tony Bai。

最近,一张“编程语言分级图”在技术社区引发大家热议。它没有参考 TIOBE 排名,也不看 GitHub Star 数,而是完全基于一种简单粗暴的价值观:谁最不折腾人?

在这张金字塔中,C 语言高居神坛(The one and only),而 Java、Python、C++ 被踩在最底层的“憎恶(Abomination)”泥潭里。甚至连备受推崇的 Rust,也被归入了“彻底失败(Total failure)”。

** Go 语言则稳稳地站在了 T1 梯队——“No nonsense(拒绝废话)”。**

这张图看似偏激,却也道出了一些资深开发者的心声。它揭示了 Go 语言最大的魅力:在混沌的软件工程世界里,Go 为我们圈出了一块难得的“舒适区”

img{512x368}

鄙视链解构:极简主义者的“神曲”

这张图从上到下,宛如但丁的《神曲》,描绘了从天堂到地狱的编程世界观。meme图的作者显然是一位厌恶抽象、崇尚掌控机器、鄙视过度设计的硬核程序员。让我们逐层拆解:

  1. 塔尖:The one and only(唯一的真神)

    • C
    • C 是编程界的拉丁语。它直接映射硬件,没有隐藏的运行时,没有 GC。它是操作系统和驱动的基石,是所有软件的“第一推动力”。在极简主义眼中,只有 C 是纯粹的。
  2. T1 梯队:No nonsense(拒绝废话 / 实干家)

    • GoOCaml(骆驼)、LuaASM(芯片/汇编)、Erlang(红色e)。
    • 这一层是“干活”的语言。它们专注解决问题、务实、没有过度设计。
      • Go:带 GC 的 C,工业界的实干家。
      • Lua & ASM:极致的小巧与极致的控制。
      • OCaml & Erlang:虽然是函数式或特定领域,但以实用和高可靠性著称,不搞虚头巴脑的学术概念。
  3. T2 梯队:Meme languages(网红/小众神教)

    • OdinJai(绿色文字)、HolyC(黄色十字六边形)、Elixir(紫色水滴)、HTMX(激光眼马)。
    • 我敢保证这一层的很多语言你都没有听过,我也是查了很久才对号入座,这也说明原meme图的作者在编程语言方面涉猎甚广。这一层的语言通常具有“网红”属性,或者带有强烈的“亚文化/宗教”色彩。它们在特定圈子(如独立游戏开发、TempleOS 粉丝)中声量巨大,但在主流工业界存在感稀薄。
      • Odin & Jai:这两者常被绑定提及,代表了“Handmade”社区(手工造轮子)的价值观。它们试图取代 C++ 用于游戏开发,强调面向数据设计(DOD)。Odin 虽好但小众,Jai 则因长期未公开发布而被调侃为“幻之语言”。
      • HolyC:这是“上帝的程序员”Terry Davis 为 TempleOS 创造的语言,在技术宅圈子中是神一般的存在(Meme 之神),但几乎没有实际生产用途。
      • Elixir & HTMX:前者是 Erlang VM 上的“时髦文青”,后者是最近在推特上掀起“回归 HTML”运动的网红库。
  4. T3 梯队:Necessary evil(必要之恶)

    • JSCSSBashSwiftTeXSQL
    • 你很讨厌它们,但你离不开它们。因为它们垄断了特定领域(浏览器、终端、苹果生态、论文排版、数据库)。你用它们不是因为爱,而是因为别无选择。
  5. T4 梯队:Total failure(彻底失败 / 认知灾难)

    • HaskellRust(齿轮)、Zig(橙色Z)、ScalaRacketKotlin
    • 这是最引战的一层。这里的“失败”指的不是技术失败,而是“在追求简单的道路上失败了”
      • Rust:为了内存安全或零开销抽象,引入了极其复杂的心智负担(生命周期、编译期计算)。作者认为让程序员当编译器的奴隶是一种失败。
      • Zig:虽然标榜是 C 的继承者,但它要求显式管理所有资源(到处传递 Allocator),且引入了强大的 comptime 元编程。在作者看来,这并没有真正降低 C 的心智负担,反而换了一种方式折腾大脑,且至今仍未发布正式版(1.0)。
      • Haskell & Scala:学术概念堆砌,Monad 满天飞,导致代码难以阅读和维护。
  6. 底层:Abomination(憎恶 / 不可名状之物)

    • C++C#JavaPHPTSPythonRuby
    • 地狱最底层。它们犯了“过度设计”、“臃肿”、“慢”的原罪。
      • C++:特性大杂烩,学习曲线陡峭。
      • Java/C#:企业级官僚主义,层层叠叠的抽象工厂。
      • Python/Ruby/PHP:解释执行慢,动态类型在大型工程中是维护灾难。

神坛之下的第一人:Go 是“带了安全带的 C”

在这张图中,C 是唯一的“神”。为什么?因为 C 诚实。它与机器直接对话,没有中间商赚差价。但 C 也是危险的,内存泄漏和野指针是每个 C 程序员的噩梦。

Go 为什么紧随其后?

因为 Go 完美地继承了 C 的“诚实”,同时补上了“安全”的短板。

在“No nonsense”这一层,Go 与 Lua(极简脚本)、ASM(汇编)并列。这说明在作者眼中,Go 的本质不是“简化的 Java”,而是“现代化的 C”。

  • 舒适在“透明”:看到一行 Go 代码,你基本能准确预估它的运行代价。没有隐式类型转换,没有构造函数里的黑魔法。代码写成什么样,逻辑就怎么跑。
  • 舒适在“克制”:Go 只有 25 个关键字。它拒绝了许多“看起来很酷”的特性(如三元运算符、复杂的元编程),只为了让你在读代码时,不需要在大脑里运行一个复杂的解析器。

Go 处于这个位置,是因为它保留了 C 的掌控感,同时剔除了 C 的恐惧感(内存泄漏、野指针)。

下层的窒息感:为何 Java 和 C++ 是“憎恶”?

再往下看,最底层的“Abomination”包含了 C++、Java、Python 等工业界巨头。这并非说它们不能干活,而是说用它们干活“很不舒服”

在这个“极简主义”的评价体系里,这些语言代表了“过度设计”的极端:

  • C++ 的认知负担:你想写个 Hello World,却迷失在模板元编程、右值引用和 20 种初始化方式的迷宫里。
  • Java 的官僚主义:AbstractSingletonProxyFactoryBean……你写的不是代码,是填空题。层层叠叠的抽象,让代码与其运行的硬件彻底失联。

Go 的舒适区,建立在对这种“复杂性”的拒绝之上。 在 Go 里,你不需要画 UML 图,不需要背诵设计模式,你只需要关注:数据怎么流,逻辑怎么走。

侧面的焦虑感:为何 Rust 是“彻底失败”?

这是最引发争议的一点。Rust 被归为“Total failure”。这显然不是指 Rust 的技术失败,而是指它违背了“No nonsense”的初衷

Rust 为了追求内存安全和零成本抽象,引入了极高的认知成本(生命周期、借用检查)。这导致写 Rust 代码时,开发者往往在与编译器搏斗,而不是在解决业务问题。

Go 的舒适,是一种“妥协的艺术”。

Go 承认:与其让人脑去计算每一个变量的生命周期(Rust 的做法),不如让 CPU 多跑几毫秒来做 GC(Go 的做法)。

在这个算力过剩而人脑算力稀缺的时代,Go 选择了让人舒服,而不是让机器舒服。

小结:拒绝废话,回归本质

这张图之所以能引起共鸣,是因为它精准地击中了现代软件工程的痛点:我们花了太多时间在对付语言特性、框架和工具链,却忘了我们最初只是想写程序解决问题。

Go 语言处于 No nonsense 这一层,恰恰证明了它的核心价值:

它不追求“纯粹”的完美(像 Haskell),也不追求“极致”的性能(像 Rust),更不追求“大而全”的框架(像 Java)。

Go 只是想让你舒服地、直白地、没有废话地,把代码写出来,然后按时下班。

在当今这个充满焦虑的技术世界里,这难道不是最顶级的“舒适区”吗?^_^


你的“鄙视链”排位

这张图虽然偏激,但确实代表了一些人心中的极简主义的审美。在你心中的编程语言金字塔里,谁是那个“唯一的真神”?谁又是让你痛苦不堪的“不可名状之物”?你认同把 Rust 放在“彻底失败”这一层吗?

欢迎在评论区晒出你的“私房排位表”,或者为你的本命语言辩护! (请文明交流,勿伤和气~ )

如果这篇文章戳中了你的笑点或痛点,别忘了点个【赞】和【在看】,看看你的朋友圈里有多少“极简主义者”!


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

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

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


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

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

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

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

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


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

© 2026, bigwhite. 版权所有.