标签 github 下的文章

开源维护者的困境

Image

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

大家好,我是Tony Bai。

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

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

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

Image


受保护的分支(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 向维护者支付报酬。把这些加起来,你也只覆盖了成千上万个项目。这虽然很有意义,但与实际的表面积相比只是杯水车薪。

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

进入机器人时代

Image

我一直在几个仓库里尝试 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原生开发之旅。

Image


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


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

Image

谁说 Rust 在中国火了?扒开 2025 全年数据,我看到了令人尴尬的真相

Image

本文永久链接 – https://tonybai.com/2026/05/12/the-embarrassing-truth-about-rust-adoption-in-china

大家好,我是Tony Bai。

如果只看国内的公众号和社交媒体,你可能会觉得 Rust 在中国IT技术圈已经很火了:大厂在重构核心链路和重写数据工程的基础设施、创业者在搞 Web 3.0和AI 原生开发、甚至连刚毕业的学生都在卷“所有权(Ownership)”。在一片“Rust 必火”的赞歌中,我们似乎已经默认了中国是全球 Rust 生态版图中最强的那一极。

但真相,往往藏在那些没人注意到的冷数据里。

最近,我做了一次极其枯燥的工作。我让Claude 翻阅了全球最权威的 Rust 社区周刊——This Week in Rust》(简称 TWiR) 2025 年全年的所有 53 期内容,重点抓取了其中“Upcoming Events(近期活动)”板块。

Image

注:可能存在一定幻觉和不准确的地方。

我想看看,在这一整年里,中国到底举办了多少场能够被国际主流社区感知到的 Rust 技术交流(meetup and conf)。

结果令我脊背发凉。

今天,我想撕开这层温情脉脉的“技术繁荣”假象,带大家看看中国 Rust 社区最真实的底色。

Image

数据重击:中国 Rust 社区的“隐形”之谜

在 2025 年的 53 期 TWiR 中,全球范围内的 Rust 活动如火如荼。

  • 欧洲:平均每期出现 13 个 活动,全年累计超过 120 场。
  • 北美:平均每期出现 10 个 活动,全年累计超过 130 场。
  • 而中国大陆(CN)呢? 在整整 53 期里,仅仅出现了 3 期

Image

2025 全年 53 期全球Rust技术活动对比柱状图

更讽刺的数据还在后面。如果我们把目光缩到亚洲:

在 TWiR 的“Asia”板块中,以色列的特拉维夫(Tel Aviv)一个城市,全年的出现频次是 11 次

是的,你没看错:特拉维夫 > 整个中国大陆 + 中国香港 + 中国台湾省。

全中国 14 亿人口、数千万程序员,在这个全球最活跃的 Rust 观察窗口中,竟然比不上一个中东城市活跃。

难道中国程序员不写 Rust 吗?显然不是。那是谁偷走了中国 Rust 社区的“声音”?

信息茧房:我们在微信群里“自嗨”

为什么中国 Rust 活动在全球视野中几乎消失了?通过一些调研,我发现了一个极其严重的“结构性问题”。

第一,我们的社区是“内向”且“封闭”的。

在国外,Rust 开发者习惯在 GitHub、Reddit、Discord、Twitter 或是通过电子邮件订阅列表交流。一旦有 Meetup,他们会第一时间向 TWiR 这种全球通用的周刊提交信息,寻求全球开发者的关注。

而我们呢?

我们活跃在微信群、钉钉群、飞书群,或者是在 B站 的某个直播间。

这些平台,本质上是“信息的黑洞”。 它们无法被搜索引擎抓取,无法被国际社区感知,甚至连跨个群都费劲。我们在一个个封闭的小圈子里讨论着高深的生命周期和异步并发,却对外面的世界“一声不吭”。

第二,中国开发者正在丧失“国际社区意识”。

即便是在 2025 年中国 Rust 的两个高光时刻——3 月的 Rust Asia 2025 (香港) 和 9 月的 RustChinaConf 2025 (杭州),它们的曝光也是极其短暂的。

Image

2025 全年中国地区Rust技术活动明细

正如一位社区大佬所言:“如果你不在推特和 GitHub 上发声,你就相当于不存在。”

我们这种“躲进小楼成一统”的行为,正在让中国 Rust 生态沦为全球版图上的一个“暗物质”。

大厂黑盒:Rust 只是大厂的“私人玩具”?

还有一个更深层的原因:中国 Rust 应用的“两极分化”极其严重。

在一极,是像字节跳动(ByteDance)、PingCAP、蚂蚁集团这样的顶级玩家。

他们拥有极深的技术功底,在核心系统中使用 Rust 已经到了炉火纯青的地步。但问题在于,这些能力被封锁在大厂的围墙之内。他们更倾向于内部的技术内卷,而不是建立开放的、具有影响力的公共社区。

在另一极,是广大的、依然在 CRUD 泥潭里挣扎的普通开发者。

对于他们来说,Rust 太难、编译太慢、门槛太高。他们看不到实际的应用案例,找不到线下的交流圈子,只能在网上看着“Rust 必火”的营销号文章陷入焦虑。

缺乏“中间层”的连接,导致中国 Rust 社区没有持续的、小规模的、日常化的技术碰撞(Meetup)。

我们只有一年一度的大会,却没有每周一次的 Meetup。这就好比一个只有春晚却没有日常市集的村庄,死气沉沉。

认清现实后的反思:不要做“Rust 隐士”

编程语言的生命力,不仅取决于它的编译器有多牛逼,更取决于它的社区网络效应

当中国的 Rust 开发者集体消失在全球视野中,我们会失去什么?

  1. 失去标准制定的参与权:Rust 的每一个重要 RFC,背后都是全球开发者的博弈。如果我们不在场,我们的业务场景和需求将永远不会被考虑。
  2. 失去顶级人才的吸引力:全球的顶尖 Rustacean 会认为中国是一个 Rust 的荒漠,从而减少技术交流与合作。
  3. 技术审美的滞后:长期脱离国际主流语境,会导致我们在架构审美和最佳实践上,陷入一种“闭门造车”的狭隘。

小结:打破沉默,重新“出海”

Rust 的吉祥物是一只螃蟹(Ferris)。螃蟹虽然有硬壳,但它不应该只生活在自己的小沙洞里。

在国际视角下的中国 Rust 社区的“冷”,可能并不是用的人少,而是我们“跑得太慢、声音太小”

如果你正在参与一个 Rust 项目,如果你所在的公司正在筹备一场技术分享,请记住:

除了发朋友圈,请去 GitHub 提个 PR,去 TWiR 投个稿,去国际社区喊一声:“Hey, we are here!”

不要让 2026 年的统计数据,依然显示中国是那个“隐形”的国家。

技术无国界,但影响力的版图,需要每一位开发者用行动去标注。

资料链接:https://this-week-in-rust.org/blog/archives/index.html


今日互动探讨:

看完这份数据,你感到惊讶吗?你觉得是什么阻碍了你参与国际开源社区的讨论?在你的身边,Rust 真的火了吗?

欢迎在评论区分享你的真心话!


还在为写 Agent 框架频频死循环、上下文爆炸而束手无策?我的新专栏 从0 开始构建 Agent Harness 将带你:

  • 抛弃臃肿框架,回归“驾驭工程 (Harness Engineering)”的第一性原理
  • 用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等,复刻极简OpenClaw
  • 构建坚不可摧的 Safety Middleware 与飞书人工审批防线
  • 在底层实现 Token 成本审计、链路追踪与自动化跑分评估
  • 从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”

扫描下方二维码,开启从 0 开始构建Agent Harness 的实战之旅。

Image


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


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

Image

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

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

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

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

比特币: Image

以太币: Image

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

Image
View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats