<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tony Bai &#187; github</title>
	<atom:link href="http://tonybai.com/tag/github/feed/" rel="self" type="application/rss+xml" />
	<link>https://tonybai.com</link>
	<description>一个程序员的心路历程</description>
	<lastBuildDate>Sat, 04 Apr 2026 00:51:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>AI 时代的开源：当 Coding Agent 接管 GitHub，我们该何去何从？</title>
		<link>https://tonybai.com/2026/03/01/open-source-ai-era-coding-agent-takes-over-github/</link>
		<comments>https://tonybai.com/2026/03/01/open-source-ai-era-coding-agent-takes-over-github/#comments</comments>
		<pubDate>Sat, 28 Feb 2026 23:57:45 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[A2AProtocol]]></category>
		<category><![CDATA[AgentHub]]></category>
		<category><![CDATA[AgentSkills]]></category>
		<category><![CDATA[AgentToAgentProtocol]]></category>
		<category><![CDATA[AINativeWorkflow]]></category>
		<category><![CDATA[AI原生工作流]]></category>
		<category><![CDATA[AI时代的开源]]></category>
		<category><![CDATA[ArchitecturePatterns]]></category>
		<category><![CDATA[AutomatedReviewPipeline]]></category>
		<category><![CDATA[Codereview]]></category>
		<category><![CDATA[CodingAgent]]></category>
		<category><![CDATA[CollaborationMode]]></category>
		<category><![CDATA[constraint]]></category>
		<category><![CDATA[GatekeeperAgent]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Intent]]></category>
		<category><![CDATA[InteractiveREADME]]></category>
		<category><![CDATA[JustInTimeSoftware]]></category>
		<category><![CDATA[MachineFirstGovernance]]></category>
		<category><![CDATA[Maintainer]]></category>
		<category><![CDATA[OpenSourceInAIEra]]></category>
		<category><![CDATA[ProductivityExplosion]]></category>
		<category><![CDATA[ProofOfWork]]></category>
		<category><![CDATA[ReputationSystem]]></category>
		<category><![CDATA[SemanticSearch]]></category>
		<category><![CDATA[SpamPR]]></category>
		<category><![CDATA[spec]]></category>
		<category><![CDATA[SpecAsCode]]></category>
		<category><![CDATA[testcase]]></category>
		<category><![CDATA[交互式文档]]></category>
		<category><![CDATA[代码审查]]></category>
		<category><![CDATA[协作模式]]></category>
		<category><![CDATA[即时软件]]></category>
		<category><![CDATA[垃圾PR]]></category>
		<category><![CDATA[声誉体系]]></category>
		<category><![CDATA[守门员智能体]]></category>
		<category><![CDATA[工作量证明]]></category>
		<category><![CDATA[意图]]></category>
		<category><![CDATA[智能体技能]]></category>
		<category><![CDATA[智能体枢纽]]></category>
		<category><![CDATA[机器优先治理]]></category>
		<category><![CDATA[机机协作协议]]></category>
		<category><![CDATA[架构模式]]></category>
		<category><![CDATA[测试用例]]></category>
		<category><![CDATA[生产力核爆]]></category>
		<category><![CDATA[约束]]></category>
		<category><![CDATA[维护者]]></category>
		<category><![CDATA[自动审查流水线]]></category>
		<category><![CDATA[规格说明]]></category>
		<category><![CDATA[规范即源码]]></category>
		<category><![CDATA[语义搜索]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5968</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/03/01/open-source-ai-era-coding-agent-takes-over-github 大家好，我是Tony Bai。 如果我们把时间拨回到 2023 年之前，一个开源项目的诞生往往伴随着一位或几位核心维护者（Maintainer）数周甚至数月的辛勤耕耘。 但在刚刚过去的几个月里，我们见证了一种全新的物种崛起。 以 OpenClaw（其前身是火遍全网的 Moltbot/Clawdbot）为代表，这类项目的代码库中，接近 100% 的代码都是由 AI Coding Agent（如 Claude Code等）编写的。甚至连最初的 README、项目结构、测试用例，都是由 AI 在几分钟内“吐”出来的。 这是一个极其震撼的信号！它意味着，代码的生产成本正在趋近于零。 当 Gastown、Beads 等由 Agent 驱动的项目如雨后春笋般涌现，GitHub 上的 Commit 频率开始呈现出非人类的特征——一个小项目可能在一天内产生数百次提交，每一次都包含了完整的逻辑和测试。 近期，SemiAnalysis也曝出一个惊人数据：目前，GitHub上4%的公开提交（commits）都是由Claude Code生成的，到了2026年底这个数字将达到20%以上。 这种Coding Agent生产力的“核爆”，正在对我们熟悉的开源世界发起一场降维打击。Github开源的那个被奉为圭臬的 opensource.guide，其中的许多条款在今天看来，似乎已经过时了。 当 Coding Agent 开始接管 GitHub，传统的“人-人”协作模式将面临怎样的崩塌与重建？我们，作为人类开发者，又该何去何从？ 旧秩序的崩塌：信任与注意力的危机 开源社区的基石，建立在两个稀缺资源之上：人类的时间 和 人与人之间的信任。 在过去，当你向一个项目提交 PR（Pull Request）时，维护者默认会认为：你付出了时间，你阅读了代码，你是来帮忙的。这种“工作量证明（Proof of Work）”构建了基本的信任。 但在 Coding Agent 时代，这个逻辑被打破了。 垃圾 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/open-source-ai-era-coding-agent-takes-over-github-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/03/01/open-source-ai-era-coding-agent-takes-over-github">本文永久链接</a> &#8211; https://tonybai.com/2026/03/01/open-source-ai-era-coding-agent-takes-over-github</p>
<p>大家好，我是Tony Bai。</p>
<p>如果我们把时间拨回到 2023 年之前，一个开源项目的诞生往往伴随着一位或几位核心维护者（Maintainer）数周甚至数月的辛勤耕耘。</p>
<p>但在刚刚过去的几个月里，我们见证了一种全新的物种崛起。</p>
<p>以 <strong>OpenClaw</strong>（其前身是火遍全网的 <a href="https://tonybai.com/2026/01/30/clawdbot-author-peter-steinberger-full-interview/">Moltbot/Clawdbot</a>）为代表，这类项目的代码库中，接近 100% 的代码都是由 AI Coding Agent（如 <a href="http://gk.link/a/12EPd">Claude Code</a>等）编写的。甚至连最初的 README、项目结构、测试用例，都是由 AI 在几分钟内“吐”出来的。</p>
<p>这是一个极其震撼的信号！它意味着，代码的生产成本正在趋近于零。</p>
<p>当 <a href="https://tonybai.com/2026/01/25/gas-town-multi-agent-orchestration-ai-programming-revolution">Gastown</a>、Beads 等由 Agent 驱动的项目如雨后春笋般涌现，GitHub 上的 Commit 频率开始呈现出非人类的特征——一个小项目可能在一天内产生数百次提交，每一次都包含了完整的逻辑和测试。</p>
<p>近期，<a href="https://newsletter.semianalysis.com/p/claude-code-is-the-inflection-point">SemiAnalysis也曝出一个惊人数据</a>：目前，GitHub上4%的公开提交（commits）都是由Claude Code生成的，到了2026年底这个数字将达到20%以上。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/open-source-ai-era-coding-agent-takes-over-github-3.png" alt="" /></p>
<p>这种Coding Agent生产力的“核爆”，正在对我们熟悉的开源世界发起一场降维打击。Github开源的那个被奉为圭臬的 <a href="https://opensource.guide/">opensource.guide</a>，其中的许多条款在今天看来，似乎已经过时了。</p>
<p>当 Coding Agent 开始接管 GitHub，传统的“人-人”协作模式将面临怎样的崩塌与重建？我们，作为人类开发者，又该何去何从？</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/agentic-software-engineering-qr.png" alt="" /></p>
<h2>旧秩序的崩塌：信任与注意力的危机</h2>
<p>开源社区的基石，建立在两个稀缺资源之上：人类的时间 和 人与人之间的信任。</p>
<p>在过去，当你向一个项目提交 PR（Pull Request）时，维护者默认会认为：你付出了时间，你阅读了代码，你是来帮忙的。这种“工作量证明（Proof of Work）”构建了基本的信任。</p>
<p>但在 Coding Agent 时代，这个逻辑被打破了。</p>
<h3>垃圾 PR 的洪流 (Spam PRs)</h3>
<p>现在的贡献者，可能只是在 Cursor 或 Claude Code等Coding Agent 里输入了一句：“帮我给这个项目加个功能。”</p>
<p>几秒钟后，一个包含几百行代码的 PR 就生成了。</p>
<p>贡献者可能根本没看懂代码，甚至没跑过测试，就直接点击了 Create Pull Request。</p>
<p>对于维护者来说，这是一场灾难。你面对的不再是带着诚意的贡献者，而是成千上万个不知疲倦的“Prompt 搬运工”。</p>
<h3>人工 Review 的物理极限</h3>
<p>人类阅读代码的速度，是有生理极限的。</p>
<p>当 AI 一天能生成人类一年才能写完的代码量时，“人工 Code Review” 这个环节彻底瘫痪了。</p>
<p>即使维护者 24 小时不睡觉，也无法审核完那些由 Agent 生成的、逻辑似是而非的代码。</p>
<h3>贡献者的异化</h3>
<p>传统的开源贡献者，通过阅读源码、理解架构来提升自己。</p>
<p>现在的部分贡献者，变成了“刷单机器”。他们关心的不是项目本身，而是 GitHub Profile 上的绿色格子。</p>
<p>当贡献不再代表能力，而只代表算力时，开源社区的荣誉体系也随之崩塌。</p>
<h2>开源 2.0 的新法则：机器优先治理</h2>
<p>面对这场危机，我们不能坐以待毙。开源社区必须进化出一种新的秩序——开源 2.0。 在这个新时代，核心法则将从“以人为本”转向“机器优先（Machine-First）”。</p>
<h3>法则一：Agent 审查 Agent</h3>
<p>既然人类无法处理机器生成的洪流，那就让机器去对抗机器。 未来的开源项目，将标配一个 “守门员 Agent” (Gatekeeper Agent)。</p>
<ul>
<li>当 PR 提交时，首先迎接它的不是人类，而是守门员冷酷的扫描。</li>
<li>它会运行测试，检查代码风格，甚至进行逻辑推理(这一点尤为重要)：<em>“这段新增的代码是否与项目的架构原则冲突？”</em></li>
<li>只有通过了守门员预审的 PR，才会被打上 human-review-needed 的标签，呈现在人类面前。</li>
</ul>
<p>这不再是简单的 CI/CD，这是具备认知能力的 AI 门卫。</p>
<h3>法则二：规范即源码</h3>
<p>在 AI 时代，提交代码（Implementation）可能不再是最高效的协作方式。</p>
<p>因为代码是廉价的，是易变的。真正昂贵且恒定的，是意图（Intent）和约束（Constraint）。</p>
<p>未来的开源贡献，很大可能会演变成：</p>
<ul>
<li>提交 Spec：“我希望增加一个 User 模块，接口定义如下&#8230;”</li>
<li>提交 Test Case：“这是一个复现 Bug 的测试用例&#8230;”</li>
</ul>
<p>维护者的 Agent 接收到这些 Spec 后，会自动生成实现代码。</p>
<p><strong>“与其给我鱼（代码），不如给我渔网（Spec）。”</strong>，或者说 **“Do not show me your code, Show me your spec”。这将彻底改变 Git 的协作流。</p>
<h3>法则三：声誉协议的重构</h3>
<p>我们需要一套新的机制来识别“高质量贡献者”。</p>
<p>仅仅看 Commit 数量已经没有意义了。未来的 GitHub 可能会引入基于 AI 评估的声誉分。</p>
<ul>
<li>你的 PR 是否一次性通过了 Agent 审查？</li>
<li>你的代码是否被下游项目广泛引用？</li>
<li>你的 Spec 是否具有创新性？</li>
<li>&#8230; &#8230;</li>
</ul>
<p><img src="https://tonybai.com/wp-content/uploads/2026/open-source-ai-era-coding-agent-takes-over-github-2.png" alt="" /></p>
<h2>灵魂拷问：我们为什么还要开源？</h2>
<p>这可能是最深层的存在主义危机。</p>
<p>如果每个人都有一个全能的 Coding Agent，只需要说一句“我要一个高性能 HTTP 路由库”，AI 就能现场写出一个完美的版本（甚至根据你的业务场景定制），那么——我们还需要开源 express 或 gin 吗？</p>
<p>当代码的边际生产成本归零，传统的“共享代码以复用”的经济学基础就被动摇了。</p>
<h3>悲观视角：开源库的贬值</h3>
<p>通用的、工具性质的开源库（Utils, Helpers），可能会大量消亡。因为 AI 现场生成的成本，比你去 GitHub 搜索、安装、阅读文档的成本还要低。“即时软件（Just-in-Time Software）” 将成为现实。</p>
<h3>乐观视角：开源的本质回归</h3>
<p>但开源不会死。因为开源的本质不是共享代码，而是共享智慧。</p>
<p>我们依然需要共享：</p>
<ul>
<li>架构模式 (Architecture Patterns)：如何组织复杂的系统？</li>
<li>Agent Skills (智能体技能)：如何教会 AI 完成特定任务？</li>
<li>评估标准 (Benchmarks)：什么是好的代码？</li>
</ul>
<p>未来的开源，将很可能从“代码托管”进化为“智能体能力托管”。GitHub 可能会变成一个巨大的 Agent Hub，我们在这里分享 Prompt、分享 Context、分享让 Agent 变得更聪明的知识。</p>
<h2>平台的进化：GitHub 的自我救赎</h2>
<p>作为开源的基础设施，GitHub（或者它的挑战者）必须做出改变，以迎合 Coding Agent 时代。</p>
<p>我们不妨大胆预测一下 GitHub 的未来功能：</p>
<ul>
<li>AI Gatekeeper 集成：仓库设置里增加一个“开启 AI 预审”的开关。</li>
<li>Semantic Search（语义搜索）：传统的关键词搜索在海量生成的代码面前已经失效。我们需要“意图搜索”——<em>“帮我找一个能处理 PDF 解析且兼容 Python 3.12 的 Agent Skill”</em>。</li>
<li>Interactive README：README.md 不再是静态文档，而是一个Chat Interface。你可以直接问项目：“怎么安装？”“报错了怎么办？” 项目自带的 Support Agent 会回答你。</li>
<li>A2A Protocol 支持：GitHub 可能会标准化 Agent-to-Agent 的协作协议或演进现有的A2A协议，让不同项目的 Agent 能够跨仓库协作（例如：依赖更新 Agent 自动向你的项目提交 PR）。</li>
</ul>
<h2>小结：最后的守夜人</h2>
<p>在这个机器轰鸣、代码如洪流般涌现的时代，人类维护者将成为“最后的守夜人”。</p>
<p>我们的职责不再是亲自砌每一块砖（写代码），也不再是亲自检查每一块砖的纹理（Review 代码）。</p>
<p>我们的职责是：定义蓝图（Spec），设定标准（Evaluation），以及在机器迷失方向时，握住方向盘（Alignment）。</p>
<p>未来开源并不会死，它只是进化了。</p>
<p>它从一群手工匠人的集市，进化成了一座高度自动化的未来城市。而我们，是这座城市的规划师。</p>
<hr />
<p><strong>你的“开源”新角色</strong></p>
<p>开源的 2.0 时代正在开启。作为开发者或维护者，你更看好“规范即源码”的协作模式，还是依然怀念那种“人与人、面对面”的代码交流？你认为 AI 带来的 PR 洪流是加速了项目的进化，还是仅仅制造了更多的数字噪音？</p>
<p>欢迎在评论区分享你的真实感受与预判！让我们一起探讨如何在机器的时代守住人的智慧。</p>
<p>如果这篇文章引发了你对职业未来的深思，别忘了点个【赞】和【在看】，并分享给那些依然奋斗在 GitHub 第一线的战友们！</p>
<hr />
<p><strong>构建你的开源防御体系</strong></p>
<p>在这个开源新秩序建立的前夜，作为一个开发者，你该如何适应？ 是继续用肉身对抗机器的洪流，还是学会构建自己的 Agent Guardrails？</p>
<p>在我的极客时间专栏《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》中，我们将深入探讨：</p>
<ul>
<li>AI Code Reviewer 实战：如何利用 <strong>Claude Code</strong> 和 <strong>GitHub Actions</strong> 构建自动审查流水线？</li>
<li>Spec-Driven Contribution：如何设计一套基于 Spec 的开源贡献规范？</li>
<li>Agent Skills 开发：如何将你的经验封装成 Skill，发布到未来的开源市场？</li>
</ul>
<p>不要被时代抛弃。扫描下方二维码，掌握驾驭机器军团的能力。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></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 src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/03/01/open-source-ai-era-coding-agent-takes-over-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>数据打脸刻板印象：Go 的“样板代码”竟然和 Rust 一样多？</title>
		<link>https://tonybai.com/2026/02/08/go-boilerplate-code-vs-rust-data-refutes-stereotypes/</link>
		<comments>https://tonybai.com/2026/02/08/go-boilerplate-code-vs-rust-data-refutes-stereotypes/#comments</comments>
		<pubDate>Sat, 07 Feb 2026 23:39:52 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[BenBoyter]]></category>
		<category><![CDATA[BoilerplateCode]]></category>
		<category><![CDATA[BoilerplateCodeDensity]]></category>
		<category><![CDATA[Comment]]></category>
		<category><![CDATA[Complexity]]></category>
		<category><![CDATA[DataAnalysis]]></category>
		<category><![CDATA[ErrorHandling]]></category>
		<category><![CDATA[Expressivity]]></category>
		<category><![CDATA[FunctionalLanguages]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoLanguage]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[InformationDensity]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[SLOC]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[Stereotype]]></category>
		<category><![CDATA[StructuralRedundancy]]></category>
		<category><![CDATA[SyntacticSugar]]></category>
		<category><![CDATA[TypeSystem]]></category>
		<category><![CDATA[ULOC]]></category>
		<category><![CDATA[ULOCMetric]]></category>
		<category><![CDATA[ULOC指标]]></category>
		<category><![CDATA[UniqueLinesOfCode]]></category>
		<category><![CDATA[信息密度]]></category>
		<category><![CDATA[函数式语言]]></category>
		<category><![CDATA[刻板印象]]></category>
		<category><![CDATA[唯一代码行数]]></category>
		<category><![CDATA[复杂度]]></category>
		<category><![CDATA[数据分析]]></category>
		<category><![CDATA[样板代码]]></category>
		<category><![CDATA[样板代码密度]]></category>
		<category><![CDATA[注释]]></category>
		<category><![CDATA[源代码行数]]></category>
		<category><![CDATA[类型系统]]></category>
		<category><![CDATA[结构化冗余]]></category>
		<category><![CDATA[表达力]]></category>
		<category><![CDATA[语法糖]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[错误处理]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5845</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/02/08/go-boilerplate-code-vs-rust-data-refutes-stereotypes 大家好，我是Tony Bai。 在编程语言的鄙视链中，Go 语言常常因为其“繁琐”而饱受诟病。 “if err != nil 写断手”、“缺乏语法糖”、“到处都是重复的样板代码”…… 这些似乎已经成为了 Go 的标签。 相比之下，Rust 往往被视为“表达力”的代表，拥有强大的宏、模式匹配和类型系统，能够用更少的代码做更多的事。 然而，Ben Boyter 最近的一项硬核研究，通过分析 GitHub 上各语言 Top 100 仓库（总计约 4 亿行代码），得出了一个令编程语言社区大跌眼镜的结论： 在代码重复率和“样板代码”密度上，Go 和 Rust 几乎处于同一水平线。 不仅是行数：ULOC 指标 传统的 SLOC（源代码行数）往往无法真实反映项目的复杂度和冗余度。Ben Boyter 使用了他开发的工具 scc 中的一个特殊指标：ULOC (Unique Lines of Code，唯一代码行数)。 ULOC 指标并非简单的“全量去重”，而是通过剥离“结构性噪音”来更精准地衡量系统的真实复杂度。其计算逻辑如下： 剔除结构化冗余：不仅排除了空行，还排除了单纯的闭合大括号行（}）以及在不同文件中大量重复出现的公共引用代码（如 include 或 import）。 过滤文件级模板：有效识别并扣除在项目中每个文件顶部几乎完全相同的 License（许可证）声明头，避免这些非逻辑性的“样板文字”虚增代码总量。 计入注释成本：与传统 SLOC 不同，ULOC 会保留注释统计。作者认为，注释与代码一样需要同等的维护精力，反映了开发者的思考过程，因此属于“有效工作量”。 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/go-boilerplate-code-vs-rust-data-refutes-stereotypes-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/02/08/go-boilerplate-code-vs-rust-data-refutes-stereotypes">本文永久链接</a> &#8211; https://tonybai.com/2026/02/08/go-boilerplate-code-vs-rust-data-refutes-stereotypes</p>
