K线
数据链上
VIP
市值
API
排行
CoinOSNew
CoinClaw🦞
语言
  • 简体中文
  • 繁体中文
  • English
全球行情数据应用领跑者,致力于更高效地提供有价值的信息。

功能

  • 实时行情
  • 特色功能
  • AI网格

服务

  • 资讯内容
  • 开放数据(API)
  • 机构服务

软件下载

  • PC版
  • Android版
  • iOS版

联系我们

  • 聊天室
  • 商务邮箱
  • 官方邮箱
  • 官方验证通道

加入社区

  • Telegram
  • Twitter
  • Discord

© Copyright 2013-2026. All rights reserved.

简体繁體English
|旧版

GitHub 前创始人拿了 a16z 的 1700 万美元,做 Agent 时代的 Git

CN
Techub News
关注
2小时前
AI 总结,5秒速览全文

撰文:Leo

你有没有想过,编程这件事情可能彻底变了?开发者正在从单纯使用 AI 工具,转向将 AI 视为构建软件的全新基础。这不是什么小调整,而是一场彻底的范式转变。想想看,那些我们一直习以为常的核心概念——版本控制、分支、代码审查,甚至"协作"的定义——都在因为 AI agent 驱动的工作流而被重新定义。更让我震惊的是,我们每天都在用的 Git,其实是一个为 20 年前的邮件列表补丁工作流设计的工具,现在却要服务于人类开发者和一群 AI agent 同时工作的场景。

这就是为什么 GitButler 刚刚获得 1700 万美元 A 轮融资的消息让我停下来认真思考。这轮融资由 a16z 领投,Fly Ventures 和 A Capital 继续跟进。更有意思的是,GitButler 的 CEO Scott Chacon 是 GitHub 的联合创始人之一,他写过那本几乎每个开发者都读过的《Pro Git》。一个已经在版本控制领域取得巨大成功的人,为什么要回到创业赛道,重新思考这个看似已经"解决"的问题?他在公告中说得很直白:"我们不是在构建一个'更好的 Git',我们是在构建软件构建方式的下一代基础设施。"这句话背后隐藏着对软件开发未来的深刻洞察。

Git 的 20 年困局:为邮件列表设计的工具

我发现很多人并不了解 Git 的历史背景。Git 最初是 Linux 内核团队在 2005 年创建的,它的设计哲学深深植根于 Unix 传统。Scott 在访谈中提到了一个有趣的细节:Git 的核心团队从来没打算做一个用户友好的界面。他们遵循 Unix 哲学,构建了一系列底层的"管道命令",每个命令做一件简单的事情,然后你可以用 Perl 脚本把它们串起来,做任何你想做的事情。这种设计思想在当时非常合理,因为他们假设只有 Linux 核心团队这样的技术专家会使用这个工具。

后来发生的事情大家都知道了。有个叫 Pasquy 的开发者写了一些 Perl 脚本,给 Git 包装了一个统一的用户界面,也就是我们现在用的 CLI 命令。这些脚本变得越来越流行,最终被合并到 Git 核心中,成为了所谓的"瓷器层"(porcelain)。有意思的是,这些命令从 2005、2006 年以来基本没有大的变化。它们最初是用 Perl 写的,后来被重写成 C,但核心逻辑和用户界面几乎保持原样。Scott 说他在 2009 年写《Pro Git》第一版时描述的那些命令,现在依然可以完全照搬使用。

这种稳定性在某种程度上是好事。Git 团队非常重视向后兼容性,他们不愿意移除任何已存在的功能,担心会破坏现有工作流。但这也带来了一个根本问题:Git 被设计时的核心假设,已经跟现在的软件开发实践严重脱节了。Git 是为了通过邮件列表发送补丁而设计的。那个时代,开发者会在本地做一些修改,生成一个补丁文件,通过邮件发送给维护者,维护者审查后决定是否接受。整个流程是异步的、基于文本的、单线程的。

而现在呢?我们有持续集成、持续部署,有分布式团队实时协作,有代码审查工具,有各种自动化测试和部署流水线。更重要的是,现在有 AI agent 在大规模地写代码。Scott 提到一个让我印象深刻的观察:我们现在正在教一群 AI agent 使用一个为邮件列表补丁设计的工具。这种错位感,就像是让一辆特斯拉走在为马车设计的道路上。

Git 的 Unix 哲学设计带来了另一个问题:它试图用一套接口同时服务计算机和人类。如果你运行"git branch",默认情况下你只会得到一个分支列表,没有任何用户界面。这是因为 Git 需要确保这个命令的输出既可以被人类阅读,也可以被其他程序解析。这种妥协导致了一个结果:Git 对人类来说不够友好,对计算机程序来说也不够优化。虽然有些命令提供了"--porcelain"选项来输出机器可读的格式,但这不是标准做法,很多命令根本没有这个选项。

