标签 RobPike 下的文章

开源维护者的困境

本文永久链接 – https://tonybai.com/2026/06/04/the-maintainers-dilemma

大家好,我是Tony Bai。

开源软件的繁荣建立在一种隐形的“社会契约”之上:贡献者贡献智慧,维护者投入精力审核。然而,当维护者面对成百上千个待处理的拉取请求(PR)而精疲力竭时,这个契约正滑向崩塌。

AI 的介入似乎提供了一线生机,但也带来了一个灵魂拷问:如果代码是 AI 写的,审核也是 AI 做的,那么“受保护的分支”究竟是在保护什么?开源社区赖以生存的“人与人的连接”是否会随之消失?前Go 语言核心团队成员、gohugo和Cobra 创始人 Steve Francia 近期撰写了一篇文章,深度剖析了这一“维护者的困境”。

本文便是这篇文章的中译文。


受保护的分支(protected branch)需要第二个人在代码发布前进行审核。这条规则的存在是因为人类会犯错,而第二双眼睛可以捕捉到第一双眼睛遗漏的东西。但如果其中一个审核者是机器人呢?如果两个都是呢?

目前,我可以要求 AI 在我的仓库里发起一个拉取请求(PR),然后由我自己合并它。或者我可以自己写代码,让 AI 来审核。在这两种情况下,分支在技术上都是“受保护的”。但这种保护现在究竟意味着什么?

这些问题值得思考。但它们往往占据了太多的注意力,而一个更迫切的问题却无人问津:现在,在我的各个仓库中,都有来自那些花时间理解代码库、编写测试并提交简洁补丁的人们的未处理拉取请求。我还没审核它们。遗憾的是,讽刺的是,我没审核是因为我深深地在乎。我知道花时间在一个项目上发起 PR 是多么大的事,对于那些我作为志愿者维护的项目更是如此。对于每一个拥有受资助维护者的开源项目,都有数以百万计的未付报酬的人类正盯着日益增长的待办事项,思考着这个周末是该花在处理问题上,还是直接合上电脑出门去。

AI 工具现在可以进行可靠的代码审查、编写补丁和分拣问题。问题不再是它们是否足够好到有用。真正的问题在于,“有用”在何处变成了“负担”,以及过度依赖我们无法轻易重建的东西——维护者与贡献者之间、通过经验积累的判断力,以及围绕这种交流形成的社区——是否会造成破坏。

118 个待处理的拉取请求

我上周查看了 GitHub 通知,然后直接关闭了标签页。Cobra 有 243 个未解决的问题(issues)和 118 个待处理的拉取请求(PR)。Afero 有 114 个问题和 55 个 PR。这两个项目都是我创建的。

尽管我没有及时行动,但这些都是活跃维护的项目。Cobra 支持着 kubectl、GitHub CLI、hugo 以及成千上万的其他工具。当你输入 kubectl get pods 或 gh pr list 时,Cobra 正在解析你的命令。Afero 存在于 Hugo 内部,也存在于 Cobra 自身,以及数以百计的其他项目中。对 Cobra 的一次草率合并可能会破坏 Kubernetes 的工具链。对 Afero 的一次错误审核可能会开启一个静默传播到下游所有环节的文件系统漏洞。

我创建 Cobra 是因为我需要为 Hugo 提供特定的 CLI 用户体验,而当时没有现成的库可以支持。我将它拆分为一个独立项目,想着其他人可能会觉得有用。我从未想过十年后我还在维护它,也没想到这两个项目会成为这么多人的关键基础设施。我只是想做些有用的东西,也许能交几个朋友。但开源意味着我有义务无限期地维护它吗?随着我发布的每个新项目,维护旧项目的时间就越来越少。有些 PR 已经等了三年了。在 Afero 的 BasePathFs 中有一个已报告的安全漏洞,自从 2025 年 6 月起就挂在那里——直到写这篇文章之前,我都还没意识到它在那里,因为积压工作太惊人了。