<p>大家好，我是Tony Bai。</p>
<p>在编程语言的鄙视链中，Go 语言常常因为其“繁琐”而饱受诟病。</p>
<p>“if err != nil 写断手”、“缺乏语法糖”、“到处都是重复的样板代码”…… 这些似乎已经成为了 Go 的标签。</p>
<p>相比之下，Rust 往往被视为“表达力”的代表，拥有强大的宏、模式匹配和类型系统，能够用更少的代码做更多的事。</p>
<p>然而，<a href="https://boyter.org/posts/boilerplate-tax-ranking-popular-languages-by-density/">Ben Boyter 最近的一项硬核研究</a>，通过分析 GitHub 上各语言 Top 100 仓库（总计约 4 亿行代码），得出了一个令编程语言社区大跌眼镜的结论：</p>
<p><strong>在代码重复率和“样板代码”密度上，Go 和 Rust 几乎处于同一水平线。</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/system-programming-in-go-pr.png" alt="" /></p>
<h2>不仅是行数：ULOC 指标</h2>
<p>传统的 SLOC（源代码行数）往往无法真实反映项目的复杂度和冗余度。Ben Boyter 使用了他开发的工具 <a href="https://github.com/boyter/scc">scc</a> 中的一个特殊指标：<a href="https://boyter.org/posts/sloc-cloc-code-new-metic-uloc/">ULOC (Unique Lines of Code，唯一代码行数)</a>。</p>
<p>ULOC 指标并非简单的“全量去重”，而是通过剥离“结构性噪音”来更精准地衡量系统的真实复杂度。其计算逻辑如下：</p>
<ul>
<li>剔除结构化冗余：不仅排除了空行，还排除了单纯的闭合大括号行（}）以及在不同文件中大量重复出现的公共引用代码（如 include 或 import）。</li>
<li>过滤文件级模板：有效识别并扣除在项目中每个文件顶部几乎完全相同的 License（许可证）声明头，避免这些非逻辑性的“样板文字”虚增代码总量。</li>
<li>计入注释成本：与传统 SLOC 不同，ULOC 会保留注释统计。作者认为，注释与代码一样需要同等的维护精力，反映了开发者的思考过程，因此属于“有效工作量”。</li>
</ul>
<p>通过这种方式计算出的 Dryness（干度），代表了剔除“语法支架”和“版权模板”后，真正的业务逻辑与注释在代码中的占比。百分比越高，说明重复代码越少，信息密度越高；百分比越低，说明“样板代码”或重复结构越多。</p>
<h2>令人震惊的对比：Go vs Rust</h2>
<p>让我们直接看数据（数据来源：<a href="https://github.com/EvanLi/Github-Ranking/">GitHub Top 100 仓库</a>分析，2026年2月）：</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/go-boilerplate-code-vs-rust-data-refutes-stereotypes-2.png" alt="" /></p>
<p><strong>发现了吗？Rust (60.5%) 和 Go (58.78%) 的差距微乎其微，甚至可以说在统计学上是等价的。</strong></p>
<p>Ben Boyter 在文章中坦言，他之前也持有“Go 的样板代码比 Rust 多得多”的刻板印象。但数据表明，虽然两者的“啰嗦”方式不同，但结果是一样的：</p>
<ul>
<li>Go 的啰嗦：体现在显式的错误处理、显式的循环结构，以及为了简单性而不得不写的重复逻辑。</li>
<li>Rust 的啰嗦：体现在复杂的类型系统设置、Trait 的实现（impl blocks）、以及为了满足借用检查器而编写的“仪式性”代码。</li>
</ul>
<p>正如作者所总结的：</p>
<blockquote>
<p>Go 狂热者：“Go 很简单！” -> “是的，简单到你需要把同一件事写很多遍。”<br />
  Rust 狂热者：“Rust 完美表达！” -> “是的，但你花了 40% 的时间在写 setup 代码和 trait 实现。”</p>
</blockquote>
<h2>其他颠覆性的发现</h2>
<p>除了 Go 和 Rust 的“握手言和”，这份报告还有几个极具冲击力的发现：</p>
<h3>1. Lisp 家族是“干度之王”</h3>
<p>Clojure 以 77.91% 的惊人密度位居榜首。Haskell 紧随其后。</p>
<p>这验证了一个古老的观点：如果你想要最高的“人类思想 vs 击键次数”比率，Lisp 和函数式语言依然是王者。它们几乎每一行代码都是纯粹的业务逻辑。</p>
<h3>2. Java 居然比 Go 和 Rust 都“干”？</h3>
<p>Java 的得分为 65.72%，显著高于 Go、Rust 和 C#。</p>
<p>这听起来反直觉，毕竟 Java 以 PublicStaticVoidMain 这种冗长著称。但这可能说明：</p>
<ul>
<li>现代 Java 及其生态（Spring 等）通过注解等方式极大地消除了样板代码。</li>
<li>或者，Top 100 的 Java 项目多为成熟的业务系统，核心逻辑占比大，而 Go/Rust 项目中系统级代码（通常包含更多底层重复逻辑）较多。</li>
</ul>
<h3>3. 脚本语言的特异性</h3>
<p>Shell Script 的密度极高（72.24%），但这主要是因为 Shell 脚本通常很短且高度定制化（Bespoke），很难复用，因此“唯一性”很高。</p>
<h2>小结：复杂度的守恒</h2>
<p>这个研究告诉我们一个道理：语言特性（Features）并不一定能消除复杂度，它往往只是转移了复杂度。</p>
<p>Go 选择了少量的特性，导致逻辑必须通过显式的重复代码来表达；Rust 选择了丰富的特性（宏、泛型、Trait），导致开发者必须编写大量的结构性代码来支撑这些特性。</p>
<p>对于 Gopher 来说，这或许是一种宽慰：别再为 if err != nil 感到羞愧了。隔壁写 Rust 的兄弟，虽然代码看起来很酷，但他们为了让编译器开心而敲击键盘的次数，并不比你少。</p>
<p><strong>毕竟，软件工程没有银弹，只有取舍。</strong></p>
<p>资料链接：https://boyter.org/posts/boilerplate-tax-ranking-popular-languages-by-density/</p>
<hr />
<p><strong>聊聊你的“啰嗦”体验</strong></p>
<p>看完这个数据，你是感到“意料之中”还是“大吃一惊”？在你的实际开发中，你觉得 Go 的 if err != nil 更磨人，还是 Rust 的类型体操和 Trait 实现更让你头大？你认同“复杂度守恒”这个观点吗？</p>
<p>欢迎在评论区留下你的看法，让我们来一场理性的“语言之争”！</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 src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></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 src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/02/08/go-boilerplate-code-vs-rust-data-refutes-stereotypes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>技术考古：Markdown 为何从博客工具演变成统治 AI 世界的“通用语”？</title>
		<link>https://tonybai.com/2026/01/13/how-markdown-took-over-the-world/</link>
		<comments>https://tonybai.com/2026/01/13/how-markdown-took-over-the-world/#comments</comments>
		<pubDate>Tue, 13 Jan 2026 05:21:54 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AaronSwartz]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI时代]]></category>
		<category><![CDATA[AnilDash]]></category>
		<category><![CDATA[AppleNotes]]></category>
		<category><![CDATA[ArtificialIntelligence]]></category>
		<category><![CDATA[CommonMark]]></category>
		<category><![CDATA[DaringFireball]]></category>
		<category><![CDATA[Discord]]></category>
		<category><![CDATA[GFM]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[GitHubFlavoredMarkdown]]></category>
		<category><![CDATA[googledocs]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[HyperTextMarkupLanguage]]></category>
		<category><![CDATA[JohnGruber]]></category>
		<category><![CDATA[LargeLanguageModel]]></category>
		<category><![CDATA[LinguaFranca]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Markdown]]></category>
		<category><![CDATA[notion]]></category>
		<category><![CDATA[Obsidian]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[READMEMD]]></category>
		<category><![CDATA[slack]]></category>
		<category><![CDATA[博客工具]]></category>
		<category><![CDATA[开放性]]></category>
		<category><![CDATA[技术考古]]></category>
		<category><![CDATA[查看源码]]></category>
		<category><![CDATA[标准化]]></category>
		<category><![CDATA[电子邮件习惯]]></category>
		<category><![CDATA[知识产权]]></category>
		<category><![CDATA[碎片化]]></category>
		<category><![CDATA[纯文本]]></category>
		<category><![CDATA[结构化内容]]></category>
		<category><![CDATA[设计哲学]]></category>
		<category><![CDATA[通用语]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5716</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/01/13/how-markdown-took-over-the-world 大家好，我是Tony Bai。 在这个由科技巨头主导、充斥着复杂算法和封闭生态的数字世界里，有一种技术显得格格不入。它没有专利壁垒，没有复杂的构建流程，甚至不需要特定的软件就能阅读。 它是 Markdown。 近期，知名科技博主 Anil Dash 发布了一篇题为《How Markdown Took Over the World》的长文。他在文中深情回顾了这一格式的诞生与崛起，并指出：在这个由科技巨头主导、充斥着封闭生态的数字世界里，Markdown 是一场属于普通人的胜利。 如今，从 GitHub 上的亿万代码仓库，到 ChatGPT等大模型 生成的每一个回答，再到你随手记下的 Apple Notes，Markdown 无处不在。它不仅成为了技术人员的“普通话”，更意外地成为了 AI 时代的“通用语”。 这一切，都始于 20 年前一位“固执”的苹果博主为了偷懒而写的一个小脚本。今天，让我们跟随 Anil Dash 的视角，回顾这段充满偶然与必然的技术传奇。 缘起：一个博主的“偷懒”计划 2002 年，John Gruber 做了一个在当时看来极其不理性的决定：全职运营一个只关注苹果公司动态的博客——Daring Fireball。 在那个博客刚刚兴起的蛮荒时代，发布内容并不容易。你要么忍受简陋的输入框，要么得手写复杂的 HTML 标签。为了能在写文章时（比如加粗、插入链接）不被繁琐的 HTML 标记打断思路，John 决定为自己开发一套工具。 他的核心理念是：既然 HTML (HyperText Markup Language) 太复杂，那就叫它 Markdown 吧。 如果你想加粗，就用 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/how-markdown-took-over-the-world-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/13/how-markdown-took-over-the-world">本文永久链接</a> &#8211; https://tonybai.com/2026/01/13/how-markdown-took-over-the-world</p>
<p>大家好，我是Tony Bai。</p>
<p>在这个由科技巨头主导、充斥着复杂算法和封闭生态的数字世界里，有一种技术显得格格不入。它没有专利壁垒，没有复杂的构建流程，甚至不需要特定的软件就能阅读。</p>
<p>它是 <strong>Markdown</strong>。</p>
<p>近期，知名科技博主 Anil Dash 发布了一篇题为《<a href="https://www.anildash.com/2026/01/09/how-markdown-took-over-the-world">How Markdown Took Over the World</a>》的长文。他在文中深情回顾了这一格式的诞生与崛起，并指出：<strong>在这个由科技巨头主导、充斥着封闭生态的数字世界里，Markdown 是一场属于普通人的胜利。</strong></p>
<p>如今，从 GitHub 上的亿万代码仓库，到 ChatGPT等大模型 生成的每一个回答，再到你随手记下的 Apple Notes，Markdown 无处不在。它不仅成为了技术人员的“普通话”，更意外地成为了 AI 时代的“通用语”。</p>
<p>这一切，都始于 20 年前一位“固执”的苹果博主为了偷懒而写的一个小脚本。今天，让我们跟随 Anil Dash 的视角，回顾这段充满偶然与必然的技术传奇。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/distributed-system-guide-qr.png" alt="" /></p>
<h2>缘起：一个博主的“偷懒”计划</h2>
<p>2002 年，John Gruber 做了一个在当时看来极其不理性的决定：全职运营一个只关注苹果公司动态的博客——<strong>Daring Fireball</strong>。</p>
<p>在那个博客刚刚兴起的蛮荒时代，发布内容并不容易。你要么忍受简陋的输入框，要么得手写复杂的 HTML 标签。为了能在写文章时（比如加粗、插入链接）不被繁琐的 HTML 标记打断思路，John 决定为自己开发一套工具。</p>
<p>他的核心理念是：<strong>既然 HTML (HyperText Markup Language) 太复杂，那就叫它 Markdown 吧。</strong></p>
<p>如果你想加粗，就用 **；想引用，就用 >；想列表，就用 -。这些符号并非凭空创造，而是深受电子邮件时代纯文本格式习惯的影响。John 的天才之处在于，他将这些约定俗成的习惯标准化，并写了一个 Perl 脚本将它们转换为合法的 HTML。</p>
<p>2004 年 3 月，在 Aaron Swartz（那位早逝的天才少年）的协助测试下，Markdown 正式发布。没有人预料到，这个小小的工具将改变互联网的未来。</p>
<h2>统治世界：从程序员到 AI</h2>
<p>Markdown 的崛起并非一夜之间，但它的生命力却异常顽强。</p>
<ol>
<li><strong>开发者的拥抱</strong>：GitHub 的出现是关键转折点。它将 README.md 设为项目标配，使得 Markdown 成为了开发者描述项目的标准格式。</li>
<li><strong>应用的普及</strong>：从 Slack 到 Discord，从 Notion 到 Obsidian，现代生产力工具几乎全部内置了 Markdown 支持。哪怕是 Google Docs 和 Apple Notes 这样的大众软件，最终也向用户需求妥协，加入了 Markdown 支持。</li>
<li><strong>AI 的通用语</strong>：最令人意想不到的转折发生在当下。当最前沿的 LLM（大型语言模型）需要一种格式来输出结构化内容时，它们不约而同地选择了 Markdown。因为它<strong>既对人类可读，又对机器友好</strong>，且完全开放。</li>
</ol>
<p>Anil Dash 在他的回顾文章中总结了 Markdown 成功的 <strong>10 个技术原因</strong>，其中几点尤为深刻：</p>
<ul>
<li><strong>解决真实问题</strong>：它不是为了“发明一种新格式”，而是为了解决“手写 HTML 太痛苦”这个具体痛点。</li>
<li><strong>利用现有习惯</strong>：它没有强迫用户学习新符号，而是沿用了电子邮件时代的纯文本习惯（如 > 表示引用）。</li>
<li><strong>没有知识产权 (IP) 负担</strong>：John Gruber 从未试图将其商业化或申请专利，这种彻底的开放性消除了所有采用者的顾虑。</li>
<li><strong>“查看源码”的哲学</strong>：Markdown 文件本身就是教程。你只需要看一眼源文件，就能立刻学会怎么写。</li>
</ul>
<h2>硬币的另一面：自由的代价</h2>
<p>当然，Markdown 这种彻底的自由和缺乏中央控制，也带来了一个长期的副作用——<strong>碎片化</strong>。</p>
<p>正因为 John Gruber 当年只给出了一个 Perl 脚本而没有定义极其严谨的规范，导致后来出现了各种“方言”。GitHub 有自己的 GitHub Flavored Markdown (GFM)，Reddit 有自己的解析规则，Obsidian 和 Notion 也都添加了各自的私有语法（如双向链接 [[Link]]）。</p>
<p>这导致了一个尴尬的现实：<strong>虽然 Markdown 到处都是，但你的 Markdown 文件未必能在所有地方都完美渲染。</strong> 表格的语法支持不一，数学公式的写法各异，甚至连换行符的处理都有微妙差别。</p>
<p>直到后来 CommonMark 等项目的出现，才试图事后诸葛亮式地去修补这种分裂。</p>
<p>但幸运的是，Markdown 的<strong>核心语法</strong>（标题、列表、粗体、引用、链接）已经足够稳固，成为了事实上的标准。正是这最基础的 80% 功能，支撑起了它在 AI 时代的通用性。对于大语言模型而言，这些细微的方言差异完全可以忽略不计——它只需要用最基础的语法，就能让全世界读懂。</p>
<p>这也再次印证了那个道理：<strong>在规模化面前，简单且“足够好”的方案，往往能战胜完美但复杂的方案。</strong></p>
<h2>启示：善良与开放的力量</h2>
<p>Markdown 的故事，是对当代科技行业的一种温柔提醒。</p>
<p>真正的互联网基础设施，往往不是由拿了巨额风投的初创公司在董事会里规划出来的。它们往往源于像 John Gruber 或 Aaron Swartz 这样的人——他们有正职工作，但也充满热情；他们为了解决自己的问题而造轮子，然后慷慨地将其分享给世界。</p>
<p>在这个被“护城河”、“生态闭环”和“商业化变现”充斥的时代，Markdown 证明了：<strong>一个好的点子，加上一颗慷慨的心，依然可以改变世界。</strong></p>
<p>下次当你用 ** 加粗文字，或者看着 ChatGPT 逐行吐出格式完美的回答时，请记得：这背后没有复杂的商业算计，只有一位在费城看球赛的博主，想让你打字时能稍微轻松一点。</p>
<p>资料链接：https://www.anildash.com/2026/01/09/how-markdown-took-over-the-world/</p>
<hr />
<p><strong>你的 Markdown 记忆</strong></p>
<p>Markdown 已经陪伴了我们 20 年。<strong>你还记得自己第一次接触 Markdown 是在什么场景下吗？是写 GitHub README，还是做笔记？你最喜欢的 Markdown 编辑器又是哪一款？</strong></p>
<p><strong>欢迎在评论区分享你的 Markdown 故事和神器推荐！</strong> 让我们一起致敬这个简单而伟大的工具。</p>
<p><strong>如果这篇文章让你对 Markdown 有了全新的认识，别忘了点个【赞】和【在看】，并转发给你的朋友，哪怕他只是个爱记笔记的非程序员！</strong></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 src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></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 src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/13/how-markdown-took-over-the-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从“源码审计”到“能力审计”：Go 生态应对供应链攻击的范式转移</title>
		<link>https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift/</link>
		<comments>https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift/#comments</comments>
		<pubDate>Thu, 01 Jan 2026 23:43:16 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[boltdb]]></category>
		<category><![CDATA[BoltDBPoisoning]]></category>
		<category><![CDATA[BoltDB投毒]]></category>
		<category><![CDATA[BuildArtifact]]></category>
		<category><![CDATA[CapabilityAudit]]></category>
		<category><![CDATA[Capslock]]></category>
		<category><![CDATA[Cgo]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[CommitHash]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[FILES]]></category>
		<category><![CDATA[FunctionCallGraph]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[GitTags]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoModuleProxy]]></category>
		<category><![CDATA[GoogleCloud]]></category>
		<category><![CDATA[GopherCon2025]]></category>
		<category><![CDATA[Go生态]]></category>
		<category><![CDATA[JessMcClintock]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[PseudoVersion]]></category>
		<category><![CDATA[Reflect]]></category>
		<category><![CDATA[SourceOfTruth]]></category>
		<category><![CDATA[StaticAnalysis]]></category>
		<category><![CDATA[SupplyChainAttack]]></category>
		<category><![CDATA[unsafe]]></category>
		<category><![CDATA[XZ]]></category>
		<category><![CDATA[XZBackdoor]]></category>
		<category><![CDATA[XZ后门]]></category>
		<category><![CDATA[事实来源]]></category>
		<category><![CDATA[伪版本号]]></category>
		<category><![CDATA[供应链攻击]]></category>
		<category><![CDATA[安全防线]]></category>
		<category><![CDATA[权限管理]]></category>
		<category><![CDATA[构建产物]]></category>
		<category><![CDATA[源码审计]]></category>
		<category><![CDATA[漏洞扫描]]></category>
		<category><![CDATA[系统边界]]></category>
		<category><![CDATA[能力审计]]></category>
		<category><![CDATA[范式转移]]></category>
		<category><![CDATA[行为特征]]></category>
		<category><![CDATA[行为边界]]></category>
		<category><![CDATA[透视]]></category>
		<category><![CDATA[零信任]]></category>
		<category><![CDATA[静态分析]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5650</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift 大家好，我是Tony Bai。 在软件供应链安全的传统认知中，我们默认遵循一个假设：“代码即真理”。如果你审查了 GitHub 上的源码，确认它是安全的，那么你部署的服务就应该是安全的。 然而，2025 年初在 Go 生态中爆发的 BoltDB 投毒事件，以及之前的 XZ 后门事件，无情地粉碎了这个假设。攻击者正在利用构建系统的复杂性和 Git 标签的可变性，在“源码”与“构建产物”之间制造出一片致命的盲区。 面对这种不对称的战争，传统的“源码审计”已显疲态。在 GopherCon 2025 上，Google Cloud 安全专家 Jess McClintock 提出了一个新观点：我们需要一场防御范式的转移——从关注代码“写了什么”，转向关注构建产物“能做什么”。 本文将带你深入这场范式转移的核心，剖析攻击手段的演变，并手把手教你使用 Google 开源的 Capslock 工具，开启你的“能力审计”之路。 旧范式的崩塌——当“所见”不再“所得” “源码审计”失效的根本原因，在于源码仓库不再是单一的事实来源 (Source of Truth)。 以 BoltDB 投毒案为例，这是一场教科书式的“偷天换日”： 投毒：攻击者发布了一个包含恶意后门的版本，打上 v1.3.1 的 git 标签。 缓存：Go Module Proxy（Go 生态的官方镜像）忠实地抓取并缓存了这个恶意版本。 清洗：攻击者随即在 GitHub 上强制推送 (force-push) 了一个同名的 v1.3.1 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift">本文永久链接</a> &#8211; https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift</p>
<p>大家好，我是Tony Bai。</p>
<p>在<a href="https://tonybai.com/2025/05/22/go-sbom-practice">软件供应链安全</a>的传统认知中，我们默认遵循一个假设：“代码即真理”。如果你审查了 GitHub 上的源码，确认它是安全的，那么你部署的服务就应该是安全的。</p>
<p>然而，2025 年初在 Go 生态中爆发的 <strong>BoltDB 投毒事件</strong>，以及之前的 <strong>XZ 后门事件</strong>，无情地粉碎了这个假设。攻击者正在利用构建系统的复杂性和 Git 标签的可变性，在“源码”与“构建产物”之间制造出一片致命的盲区。</p>
<p>面对这种不对称的战争，传统的“源码审计”已显疲态。在 GopherCon 2025 上，Google Cloud 安全专家 <a href="https://www.youtube.com/watch?v=70ka67DpLPc">Jess McClintock 提出了一个新观点</a>：<strong>我们需要一场防御范式的转移——从关注代码“写了什么”，转向关注构建产物“能做什么”</strong>。</p>
<p>本文将带你深入这场范式转移的核心，剖析攻击手段的演变，并手把手教你使用 Google 开源的 <strong>Capslock</strong> 工具，开启你的“能力审计”之路。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/the-ultimate-guide-to-go-module-qr.png" alt="" /></p>
<h2>旧范式的崩塌——当“所见”不再“所得”</h2>
<p>“源码审计”失效的根本原因，在于<strong>源码仓库不再是单一的事实来源 (Source of Truth)</strong>。</p>
<p>以 <a href="https://socket.dev/blog/malicious-package-exploits-go-module-proxy-caching-for-persistence">BoltDB 投毒案</a>为例，这是一场教科书式的“偷天换日”：</p>
<ol>
<li><strong>投毒</strong>：攻击者发布了一个包含恶意后门的版本，打上 v1.3.1 的 git 标签。</li>
<li><strong>缓存</strong>：Go Module Proxy（Go 生态的官方镜像）忠实地抓取并缓存了这个恶意版本。</li>
<li><strong>清洗</strong>：攻击者随即在 GitHub 上<strong>强制推送 (force-push)</strong> 了一个同名的 v1.3.1 标签，指向一个干净的提交。</li>
</ol>
<p><strong>结果是分裂的</strong>：</p>
<ul>
<li><strong>审计者</strong>在 GitHub 上看到的是“良民”。</li>
<li><strong>编译器</strong>从 Proxy 拉取的是“恶棍”。</li>
</ul>
<p>这标志着旧范式的崩塌：<strong>你审查的代码，并不是你运行的代码。</strong></p>
<h2>供应链攻击的进化——隐藏在构建链中的幽灵</h2>
<p>Jess 指出，这种攻击并非孤例，而是一种正在蔓延的行业趋势。</p>
<ul>
<li><strong>XZ 后门</strong>：恶意载荷被伪装成测试文件，只有在特定的构建脚本执行时才会被注入。在源码树中，它是静止的、无害的；但在构建过程中，它“活”了过来。</li>
<li><strong>npm EventStream</strong>：利用版本号策略，让恶意代码只存在于次要版本中，避开对主要版本的审查。</li>
</ul>
<p>这些案例共同指向一个结论：<strong>安全性不能只靠静态的源码分析，必须向右移动，覆盖到最终的构建产物 (Build Artifact)。</strong></p>
<h2>新范式确立——能力审计 (Capability Audit)</h2>
<p>既然我们无法逐行审查庞大的依赖树，也无法完全信任源码，那么出路在哪里？</p>
<p>答案是：<strong>关注行为边界</strong>。这就是“能力审计”的核心思想。</p>
<p>借鉴移动端 App 的权限管理模型，我们不再纠结于依赖包内部怎么实现，而是关注<strong>它申请了什么能力</strong>。</p>
<ul>
<li>一个 JSON 解析库，如果申请了 <strong>net.Dial (网络访问)</strong> 能力，这就是异常。</li>
<li>一个日志库，如果申请了 <strong>os.Exec (命令执行)</strong> 能力，这就是红色警报。</li>
</ul>
<p>通过监控依赖包的“能力列表”及其变化，我们可以以极低的成本，通过行为特征识别出潜在的供应链攻击，无论源码如何伪装。</p>
<h2>Capslock——Google 的开源防御武器</h2>
<p>为了将“能力审计”落地，Google 开源了 <strong><a href="https://github.com/google/capslock">Capslock</a></strong>。它是一个针对 Go 语言的静态分析工具，通过解析构建产物，构建完整的函数调用图，从而透视出代码的真实能力。</p>
<h3>Capslock 能做什么？</h3>
<p>Capslock 的核心价值在于<strong>“透视”</strong>。它不关心代码的具体逻辑，而是关注代码<strong>触及了哪些系统边界</strong>。它能识别出以下几类关键能力：</p>
<ul>
<li><strong>网络访问</strong> (NETWORK)：连接互联网或绑定端口。</li>
<li><strong>文件系统</strong> (FILES)：读写文件。</li>
<li><strong>系统执行</strong> (EXEC)：启动子进程。</li>
<li><strong>底层操作</strong> (UNSAFE, REFLECT, CGO)：使用不安全指针、反射或调用 C 代码。</li>
</ul>
<h3>快速上手：Capslock 实战指南</h3>
<p>想体验“能力审计”的威力？只需三步。</p>
<p><strong>1. 安装工具</strong></p>
<p>确保你安装了最新的 Go 环境，然后运行：</p>
<pre><code class="bash">$go install github.com/google/capslock/cmd/capslock@latest
</code></pre>
<p><strong>2. 扫描当前项目</strong></p>
<p>在你的 Go 项目根目录下运行，Capslock 会自动分析当前模块及其所有依赖，以我的<a href="https://github.com/bigwhite/issue2md">issue2md开源项目</a>为例：</p>
<pre><code class="bash">$capslock -packages=.
Capslock is an experimental tool for static analysis of Go packages.
Share feedback and file bugs at https://github.com/google/capslock.
For additional debugging signals, use verbose mode with -output=verbose
To get machine-readable full analysis output, use -output=json

FILES: 1 references
NETWORK: 1 references
REFLECT: 2 references
</code></pre>
<p>我们看到该issue2md项目使用了文件访问、网络访问以及反射能力。如果你要看具体是哪些代码用到了这些能力，可以让capslock输出verbose信息：</p>
<pre><code>$capslock -packages=. -output=v
Capslock is an experimental tool for static analysis of Go packages.
Share feedback and file bugs at https://github.com/google/capslock.
To get machine-readable full analysis output, use -output=json

FILES: 1 references (1 direct, 0 transitive)
Example callpath:
  github.com/bigwhite/issue2md.main
  main.go:29:11:log.Fatal
  log.go:423:12:(*log.Logger).output
  log.go:244:23:(*os.File).Write

NETWORK: 1 references (1 direct, 0 transitive)
Example callpath:
  github.com/bigwhite/issue2md.main
  main.go:24:23:net/http.FileServer

REFLECT: 2 references (1 direct, 1 transitive)
Example callpath:
  github.com/bigwhite/issue2md.main
  main.go:18:12:flag.Parse
  flag.go:1188:19:(*flag.FlagSet).Parse
  flag.go:1157:26:(*flag.FlagSet).parseOne
  flag.go:1112:11:(*flag.FlagSet).usage
  flag.go:1068:17:(*flag.FlagSet).defaultUsage
  flag.go:690:17:(*flag.FlagSet).PrintDefaults
  flag.go:609:12:(*flag.FlagSet).VisitAll
  flag.go:458:5:(*flag.FlagSet).PrintDefaults$1
  flag.go:630:32:flag.isZeroValue
  flag.go:545:18:reflect.New

</code></pre>
<p><strong>3. 进阶：对比版本差异 (Diff)</strong></p>
<p>这是 Capslock 最核心、也最强大的用法之一。当你想升级某个依赖时，如何知道新版本是否引入了恶意行为？下面以我fork的<a href="http://github.com/bigwhite/govanityurls">govanityurls</a>为例，看一下如何进行版本能力的差异对比。我的govanityurls的唯一依赖是gopkg.in/yaml.v2。</p>
<pre><code class="bash"># 1. 保存依赖的旧版本的分析结果
capslock -packages=gopkg.in/yaml.v2 -output=json &gt; v2.3.0.json

# 2. 比较新版本 (假设你已经 go get了新版本，比如v2.4.0)
$capslock -packages=gopkg.in/yaml.v2 -output=compare ./v2.3.0.json
</code></pre>
<p>如果输出显示新增了 NETWORK 或 EXEC 能力，这就是一个必须要人工介入审查的<strong>红色警报</strong>。在我这个示例中，gopkg.in/yaml.v2 v2.4.0，相对于v2.3.0没有能力增加。</p>
<h3>知己知彼：Capslock 的局限性</h3>
<p>作为一个静态分析工具，Capslock 并非全知全能。了解它的盲区，对于正确使用它至关重要：</p>
<ol>
<li><strong>CGO 与汇编盲区</strong>：Capslock 无法分析 C 代码或汇编代码。如果一个包使用了 CGO，Capslock 会报告它拥有 CGO 能力，但无法告诉你 C 代码内部具体做了什么。这是静态分析的物理边界。</li>
<li><strong>反射与 Unsafe</strong>：通过 reflect 或 unsafe 包进行的动态调用，往往让静态分析难以追踪。Capslock 会诚实地报告这些“不可知”的区域为 REFLECT 或 UNSAFE，提示你需要人工审查。</li>
<li><strong>误报 (False Positives)</strong>：静态分析假设所有代码路径都可能被执行。如果一段恶意代码藏在一个永远不会为 true 的 if 分支里，Capslock 依然会报告其能力。但在安全领域，<strong>“宁可错杀，不可放过”</strong> 是正确的策略。</li>
</ol>
<p>尽管有这些局限，Capslock 依然是目前 Go 生态中进行<strong>大规模、自动化能力审计</strong>的最佳工具。它为我们在供应链的汪洋大海中，提供了一个至关重要的“雷达”。</p>
<hr />
<h2>构建零信任的开发流程</h2>
<p>从“源码审计”到“能力审计”，代表了我们对供应链安全认知的升级。在 AI 辅助编程日益普及、代码生成速度呈指数级增长的今天，这种基于<strong>行为边界</strong>的守门人机制，将变得愈发重要。</p>
<p><strong>给团队的落地建议：</strong></p>
<ol>
<li><strong>锁定 Commit</strong>：在 go.mod 中尽量使用伪版本号（pseudo-version）锁定 Commit Hash，因为 Tag 是可变的，但 Hash 是不可伪造的。</li>
<li><strong>CI 集成</strong>：不要只在本地运行 Capslock，把它变成 CI 的一部分。通过将 Capslock 加入到你的 CI 流水线（例如 GitHub Actions、gitlab ci等），你可以设定一条红线：<strong>任何新增的高危能力（如网络、执行），必须触发人工审查阻断。</strong></li>
<li><strong>保持怀疑</strong>：当一个纯计算类的库突然想要访问网络时，哪怕源码看起来再正常，也要坚决说不。</li>
</ol>
<h2>小结</h2>
<p>安全不是一个状态，而是一个过程。当攻击者学会了“偷天换日”，防御者就必须学会“火眼金睛”。Capslock 和能力审计范式，正是 Go 生态在这个新时代交出的答卷。</p>
<h2>参考资料</h2>
<ul>
<li>The Code You Reviewed is Not the Code You Built by Jess McClintock &#8211; https://www.youtube.com/watch?v=70ka67DpLPc</li>
<li>capslock repo &#8211; https://github.com/google/capslock</li>
<li>Go Supply Chain Attack: Malicious Package Exploits Go Module Proxy Caching for Persistence &#8211; https://socket.dev/blog/malicious-package-exploits-go-module-proxy-caching-for-persistence</li>
</ul>
<hr />
<p><strong>聊聊你的安全焦虑</strong></p>
<p>供应链攻击防不胜防，Capslock 给了我们一个新的视角。<strong>在你日常的开发中，是如何管理第三方依赖安全的？是否遇到过类似的“李鬼”包？或者，你对“能力审计”这种新范式有什么看法？</strong></p>
<p><strong>欢迎在评论区分享你的经验或担忧！</strong> 让我们一起筑牢 Go 生态的安全防线。</p>
<p><strong>如果这篇文章让你对供应链安全有了新的认识，别忘了点个【赞】和【在看】，并转发给你的团队，安全无小事！</strong></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 src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></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 src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>别演了，真实的程序员根本不修电脑：我们左手AI，右手星辰大海</title>
		<link>https://tonybai.com/2025/12/21/real-programmers-dont-fix-computers-ai-stars-and-seas/</link>
		<comments>https://tonybai.com/2025/12/21/real-programmers-dont-fix-computers-ai-stars-and-seas/#comments</comments>
		<pubDate>Sun, 21 Dec 2025 10:57:06 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[Claude]]></category>
		<category><![CDATA[deepseek]]></category>
		<category><![CDATA[GarbageCollection]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[GMP]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Optimus]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[raft]]></category>
		<category><![CDATA[RealProgrammers]]></category>
		<category><![CDATA[Slash]]></category>
		<category><![CDATA[SpaceX]]></category>
		<category><![CDATA[Tiktok]]></category>
		<category><![CDATA[Transformer]]></category>
		<category><![CDATA[人情世故]]></category>
		<category><![CDATA[具身智能]]></category>
		<category><![CDATA[刻板印象]]></category>
		<category><![CDATA[垃圾回收]]></category>
		<category><![CDATA[工具人]]></category>
		<category><![CDATA[技术平权]]></category>
		<category><![CDATA[控制算法]]></category>
		<category><![CDATA[斜杠青年]]></category>
		<category><![CDATA[新人类]]></category>
		<category><![CDATA[星舰]]></category>
		<category><![CDATA[星辰大海]]></category>
		<category><![CDATA[神经网络]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[逻辑思维]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5575</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/12/21/real-programmers-dont-fix-computers-ai-stars-and-seas 大家好，我是Tony Bai。 最近陪家人看几部青春都市剧，实在忍不住想吐槽。 无论题材如何变，编剧笔下的程序员永远是那副德行：戴着黑框眼镜，背着双肩包，唯唯诺诺。而他们的戏份，似乎永远逃不开那一幕—— 男主角或者女神的电脑坏了，喊一声：“喂，那个谁，来修一下。” 然后镜头一转，程序员满头大汗地重启电脑，憨厚一笑。 别演了，真的。 都2025年了，大众对程序员的误解依然停留在“修电脑”和“当备胎”的阶段。 今天，我想撕掉这些标签，聊聊真实的程序员到底在做什么，以及为什么我们这群看似“无趣”的人，实则是未来 30 年人类文明的推手。 “没文化”的工具人？一种中国式的误读 在中国人的传统潜意识里，什么是“有才华”？什么是“有智慧”？ 是引经据典，是出口成章，是懂《周易》懂历史，是酒桌上推杯换盏间的人情练达。我们推崇的是“国学”与“人学”。 而程序员呢？ 我们脑子里装的是 GMP 调度模型，是 Transformer 架构，是 Raft 共识算法。 这些知识的认知门槛极高，掌握难度远超背诵几首唐诗。但在大众眼里，这叫“技能”，不叫“学问”；这叫“工具”，不叫“智慧”。 这就造成了一个巨大的荒诞： 一个能徒手写出操作系统内核的顶级工程师，可能因为在饭局上接不上关于“职场厚黑学”的梗，或者不懂得先敬领导一杯酒，就被贴上“木讷”、“情商低”、“读书读傻了”的标签。 我们不是学不会那些，我们只是不Care。 程序员的思维通过了严苛的逻辑训练，我们习惯了用 O(1) 的复杂度直达本质。对于那些充满了冗余、虚伪和 O(n^2) 复杂度的繁文缛节，我们的大脑会自动执行 Garbage Collection（垃圾回收）。 这种对他人的“降噪”处理，让我们在影视剧里看起来像个“怪胎”，但在代码的世界里，这正是我们构建万物的基石。 格子衫已死：新物种的诞生 如果我们把目光从影视剧移开，看一眼身边真实的 95 后、00 后程序员，你会发现那个“木讷”的标签早已过期。 程序员这个物种，正在经历一次剧烈的“版本迭代”。 去看看现在的互联网大厂，那个传说中的“格子衫军团”正在消失。取而代之的，是滑板少年、是汉服爱好者、是玩死亡重金属的贝斯手。 斜杠青年（Slash）： 你以为他只是个写 Go 语言的后端？下班后，他可能是 B 站拥有十万粉丝的科普 Up 主，可能是独立游戏的制作人，也可能是用 AI 生成艺术画作的数字艺术家。 拒绝被定义： [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/real-programmers-dont-fix-computers-ai-stars-and-seas-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/12/21/real-programmers-dont-fix-computers-ai-stars-and-seas">本文永久链接</a> &#8211; https://tonybai.com/2025/12/21/real-programmers-dont-fix-computers-ai-stars-and-seas</p>
<p>大家好，我是Tony Bai。</p>
<p>最近陪家人看几部青春都市剧，实在忍不住想吐槽。</p>
<p>无论题材如何变，编剧笔下的程序员永远是那副德行：戴着黑框眼镜，背着双肩包，唯唯诺诺。而他们的戏份，似乎永远逃不开那一幕——</p>
<p>男主角或者女神的电脑坏了，喊一声：“喂，那个谁，来修一下。”<br />
然后镜头一转，程序员满头大汗地重启电脑，憨厚一笑。</p>
<p><strong>别演了，真的。</strong></p>
<p>都2025年了，大众对程序员的误解依然停留在“修电脑”和“当备胎”的阶段。</p>
<p>今天，我想撕掉这些标签，聊聊<strong>真实的程序员</strong>到底在做什么，以及为什么我们这群看似“无趣”的人，实则是未来 30 年人类文明的推手。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/api-design-pattern-and-implementation-qr.png" alt="img{512x368}" /></p>
<hr />
<h2>“没文化”的工具人？一种中国式的误读</h2>
<p>在中国人的传统潜意识里，什么是“有才华”？什么是“有智慧”？</p>
<p>是引经据典，是出口成章，是懂《周易》懂历史，是酒桌上推杯换盏间的人情练达。我们推崇的是<strong>“国学”与“人学”</strong>。</p>
<p>而程序员呢？</p>
<p>我们脑子里装的是 <strong>GMP 调度模型</strong>，是 <strong>Transformer 架构</strong>，是 <strong>Raft 共识算法</strong>。</p>
<p>这些知识的<strong>认知门槛</strong>极高，掌握难度远超背诵几首唐诗。但在大众眼里，这叫“技能”，不叫“学问”；这叫“工具”，不叫“智慧”。</p>
<p><strong>这就造成了一个巨大的荒诞：</strong></p>
<p>一个能徒手写出操作系统内核的顶级工程师，可能因为在饭局上接不上关于“职场厚黑学”的梗，或者不懂得先敬领导一杯酒，就被贴上<strong>“木讷”、“情商低”、“读书读傻了”</strong>的标签。</p>
<p>我们不是学不会那些，我们只是<strong>不Care</strong>。</p>
<p>程序员的思维通过了严苛的逻辑训练，我们习惯了用 O(1) 的复杂度直达本质。对于那些充满了冗余、虚伪和 O(n^2) 复杂度的繁文缛节，我们的大脑会自动执行 <strong>Garbage Collection（垃圾回收）</strong>。</p>
<p>这种对他人的“降噪”处理，让我们在影视剧里看起来像个“怪胎”，但在代码的世界里，这正是我们构建万物的基石。</p>
<hr />
<h2>格子衫已死：新物种的诞生</h2>
<p>如果我们把目光从影视剧移开，看一眼身边真实的 95 后、00 后程序员，你会发现那个“木讷”的标签早已过期。</p>
<p><strong>程序员这个物种，正在经历一次剧烈的“版本迭代”。</strong></p>
<p>去看看现在的互联网大厂，那个传说中的“格子衫军团”正在消失。取而代之的，是滑板少年、是汉服爱好者、是玩死亡重金属的贝斯手。</p>
<ul>
<li>
<p><strong>斜杠青年（Slash）：</strong><br />
你以为他只是个写 Go 语言的后端？下班后，他可能是 B 站拥有十万粉丝的科普 Up 主，可能是独立游戏的制作人，也可能是用 AI 生成艺术画作的数字艺术家。</p>
</li>
<li>
<p><strong>拒绝被定义：</strong><br />
如果说上一代程序员的特征是“忍耐”和“沉默”，那么新一代程序员的特征就是<strong>“表达”</strong>和<strong>“重塑”</strong>。他们不屑于酒桌文化，因为他们更崇尚<strong>“技术平权”</strong>和<strong>“透明沟通”</strong>。</p>
</li>
</ul>
<p>这不再是一群只会修电脑的“工具人”，而是一群试图用技术手段去重构生活方式的“新人类”。</p>
<p>他们在 Github 上构建世界，也在小红书和 Tiktok 上分享生活。<strong>他们不是不懂生活，他们是在用代码重新定义什么是“酷”的生活。</strong></p>
<hr />
<h2>左手 AI，右手星辰大海</h2>
<p>影视剧还在忙着刻画我们“修电脑”的窘态，却完全没意识到，这群“配角”，此刻正在现实世界中酝酿着怎样的惊涛骇浪。</p>
<p><strong>我们正站在人类历史最疯狂的转折点上。</strong></p>
<p>当你嘲笑程序员不懂“风花雪月”时，他们正在做上帝的工作：</p>
<ul>
<li>
<p><strong>左手，赋予机器“灵魂”与“肉体”：</strong><br />
那些让你惊叹的 ChatGPT、Claude、DeepSeek，背后是程序员用代码搭建的神经网络。宇树G1/H1，特斯拉的 Optimus等人形机器人，正在走进现实。是程序员将逻辑注入钢铁躯体，让机器人学会行走、抓取，甚至学会思考。<strong>具身智能</strong>的爆发，将彻底重塑物理世界。</p>
</li>
<li>
<p><strong>右手，征服星辰大海：</strong><br />
SpaceX 的“筷子”夹住星舰的那一刻，全球沸腾。那毫秒级的姿态调整，不是靠吟诗作对实现的，而是靠几十万行严密的<strong>控制算法</strong>。</p>
</li>
</ul>
<p><strong>谁才是这个时代的“男一号”？</strong></p>
<p>是那些在剧里谈情说爱的主角吗？不。</p>
<p>是那些在屏幕后，用 Go 语言重构微服务，用 Python 训练大模型，用 C++ 控制火箭姿态的所谓“码农”。</p>
<p><strong>流行文化在消费我们，而我们在重塑流行文化赖以生存的世界。</strong></p>
<p>国学典籍是<strong>面向过去</strong>的接口，它教我们如何维系一个稳定的人情社会；</p>
<p>编程语言是<strong>面向未来</strong>的接口，它教我们如何与硅基生命对话，如何在此刻定义未来 30 年的规则。</p>
<hr />
<h2>小结：致敬时代的推手</h2>
<p>也许在未来的很长一段时间里，影视剧里的程序员依然会是那个戴着眼镜、不懂风情的“路人甲”。</p>
<p>没关系。让我们接受这种“误读”。</p>
<p>因为这种“忽视”，恰恰是一种保护色。它让我们这群人能远离嘈杂的名利场和复杂的人际关系，心无旁骛地坐在屏幕前。</p>
<p><strong>我们不需要修电脑，我们在修补这个世界的 Bug；</strong></p>
<p><strong>我们不需要当偶像剧的主角，我们在编写人类文明的下一个版本。</strong></p>
<p>致敬每一位“不善言辞”，但正在改变世界的程序员。</p>
<hr />
<p><strong>作为程序员，你曾在哪一刻因为“不懂人情世故”或“不关注大众话题”而被误解过？而在那一刻，你脑子里其实正在思考什么硬核的技术问题？</strong></p>
<p>欢迎在评论区，分享你的“社死”与“高光”时刻。</p>
<hr />
<p><strong>未来30年，是属于工程师的黄金时代。</strong></p>
<p>别让你的技能停留在“修电脑”的阶段。想要掌握 <strong>Go 语言在云原生、AI 工程化</strong> 中的核心能力，紧跟 <strong>具身智能</strong> 的浪潮？</p>
<p>加入我的 <strong>「Go &amp; AI 精进营」</strong>。在这里，我们不聊厚黑学，只聊如何拿到通往未来的船票。</p>
<p><strong>[此处放置知识星球二维码]</strong></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 src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></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 src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/12/21/real-programmers-dont-fix-computers-ai-stars-and-seas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go 跌出 TIOBE 前十？别被排名骗了，这才是它的真实地位</title>
		<link>https://tonybai.com/2025/12/11/is-golang-still-a-growing-programming-language/</link>
		<comments>https://tonybai.com/2025/12/11/is-golang-still-a-growing-programming-language/#comments</comments>
		<pubDate>Wed, 10 Dec 2025 23:19:23 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JetBrains]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[machinelearning]]></category>
		<category><![CDATA[Melkey]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[PyTorch]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[Stackoverflow]]></category>
		<category><![CDATA[TensorFlow]]></category>
		<category><![CDATA[TIOBE]]></category>
		<category><![CDATA[WebServices]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[基础设施]]></category>
		<category><![CDATA[工程能力]]></category>
		<category><![CDATA[开源项目]]></category>
		<category><![CDATA[排名]]></category>
		<category><![CDATA[稳态]]></category>
		<category><![CDATA[第二语言]]></category>
		<category><![CDATA[薪资]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5512</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/12/11/is-golang-still-a-growing-programming-language 大家好，我是Tony Bai。 Go 语言是否已经触到了天花板？在 Python 借力 AI 狂飙突进、Rust 备受追捧的今天，Go 的位置究竟在哪里？近日，Twitch工程师 Melkey 结合 JetBrains、Stack Overflow 以及 GitHub 的最新数据，发布了一份关于 Go 语言现状的深度分析。结论或许并不全是“好消息”，但却极其真实地反映了 Go 在工业界的稳固地位。 谁在用 Go？—— “云原生土著”的画像 JetBrains 的年度报告揭示了 Go 开发者的主要分布领域。数据显示，排名前三的应用场景分别是： Web 服务（无 GUI） 网站后端 云服务与基础设施 Melkey指出，尤其是第三点——云服务，最能代表 Go 的核心竞争力。这与行业内的普遍印象高度一致：专业的 Go 开发者往往不仅仅是在编写业务逻辑，更多时候是在与 Kubernetes 集群、微服务架构、CI/CD 管道以及各类 CLI 工具打交道。 如果说 Python 是数据科学的通用语，那么 Go 已经牢牢确立了自己作为“云时代 C 语言”的地位——它是构建现代基础设施的首选工具。 新手不再爱 Go？—— [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/is-golang-still-a-growing-programming-language-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/12/11/is-golang-still-a-growing-programming-language">本文永久链接</a> &#8211; https://tonybai.com/2025/12/11/is-golang-still-a-growing-programming-language</p>
<p>大家好，我是Tony Bai。</p>
<p>Go 语言是否已经触到了天花板？在 Python 借力 AI 狂飙突进、Rust 备受追捧的今天，Go 的位置究竟在哪里？近日，<a href="https://tonybai.com/2025/07/04/everything-i-did-to-become-an-expert-in-golang">Twitch工程师 Melkey</a> 结合 <a href="https://tonybai.com/2025/11/14/the-go-ecosystem-in-2025/">JetBrains</a>、Stack Overflow 以及 GitHub 的最新数据，发布了<a href="https://www.youtube.com/watch?v=QjGduiCFHY4">一份关于 Go 语言现状的深度分析</a>。结论或许并不全是“好消息”，但却极其真实地反映了 Go 在工业界的稳固地位。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/api-design-pattern-and-implementation-qr.png" alt="" /></p>
<h2>谁在用 Go？—— “云原生土著”的画像</h2>
<p><a href="https://tonybai.com/2025/11/14/the-go-ecosystem-in-2025/">JetBrains 的年度报告</a>揭示了 Go 开发者的主要分布领域。数据显示，排名前三的应用场景分别是：</p>
<ol>
<li><strong>Web 服务（无 GUI）</strong></li>
<li><strong>网站后端</strong></li>
<li><strong>云服务与基础设施</strong></li>
</ol>
<p>Melkey指出，尤其是第三点——<strong>云服务</strong>，最能代表 Go 的核心竞争力。这与行业内的普遍印象高度一致：专业的 Go 开发者往往不仅仅是在编写业务逻辑，更多时候是在与 Kubernetes 集群、微服务架构、CI/CD 管道以及各类 CLI 工具打交道。</p>
<p>如果说 Python 是数据科学的通用语，那么 Go 已经牢牢确立了自己作为<strong>“<a href="https://tonybai.com/2024/08/17/go-the-c-language-of-the-internet-era-come-true/">云时代 C 语言</a>”</strong>的地位——它是构建现代基础设施的首选工具。</p>
<h2>新手不再爱 Go？—— 一个值得注意的信号</h2>
<p>在解读 Stack Overflow 2025 开发者调查时，Melkey敏锐地发现了一个略显尴尬的趋势。</p>
<p>虽然在所有受访者中，Go 的使用率约为 <strong>16.4%</strong>，但在<strong>“正在学习编程的人”</strong>（Learning to Code）这一群体中，Go 的排名出现了显著下滑。绝大多数编程新手的入门首选依然是 Python 或 JavaScript。</p>
<p>然而，这并不意味着 Go 的衰落。相反，数据显示，在<strong>“专业开发者”</strong>群体中，Go 的使用率上升到了 <strong>17%</strong>。</p>
<p>Melkey分析认为，这意味着 Go 正逐渐成为一种<strong>“第二语言”</strong>。它不再是很多人的“初恋”语言，而是开发者在掌握了编程基础后，为了追求高性能、高并发和工程化能力而进阶选择的“成熟伴侣”。</p>
<h2>薪资高，但别被“头衔”骗了</h2>
<p>分享中提到，在美国，Go 开发者的年薪上限可达 <strong>50 万美元</strong>，平均薪资也极具竞争力。</p>
<p>但Melkey对此提出了冷静的见解。他指出，如果在 LinkedIn 等招聘平台上搜索，会发现纯粹招募“Golang Developer”的岗位并没有想象中那么多。大多数高薪岗位实际上招募的是<strong>“资深后端工程师”</strong>或<strong>“云基础设施专家”</strong>。</p>
<p>这传递了一个明确的信号：市场不缺会写 if err != nil 的程序员，缺的是懂分布式系统、懂架构、能解决复杂问题，并且<strong>恰好使用 Go 作为工具</strong>的工程师。真正值钱的不是 Go 的语法，而是用 Go 解决工程问题的能力。</p>
<h2>TIOBE 排名下滑 vs GitHub 活跃度上升</h2>
<p>数据层面出现了一个有趣的“冲突”。</p>
<p>在老牌的 TIOBE 指数2025年11月份数据中，Go 从去年的第 7 名下滑至今年的 <strong>第 11 名</strong>，跌出了前十。这似乎是一个危险的信号。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/is-golang-still-a-growing-programming-language-2.png" alt="" /></p>
<p>但如果转向 GitHub 的数据，Go 依然是<strong>开源项目活动增长最快的前三名语言</strong>（仅次于 Python 和 TypeScript）。GitHub 的趋势图显示，Go 的生态活跃度保持着陡峭的上升曲线，没有减速迹象。</p>
<p>Melkey认为，TIOBE 可能反映了大众搜索的热度，但 GitHub 反映的是<strong>开发者用脚投票</strong>的结果。Go 的生态依然在蓬勃发展，只是不再像早期那样具有话题性和炒作度，而是进入了成熟期和深耕期。</p>
<h2>AI 时代：Go 是“铲子商”，不是“淘金者”</h2>
<p>在 AI 席卷全球的当下，Go 的位置在哪里？Melkey给出了精准的定位：<strong>“Go 在构建 AI 基础设施方面表现出色，但缺乏原生的机器学习解决方案。”</strong></p>
<p>Melkey结合自己在 Twitch 构建 ML 基础设施的经历印证了这一点：在 AI 领域，Python 用于模型训练（得益于 PyTorch, TensorFlow 等库），而 Go 则用于<strong>部署模型、构建大规模并发的推理服务</strong>以及搭建底层的 <strong>ML 基础设施</strong>。</p>
<p>Go 不会取代 Python 成为 AI 训练的语言，但在 AI 落地、服务化、工程化的“最后一公里”，Go 是绝对的主力。</p>
<h2>小结：Go 的未来是“稳态”</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/is-golang-still-a-growing-programming-language-3.png" alt="" /></p>
<p>基于上述数据，Melkey给出了自己的最终结论：</p>
<p><strong>Go 不会消失，但也别指望它能像火箭一样再次爆发式增长。</strong></p>
<p>它不会取代 Python 或 TypeScript 成为统治一切的通用语言。它正在进入一个<strong>“稳态”</strong>。在云原生、后端服务和基础设施领域，Go 已经建立了坚不可摧的壁垒。对于追求职业发展的工程师而言，它依然是一个稳定、高效且回报丰厚的选择。</p>
<p>Go 的未来，或许不再是“无处不在”，但注定是<strong>“不可或缺”</strong>。</p>
<p>资料链接：https://www.youtube.com/watch?v=QjGduiCFHY4</p>
<hr />
<p><strong>你的体感如何？</strong></p>
<p>数据是宏观的，但体感是微观的。</p>
<p>在你所在的公司或团队，Go 语言的使用是在扩张还是收缩？你认为 Go 在 AI 时代最大的机会是什么？</p>
<p>欢迎在评论区分享你的观察，让我们一起拼凑出更真实的 Go 生态图景！</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 src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></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 src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/12/11/is-golang-still-a-growing-programming-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MinIO 开源版突发“安乐死”：维护模式开启，社区愤怒，你的数据还安全吗？</title>
		<link>https://tonybai.com/2025/12/04/minio-enter-maintenance-mode/</link>
		<comments>https://tonybai.com/2025/12/04/minio-enter-maintenance-mode/#comments</comments>
		<pubDate>Thu, 04 Dec 2025 09:40:44 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AGPL]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AIStor]]></category>
		<category><![CDATA[Ceph]]></category>
		<category><![CDATA[CLA]]></category>
		<category><![CDATA[CloudVendors]]></category>
		<category><![CDATA[Garage]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[MaintenanceMode]]></category>
		<category><![CDATA[minio]]></category>
		<category><![CDATA[ObjectStorage]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[RustFS]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[SeaweedFS]]></category>
		<category><![CDATA[SSPL]]></category>
		<category><![CDATA[Valkey]]></category>
		<category><![CDATA[VersityGateway]]></category>
		<category><![CDATA[云厂商]]></category>
		<category><![CDATA[商业化]]></category>
		<category><![CDATA[基础设施]]></category>
		<category><![CDATA[对象存储]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[数据安全]]></category>
		<category><![CDATA[替代品]]></category>
		<category><![CDATA[治理模式]]></category>
		<category><![CDATA[社区]]></category>
		<category><![CDATA[维护模式]]></category>
		<category><![CDATA[贡献者许可协议]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5476</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/12/04/minio-enter-maintenance-mode 大家好，我是Tony Bai。 “这个项目目前处于维护状态，不接受新的更改。” 近日，GitHub 上拥有近 60k Star、Go 语言生态中最著名的开源对象存储项目——MinIO，悄然修改了其 README。这一行看似平淡的声明，标志着 MinIO 开源版实际上已经被宣判了“死刑”。 曾经，MinIO 是自建 S3 兼容存储的首选，是开源界的宠儿。如今，它转身拥抱了企业级市场和 AI 浪潮，留下了一脸错愕的社区用户和无数依赖它的开源项目。这究竟是一场无奈的求生，还是一次蓄谋已久的“收割”？ 突如其来的“维护模式” MinIO 官方在没有任何预警的情况下，将其开源仓库置于“维护模式”。这意味着： 功能冻结：不再接受任何新功能或改进。 社区关门：不再接受 Pull Request，现有的 Issue 和 PR 也不会被积极审查。 安全补丁随缘：关键的安全修复“可能”会根据具体情况进行评估，不再有保证。 官方建议很明确：“对于企业支持和积极维护的版本，请参阅MinIO AIStor。”，而AIStor则是MinIO的企业版对象存储产品。 这一举动在 Hacker News 上引发了轩然大波。用户感到被背叛，一位评论者愤怒地写道：“太恶心了。构建一个产品，通过开源获得动力，等你做完了就完全抛弃它。我为曾经推广这个项目感到羞耻。” 为何“背叛”？—— 商业化的必然与 AI 的诱惑 MinIO 的转向并非无迹可寻。从更换为更严格的 AGPL 协议，到此次事实上的闭源，其背后的逻辑清晰而冷酷： 开源无法变现的困境 MinIO 作为一个高性能、单二进制文件的存储服务，太容易“被集成”了。云厂商、集成商可以轻松地将其打包进自己的产品中获利，而 MinIO 公司却难以从中分一杯羹。AGPL 协议虽然意在限制云厂商的“白嫖”，但也未能从根本上解决其商业化难题。 AI 浪潮的巨大诱惑 MinIO [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/minio-enter-maintenance-mode-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/12/04/minio-enter-maintenance-mode">本文永久链接</a> &#8211; https://tonybai.com/2025/12/04/minio-enter-maintenance-mode</p>
<p>大家好，我是Tony Bai。</p>
<p>“这个项目目前处于维护状态，不接受新的更改。”</p>
<p>近日，GitHub 上拥有近 60k Star、Go 语言生态中最著名的开源对象存储项目——MinIO，<a href="https://github.com/minio/minio/commit/27742d469462e1561c776f88ca7a1f26816d69e2">悄然修改了其 README</a>。这一行看似平淡的声明，标志着 MinIO 开源版实际上已经被宣判了“死刑”。</p>
<p>曾经，MinIO 是自建 S3 兼容存储的首选，是开源界的宠儿。如今，它转身拥抱了企业级市场和 AI 浪潮，留下了一脸错愕的社区用户和无数依赖它的开源项目。这究竟是一场无奈的求生，还是一次蓄谋已久的“收割”？</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>突如其来的“维护模式”</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/minio-enter-maintenance-mode-2.png" alt="" /></p>
<p>MinIO 官方在没有任何预警的情况下，将其开源仓库置于“维护模式”。这意味着：</p>
<ul>
<li><strong>功能冻结</strong>：不再接受任何新功能或改进。</li>
<li><strong>社区关门</strong>：不再接受 Pull Request，现有的 Issue 和 PR 也不会被积极审查。</li>
<li><strong>安全补丁随缘</strong>：关键的安全修复“可能”会根据具体情况进行评估，不再有保证。</li>
</ul>
<p>官方建议很明确：<strong>“对于企业支持和积极维护的版本，请参阅<a href="https://github.com/minio/aistor">MinIO AIStor</a>。”</strong>，而AIStor则是MinIO的企业版对象存储产品。</p>
<p>这一举动<a href="https://news.ycombinator.com/item?id=46136023">在 Hacker News 上引发了轩然大波</a>。用户感到被背叛，一位评论者愤怒地写道：“太恶心了。构建一个产品，通过开源获得动力，等你做完了就完全抛弃它。我为曾经推广这个项目感到羞耻。”</p>
<h2>为何“背叛”？—— 商业化的必然与 AI 的诱惑</h2>
<p>MinIO 的转向并非无迹可寻。从更换为更严格的 AGPL 协议，到此次事实上的闭源，其背后的逻辑清晰而冷酷：</p>
<h3>开源无法变现的困境</h3>
<p>MinIO 作为一个高性能、单二进制文件的存储服务，太容易“被集成”了。云厂商、集成商可以轻松地将其打包进自己的产品中获利，而 MinIO 公司却难以从中分一杯羹。AGPL 协议虽然意在限制云厂商的“白嫖”，但也未能从根本上解决其商业化难题。</p>
<h3>AI 浪潮的巨大诱惑</h3>
<p>MinIO 的新产品名为 <strong>AIStor</strong>。这不仅仅是一个改名，更是一次战略转型。在 AI 时代，数据存储是基础设施的核心。MinIO 试图通过重新包装，将自己定位为 AI 基础设施的关键组件，从而向更有付费能力的企业客户（尤其是 AI 公司）靠拢。</p>
<p>正如一位 HN 用户指出的：“他们在上一轮融资中估值 10 亿美元，要想成功退出，必须有深口袋的买家（如 Nvidia, Dell 等）。现在的开源版本只会拖累他们的财报。”</p>
<h2>社区的反击与法律迷局</h2>
<p>MinIO 的做法也引发了法律层面的争议。</p>
<ul>
<li><strong>贡献者的权利</strong>：MinIO 曾要求贡献者签署 CLA（贡献者许可协议）。这意味着 MinIO 公司拥有代码的版权，他们确实有权改变许可证或停止开源。</li>
<li><strong>AGPL 的约束</strong>：但对于那些没有签署 CLA 的早期贡献者，或者包含在代码库中的第三方 AGPL 代码，MinIO 是否有权单方面“私有化”？这是一个复杂的法律问题。</li>
</ul>
<p>更有趣的是，MinIO 过去曾因 AGPL 许可问题积极“维权”，甚至公开指责其他公司违反协议。如今，它自己却试图摆脱开源的束缚，这种双重标准让社区感到讽刺。</p>
<h2>历史的镜像 —— Redis 与 Valkey 的启示</h2>
<p>MinIO 的剧变，让人不由得想起了 2024 年初震动开源界的另一场“地震”——<strong>Redis 修改开源协议事件</strong>。</p>
<p>当时，Redis Inc. 宣布不再遵循开源定义，转而采用限制性更强的 SSPL 协议。这一举动激怒了整个社区和云厂商，Linux 基金会迅速集结了 AWS、Google、Oracle 等巨头，基于 Redis 旧版本 fork 出了 <strong>Valkey</strong>。如今，Valkey 已经展现出取代 Redis 的蓬勃生命力。</p>
<p><strong>MinIO 与 Redis 的异同：</strong></p>
<ul>
<li><strong>相同点</strong>：两者都面临“云厂商困境”。AWS 直接拿 Redis 做 ElastiCache，拿 MinIO 做兼容 S3 的服务，却无需向原厂付费。原厂为了生存，不得不通过协议（AGPL/SSPL）或停止维护来“筑墙”。</li>
<li><strong>不同点</strong>：Redis 选择了<strong>“掀桌子”</strong>（改协议），引发了激烈的对抗和即时的 Fork（Valkey）；而 MinIO 选择了<strong>“冷处理”</strong>（维护模式），这更像是一种温水煮青蛙式的告别。</li>
</ul>
<p><strong>MinIO 会迎来它的“Valkey 时刻”吗？</strong></p>
<p>目前来看，难。对象存储的复杂度和维护成本远高于内存缓存，且市场上已经存在成熟的替代品（如 SeaweedFS, Ceph, Garage）。MinIO 社区或许不会像 Redis 那样迅速集结出一个统一的 Fork，而是会走向<strong>分裂和迁徙</strong>。</p>
<p>对于开发者而言，Redis 和 MinIO 的连续“暴雷”是一个明确的信号：<strong>在基础设施选型时，除了关注技术指标，更要评估其背后的治理模式。由单一商业公司绝对控制的“开源”项目，始终悬着一把达摩克利斯之剑。</strong></p>
<h2>自救指南 —— 寻找 MinIO 的替代品</h2>
<p>对于现有的 MinIO 用户来说，现在是时候寻找备胎了。社区推荐了几个值得关注的替代方案：</p>
<h3>SeaweedFS (Go)</h3>
<ul>
<li><strong>特点</strong>：基于 Haystack 论文实现，擅长处理海量小文件，自带 File 和 S3 接口。</li>
<li><strong>适用场景</strong>：需要高性能小文件存储的场景。</li>
<li><strong>评价</strong>：功能丰富，甚至有点“过度”，但性能强悍。</li>
</ul>
<h3>Ceph (C++)</h3>
<ul>
<li><strong>特点</strong>：存储界的瑞士军刀，功能极其强大，但也极其复杂。</li>
<li><strong>适用场景</strong>：大规模、生产级、需要块存储和文件存储的场景。</li>
<li><strong>评价</strong>：如果你有运维团队，Ceph 是永远不会错的选择。</li>
</ul>
<h3><a href="https://github.com/versity/versitygw/">Versity Gateway (Go)</a></h3>
<ul>
<li><strong>特点</strong>：基于文件的 S3 网关，可以在开发测试环境作为 MinIO 的直接替代品，后端直接对接文件系统。</li>
</ul>
<h3>RustFS (Rust)</h3>
<ul>
<li><strong>特点</strong>：野心勃勃的新晋选手，试图在性能和易用性上直接对标甚至超越 MinIO。</li>
<li><strong>适用场景</strong>：极客尝鲜、非生产环境的测试与评估。</li>
<li><strong>评价</strong>：社区评价两极分化。一方面，它展现了强大的潜力；另一方面，用户反馈其目前<strong>稳定性欠佳</strong>，且项目要求签署 CLA（贡献者许可协议），这让不少刚被 MinIO 伤过心的开发者担心它未来会重演“养肥再杀”的剧本。<strong>“潜力巨大，但需谨慎观望。”</strong></li>
</ul>
<h3><a href="https://github.com/deuxfleurs-org/garage">Garage</a> (Rust)</h3>
<ul>
<li><strong>特点</strong>：轻量级、自包含、专注于在异构硬件和地理分布的网络上运行。</li>
<li><strong>适用场景</strong>：自托管、家庭实验室、中小规模集群。</li>
<li><strong>评价</strong>：“非常稳固，简单可靠，没有风险投资背景。”</li>
</ul>
<h2>小结：开源的尽头是商业，还是背叛？</h2>
<p>MinIO 的故事，是开源软件商业化困境的又一个注脚。它提醒我们：</p>
<ul>
<li><strong>没有免费的午餐</strong>：由 VC 支持的开源项目，最终都要面临盈利的压力。当增长遇到瓶颈，社区往往是被牺牲的第一个对象。</li>
<li><strong>选择开源项目需谨慎</strong>：除了代码质量，项目的治理结构、CLA 协议、背后的商业模式，都是选型时必须考虑的风险因素。</li>
</ul>
<p>MinIO 虽已“离去”，但开源精神不死。也许下一个更好的 MinIO，正在某个 GitHub 的角落里悄然生长。</p>
<p>资料链接：https://news.ycombinator.com/item?id=46136023</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 src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></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 src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/12/04/minio-enter-maintenance-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>霸榜 GitHub 一周！Google 开源 ADK for Go，彻底终结 AI“炼丹”时代？</title>
		<link>https://tonybai.com/2025/11/24/google-adk-go-in-action/</link>
		<comments>https://tonybai.com/2025/11/24/google-adk-go-in-action/#comments</comments>
		<pubDate>Mon, 24 Nov 2025 00:15:27 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[ADK]]></category>
		<category><![CDATA[ADKforGo]]></category>
		<category><![CDATA[Agent]]></category>
		<category><![CDATA[AgentDevelopmentKit]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[ClaudeCode]]></category>
		<category><![CDATA[CodeFirst]]></category>
		<category><![CDATA[Codereview]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[Gin]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[gotest]]></category>
		<category><![CDATA[Go代码]]></category>
		<category><![CDATA[gRPC]]></category>
		<category><![CDATA[k8s]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[Mock]]></category>
		<category><![CDATA[Prompt]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[TonyBai]]></category>
		<category><![CDATA[workflowagents]]></category>
		<category><![CDATA[二进制文件]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[付费微专栏]]></category>
		<category><![CDATA[代码优先]]></category>
		<category><![CDATA[公众号]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[单元测试]]></category>
		<category><![CDATA[可测试]]></category>
		<category><![CDATA[可维护]]></category>
		<category><![CDATA[可部署]]></category>
		<category><![CDATA[咖啡]]></category>
		<category><![CDATA[学伴]]></category>
		<category><![CDATA[工作流指挥家]]></category>
		<category><![CDATA[工作流自动化]]></category>
		<category><![CDATA[工程]]></category>
		<category><![CDATA[工程纪律]]></category>
		<category><![CDATA[并发]]></category>
		<category><![CDATA[开发范式]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[微服务]]></category>
		<category><![CDATA[思维升级]]></category>
		<category><![CDATA[技能跃迁]]></category>
		<category><![CDATA[探索者]]></category>
		<category><![CDATA[智能体]]></category>
		<category><![CDATA[构建方法论]]></category>
		<category><![CDATA[消息]]></category>
		<category><![CDATA[深度长文]]></category>
		<category><![CDATA[炼丹时代]]></category>
		<category><![CDATA[版本管理]]></category>
		<category><![CDATA[生存指南]]></category>
		<category><![CDATA[短期记忆]]></category>
		<category><![CDATA[航海日志]]></category>
		<category><![CDATA[评估体系]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[长期记忆]]></category>
		<category><![CDATA[霸榜]]></category>
		<category><![CDATA[静态编译]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5431</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/11/24/google-adk-go-in-action 大家好，我是Tony Bai。 上周，我花了一个下午，仅仅是为了让一个Python写的Agent能稳定地调用我Go服务里的一个简单函数。在那一刻，看着屏幕上纠缠的gRPC、Python虚拟环境和混乱的日志，我脑海里只有一个念头：这不对劲，这绝对不是软件工程该有的样子！ 显然，不仅仅是我一个人在为此焦虑。 就在最近，一个名为 google/adk-go 的项目悄然开源，并迅速霸榜 GitHub Go 语言趋势榜长达一周之久！ 全球的 Gopher 似乎都在用脚投票，表达着同一个渴望：我们受够了“炼丹”，我们要回归工程！ 过去的一年，AI 的浪潮席卷了整个技术圈。我们 Gopher，作为构建云原生世界的中坚力量，看着 Python 社区在 AI 领域“杀”得热火朝天，心中或许都有一个共同的疑问： “这场 AI 的盛宴，我们 Gopher 的主菜在哪儿？” 我们习惯了用 goroutine 优雅地处理并发，用 channel 安全地传递消息，用静态编译的单个二进制文件征服任何服务器。我们是天生的“工程师”，我们信奉的是可测试、可维护、可部署的软件工程哲学。 然而，当我们尝试踏入 AI Agent 的世界时，却常常感觉自己像一个闯入了“炼丹房”的“机械师”。面对那些需要反复“吟唱咒语”（调 Prompt）、结果飘忽不定的“丹炉”（模型），我们不禁会问： 我的 Agent 行为不稳定，怎么写单元测试？ Prompt 稍微一改，整个“丹方”都可能失效，版本管理怎么做？ 我如何将这个“充满魔法”的 Python 脚本，与我现有的 Go 微服务体系优雅地集成，而不是变成一坨无法维护的“耦合怪”？ 这些问题，不是因为我们不懂 AI，而是因为我们太懂工程。我们厌倦了“炼丹”式的不确定性，我们渴望一种能将 AI 的强大能力，用严谨的工程纪律约束起来的解决方案。 现在，Google 亲自下场，为我们递来了“工程图纸”。 Google [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/google-adk-go-in-action-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/11/24/google-adk-go-in-action">本文永久链接</a> &#8211; https://tonybai.com/2025/11/24/google-adk-go-in-action</p>
<p>大家好，我是Tony Bai。</p>
<p>上周，我花了一个下午，仅仅是为了让一个Python写的Agent能稳定地调用我Go服务里的一个简单函数。在那一刻，看着屏幕上纠缠的gRPC、Python虚拟环境和混乱的日志，我脑海里只有一个念头：这不对劲，这绝对不是软件工程该有的样子！</p>
<p>显然，不仅仅是我一个人在为此焦虑。</p>
<p><strong>就在最近，一个名为 google/adk-go 的项目悄然开源，并迅速霸榜 GitHub Go 语言趋势榜长达一周之久！</strong> 全球的 Gopher 似乎都在用脚投票，表达着同一个渴望：我们受够了“炼丹”，我们要回归工程！</p>
<p>过去的一年，AI 的浪潮席卷了整个技术圈。我们 Gopher，作为构建云原生世界的中坚力量，看着 Python 社区在 AI 领域“杀”得热火朝天，心中或许都有一个共同的疑问：</p>
<p><strong>“这场 AI 的盛宴，我们 Gopher 的主菜在哪儿？”</strong></p>
<p>我们习惯了用 goroutine 优雅地处理并发，用 channel 安全地传递消息，用静态编译的单个二进制文件征服任何服务器。我们是天生的<strong>“工程师”</strong>，我们信奉的是<strong>可测试、可维护、可部署</strong>的软件工程哲学。</p>
<p>然而，当我们尝试踏入 AI Agent 的世界时，却常常感觉自己像一个闯入了“炼丹房”的“机械师”。面对那些需要反复“吟唱咒语”（调 Prompt）、结果飘忽不定的“丹炉”（模型），我们不禁会问：</p>
<ul>
<li><strong>我的 Agent 行为不稳定，怎么写单元测试？</strong></li>
<li><strong>Prompt 稍微一改，整个“丹方”都可能失效，版本管理怎么做？</strong></li>
<li><strong>我如何将这个“充满魔法”的 Python 脚本，与我现有的 Go 微服务体系优雅地集成，而不是变成一坨无法维护的“耦合怪”？</strong></li>
</ul>
<p>这些问题，不是因为我们不懂 AI，而是因为我们太懂<strong>工程</strong>。我们厌倦了“炼丹”式的不确定性，我们渴望一种能将 AI 的强大能力，<strong>用严谨的工程纪律约束起来</strong>的解决方案。</p>
<p><strong>现在，Google 亲自下场，为我们递来了“工程图纸”。</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>Google ADK for Go：写给工程师的 AI Agent 开发框架</h2>
<p>这个霸榜的项目，全称是 <strong><a href="https://github.com/google/adk-go">Agent Development Kit (ADK) for Go</a></strong>。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/google-adk-go-in-action-2.png" alt="" /></p>
<p>这不是又一个“玩具”或“研究性”框架。从它的设计理念中，我看到了一个清晰而坚定的信号——<strong>AI Agent 开发，正在从“炼丹”式的“艺术创作”，全面进入“工程化”的“工业生产”时代。</strong></p>
<p>而 ADK for Go 的核心哲学，与我们 Gopher 的信仰不谋而合，那就是——<strong>代码优先 (Code-First)</strong>。</p>
<ul>
<li><strong>你的 Agent，就是你的 Go 代码：</strong> 不再有晦涩的 YAML，不再有天书般的“链”，Agent 的所有逻辑、决策、工作流，都由你亲手编写的、地地道道的 Go 代码来定义。</li>
<li><strong>天生的可测试性：</strong> 你的 Agent 就是一个实现了 agent.Agent 接口的 struct。这意味着什么？你可以像测试任何 Go 代码一样，go test 走起！Mock 依赖、断言行为，所有你熟悉的工程实践，全部回归。</li>
<li><strong>Git 即版本管理：</strong> Agent 的每一次进化，都是一次清晰的 git commit。Code Review、版本回滚，一切都尽在掌握。</li>
<li><strong>云原生无缝集成：</strong> 它就是一个标准的 Go 模块，可以被无缝地集成到你的 Gin/gRPC 服务中，打包成一个极小的 Docker 镜像，部署到任何 K8s 集群。</li>
</ul>
<p><strong>这就是为什么它能霸榜 GitHub 的原因——它不是在教你如何更好地“调优 Prompt”，而是在教你如何用坚实的工程代码，去彻底终结那个不可控的“炼丹”时代。</strong></p>
<p>Google的adk-go，就是那座连接 Gopher 工程世界与 AI Agent 智能世界的桥梁。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/google-adk-go-in-action-3.png" alt="" /></p>
<h2>和我一起，从零开始“造”一个真正的 AI Agent</h2>
<p>坦白说，ADK for Go 刚刚推出，市面上的教程几乎一片空白。文档虽有，但如何将其与真实的工程场景结合，如何理解其设计背后的权衡，如何避开那些必将遇到的“坑”——这些都需要有人去<strong>探索</strong>，去<strong>趟路</strong>。</p>
<p><strong>所以，我决定做这件事。</strong></p>
<p>我将以一个<strong>“学伴”</strong>和<strong>“探索者”</strong>的身份，推出我的全新付费微专栏：</p>
<p><strong>《Google ADK 实战：用 Go 构建可靠的AI Agent》</strong></p>
<p>在这个专栏里，我不会扮演一个无所不知的专家。相反，我会将我从零开始学习、实践、踩坑、顿悟的全过程，毫无保留地分享给你。</p>
<p>我们将一起，手把手地、<strong>从一个空 main.go 文件开始</strong>，完成一次令人兴奋的创造之旅：</p>
<ul>
<li>
<p><strong>第 1-2 讲：思维转变与灵魂注入</strong><br />
我们将彻底理解“代码优先”的哲学，拆解adk-go，了解其中的概念、架构和核心组件，并亲手定义出第一个实现了 agent.Agent 核心接口的智能体。</p>
</li>
<li>
<p><strong>第 3 讲：为 Agent 插上“手臂”：</strong> 让你的Agent能调用任何Go函数，像操作自己的手脚一样自如<br />
我们将学会 ADK 的“魔法”函数 functiontool.New，将一个普通的 Go 函数，零成本地转化为 Agent 可用的工具。</p>
</li>
<li>
<p><strong>第 4 讲：赋予 Agent “双核记忆”</strong><br />
我们将深入 session（短期记忆）和 memory（长期记忆），让我们的 Agent 能够理解上下文，并记起与你的历史交互。</p>
</li>
<li>
<p><strong>第 5 讲：从“单兵”到“军团”：</strong> 构建一个懂分工、会协作的Agent团队，自动化完成复杂任务<br />
我们将学习 workflowagents，通过编排多个专家 Agent，构建一个强大的“代码生成-审查-重构”自动化流水线。</p>
</li>
<li>
<p><strong>第 6 讲：从“原型”到“产品”</strong><br />
我们将为 Agent 建立科学的<strong>评估体系</strong>，并最终将其打包成 Docker 镜像，部署到通用的 Kubernetes 环境中。</p>
</li>
</ul>
<p>学完这个专栏，你将收获的，不仅是一个能跑起来的酷炫 AI 项目，更是一套<strong>可复用的、工程化的 AI Agent 构建方法论</strong>，以及在 AI 新浪潮中，属于我们 Gopher 的那份自信和底气。</p>
<h2>加入这场 Gopher 的 AI 工程化之旅</h2>
<p>这个微专栏，是我为你，也为我自己准备的一份“AI 时代 Gopher 生存指南”。它凝聚了我对 Go 工程哲学的理解，和我对 AI Agent 未来的全部热情。</p>
<p>微专栏共 <strong>6 篇深度长文</strong>，每一篇都是我亲手实践、细节满满的 step-by-step “航海日志”。</p>
<p>我没有设定一个高昂的价格，而是希望与更多志同道合的 Gopher 一起探索。所以，订阅这份专栏，<strong>仅需你一杯咖啡的诚意</strong>。</p>
<p>花一杯咖啡的时间，你或许能得到片刻的清醒；而用同样的价格投入到这里，我希望能为你带来一次<strong>思维的升级</strong>和<strong>技能的跃迁</strong>。</p>
<p><strong>点击<a href="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzIyNzM0MDk0Mg==&amp;action=getalbum&amp;album_id=4266729696274251779#wechat_redirect">这里</a>，或扫描二维码，立即加入。</strong></p>
<p><strong>让我们一起，用代码，构建智能。</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<p><strong>P.S.</strong> 如果你对 AI Agent、Go 语言或者这个微专栏有任何问题，欢迎在评论区留言，我们一起交流探讨！</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 src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/11/24/google-adk-go-in-action/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go 标准库将迎来 Zstandard：性能超越 Gzip，让你的应用更快、更省</title>
		<link>https://tonybai.com/2025/11/08/proposal-zstd/</link>
		<comments>https://tonybai.com/2025/11/08/proposal-zstd/#comments</comments>
		<pubDate>Fri, 07 Nov 2025 23:42:24 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AddDict]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI模型镜像]]></category>
		<category><![CDATA[ANS]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[API设计]]></category>
		<category><![CDATA[AsymmetricNumeralSystems]]></category>
		<category><![CDATA[BestCompression]]></category>
		<category><![CDATA[BestSpeed]]></category>
		<category><![CDATA[Brotli]]></category>
		<category><![CDATA[BurrowsWheeler]]></category>
		<category><![CDATA[close]]></category>
		<category><![CDATA[cloudflare]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[CPU占用]]></category>
		<category><![CDATA[DefaultCompression]]></category>
		<category><![CDATA[DEFLATE]]></category>
		<category><![CDATA[Dict]]></category>
		<category><![CDATA[Discord]]></category>
		<category><![CDATA[dsnet]]></category>
		<category><![CDATA[FaceBook]]></category>
		<category><![CDATA[Flush]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Golike]]></category>
		<category><![CDATA[GoTeam]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[Huffman]]></category>
		<category><![CDATA[issue]]></category>
		<category><![CDATA[jsonv2]]></category>
		<category><![CDATA[KlausPost]]></category>
		<category><![CDATA[LempelZivWelch]]></category>
		<category><![CDATA[lz4]]></category>
		<category><![CDATA[LZ77]]></category>
		<category><![CDATA[LZMA]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[NoCompression]]></category>
		<category><![CDATA[ParseDict]]></category>
		<category><![CDATA[proposal]]></category>
		<category><![CDATA[reader]]></category>
		<category><![CDATA[Reset]]></category>
		<category><![CDATA[rfc]]></category>
		<category><![CDATA[RussCox]]></category>
		<category><![CDATA[SetLevel]]></category>
		<category><![CDATA[SetRawDict]]></category>
		<category><![CDATA[Setter模式]]></category>
		<category><![CDATA[snappy]]></category>
		<category><![CDATA[TonyBai]]></category>
		<category><![CDATA[websocket]]></category>
		<category><![CDATA[Websocket流量]]></category>
		<category><![CDATA[writer]]></category>
		<category><![CDATA[XZ]]></category>
		<category><![CDATA[Zstandard]]></category>
		<category><![CDATA[一致性]]></category>
		<category><![CDATA[优先级]]></category>
		<category><![CDATA[低延迟应用]]></category>
		<category><![CDATA[健壮性]]></category>
		<category><![CDATA[入门宝典]]></category>
		<category><![CDATA[内部会议]]></category>
		<category><![CDATA[升级]]></category>
		<category><![CDATA[协作]]></category>
		<category><![CDATA[协作精神]]></category>
		<category><![CDATA[压缩]]></category>
		<category><![CDATA[压缩比]]></category>
		<category><![CDATA[压缩算法]]></category>
		<category><![CDATA[反馈]]></category>
		<category><![CDATA[可审查性]]></category>
		<category><![CDATA[可维护性]]></category>
		<category><![CDATA[吞吐量]]></category>
		<category><![CDATA[天选之子]]></category>
		<category><![CDATA[字典功能]]></category>
		<category><![CDATA[字典预处理]]></category>
		<category><![CDATA[学习之旅]]></category>
		<category><![CDATA[学习成本]]></category>
		<category><![CDATA[安全优先]]></category>
		<category><![CDATA[安全可靠]]></category>
		<category><![CDATA[完整历程]]></category>
		<category><![CDATA[官方维护]]></category>
		<category><![CDATA[实战项目]]></category>
		<category><![CDATA[实时网关]]></category>
		<category><![CDATA[审查]]></category>
		<category><![CDATA[客户端带宽]]></category>
		<category><![CDATA[容器镜像]]></category>
		<category><![CDATA[工业界]]></category>
		<category><![CDATA[工程实践能力]]></category>
		<category><![CDATA[带宽]]></category>
		<category><![CDATA[带宽节约]]></category>
		<category><![CDATA[平衡]]></category>
		<category><![CDATA[应用]]></category>
		<category><![CDATA[开发者]]></category>
		<category><![CDATA[开销问题]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[性能提升]]></category>
		<category><![CDATA[成功案例]]></category>
		<category><![CDATA[成本削减]]></category>
		<category><![CDATA[成熟]]></category>
		<category><![CDATA[技术优势]]></category>
		<category><![CDATA[技术选型]]></category>
		<category><![CDATA[拉取时间]]></category>
		<category><![CDATA[提案]]></category>
		<category><![CDATA[效率]]></category>
		<category><![CDATA[新书]]></category>
		<category><![CDATA[最佳实践]]></category>
		<category><![CDATA[标准库]]></category>
		<category><![CDATA[核心原则]]></category>
		<category><![CDATA[核心团队]]></category>
		<category><![CDATA[模式探索]]></category>
		<category><![CDATA[正式规范]]></category>
		<category><![CDATA[正确性]]></category>
		<category><![CDATA[流式Zstandard]]></category>
		<category><![CDATA[测试]]></category>
		<category><![CDATA[熵编码技术]]></category>
		<category><![CDATA[现代化]]></category>
		<category><![CDATA[生态演进]]></category>
		<category><![CDATA[知识体系]]></category>
		<category><![CDATA[社区]]></category>
		<category><![CDATA[社区英雄]]></category>
		<category><![CDATA[稳健]]></category>
		<category><![CDATA[简洁]]></category>
		<category><![CDATA[纯Go版本]]></category>
		<category><![CDATA[编译器]]></category>
		<category><![CDATA[翅膀]]></category>
		<category><![CDATA[解压]]></category>
		<category><![CDATA[设计思维]]></category>
		<category><![CDATA[语法认知]]></category>
		<category><![CDATA[语言]]></category>
		<category><![CDATA[语言生态]]></category>
		<category><![CDATA[贡献]]></category>
		<category><![CDATA[跨平台]]></category>
		<category><![CDATA[迁移成本]]></category>
		<category><![CDATA[运行时]]></category>
		<category><![CDATA[通用场景]]></category>
		<category><![CDATA[速度]]></category>
		<category><![CDATA[配置]]></category>
		<category><![CDATA[重大项目]]></category>
		<category><![CDATA[错误处理]]></category>
		<category><![CDATA[霍夫曼编码]]></category>
		<category><![CDATA[静态二进制文件]]></category>
		<category><![CDATA[静态字典]]></category>
		<category><![CDATA[领袖]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5366</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/11/08/proposal-zstd 大家好，我是Tony Bai。 在 Go 的世界里，一项被社区翘首以盼的提案在沉寂一年后，终于迎来了决定性的进展。2024 年，将 Zstandard 压缩算法纳入标准库的提案（#62513）被正式 Accept，但在那之后便鲜有动静。直到最近的 Go 编译器与运行时会议纪要中透露，这项工作将由社区的明星开发者 Klaus Post 主导推进。 这意味着，在未来的 Go 版本中，开发者将能开箱即用地获得一个官方维护、安全可靠且性能卓越的压缩工具。这不仅是对 Go 生态的一次重要补强，更将直接为无数 Go 应用带来性能提升、带宽节约和成本削减，真正实现“更快、更省”的承诺。 同时，这个提案背后曲折的历程——从激烈的技术选型辩论，到精雕细琢的 API 设计，再到因核心团队资源紧张而搁置，最终由社区力量重新激活——本身就是一幅展现 Go 生态演进的生动图景。 在本文中，我们将探讨 Zstandard 脱颖而出的技术优势，剖析其在工业界的成功案例，并揭示 compress/zstd 标准库从提案、API 设计到最终由社区力量重启的完整历程。 Zstandard：为何是它，而非其他？ 在决定为标准库引入新的压缩算法时，Go 团队面临着众多选择。提案发起者 dsnet 在讨论中进行了一次精彩的“选美”，清晰地阐述了为何 Zstandard (Zstd) 能够脱颖而出： Zstandard (Zstd): 由 Facebook (现 Meta) 开发并开源，拥有极佳的压缩/解压速度和出色的压缩比。更重要的是，它有正式的 RFC 规范（RFC 8878），这对于标准库实现的“正确性”至关重要。 Brotli: 同样优秀，但在设计上更偏向 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/proposal-zstd-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/11/08/proposal-zstd">本文永久链接</a> &#8211; https://tonybai.com/2025/11/08/proposal-zstd</p>
<p>大家好，我是Tony Bai。</p>
<p>在 Go 的世界里，一项被社区翘首以盼的提案在沉寂一年后，终于迎来了决定性的进展。2024 年，将 Zstandard 压缩算法纳入标准库的提案（<a href="https://github.com/golang/go/issues/62513">#62513</a>）被正式 <strong>Accept</strong>，但在那之后便鲜有动静。直到最近的 <a href="https://github.com/golang/go/issues/43930#issuecomment-3487773597">Go 编译器与运行时会议纪要</a>中透露，这项工作将由社区的明星开发者 Klaus Post 主导推进。</p>
<p>这意味着，在未来的 Go 版本中，开发者将能开箱即用地获得一个官方维护、安全可靠且性能卓越的压缩工具。这不仅是对 Go 生态的一次重要补强，更将直接为无数 Go 应用带来性能提升、带宽节约和成本削减，真正实现“更快、更省”的承诺。</p>
<p>同时，这个提案背后曲折的历程——从激烈的技术选型辩论，到精雕细琢的 API 设计，再到因核心团队资源紧张而搁置，最终由社区力量重新激活——本身就是一幅展现 Go 生态演进的生动图景。</p>
<p>在本文中，我们将探讨 Zstandard 脱颖而出的技术优势，剖析其在工业界的成功案例，并揭示 compress/zstd 标准库从提案、API 设计到最终由社区力量重启的完整历程。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/the-ultimate-guide-to-go-module-qr.png" alt="" /></p>
<h2>Zstandard：为何是它，而非其他？</h2>
<p>在决定为标准库引入新的压缩算法时，Go 团队面临着众多选择。提案发起者 dsnet 在讨论中进行了一次精彩的“选美”，清晰地阐述了为何 Zstandard (Zstd) 能够脱颖而出：</p>
<ul>
<li><strong>Zstandard (Zstd):</strong> 由 Facebook (现 Meta) 开发并开源，拥有极佳的压缩/解压速度和出色的压缩比。更重要的是，它有正式的 RFC 规范（<a href="https://datatracker.ietf.org/doc/html/rfc8878">RFC 8878</a>），这对于标准库实现的“正确性”至关重要。</li>
<li><strong>Brotli:</strong> 同样优秀，但在设计上更偏向 Web 静态内容，且其庞大的静态字典（约 120KiB）与 Go 追求小体积静态二进制文件的哲学相悖。</li>
<li><strong>XZ (LZMA):</strong> 拥有极高的压缩比，但代价是极其缓慢的压缩和解压速度，不适合通用场景。且缺乏正式的、明确的规范。</li>
<li><strong>Snappy / LZ4:</strong> 追求极致的速度，但在压缩比上做出了巨大牺牲，应用场景相对小众。</li>
</ul>
<p>Zstd 巧妙地结合了 LZ77 算法和一种名为 ANS (Asymmetric Numeral Systems) 的现代熵编码技术，在性能、压缩比和资源消耗之间取得了近乎完美的平衡，使其成为替代 Gzip 的“天选之子”。</p>
<blockquote>
<p>注：截至Go 1.25.3版本，Go compress目录下提供了多种压缩算法的实现：bzip2实现了Burrows-Wheeler变换及霍夫曼编码；flate提供了DEFLATE算法核心，结合了LZ77和霍夫曼编码；gzip和zlib则分别将DEFLATE算法封装为gzip文件格式和zlib数据流格式；lzw实现了Lempel-Ziv-Welch算法。这些包共同为Go语言提供了多样化的数据压缩与解压缩能力。</p>
<p>注：Zstandard最新RFC规范为<a href="https://datatracker.ietf.org/doc/html/rfc9659">RFC 9659</a>。</p>
</blockquote>
<h2>工业界验证：Discord 与 Cloudflare 的性能飞跃</h2>
<p>理论上的优势必须经过实践的检验。Zstd 在工业界的应用早已硕果累累。</p>
<ul>
<li>
<p><a href="https://discord.com/blog/how-discord-reduced-websocket-traffic-by-40-percent">**Discord 的 40% 带宽削减</a>：** 通讯巨头 Discord 在将其实时网关的压缩算法从 zlib (Gzip) 迁移到<strong>流式 Zstandard</strong> 后，获得了惊人的收益。对于核心的 MESSAGE_CREATE 事件，压缩时间缩短了一半以上，负载体积也显著减小。这直接转化为更低的服务端 CPU 占用和客户端带宽节省，最终实现了 <strong>整体 Websocket 流量降低 40%</strong> 的壮举。</p>
</li>
<li>
<p><a href="https://blog.cloudflare.com/container-platform-preview">**Cloudflare 的容器镜像加速</a>：** 在其全球容器平台上，Cloudflare 需要快速分发巨大的 AI 模型镜像（常超过 15GB）。通过将镜像层压缩算法从 Gzip 更换为 Zstd，<strong>一个 30GB 镜像的拉取时间从 8 分钟骤降至 4 分钟</strong>，速度翻倍，极大地提升了全球调度的灵活性和响应速度。</p>
</li>
</ul>
<p>这些案例雄辩地证明，Zstd 是为现代高吞吐量、低延迟应用而生的。</p>
<h2>API 设计的艺术：一场关于简洁、安全与未来的辩论</h2>
<p>将新包引入标准库，API 的设计是重中之重。#62513 的讨论串完整记录了 compress/zstd API 从雏形到最终形态的演进过程。</p>
<h3>核心原则：安全与一致性</h3>
<p>提案伊始，就确立了两大基石：</p>
<ol>
<li><strong>安全优先：</strong> 标准库实现必须是<strong>纯 Go</strong>版本，不使用 unsafe 或汇编。dsnet 强调：“Go 社区调查一致显示，安全性比性能更重要。” 这意味着标准库版本追求的是可审查性、可维护性和跨平台的一致性，而非极致的性能。</li>
<li><strong>API 一致性：</strong> 新 API 应与 compress/gzip、compress/flate 等现有包保持风格统一，降低开发者的学习和迁移成本。</li>
</ol>
<h3>社区的声音：Klaus Post 的关键输入</h3>
<p>在讨论中，github.com/klauspost/compress 系列库的作者 <strong>Klaus Post</strong> 扮演了关键角色。他的库是 Go 社区公认的最高性能压缩实现，其丰富的实战经验为标准库的设计提供了宝贵视角。</p>
<p>Klaus 指出，他自己的库 API 相对复杂，是因为支持多线程、异步等高级特性。他赞同标准库应剥离这些复杂性，提供一个完全同步的、线程安全的 API。同时，他也对字典（Dictionary）功能的 API 设计提出了深刻见解，强调了字典预处理的开销问题，这直接影响了后续 API 的设计。</p>
<h3>最终定稿的 API</h3>
<p>经过多轮讨论，由 Russ Cox (rsc) 总结并最终被接受的 API 形态如下(并非最终版)：</p>
<pre><code class="go">package zstd

const (
    NoCompression      = 0
    BestSpeed          = 1
    BestCompression    = 9
    DefaultCompression = -1
)

type Dict struct { /* ... */ }
func ParseDict(enc []byte) (*Dict, error)
// ... 可能还包含 Marshal/Unmarshal 方法

type Reader struct { /* ... unexported fields ... */ }
func NewReader(r io.Reader) (*Reader, error)
func (z *Reader) Reset(r io.Reader) error
func (z *Reader) AddDict(*Dict)
func (z *Reader) SetRawDict([]byte)
func (z *Reader) Read(p []byte) (int, error)
func (z *Reader) Close() error

type Writer struct { /* ... unexported fields ... */ }
func NewWriter(w io.Writer) *Writer
func (z *Writer) Reset(w io.Writer)
func (z *Writer) SetLevel(int) error
func (z *Writer) AddDict(*Dict)
func (z *Writer) SetRawDict([]byte)
func (z *Writer) Write([]byte) (int, error)
func (z *Writer) Flush() error
func (z *Writer) Close() error
</code></pre>
<p>这个设计体现了 Go 标准库的哲学：</p>
<ul>
<li><strong>Setter 模式：</strong> 采用 SetLevel、AddDict 等方法进行配置，而不是更复杂的构造函数重载或函数式选项，兼顾了灵活性和简洁性。</li>
<li><strong>独立的 Dict 类型：</strong> 将字典抽象为 Dict 类型，通过 ParseDict 进行预处理。这解决了 Klaus 提出的“重复解析字典开销大”的问题，允许用户一次解析，多次复用。</li>
<li><strong>错误处理：</strong> 关键配置（如 SetLevel、ParseDict）返回 error，增强了 API 的健壮性。</li>
</ul>
<h2>漫长的等待与社区英雄的登场</h2>
<p>提案于 2024 年被接受，为何直到 2025 年底才真正启动？这背后反映了 Go 核心团队面临的现实挑战。Go 团队规模精简，核心成员的精力需要分配给语言、编译器、运行时等更高优先级的任务。提案发起者 dsnet 也深度参与了 json/v2 等重大项目，无暇分身。</p>
<p>在此期间，Klaus Post 主动请缨，表示愿意贡献一个精简版的、符合标准库要求的实现。然而，这个提议在当时并未得到明确的推进信号。</p>
<p>转机出现在 <a href="https://github.com/golang/go/issues/43930#issuecomment-3487773597">2025 年 11 月的 Go 团队内部会议</a>。纪要显示，团队终于有带宽来审查社区对 compress/flate 和 compress/zstd 的贡献。会议明确提到：“很高兴有社区审查。我们能去问问 k8s 的人吗？”（意指寻求更多社区的反馈和测试）。这标志着官方正式为 Klaus Post 的贡献打开了大门。随后Klaus Post也给出了自己的贡献时间表，大约在2026年Q1提交第一版实现给Go团队审查。</p>
<h2>小结：一次迟到但意义非凡的升级</h2>
<p>compress/zstd 的加入，对 Go 生态而言，是一次迟到但意义非凡的升级。它不仅仅是增加了一个功能包，更是一次：</p>
<ul>
<li><strong>技术的现代化：</strong> 用一个在性能和效率上全面超越 Gzip 的现代算法，武装 Go 的标准库。</li>
<li><strong>生态的成熟：</strong> 将社区经过千锤百炼的最佳实践，以安全、稳健的方式融入官方标准。</li>
<li><strong>模式的探索：</strong> 展示了在核心团队资源有限的情况下，如何通过与社区领袖的协作，共同推动语言生态向前发展。</li>
</ul>
<p>对于广大 Go 开发者来说，未来已来。不久之后（或许在 Go 1.27），我们将能以最简单、最 Go-like 的方式，为我们的应用插上 Zstandard 的翅膀，轻松实现性能提升与成本节约。这无疑是 Go 社区协作精神的又一次伟大胜利。</p>
<h2>参考资料</h2>
<ul>
<li>https://github.com/golang/go/issues/62513</li>
<li>https://blog.cloudflare.com/container-platform-preview </li>
<li>https://discord.com/blog/how-discord-reduced-websocket-traffic-by-40-percent </li>
<li>https://www.rfc-editor.org/rfc/rfc8878</li>
</ul>
<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 src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p><strong>想系统学习Go，构建扎实的知识体系？</strong></p>
<p>我的新书《<a href="https://book.douban.com/subject/37499496/">Go语言第一课</a>》是你的首选。源自2.4万人好评的极客时间专栏，内容全面升级，同步至Go 1.24。首发期有专属五折优惠，不到40元即可入手，扫码即可拥有这本300页的Go语言入门宝典，即刻开启你的Go语言高效学习之旅！</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/go-primer-published-4.png" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/11/08/proposal-zstd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>致敬 1024 程序员节：写给奔跑在二进制世界里的你 (文末赠书)</title>
		<link>https://tonybai.com/2025/10/24/honoring-1024-programmers-day/</link>
		<comments>https://tonybai.com/2025/10/24/honoring-1024-programmers-day/#comments</comments>
		<pubDate>Fri, 24 Oct 2025 00:09:14 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[0和1]]></category>
		<category><![CDATA[1024程序员节]]></category>
		<category><![CDATA[AccompanyingCode]]></category>
		<category><![CDATA[AIEra]]></category>
		<category><![CDATA[AI时代]]></category>
		<category><![CDATA[BookErrata]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[BusinessCooperation]]></category>
		<category><![CDATA[Clanguage]]></category>
		<category><![CDATA[ConcurrentProgramming]]></category>
		<category><![CDATA[CoreCompetitiveness]]></category>
		<category><![CDATA[C语言]]></category>
		<category><![CDATA[deadlock]]></category>
		<category><![CDATA[DoubleElevenPromotion]]></category>
		<category><![CDATA[EcommercePlatform]]></category>
		<category><![CDATA[err]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoLanguage]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[Go语言第一课]]></category>
		<category><![CDATA[nil]]></category>
		<category><![CDATA[SignedEdition]]></category>
		<category><![CDATA[SystematicLearning]]></category>
		<category><![CDATA[TonyBai]]></category>
		<category><![CDATA[二进制世界]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[公众号]]></category>
		<category><![CDATA[创造力]]></category>
		<category><![CDATA[双十一促销]]></category>
		<category><![CDATA[商务合作]]></category>
		<category><![CDATA[图书勘误]]></category>
		<category><![CDATA[并发编程]]></category>
		<category><![CDATA[极客时间专栏]]></category>
		<category><![CDATA[核心竞争力]]></category>
		<category><![CDATA[死锁]]></category>
		<category><![CDATA[电商平台]]></category>
		<category><![CDATA[签名版]]></category>
		<category><![CDATA[系统性学习]]></category>
		<category><![CDATA[编译]]></category>
		<category><![CDATA[配套代码]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5300</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/10/24/honoring-1024-programmers-day 大家好，我是Tony Bai。 今天，10 月 24 日，是一个特殊的日子。 它并非法定假日，地图上也没有标注。但对于一群特定的人来说，这个日期本身，就是一种无需言说的默契。1024，是 2 的 10 次方，是 1KB，是我们构建整个数字世界的基石。 它，就是属于我们程序员自己的节日——1024 程序员节。 所以，今天这篇文章，不聊源码，不谈架构，只想写给每一个奔跑在二进制世界里的你： 致敬那些深夜里，与 Bug 搏斗到天明的执着身影； 致敬那些显示器前，在 0 和 1 中创造出无限可能的大脑； 致敬那些用一行行代码，默默改变着世界的同行者们。 你们，值得被看见，被理解，被尊重。 程序员的宿命：永远在学习“第一课” 作为程序员，我们的职业生涯，似乎就是一场永无止境的“学习第一课”的旅程。 我至今仍记得自己第一次学习 C 语言时，面对指针的困惑；第一次接触并发编程时，被死锁折磨的痛苦；第一次探索 Go 语言时，被其简单哲学所震撼的喜悦。 无论是学习一门新语言，还是掌握一个新框架，亦或是理解一种新的架构思想，我们总是在不断地“清空自己”，以一个初学者的心态，回到“第一课”的起点。 这正是这个职业最磨人、也最迷人的地方。它强迫我们保持好奇，持续奔跑，永不僵化。 我将我的极客时间专栏《Go语言第一课》沉淀成书，正是源于对这份“程序员宿命”的深刻理解。我希望它不仅仅是教你一门语言的语法，更是想为你提供一套坚实的、可信赖的、能够举一反三的学习体系和思维范式。它是我作为一个“长期主义”布道者，希望能为你的下一段“第一课”之路，铺下的一块最坚固的基石。 灵魂拷问：AI 时代，我们还需要“第一课”吗？ 我知道，很多人心里都有一个疑问：在 AI 如此强大的今天，我们似乎可以随时跳过所有“第一课”，直接向 AI 要答案。那么，系统性的学习是否已经过时？ 作为一名同样深度使用 AI 的工程师，我的答案是：不，恰恰相反，在这个时代，扎实的“第一课”比以往任何时候都更加重要。 AI 是“陪练”，不是“内功心法”。 它可以极大地加速我们实现想法的过程，但它无法替代我们建立知识体系的“内功”修炼。它能告诉你“是什么”，却很少能告诉你“为什么”。 我看到太多的初级工程师，在 AI 带来的“我什么都行”的幻觉中，陷入了“知其然，不知其所以然”的困境。这种“能力空心化”，会在未来的某个时刻，成为职业生涯中难以逾越的瓶颈。 而系统性地学习一本好的入门书，正是在 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/honoring-1024-programmers-day-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/10/24/honoring-1024-programmers-day">本文永久链接</a> &#8211; https://tonybai.com/2025/10/24/honoring-1024-programmers-day</p>
<p>大家好，我是Tony Bai。</p>
<p>今天，10 月 24 日，是一个特殊的日子。</p>
<p>它并非法定假日，地图上也没有标注。但对于一群特定的人来说，这个日期本身，就是一种无需言说的默契。<strong>1024</strong>，是 2 的 10 次方，是 1KB，是我们构建整个数字世界的基石。</p>
<p>它，就是属于我们程序员自己的节日——<strong>1024 程序员节</strong>。</p>
<p>所以，今天这篇文章，不聊源码，不谈架构，只想写给每一个奔跑在二进制世界里的你：</p>
<ul>
<li>致敬那些深夜里，与 Bug 搏斗到天明的执着身影；</li>
<li>致敬那些显示器前，在 0 和 1 中创造出无限可能的大脑；</li>
<li>致敬那些用一行行代码，默默改变着世界的同行者们。</li>
</ul>
<p><strong>你们，值得被看见，被理解，被尊重。</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/go-network-programming-complete-guide-pr.png" alt="" /></p>
<h2>程序员的宿命：永远在学习“第一课”</h2>
<p>作为程序员，我们的职业生涯，似乎就是一场永无止境的“学习第一课”的旅程。</p>
<p>我至今仍记得自己第一次学习 C 语言时，面对指针的困惑；第一次接触并发编程时，被死锁折磨的痛苦；第一次探索 Go 语言时，被其简单哲学所震撼的喜悦。</p>
<p>无论是学习一门新语言，还是掌握一个新框架，亦或是理解一种新的架构思想，我们总是在不断地“清空自己”，以一个初学者的心态，回到“第一课”的起点。</p>
<p>这正是这个职业<strong>最磨人、也最迷人的地方</strong>。它强迫我们<strong>保持好奇，持续奔跑，永不僵化</strong>。</p>
<p>我将我的极客时间专栏<a href="https://tonybai.com/2025/08/28/go-primer-published">《Go语言第一课》沉淀成书</a>，正是源于对这份“程序员宿命”的深刻理解。我希望它不仅仅是教你一门语言的语法，更是想为你提供一套<strong>坚实的、可信赖的、能够举一反三的学习体系和思维范式</strong>。它是我作为一个“长期主义”布道者，希望能为你的下一段“第一课”之路，铺下的一块最坚固的基石。</p>
<h2>灵魂拷问：AI 时代，我们还需要“第一课”吗？</h2>
<p>我知道，很多人心里都有一个疑问：在 AI 如此强大的今天，我们似乎可以随时跳过所有“第一课”，直接向 AI 要答案。那么，<a href="https://tonybai.com/2025/04/19/learn-go-in-ai-era">系统性的学习是否已经过时</a>？</p>
<p>作为一名同样深度使用 AI 的工程师，我的答案是：<strong>不，恰恰相反，在这个时代，扎实的“第一课”比以往任何时候都更加重要。</strong></p>
<p><strong>AI 是“陪练”，不是“内功心法”。</strong> 它可以极大地加速我们实现想法的过程，但它无法替代我们建立知识体系的“内功”修炼。它能告诉你“是什么”，却很少能告诉你“为什么”。</p>
<p>我看到太多的<a href="https://tonybai.com/2025/08/24/junior-engineer-survival-guide-in-ai-age/">初级工程师，在 AI 带来的“我什么都行”的幻觉中</a>，陷入了“知其然，不知其所以然”的困境。这种“能力空心化”，会在未来的某个时刻，成为职业生涯中难以逾越的瓶颈。</p>
<p>而系统性地学习一本好的入门书，正是在 AI 时代对抗这种“能力空心化”、构建自己不可替代核心竞争力的最佳途径。它强迫你去理解代码背后的设计哲学、核心原理和权衡取舍，而这些，恰恰是 AI 无法生成的、属于你自己的智慧。</p>
<h2>节日献礼：送你一本签名的《Go语言第一课》！</h2>
<p>在这个属于我们自己的节日里，我想用一份最“硬核”的礼物，来回馈大家一直以来的支持，也为每一位仍在奔跑的同行者，加一次油，充一次电。</p>
<p>我准备了 <strong>2 本</strong>我的<strong>亲笔签名版《Go语言第一课》</strong>，送给我的读者们。</p>
<p><strong>【参与方式】</strong></p>
<p><a href="https://mp.weixin.qq.com/s/pmDbFhP13QIEee_qZznM_w">点击此链接</a>进入我的公众号文章，分享文章，转发朋友圈，并在本文评论区<strong>留言</strong>，<strong>说说你作为程序员最难忘的一个瞬间/故事</strong>，或者<strong>你对程序员这个职业最深的思考</strong>。</p>
<p>它可以是一次通宵排查 Bug 后的豁然开朗，可以是自己的代码被千万用户使用时的成就感，也可以是对这个行业未来的迷茫与期许。</p>
<p><strong>【抽奖规则】</strong></p>
<p>我将从所有留言中，精选 <strong>2 条</strong>最走心、最能打动我的分享，每人赠送一本我的<strong>亲笔签名版《Go语言第一课》</strong>！</p>
<p><strong>【活动截止时间】</strong></p>
<p><strong>2025年10月31日 23:59</strong></p>
<p>期待在留言区，看到你的故事。</p>
<h2>行动号召：为你的热爱，充一次电！</h2>
<p>当然，节日的福利属于每一个人。</p>
<p>如果你不想等待抽奖，或者想把这份礼物送给身边正在学习 Go 的朋友，现在就是最好的时机。双十一促销已经启动，各大电商平台的五折购书折扣都是全年最低。<strong>不到 40 元</strong>，即可拥有这本经过 2.4w 人验证、300 多页的 Go 入门宝典。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/go-primer-published-4.png" alt="" /></p>
<ul>
<li><strong>图书勘误与配套代码</strong>：https://github.com/bigwhite/goprimer</li>
</ul>
<h2>小结：愿我们永远奔跑</h2>
<p>最后，再次向每一位奔跑在二进制世界里的同行者致敬。</p>
<p>愿你的代码永远优雅，愿你的编译永远通过，愿你的创造力永不枯竭，愿你的 err 永远为 nil。</p>
<p><strong>1024，程序员节快乐！</strong></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/10/24/honoring-1024-programmers-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
