← 返回博客

用自己的密钥生成 AI commit 信息:你的 diff 绝不经过我们的服务器

feature privacy

AI 生成 commit 信息为什么有用 -- 以及它的边界在哪里

每个开发者都经历过这样的时刻。你刚结束一场漫长的重构,staging 里的 diff 涉及十几个文件,而 Git 要求你用一两行话把这一切总结出来。你敲下"重构了一些东西",对自己承诺总有一天会写出更好的信息,然后继续干活。半年之后,你在历史记录里翻来翻去,努力回忆"重构了一些东西"到底改了什么。

这正是 AI commit 信息生成器真正能解决的问题。语言模型恰好擅长这项任务:它读取 staging 中的 diff,注意到所有变更 -- 包括你忘了自己碰过的那个配置文件 -- 然后起草一条描述变更本身、而不是你晚上七点心情的信息。对于涉及大量文件的大型 commit,这对未来的你、对任何将来要查看你历史记录的人,都是一份实实在在的礼物。

对另一面我们也同样坦诚:对于琐碎的单行改动,AI 是多余的。如果你只是改了个错别字,直接敲"Fix typo in README"永远比任何一次生成往返都快,没有哪个模型能写得更好。AI commit 信息的意义不在于取代你对一个字符改动的判断,而在于把真正难以总结的变更中的繁琐劳动去掉。

没人问的问题:谁的服务器看到了你的 diff?

当 Git 客户端开始添加 AI 功能时,大多数都遵循同一套剧本:应用把你的 diff 发送到厂商自己的云端,厂商的后端再把它转发给模型提供商,响应沿着同一条管道返回。这通常被包装成便利 -- 无需配置 API 密钥 -- 而且常常捆绑在带有每月"AI 额度"配额的订阅里。

现在想想那条管道里实际流动的是什么。diff 不是元数据。它是你的源代码:尚未发布的功能、还没上线的安全修复、同事不小心放进 staging 的凭据。当 AI 请求经由厂商服务器代理时,该厂商的基础设施会看到这一切。你不再只是信任一个模型提供商,你还在信任一个中间人 -- 它的日志配置、它的数据保留策略、它的分包处理方,以及下一次收购之后它的条款会变成什么样。

明确说一句:我们并不是在指控某家特定公司不当处理你的 diff。问题是结构性的。路径上每多一方,就多一方需要你去信任、去审计、并长期持续信任 -- 而在大多数情况下,你没有任何办法核实其中任何一点。如果你读过GitSquid 为什么坚持零遥测,你已经知道我们对自己成为"那一方"是什么态度。

GitSquid 的答案:自带密钥

GitSquid 选择了另一条路。当你在 GitSquid 中使用 AI 功能时,请求从你的机器直接发往你自己配置的提供商。路径上没有 GitSquid 的服务器 -- 这不是一条我们承诺遵守的政策,而是架构层面的事实:它们根本不存在。没有代理,没有 token 加价,没有中间人的数据保留,因为根本没有中间人。

在设置 → AI 中选择提供商:

  • Anthropic Claude。粘贴你的 API 密钥,请求就从 GitSquid 直达 Anthropic。
  • OpenAI。同样的模式:你的密钥、你的账户、直接连接。
  • Claude Code。如果你已经安装了 Claude Code CLI,GitSquid 会在本地驱动它。完全没有 API 密钥需要粘贴。
  • Gemini CLI。在 v2.7.7 中加入,同样免密钥:GitSquid 复用你已有的 Gemini CLI 登录。
  • 任意自定义 OpenAI 兼容 endpoint。把 GitSquid 指向任何说 OpenAI API 的服务器 -- 包括在你自己机器上运行于 OpenAI 兼容服务之后的本地模型。在这种配置下,你的 diff 甚至不会离开你的电脑。

使用 Anthropic、OpenAI 和自定义 OpenAI 兼容提供商时,生成的文本会随到随显地流式呈现,你可以在草稿写出来的同时阅读它。Claude Code 在完成时一次性返回整块结果 -- 这是 CLI 的限制,不是 GitSquid 的。无论哪种方式,生成都可以取消:请求进行中时,生成按钮会变成取消按钮,解释功能也有自己的停止按钮。没有任何东西在你背后继续运行。

还有一个我们在意的小细节:GitSquid 中每一个由 AI 驱动的菜单项和按钮都标有闪光图标。在点击之前,你永远知道某个操作是否会向你的 AI 提供商发送内容。

三大 AI 功能实战

1. commit 信息生成

像往常一样把变更放进 staging,然后点击生成。AI 读取 staging 中的 diff -- 仅限 staging 中的 diff -- 并起草一条描述它的 commit 信息。你可以编辑它、接受它,或者扔掉自己重写。它是草稿,不是命令:commit 仍然属于你。

2. AI pull request 描述

创建 pull request 对话框里有一个"用 AI 生成"按钮,它会把结构化的描述 -- 摘要、变更、测试计划 -- 直接流式写入正文。如果你的仓库有 PULL_REQUEST_TEMPLATE.md,GitSquid 会尊重它:AI 填写你团队的模板,而不是用自己的格式碾压过去。

3. AI 解释,无处不在

右键点击图谱中的某个 commit、diff 中的某个 hunk 头,或任意文件 -- 无论是否在 staging 中 -- 然后请求解释。你会得到一份关于这个变更做了什么的内联拆解。它同样适用于考古("这个 2023 年的 commit 到底干了什么?")、在 commit 之前审查自己的工作,以及在陌生代码库中找到方向。

实际成本是多少

因为密钥是你自己的,你直接向提供商付费 -- 而且只为你用掉的部分付费。一次 commit 信息生成只发送一条大致和你的 diff 一样大的 prompt。按当前的 API 定价,这通常只是一美分的零头。我们刻意不引用确切数字:提供商会调价,模型各不相同,印在这里的任何数字最终都会过时。诚实的回答才是最好的回答:去查你提供商的价目表,再看看你自己的账单。

而这正是关键所在。每一次请求都会出现在你的账单上,由你的提供商开具,我们不加价,中间也没有不透明的"额度"套餐。如果你走 Claude Code 或 Gemini CLI 的路线,你复用的是已经在付费的工具和套餐。而如果用 OpenAI 兼容 endpoint 背后的本地模型,一条 commit 信息的边际成本大约就是生成它所耗的电费。

用你的语言回答

还有一件裸 API 密钥不会自带的东西:设置 → AI 允许你为每个 AI 功能选择响应语言 -- 十种语言可选,外加"与应用一致"。这样你可以为国际化团队用英文生成 commit 信息和 pull request 描述,而 AI 解释则以你真正用来思考的语言呈现。

你的密钥,你的数据,你的账单

AI 套件 -- commit 信息生成、pull request 描述和解释功能 -- 是 GitSquid Pro 的一部分,每年 49 EUR。免费版覆盖日常 Git 工作;Pro 增加的是替你分担繁琐劳动的功能。无论哪种情况,架构都是一样的:无需账户,零遥测,你的 diff 和你的 AI 提供商之间没有 GitSquid 的服务器,因为 GitSquid 的服务器根本不存在。

如果你想看看这与市场上其他产品相比如何,我们的 Git GUI 遥测对比梳理了主流客户端都往家里发送了什么。如果你更想直接上手:下载 GitSquid,接上你的密钥 -- 或你的 CLI,或你的本地模型 -- 让 AI 来写 commit 信息,而你的 diff 严格只存在于你和你的提供商之间。