维护的数学逻辑行不通。这是一个众所周知的开源问题(相关 XKCD 漫画)。贡献的数量增长速度远超维护者的数量,且随着项目的复杂性和影响力的增加,审查每个 PR 所需的时间也在增长。有些项目能吸引志愿者维护者,但这又带来了新问题:没有人对全局负责,每个人都只挑选对自己重要的事情,剩下的就随它去。Cobra 故意设计得节奏缓慢——有太多的项目依赖它,不能草率合并任何内容——因此每次更改都需要更彻底的审查,而不是更少。我的许多其他项目则掉进了既被维护又被遗弃的灰色地带。我会将其描述为针对最关键路径优化的维护,但这种区别对八个月前提交了修复方案且从未得到回音的人来说,意义并不大。

这不仅仅是我的问题。GitHub 托管着超过 4.2 亿个仓库。我有幸成为 Secure Open Source Fund 首批资助对象的一员——这是一项真正产生了影响的投资。但即使在经过几个周期的扩展后,它也只覆盖了约 200 个项目。OpenSSF 每周扫描数百万个关键项目。Tidelift 向维护者支付报酬。把这些加起来,你也只覆盖了成千上万个项目。这虽然很有意义,但与实际的表面积相比只是杯水车薪。

百分之九十六的代码库包含开源组件,而它们赖以生存的基础是由盯着永远清不空的待办事项的人类维持的,他们思考着是否这就是他们最终耗尽精力或干脆停止查看的周末。随之而来的还有维护者的愧疚感——明知道人们指望着你的工作,而你却没有能力帮忙,但又无法撒手不管。

进入机器人时代

我一直在几个仓库里尝试 AI 工具——比如在 fileflow 上的 Jules 和在 pathologize 上的 AI 尝试,这些仓库依赖较少,有更多尝试空间。我也一直在 Afero 上运行 GitHub Copilot,它有更多依赖,但其模块化架构允许我扩展新后端而不触及其他项目依赖的关键路径。

我去了一次邮轮旅行。当我在海上时,Jules 还在继续工作,每天都会发起新的 PR,因为我还没来得及合并第一个。等我回到家时,这两个项目已经有了超过 120 个 PR。我抽出一个早晨来审核它们,却发现它们其实代表了大约五个不同的更改集,每个更改集都在几周内每天提交一次。PR 本身并没有错,Jules 确实发现了真实的问题。但没有一个 PR 是完全正确的;在合并之前,每个都需要修正。在 Jules 提供的指导下,我做了调整,总体方向显示出前景。但实验目前带来的维护工作量是增加了,而不是减少了:我必须核实这 120 个 PR 中每一个是否真的是重复的,然后才能关闭。本意是减少积压工作的工具,反而增加了积压。

Jules 发起的这些 PR 署名是我,而不是 Jules——这引发了关于归属和责任的问题。从仓库的角度看,我是这些更改的作者。但我一行代码都没写。如果其中一个补丁引入了 Bug 或漏洞,提交历史记录指向的是我。大多数贡献者政策在编写时并未考虑到这种情况,标准的 CLA(贡献者许可协议)也不区分人类编写的代码和人类指导 AI 编写的代码。

目前看来,Jules 似乎没有关于其之前工作的记忆,也没有检查未处理 PR 的能力。它扫描仓库,发现问题,发起 PR,然后停止。如果你不合并,Jules 下次扫描时会发现同样的问题并再次发起 PR。它没法知道你已经意识到了问题但还没合并,原因可能是:你不同意这个修复,或者修复优先级较低,或者你正在船上度假且两周内没法上网。这种语境对工具来说是不可见的。Jules 发现了一个真实的漏洞——文件操作中的 TOCTOU(检查时间到使用时间)漏洞——它是对的,它指出了这一点……指出了 12 次。