AI Agent 时代的新挑战:一个工作目录已经不够用了

当 AI 开始大规模参与编程时,Git 的局限性变得更加明显。我自己最近也在尝试使用多个 AI agent 同时工作,发现 Git 的基本设计假设——一个开发者、一个分支、一个线性工作流——已经完全不适用了。现代开发者不是线性工作的。你可能同时运行多个 agent,一个在修复 UI bug,另一个在优化数据库查询,第三个在更新文档。但 Git 的索引系统在这种并行编辑下会崩溃,因为它假设你本地的工作副本代表的是对代码库的单一、原子性的修改。

传统的解决方案是使用 worktree,也就是为每个并行任务创建代码库的多个副本。但这带来了新问题。如果你有五个 agent 同时工作,你就需要五个完整的工作目录副本。虽然 Git 在存储层面做了优化,但这仍然意味着大量的文件复制和磁盘空间占用。更重要的是,这些 agent 之间是完全隔离的,它们看不到彼此在做什么,直到它们各自完成并尝试合并时才会发现冲突。到那时候,解决冲突的成本已经非常高了。

GitButler 提出的解决方案是并行分支(parallel branches)。这是一个让我眼前一亮的设计。并行分支就像普通分支,但你可以同时打开多个。你可以获得 worktree 的好处(逻辑隔离),但不需要复制所有文件。所有的 agent 都在同一个工作目录中操作,但它们的修改被分配到不同的虚拟分支中。Scott 在访谈中描述了一个让我印象深刻的场景:他们让两个 agent 同时工作,这两个 agent 都想编辑同一个文件,但修改方式不兼容。结果是什么?一个 agent 自动把它的分支堆叠在另一个 agent 的分支之上,然后继续工作,提交到它自己的堆叠部分。这种智能的冲突处理,在传统 Git 工作流中几乎不可能实现。

我特别欣赏 GitButler 团队的一个实验,虽然最终他们没有采用。他们曾经尝试让多个 agent 之间有一个聊天频道,让它们可以互相沟通正在做什么。Scott 说这个功能看起来超级酷,他们可以看到 agent 之间的对话,非常想把它发布出去。但经过大量测试后,他们发现这个功能其实没有帮助。Agent 会自己发现有其他人在修改某个文件,会自动推断原因,然后调整自己的工作策略。它们不需要显式的通信,因为通信本身带来了开销,反而让整个过程变慢了。这个发现本身就很有启发性:我们不能简单地把人类的协作模式套用到 agent 身上,agent 有自己的工作方式。

重新设计用户界面:为人类、为 agent、为脚本

GitButler 最近发布的 CLI 工具引起了我很大的兴趣。这不是一个简单的 Git 包装器,而是从根本上重新思考了命令行工具应该如何设计。Scott 提到了一个有趣的观察:大约 80%的开发者仍然使用命令行工具来操作 Git,即使有各种 GUI 工具存在。原因很简单——大多数 Git GUI 只是把 Git 命令包装了一层图形界面,并没有增加太多功能,反而让操作变慢了。如果你知道要运行什么命令,直接敲命令往往更快。

但 GitButler 的 CLI 不一样。它针对不同的使用场景提供了不同的输出格式。如果你直接运行命令,它会给你优化过的、人类可读的输出,包括提示和建议。如果你加上"--json"参数,它会给你结构化的 JSON 数据,方便脚本解析。他们甚至在考虑添加"--markdown"选项,专门为 agent 优化输出格式,因为 markdown 格式更容易被注入到 agent 的上下文中。

更有意思的是,他们通过实际观察 agent 的行为来优化工具设计。他们发现,虽然提供了"--json"选项,但 agent 其实更喜欢使用人类可读的输出,然后自己通过管道传给 jq 或写 Python 脚本来提取需要的信息。另一个发现是,agent 在运行任何修改性命令后,几乎总是会立即运行"git status"查看状态。所以 GitButler 团队直接在所有修改性命令中添加了"--status-after"选项,执行完操作后自动显示状态。这种设计在传统 Unix 哲学中是不会做的,对脚本编程也不太适合,但对 agent 来说却是完美的。

他们还在探索如何通过输出给 agent 提供更多上下文信息。比如,在命令输出中包含"如果你想做这个,运行这个命令"的提示。这不是给人类看的,因为人类会觉得啰嗦,但对 agent 来说,这种额外的上下文可以帮助它更快地决定下一步该做什么。Scott 说这是一个非常有趣的 UX 问题,因为我们必须把 agent 当作一种新的"用户画像"来对待,而它的需求和行为模式跟人类完全不同。

