Git 集成#

背景#

目前,管理 AI 修改有两种方法:基于 git 的解决方案和基于检查点的解决方案。我们认为 git 方法更优,因为它可以有效利用现有的 IDE 审查工具,提供清晰的时间线,并具有良好的回滚特性。因此,我们决定让 MoonBit Pilot 使用 git 来管理手动用户修改和 agent 修改。

你再也不用担心 AI 会对代码进行混乱的修改了!

设置#

我们首次引入一个配置文件。在你当前的项目中创建一个文件 .moonagent/moonagent.yml,内容如下:

# MoonBit Pilot 项目配置
# 此配置文件控制此项目的 moon pilot 行为

# 文件修改时启用自动提交
auto_commit: true

之后,重启并进入 moon pilot,使更改生效。

工作原理#

MoonBit Pilot 遵循结构化的 git 工作流程,以确保用户和 agent 修改之间的清晰分离:

检测阶段#

当你提交一个需求时,MoonBit Pilot 首先会分析当前的 git 状态,以检测任何未提交的更改。这包括:

  • 工作目录中已修改的文件

  • 已暂存准备提交的更改

  • 可能与你的项目相关的新未跟踪文件

用户工作保存#

如果 MoonBit Pilot 检测到你之前修改过代码,它会在进行任何修改之前自动为你的工作创建一个提交。这确保了你的更改被安全地保存下来,并附有一条清晰的提交信息,例如:

moonagent_pre_user work before implementing authentication

Agent 修改#

在保存你的工作之后,MoonBit Pilot 会继续进行自己的修改。它会分析你的需求,实现必要的更改,并创建一个带有描述性信息的独立提交:

moonagent_post_implemented JWT authentication with tests

工作流优势#

这种双提交方法提供了:

  • 清晰归属:区分用户和 agent 的贡献

  • 安全实验:在 agent 修改之前,你的工作总是被保存的

  • 粒度控制:每个变更集都可以独立地进行审查、修改或恢复

  • 冲突解决:通过维护清晰的提交边界来减少合并冲突

管理提交历史#

如果你不喜欢这些提交信息,你可以:

  1. 变基:使用交互式变基将多个提交合并为一个

  2. 重写:添加你偏好的提交信息

  3. 提交:创建一个合适的 PR 进行提交

这种方法有几个好处:

  • 清晰的历史记录:每个更改都带有时间戳和归属信息

  • 轻松审查:使用熟悉的 git 工具审查更改

  • 安全回滚:如果需要,可以轻松地恢复特定更改

  • 协作:使用标准的 git 工作流程共享和讨论更改

最佳实践#

  • 在合并到主分支之前审查 agent 的提交

  • 在使用 MoonBit Pilot 时使用有意义的分支名称

  • 在创建拉取请求之前合并相关的提交

  • 保持 git 历史记录的整洁以便更好地协作