对于机械性的工作——标记问题、更新依赖、起草样板回复——这些工具确实非常有用。但 Jules 和 Copilot 无法告诉我,这 55 个 Afero 的 PR 中,是否有一个根本不属于这个项目。这种判断需要了解代码库的过去和未来,而不仅仅是它的现状。

这些工具只能基于可见的事物工作:代码、未解决的问题、PR 历史。维护者的约束条件是那些没人写下来的东西:内部辩论如何塑造了 API。人类判断力最无可替代、AI 最盲目的鸿沟,就在这两者之间。

曾和我一起在 Go 团队工作的 Russ Cox 在最近的一次关于 AI 贡献的讨论中说得很好:“人们吹嘘代码库有成百上千行,是由 AI 在创纪录的时间内完成并提交的。仔细观察会发现,这些代码库往往更像是跳舞的大象,而不是有用的工程产物。”

他是对的。但我一直在思考代码之外的事情。编写新软件和维护现有软件是有区别的。更新依赖并不是跳舞的大象。分拣一个陈旧的问题并不是创造性行为。告诉一个贡献者“谢谢,但我们不接受对这个 API 的更改”只是在维持运营。而现在,对于数百万个项目来说,灯已经熄灭了。

这还不是最大的挑战。大多数人没意识到的是,评估和合并更改比编写新代码要难得多。理解一个更改如何融入现有的代码库、它的历史以及它的计划,需要一部分隐形的知识——这些知识存在于创意工作中,需要某种目前没有模型能复制的判断力。

“受保护”到底保护了什么

Go 项目对我来说真的很美——那是运行了 15 年、极其细致的评审、设计讨论和精炼的评审文化。那是理想状态。但 Go 是个例外,大多数项目无法企及:由 Google 资助的全职贡献者,一项旨在持续 50 年且不受外部截止日期压力的任务。

Go 团队最近有一个长长的讨论,关于是否接受 AI 生成的贡献——Russ Cox 的名言也源自那个讨论。这些人我共事多年——同样的评审、同样的方案、在同样的白板前争论。阅读那个论坛线程,我能听到他们的声音。我能看到他们每个人是如何坚持自己认为正确的事情,以及为什么。

Rob Pike 第一个发言且毫不含糊。这是一条非常危险的道路。在你的第一步上要小心。我建议简单地说“不”。那是 Rob。直接、原则性强,且通常是正确的。然后 Alan Donovan 指出了不舒服的现实:“我怀疑我们今天收到的一大部分 CL(更改列表)已经包含了 LLM 生成的代码,无论作者是否承认。马已经跑出马厩了。”

Russ Cox 写下了我见过的最深思熟虑的回应。他的核心观点是:“我们能做的最重要的事情是维持我们平时的代码评审和代码质量标准……当代码的部分或全部是在 AI 工具的帮助下编写时,同样的标准必须适用。”以及:“当你使用 AI 工具完成工作时,你的责任并不会减轻。”

这些立场中的每一个都是合理的。每一个都基于一个假设,而这个假设揭示了困境的核心:他们假设有人类可以进行评审

Go 能负担得起“维持同样的标准”,因为它有全职贡献者。它能负担得起“直接说不”,因为 Go 有足够多的人对重要的事情说“是”。

Afero 没有。大多数开源项目没有。当 Rob Pike 说“不”时,Go 项目保持运行。当我说“不”时,PR 就挂在那里。那是不同种类的“不”。

这里有一个光谱,你落在哪里取决于你究竟在两者之间如何权衡。在实践中,维护者面临五个选项:

  1. 人类编写,人类审核。
  2. AI 编写,人类审核。
  3. 人类编写,AI 审核。
  4. AI 编写,AI 审核,人类点击合并。
  5. AI 编写,AI 审核,AI 点击合并。

列表中的每一步通常都是在用严谨性换取速度,用信任换取吞吐量。但对于大多数人类或 AI 都不评审的 PR,根本谈不上标准。

我们真正保护的是什么

