在 TiDB Cloud Filesystem 上为智能体准备 Git 工作区
在大型仓库完成下载前启动智能体任务。当临时机器上的智能体需要立即检查或编辑文件时,可使用带后台补全的 blobless Git 工作区。
工作原理
ti fs-git clone-git-workspace --blobless --hydrate background 会注册一个 Git 工作区,并在所有干净 blob 完成下载之前暴露其文件树。智能体可以在 ti 下载其余干净文件内容并填充本地 Git 对象数据库的同时开始工作。这个后台过程称为补全,可减少重复的按需抓取。在补全完成前的读操作会使用 Git 的惰性抓取来检索缺失的数据。
替换后的智能体运行时可以访问已注册的工作区。在丢弃原始机器之前,请按照下方清理指南中的说明保留本地 Git 历史记录。使用你常用的工具编辑文件,并使用 Git 命令进行提交、抓取和推送。
前提条件
- 选择一个文件系统。
- 使用 Linux FUSE,或在 macOS 上安装 macFUSE 并显式指定
--driver fuse。Git 工作区依赖 FUSE 将远程 Git 树和工作区变更组合到挂载路径中;WebDAV 挂载不提供这种集成。 - 安装 Git 并配置仓库认证。
第 1 步:挂载工作区
mkdir -p /path/to/workspace
ti fs mount-file-system \
--mount-path /path/to/workspace \
--driver fuse \
--mount-profile coding-agent
第 2 步:创建工作区并在后台补全
ti fs-git clone-git-workspace \
--repo-url https://github.com/pingcap/tidb.git \
--target-path /path/to/workspace/tidb \
--blobless \
--hydrate background
现在工作区树已可用,补全过程会在后台继续进行。让智能体使用普通命令开始工作:
find /path/to/workspace/tidb -maxdepth 2 -type f | head
git -C /path/to/workspace/tidb status
在执行确定性基准测试之前,或在对刷写挂载之前,你可以显式等待补全完成:
ti fs-git hydrate-git-workspace \
--target-path /path/to/workspace/tidb \
--timeout 30m
第 3 步:创建智能体工作树
ti fs-git add-git-worktree \
--base-path /path/to/workspace/tidb \
--worktree-path /path/to/workspace/tidb-agent-task \
--branch-name agent-task
现在,智能体可以使用普通工具:
git -C /path/to/workspace/tidb-agent-task status
在移除工作树之前,请先提交所需的更改。在丢弃机器之前,请通过推送或经验证的本地 Git 元信息备份来保留并验证 Git 历史记录。
清理
ti fs-git remove-git-worktree \
--worktree-path /path/to/workspace/tidb-agent-task
ti fs unmount-file-system --mount-path /path/to/workspace
仅当可以丢弃未提交更改时,才对工作树移除使用 --force。文件系统卸载会自动执行优雅的刷写;仅当你需要在不卸载的情况下将远程工作刷写出去时,才单独使用 ti fs drain-file-system。
安全与操作说明
- 仓库凭据由 Git 管理,而不是
ti。 coding-agent挂载预设会将 Git 元信息、依赖关系目录、缓存、构建输出以及其他生成文件保留在本地机器上,以提升性能。- 由
coding-agent配置保留在本地的文件会随着临时机器消失。仅有本地提交并不能在不同机器之间保留 Git 历史记录。请推送并验证所需的提交,并使用带有显式--path值的pack-file-system来保留其他无法重新构建的本地文件。