软件开发的本质变化:从写代码到写规格说明

在访谈中,Scott 提到了一个让我深思的观点:未来最优秀的软件工程师,可能不是那些代码写得最好的人,而是那些最会沟通、最会写作、最会描述的人。这听起来可能有点反直觉,毕竟我们很多人当初选择编程就是因为可以跟机器打交道,而不是跟人打交道。但仔细想想,这个趋势是完全合理的。

当 AI agent 可以高效地生成代码时,瓶颈不再是实现细节,而是你能不能清楚地描述你想要什么。Scott 分享了他自己的工作流程:他现在大部分时间都在写规格说明,详细描述一个功能应该如何工作。每当有一个设计决策需要做时,他就让 AI 根据规格说明实现,然后测试结果。如果有问题,他就回去修改规格说明,告诉 AI 重新实现。这个循环可以非常快速地进行,因为他不需要自己手写所有的实现代码。

这种工作方式的美妙之处在于,你可以随时做"展示和讨论"(show and tell)。传统上,如果你想验证一个想法,你需要写一个详细的技术文档,然后说服团队成员阅读并提供反馈。但文档再详细,也不如一个可以运行的原型直观。现在,你可以快速生成一个原型,让团队成员实际体验,然后基于反馈迅速迭代。这大大加快了从想法到验证的周期。

但这也带来了新的挑战。团队协作的瓶颈从"能不能实现这个功能"变成了"我们能不能就想要什么达成共识"。Scott 说,很多开发者,特别是那些自认为很聪明的开发者,觉得他们不需要解释自己在做什么,代码本身就是最好的文档。但在 AI 时代,这种态度行不通了。你必须能够清晰地表达你的意图,能够写出让团队成员和 AI 都能理解的规格说明。写作能力,成为了新的超级能力。

这让我想到代码审查的未来。Scott 提出了一个尖锐的问题:如果你诚实地问大多数软件工程师,在做代码审查时,你真的会仔细读完整个 PR 吗?会逐行思考逻辑吗?会把代码拉到本地测试吗?还是只是粗略浏览一下,确认看起来没有明显问题,然后就批准了?大多数人会选择后者。这不是因为开发者不负责任,而是因为彻底的代码审查成本太高,而收益往往不够明显。

AI agent 在这方面可能会改变游戏规则。Agent 非常擅长仔细审查每一行代码,运行测试,检查潜在问题。它们不会累,不会厌烦,可以保持一致的审查标准。这样,人类审查者就可以专注于高层次的问题:这个改动是否符合产品方向?是否解决了用户的真实需求?架构设计是否合理?而具体的实现细节、语法问题、潜在 bug,可以交给 AI 来检查。

PR 和 Issue:20 年没变的协作模式该进化了

GitHub 的 Pull Request 机制已经成为开源协作的标准模式,但 Scott 认为这个模式存在根本性问题。PR 是基于分支的审查,不是基于补丁的审查。这导致了大量的"提交垃圾"——那些"哎呀,修复了一个小 bug"、"忘记添加这个文件了"之类的提交信息。因为在 PR 模式下,重要的是整个分支,而不是单个提交。所以没人真正关心提交信息的质量,PR 描述才是关键,而 PR 描述并不存储在 Git 历史中,合并后通常就丢失了。

在邮件列表时代,这不是问题。每个补丁都有一个精心编写的提交信息,因为那就是你的 PR 描述。审查是基于补丁的,补丁的质量和提交信息的质量直接相关。但在 GitHub 时代,我们失去了这种约束。Scott 认为,未来的代码审查应该回归到基于补丁的模式,但要结合现代工具的优势。审查应该是本地的,你可以实际运行代码、测试功能。Agent 可以帮你运行各种测试,标记潜在问题,你只需要关注那些真正需要人类判断的部分。

还有一个有趣的观点是关于团队间沟通的。Scott 说,软件开发中一直做得不好的事情是团队间的实时沟通。如果你在修改某个文件,我也在修改同一个文件,我们通常要到最后合并时才会发现冲突,然后其中一个人要承担 100%的合并工作。但如果我们能够实时知道对方在做什么呢?对人类来说,这种实时沟通的开销可能太大,会打断工作流程。但对 agent 来说,这不是问题。Agent 可以用它们的空闲时间互相沟通,了解团队中其他人(或其他 agent)在做什么,提前发现潜在冲突,或者主动调整工作策略避免冲突。