当维护者评审贡献者的 PR 时,存在一个潜规则(契约)。贡献者投入数小时理解代码库、编写测试并提交干净的内容。评审者投入数小时进行评估、打回并提出改进建议。双方都在学习。评审者理解了项目的一个新角落。贡献者学会了更好地使用代码库的惯用法。这种关系形式。这种交流是使开源成为一个社区,而不仅仅是供应链的重要原因。

Bryan Cantrill 在 Oxide 描述了这种关于 LLM 使用的内部政策:通常,“读者和作者都默认,是编写者付出了更大的智力劳动。”当内容是 AI 生成时,“这个社会契约就变成了作者付出的努力最少。如果双方都没有付出努力,那么评审还有什么意义?”Oxide 的答案是,无论如何人类都要负责;工具不吸收责任。这是正确的直觉。但它假设有人真正在那里承担责任。

对于大多数项目,根本没有人在评审。社会契约不是被 AI 破坏的——它正被沉默破坏。六个月前提交了一个干净、测试完备的补丁却从未收到回音的贡献者,并没有体验到一个退化版的理想契约。他们什么也没体验到。

一个不完美的社会契约,是否好过一个从未发生的完美契约?

来自 AI 的在一天内的响应,可能比来自人类的永远的沉默更受尊重。

前方的实验

我决定弄清楚到底怎么回事。我在 Afero 上看到了 55 个尚未处理的 PR 请求,显然,这种拖延态度本身就已经构成了一种忽视行为。

AI 工具会让我更投入,让我从那些本不需要我的决策中解脱出来吗?还是会让我感觉连接更少——人类元素又减少了一层?我不知道让 AI 评审 PR 而不是人类评审是什么感觉,也不知道当双方的努力都减弱时,问责制是否还存在。这就是实验。

Russ 在那个讨论中还说了另一句话,我一直在回味:“最重要的事情是保持思考。工具让关掉大脑变得非常容易,但如果你小心避开那个陷阱,你就能产出好的成果。”这就是我要尝试走的路。让 AI 处理大量数据吧。而我自己则要继续负责做出正确的判断。

没有一个通用的政策可以同时适用于 Go 和 Afero。也不应该有。

受保护的分支依然受保护。我只是不再确定那究竟意味着什么。

你遇到过这种情况吗?我特别想听听那些尝试过使用人工智能进行代码审查的维护人员的意见——哪些方面运作正常,哪些又出现了问题。

原文地址:https://spf13.com/p/the-maintainers-dilemma/


今日互动探讨

“如果一个 AI 能够修复你项目中困扰已久的 Bug,但由于它是 AI 生成的,没有人能完全解释其每一步的逻辑,你会选择合并它吗?”

在开源社区的未来,我们究竟是在守护代码的质量,还是在守护人类参与的痕迹?欢迎在评论区分享你的看法。


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

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

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


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

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

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

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

img{512x368}


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

拒绝 AI 署名!Go 核心团队在 AIGC 时代划下的“工程红线”

本文永久链接 – https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship

大家好,我是Tony Bai。

在生成式 AI 狂飙突进的 2026 年,编程似乎变得前所未有的容易。Claude Code、Gemini Cli、Codex等 已经成为开发者的标配。然而,技术便利的背后,模糊的责任边界正在侵蚀软件工程的根基。

近日,在 Go 语言这个以“简单、可靠、高效”著称的开源圣殿里,核心团队被迫画下了一道红线

起因是一个特殊的 CL(Change List 741504),提交者在描述中赫然写道:“Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com”。这行看似“诚实”的署名,瞬间触动了 Go 语言之父 Rob Pike、Ian Lance Taylor 以及 Russ Cox 等大佬的神经。

这不仅仅是一个关于署名权的争论,这是整个开源世界在 AI 时代必须面对的“立宪时刻”:我们该如何划定人类与 AI 在代码创作中的界限?

