这个脚本解决 4 件事:
- 为 AI 创建 worktree + 分支
- 列出当前 AI worktree
- 完成后安全清理
- 防止误删 / 误用
#!/usr/bin/env bash
set -e
BASE_BRANCH="dev"
PREFIX="ai"
WT_PREFIX="wt-ai"
usage() {
cat <<EOF
Usage:
$0 create <task>
$0 list
$0 remove <task>
Examples:
$0 create javadoc
$0 create refactor
$0 list
$0 remove javadoc
EOF
}
cmd="$1"
task="$2"
branch="${PREFIX}/${task}"
dir="../${WT_PREFIX}-${task}"
case "$cmd" in
create)
if [[ -z "$task" ]]; then
echo "❌ task is required"
usage
exit 1
fi
if git show-ref --verify --quiet "refs/heads/${branch}"; then
echo "❌ branch ${branch} already exists"
exit 1
fi
echo "🚀 Creating AI worktree:"
echo " branch: ${branch}"
echo " dir: ${dir}"
echo " base: ${BASE_BRANCH}"
git worktree add "${dir}" -b "${branch}" "${BASE_BRANCH}"
echo "✅ Done"
;;
list)
git worktree list
;;
remove)
if [[ -z "$task" ]]; then
echo "❌ task is required"
usage
exit 1
fi
echo "🧹 Removing AI worktree:"
echo " branch: ${branch}"
echo " dir: ${dir}"
git worktree remove "${dir}"
git branch -d "${branch}"
echo "✅ Cleaned"
;;
*)
usage
;;
esac
chmod +x worktree.sh
./worktree.sh create javadoc
./worktree.sh create changelog
./worktree.sh list
./worktree.sh remove javadoc
- 每个 AI 都在 独立沙盒
- 分支 / 目录 / 语义强绑定
- 用完即删,不留“幽灵 worktree”
你可以直接放进 AI_WORKFLOW.md 或 CONTRIBUTING.md
AI 只能在 ai/* 分支中工作
1 AI = 1 worktree = 1 branch
AI 只能:
- 修改代码
- 提交 commit
merge / rebase 只能由人完成
所有 AI 分支必须直接基于 dev
AI worktree 是一次性产物,用完必须删除
AI 不得修改:
- .gitconfig
- .git/hooks
- CI workflow
- 分支命名:ai/
- 目录命名:wt-ai-
- commit message 必须标明 AI 来源:
feat(javadoc): generate class-level Javadoc [AI]
这是整个体系最重要的一部分。
dev
├─ ai/javadoc → wt-ai-javadoc → commit
├─ ai/refactor → wt-ai-refactor → commit
└─ ai/changelog → wt-ai-changelog → commit
↓
人工 Review
↓
人工 Merge 到 dev
↓
删除 AI worktree
./worktree.sh create javadoc
👉 把 ../wt-ai-javadoc 交给 AI
AI 只能:
- 修改代码
- 提交 commit(可多次)
禁止:
- merge
- rebase
- pull dev
git checkout ai/javadoc
git log --oneline
确认 AI 工作完成
你只需要做 3 件事:
git diff dev..ai/javadoc
git log dev..ai/javadoc
git show <commit>
你在这一阶段是 架构师 / 审核者,不是执行者。
git checkout dev
git merge ai/javadoc
适合:
- 功能型 AI
- 文档 / Javadoc / Changelog
git checkout ai/javadoc
git rebase dev
git checkout dev
git merge ai/javadoc
适合:
- 小而干净的 AI 改动
./worktree.sh remove javadoc
本文档定义了 AI 参与代码开发时的统一工作流规范, 目标是:并行、高效、可控、可回滚、不污染主线。
适用场景:
- 单人 / 小团队项目
- AI 作为“虚拟工程师”参与开发
- 多个 AI 同时处理不同任务(Javadoc、重构、生成代码、文档等)
- AI 只负责 产出代码
- 所有合并、发布、回滚必须由人类完成
AI ≠ Committer ≠ Maintainer
-
每个 AI 拥有:
- 一个独立分支(
ai/<task>) - 一个独立工作区(
wt-ai-<task>)
- 一个独立分支(
-
AI 之间 绝不共享目录或分支
-
dev是开发主分支,保持:- 可构建
- 可测试
-
所有 AI 分支都直接基于
dev创建 -
main是发布分支,仅用于发布稳定版本
ai/<task>
示例:
ai/javadocai/refactor-psiai/changelog
wt-ai-<task>
示例:
wt-ai-javadocwt-ai-refactor-psi
⚠️ 所有 worktree 目录 必须位于主仓库同级目录,不得嵌套在仓库内部
- 本地仓库 clean
dev为最新状态
git checkout dev
git pull --rebase./worktree.sh create javadoc效果:
- 创建分支:
ai/javadoc - 创建目录:
../wt-ai-javadoc - 分支基线:
dev
AI 只允许:
- 修改代码
- 新增 / 删除文件
- 本地提交 commit
AI 严禁:
mergerebasepull dev- 修改 CI / Git 配置
确认 AI 已完成任务:
git checkout ai/javadoc
git log --oneline必须完成以下检查:
git diff dev..ai/javadoc
git log dev..ai/javadocReview 重点:
- 是否符合设计意图
- 是否引入不必要的复杂度
- 是否影响公共 API / 行为
git checkout dev
git merge ai/javadoc适用:
- 文档
- Javadoc
- 生成代码
git checkout ai/javadoc
git rebase dev
git checkout dev
git merge ai/javadoc适用:
- 小而干净的 AI 改动
./worktree.sh remove javadoc效果:
- 删除 worktree 目录
- 删除
ai/javadoc分支
AI 只能在 ai/* 分支中工作
1 AI = 1 worktree = 1 branch
AI 分支不得基于其他 ai/* 分支
merge / rebase 只能由人类完成
AI worktree 为一次性产物,用完即删
- CI / Workflow
- Git hooks
- 版本号
- 发布脚本
所有 AI 提交必须显式标注来源:
feat(javadoc): generate class-level Javadoc [AI]
refactor(psi): simplify visitor logic [AI]
parent/
├─ project/ ← 主仓库(dev 分支)
├─ wt-ai-javadoc/ ← AI #1
├─ wt-ai-refactor/ ← AI #2
└─ wt-ai-changelog/ ← AI #3
- 可以 push 到 ai/ 分支*
- 不得 push 到 main 或 dev
- 直接丢弃分支
- 删除 worktree
- 不影响主线
- Worktree 是 AI 的执行空间
- 分支是 AI 的责任边界
- Dev 是开发主分支
- 人类拥有最终合并权
这套流程的目标不是“让 AI 更自由”, 而是:
让 AI 可控、可并行、可审计、可回滚
This workflow is intentionally conservative by design.