AI 写代码的恐惧

用 AI coding agent 构建复杂项目,需要多轮对话、反复迭代。

你会害怕什么?

  • 第 1 轮:AI 改了 30 个文件,300 处修改,review 到第 50 处就崩溃
  • 第 2 轮:继续让 AI 改,它把刚 review 过的代码又改了
  • 第 3 轮:最新改动破坏了逻辑,想回退到上一个好状态,但没有可信的 checkpoint
  • 第 N 轮:代码处于混乱状态,越来越超出你的控制

核心痛点:多轮迭代中,AI 能写代码,但你不知道如何安全、高效地接管。

现有 AI IDE 给了一堆功能,没给你控制权

更糟的是:AI 写的代码直接推给队友 review,owner 自己都没逐行看过。Owner 必须是第一个 reviewer。 AI 是辅助工具,不是替代品。

这些问题在 Databend 开发中越来越明显。近 190 万行 Rust 代码,模块众多,AI coding agent 使用率越来越高。放手让 AI 随便改?不敢想象。限制太死?拖慢迭代速度。

需要在完全 vibe coding(AI 随便写)和传统 coding(纯手写)之间找到平衡:AI 强力辅助,人严格把控,代码质量像人写的。

工欲善其事,必先利其器。于是我开发了 Snowtree让你敢放心地让 AI 写代码。

Snowtree 是一个桌面应用,管理多个 AI coding agent 会话,通过 worktree 隔离 + 增量 review 让你掌控 AI 代码。

它解决三个核心问题:隔离 git 代码减少干扰、保持 AI agent 最新能力、多轮迭代的安全接管。

Snowtree

Snowtree 做什么?

一句话:从隔离环境到 PR,完整闭环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ Worktree │────▶│ AI Coding │────▶│ Changes │
│ 隔离环境 │ │ Codex/Claude│ │ 代码变更 │
└─────────────┘ └─────────────┘ └─────────────┘

┌───────────────────────────────────────┘

┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Review │────▶│Stage/Restore│────▶│ Commit │
│ 逐行审查 │ │ 选择保留 │ │ 提交快照 │
└─────────────┘ └─────────────┘ └─────────────┘


┌─────────────┐
│ Create/ │
│ Sync PR │
└─────────────┘

完整工作流

  1. Worktree 隔离:为每个 AI 会话创建独立的 git worktree,主仓库零干扰
  2. AI Coding:在隔离环境中调用 Codex 或 Claude Code CLI 进行编码
  3. Changes 生成:AI 完成后,自动展示所有代码变更
  4. 逐行 Review:按 hunk 逐行审查,看清 AI 改了什么
  5. Stage or Restore:满意的 hunk 点 Stage 保留,不满意的 Restore 丢弃
  6. Commit:将 staged 的代码提交,形成可信快照
  7. Create/Sync PR:基于 commit 一键创建或同步到远程 PR

这就是 Snowtree 的核心价值:把 AI 的自由发挥和人的严格把控串成一条流水线

三个核心设计理念

1. 基于 Git Worktree 的并行隔离

习惯用 git branch,但同一时刻只能开发一个分支。

想象这个场景:Codex 正在重构模块,突然来了紧急 bug。停下来等 AI 完成?还是先 commit 再切 branch?

Snowtree 方案:每个 AI 会话独立的 worktree。

1
2
3
4
5
6
7
8
9
main-repo/
├── .git/
├── src/
└── ...

~/.snowtree/worktrees/
├── session-1-refactor/ # Codex 在重构模块
├── session-2-bugfix/ # Claude 在修紧急 bug
└── session-3-feature/ # 另一个 AI coding agent 开发新功能

Snowtree Chat

完全隔离,互不干扰。AI 随便改,不影响主工作区,不和其他会话冲突。完成后合并、删除 worktree,干净利落。

2. 原生 AI Coding Agent 能力,不做封装

很多 AI IDE 封装或”改进” AI coding agent,结果:

  • 永远落后于官方(Claude Code 和 Codex 更新频繁,最清楚如何适配自己的模型)
  • 最新特性用不上
  • 自己实现的还不如原版

哲学:最大化利用原生 CLI,零封装。

直接调用本机的 Claude Code 和 Codex CLI,通过 PTY 启动真实进程,捕获输出,不改行为。

只做一件事:管理会话和工作流,不重新发明 AI coding agent。

3. 人必须掌控 AI 代码:Review-Stage-Commit 工作流

核心中的核心。

我的实战经验:每轮对话后,觉得可以就赶紧 commit,防止下轮 AI 改动破坏又无法回退。

这其实就是增量 snapshot 思路:确认的立刻保存(stage),每次只 review 新增改动。

传统工作流

1
2
3
AI 改代码 → 一次性 review 全部 → commit

太多,review 不过来

Snowtree 工作流:增量 review + snapshot

1
2
3
4
5
Round 1: AI 改代码 → Review → Approve → Stage (snapshot)

Round 2: AI 继续改 → 只 review 增量 → Approve → Stage

Round N: 重复... → 全部通过 → Commit → Create/Push PR

Snowtree Diff Review

核心:Stage = Snapshot

Approve 的代码立刻 stage,保存在 staging area。AI 随便继续改,我只 review 新增量。甚至可以中途 commit,sync 到 GitHub PR,万无一失。

核心优势:

  • 分批 review:每次看几个文件,不被淹没
  • 按行控制:不爽的代码不做 stage,继续对话让 AI 重改
  • 安全迭代:staged = snapshot,AI 怎么改都不影响

适合谁?

有经验、想认真 review AI 代码的开发者。

开源

项目地址:https://github.com/bohutang/snowtree (Apache 2.0)

核心:极简、原生、可控


参考了 Zed/OpenCode 等优秀 IDE 的设计风格,基于他们的代码,由 Codex 和 Claude Code 交替蒸馏,加上我的产品观。