本文将深度复盘这场发生在 Go 核心圈的讨论,并解读 Russ Cox 最终定调背后的深意。

触碰红线——潘多拉魔盒的开启

事情的起因简单而诡异。开发者 John S 提交了一个修复 cgo 文档的 CL,并在描述中注明了 Claude Opus 4.5 是共同作者。

Ian Lance Taylor(Go 泛型的主要设计者之一)率先发难,敏锐地指出了这行字背后潜藏的两个致命法律风险:

  1. 版权归属:Anthropic(Claude 的母公司)是否对其模型生成的代码拥有版权?
  2. 许可证传染:如果 AI 模型是基于非开源或与 Go 不兼容协议的代码训练的,那么它生成的代码是否会污染 Go 的代码库?

Robert Griesemer(Go 创始三巨头之一)则从工程角度表达了担忧:

“如果代码描述是 AI 写的,我们可以删掉那行字。但如果是 Claude 写的代码,我们就有大麻烦了。”

Griesemer 的担忧直指 AIGC 的核心痛点:幻觉与平庸。他将 AI 现在的状态比作拼写检查器——它可以修正拼写,但它真的懂“修辞”吗?更重要的是,它懂“正确性”吗?

而 Rob Pike(Go 语言之父)的回复依然是那样简洁有力,且带有强烈的不容置疑:

“这是一个非常危险的滑坡(slippery slope)。我建议第一步简单点:说不(NO)。

Rob Pike 意识到,一旦模糊了这条线,开源社区将面临“人的缺位”。谁来维护这些代码?谁来为 Bug 负责?是一个在那一刻运行的概率模型,还是那个按下 Enter 键的人?

工程哲学——红线之内的质量守卫

在长达数日的讨论后,Russ Cox (rsc) 发表了一篇极具分量的总结性邮件,在这封邮件中,他代表 Go 核心团队给出了AI 时代Go项目的AI 政策宣示,并说明了划定这条红线的工程学必要性。

对抗“逆向布兰多里尼定律”

互联网上有一条著名的“布兰多里尼定律”(Brandolini’s law):反驳胡扯所需要的能量,比产生胡扯所需要的能量大一个数量级。

在编程领域,AI 正在制造同样的困境。Russ 指出:

“AI 工具诱使许多人陷入一种虚假的信念……人们以前所未有的速度生成大量的代码……就像看着会跳舞的大象,虽然令人惊叹,但通常既慢又笨拙,且难以维护。”

写代码变容易了,但代码审查(Code Review)变难了。

Go 的设计哲学是“代码被阅读的次数远多于被编写的次数”。而 AIGC 工具颠倒了这一关系。AI 可以在几秒钟内生成数百行看似完美、实则包含微妙 Bug 的代码。如果不划定红线,Go 项目将被机器生成的、无人真正理解的代码淹没。

拒绝“关闭大脑”的提交

工具的便捷性往往会让人关闭大脑。当 Claude Code 或 Copilot 给出一段代码时,开发者最自然的反应是“它看起来能跑”,然后直接提交。

这种“关闭大脑(Turn off your brain)”的行为,是工程质量的大敌。

Go 团队划定红线的目的,是强迫开发者回归理性:你必须理解你提交的每一行代码。如果连提交者自己都无法解释代码为什么这么写,那么这段代码就是项目的负资产。

法律博弈——红线之外的版权黑洞

除了工程哲学,Russ Cox 明确指出,法律风险是划定这条红线的硬性约束。

“非人类”没有版权

根据美国版权局(US Copyright Office)的指导意见,非人类创作的作品不受版权法保护。

这意味着,如果一段代码被认定为完全由 AI 生成,它可能直接进入公有领域(Public Domain),或者其版权归属处于薛定谔状态。

Go 项目要求所有贡献者签署 CLA(贡献者许可协议)。CLA 的核心前提是:贡献者拥有其提交代码的版权,并将其授权给 Google/Go 项目。