GitButler 正在探索的元数据系统也很有意思。他们想要能够把对话记录、agent 的思考过程、相关的上下文信息附加到提交或分支上。Git 目前对这种元数据的支持非常有限。这些信息可能非常有价值,可以帮助理解为什么做出某个决策,代码背后的思考过程是什么。但这也带来了一个大数据问题。Scott 提到,即使只是保存文本,这些元数据的规模也会快速膨胀。他们不得不利用 Git 中一些大型仓库(如 Chrome 或 Microsoft Office 团队使用的)的技术,来处理这种规模的数据。

我对这场变革的思考

看完 GitButler 的故事和 Scott 的访谈,我有一些深刻的感受。软件开发正在经历一场根本性的范式转变,而版本控制系统作为软件开发的基础设施,必须随之演进。Git 的设计理念在 20 年前是先进的,但现在已经成为限制。我们需要的不是"更好的 Git",而是为现代工作流和 AI 时代重新设计的基础设施。

让我特别有共鸣的是 Scott 关于"逻辑终点"的思考。他说,在做语言学习创业时,很多人看到实时翻译技术就说语言学习已死。但他反驳说,即使有完美的翻译器,双方都需要戴着翻译器,而且这种沟通体验远不如直接用同一种语言交流。他曾经在日本带着翻译工作了一周,翻译很优秀,但这种体验仍然不好,你不会想用这种方式建立深度关系或开展复杂合作。对于编程也是一样。AI agent 变得再强大,它们也不能完全替代人类的判断、创造力和沟通能力。

关于 GitHub 的未来,我觉得 Scott 的观点很中肯。GitHub 最大的优势是用户基数,最大的劣势是作为大公司很难快速转向。现在整个行业都在探索什么是"下一个 GitHub",但 Scott 指出,这个问题本身可能问错了。GitHub 本身就不是任何东西的"下一个",它创造了一种全新的协作模式。同样,未来可能会出现一种完全不同的、我们现在还想象不到的协作模式。

我认为 GitButler 的价值不仅在于它提供的具体功能,更在于它代表的思考方式。他们在质疑那些我们习以为常的假设:为什么一次只能在一个分支上工作?为什么提交必须是线性的?为什么 agent 和人类要使用同样的界面?为什么协作必须通过 PR 和 issue 进行?这种从第一性原理出发的思考,正是我们在这个快速变化的时代最需要的。

我也意识到,作为开发者,我们需要培养新的技能。写清晰的规格说明、有效地沟通想法、理解 AI agent 的工作方式——这些可能比单纯的编码能力更重要。这对很多开发者来说可能是个挑战,特别是那些选择编程就是为了避免跟人打交道的人。但这也是一个机会,让我们从低层次的实现细节中解放出来,专注于更有创造性的工作:定义问题、设计解决方案、做出权衡决策。

GitButler 的 1700 万美元融资只是一个开始。我相信未来几年,我们会看到更多重新思考软件开发基础设施的尝试。版本控制、代码审查、项目管理、测试、部署——这些工具都是在 AI 之前的时代设计的,都需要重新审视。那些能够率先适应新范式的开发者和团队,将在这场变革中获得巨大优势。

最终,软件开发会变成一个更加关注沟通、协作和决策的工作,而不是关注语法和实现细节。这听起来可能让一些传统程序员不安,但我认为这是一件好事。它让编程变得更加接近解决问题的本质,而不是被技术细节所困扰。当我们不再需要记住复杂的 Git 命令,不再需要手动解决合并冲突,不再需要花大量时间写重复性代码时,我们就可以把精力投入到真正重要的事情上:理解用户需求、设计优雅的解决方案、创造有价值的产品。这才是软件开发的核心,也是 GitButler 试图帮助我们回归的方向。

免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

|
|
APP下载
Windows
Mac
分享至:

X

Telegram

Facebook

Reddit

复制链接

|
|
APP下载
Windows
Mac
分享至:

X

Telegram

Facebook

Reddit

复制链接

Techub News的精选文章

9分钟前
伊朗战争已经结束了吗?
38分钟前
霍尔木兹海峡的比特币
1小时前
比特币短暂突破 7.6 万美元,加密市场预期改善,8 万美元成关键测试位?
查看更多

目录

|
|
APP下载
Windows
Mac
分享至:

X

Telegram

Facebook

Reddit

复制链接

相关文章

avatar
avatarTechub News
9分钟前
伊朗战争已经结束了吗?
avatar
avatarOdaily星球日报
37分钟前
印钞之外,Tether试图用钱包接管普通人的支付入口
avatar
avatarTechub News
38分钟前
霍尔木兹海峡的比特币
avatar
avatarOdaily星球日报
1小时前
预测市场平台ForeGate正式上线世界杯专题页面
avatar
avatar律动BlockBeats
1小时前
NEET新高,AI meme的另一种文化
APP下载
Windows
Mac

X

Telegram

Facebook

Reddit

复制链接