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 修改之前,你的工作总是被保存的
粒度控制:每个变更集都可以独立地进行审查、修改或恢复
冲突解决:通过维护清晰的提交边界来减少合并冲突
管理提交历史#
如果你不喜欢这些提交信息,你可以:
变基:使用交互式变基将多个提交合并为一个
重写:添加你偏好的提交信息
提交:创建一个合适的 PR 进行提交
这种方法有几个好处:
清晰的历史记录:每个更改都带有时间戳和归属信息
轻松审查:使用熟悉的 git 工具审查更改
安全回滚:如果需要,可以轻松地恢复特定更改
协作:使用标准的 git 工作流程共享和讨论更改
最佳实践#
在合并到主分支之前审查 agent 的提交
在使用 MoonBit Pilot 时使用有意义的分支名称
在创建拉取请求之前合并相关的提交
保持 git 历史记录的整洁以便更好地协作