如果允许 AI 署名:

  • 贡献者没有版权,因此签了 CLA 也没用。
  • Google 无法获得有效的版权授权。
  • Go 的代码库中将出现版权状态不明的“黑洞”。

训练数据的原罪

这是 Robert Engels 在讨论中反复强调的点:AI 是在什么数据上训练的?

如果 Gemini 或 Claude 记住了某段 GPL 或 AGPL 协议的代码,并在微调后将其“吐”了出来,而这段代码被合入了使用 BSD 协议的 Go 项目中,这就构成了严重的侵权风险。

作为顶级开源项目,Go 团队必须规避任何潜在的法律诉讼。“拒绝 AI 署名”是法律上的防火墙。

最终裁决——Go 团队的“三不”原则

基于上述工程和法律的双重考量,Russ Cox 代表 Go 团队划定了极其清晰的政策红线。这份裁决不仅适用于 Go,也值得所有技术团队参考。

不接受 Co-Authored-By: AI

Go 项目不接受任何由 AI 模型作为共同作者的提交。

这不仅在法律上是无稽之谈(AI 没有法律主体资格),在工程责任上也是一种逃避。

不接受“无人负责”的代码

提交者必须对代码负全责。

无论你用了什么工具——是 Vim、IDE 的自动补全,还是 Claude Code——当你提交代码时,你就是在声明:“这是我的作品,我理解它,我为它负责。”

Russ Cox 提出了一个极其严苛的标准:

“如果你用 AI 生成了代码,你必须像审查同事的代码一样,甚至更加严格地审查它。如果你不能自信地声称‘这是我写的’(即便你用了工具),那么就不要提交它。”

作者列表只属于人类

Go 的贡献者列表(AUTHORS 文件)只包含人类。

开源是人类智慧的结晶。AI 只是工具,是像编译器、Linter 一样的高级工具,但工具不能成为作者。

前瞻——AI 时代的开发者生存指南

Go 团队划定的这条红线,实际上厘清了 AI 辅助编程(AI-Assisted)与 AI 生成编程(AI-Generated)的本质区别。

从“编写者”到“验证者”

在红线之内,开发者的核心竞争力正在发生转移。

  • 过去:熟练掌握语法,快速编写代码。
  • 未来:拥有深厚的系统知识,能够验证 AI 生成代码的正确性、安全性和性能。

正如 Russ 所言:“审查代码比编写代码更难。”未来的高级工程师,本质上都是高级 Code Reviewer。

警惕“平庸的螺旋”

LLM 的训练基于海量的互联网数据,这意味着它生成的代码往往是“平均水平”的。但 Go 标准库追求的是“极致的工程化”。

如果过度依赖 AI,代码库的质量将不可避免地滑向平庸。这条红线,是为了保护代码库中人类工程师的审美和坚持。

小结

2026 年初的这次讨论,为开源社区树立了一块重要的界碑。

面对 AI 的诱惑,Go 团队选择了一条更为艰难、保守,但也更为负责任的道路。他们划定红线,拒绝了“看起来很快”的捷径,坚守了“简单、可维护、人类可理解”的初心。

这条红线告诉我们:AI 是你的副驾驶,但永远不要让它接管方向盘。因为当车毁人亡时,坐牢的永远是你,而不是那个大语言模型。

资料链接:

  • https://groups.google.com/g/golang-dev/c/4Li4Ovd_ehE/m/8L9s_jq4BAAJ
  • https://go-review.googlesource.com/c/go/+/741504

你愿意为 AI 代码负全责吗?

Go 团队要求:如果你不能自信地声称“这是我写的”,就不要提交。在你的日常开发中,你会对 AI 生成的代码进行逐行 Review 吗?你认为“不准 AI 署名”是开源精神的回归,还是对技术进步的保守?

欢迎在评论区分享你的“红线”!


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

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

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


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

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

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

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

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


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

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 从 0 开始构建 Agent Harness Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com
这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats