如果 AI 编写代码,会话记录是否应成为提交的一部分?

如果 AI 编写代码,会话记录是否应成为提交的一部分?

Hacker News 摘要

原标题:If AI writes code, should the session be part of the commit?

git-memento 是一个 Git 扩展工具,专门用于记录产生代码提交时的 AI 编程会话。它的核心功能是在执行 Git 提交后,将清理后的 Markdown 格式对话记录作为 git notes 附加到新的提交上。

主要目标

• 允许开发者使用标准的 Git 流程(如 -m 或编辑器模式)创建提交。

• 将 AI 会话的追踪记录与提交相关联。

• 保持对 AI 供应商的可扩展支持,目前首选支持 Codex。

• 生成易于人类阅读的 Markdown 格式笔记。

核心命令介绍

初始化配置:使用 git memento initgit memento init claude 来初始化每个存储库的设置。配置信息存储在本地 git 元数据中。

执行提交:通过 git memento commit <session-id> -m "消息" 来提交代码。如果不提供 -m 参数,它会像普通 Git 一样打开默认编辑器。

修订提交git memento amend 用于修正最近的提交。如果不带会话 ID,它会复制前一次的笔记;如果带有新的 ID,则会追加新的会话内容。单个提交的笔记可以包含来自不同 AI 供应商的多个会话。

共享与同步

1. git memento share-notes:将笔记推送到远程仓库,并配置本地环境以便团队成员可以获取这些笔记。

2. git memento push:在一个命令中同时推送分支并同步笔记。

3. git memento notes-sync:安全地从远程获取并合并笔记,具有备份功能。

重写处理git memento notes-rewrite-setup 可以配置 Git 在进行 rebase 或 amend 等重写操作时自动搬运笔记。git memento notes-carry 则手动将指定范围内的笔记属性迁移到新提交上。

审计与诊断:使用 git memento audit 检查特定提交范围内是否缺失笔记或元数据是否损坏。git memento doctor 用于诊断供应商配置、引用路径和远程同步状态。

AI 供应商配置

工具通过环境变量或 Git 本地配置来管理供应商。默认支持 CodexClaude Code。开发者可以自定义供应商的二进制文件路径、获取会话的命令参数以及列出会话的参数。如果提交时未找到指定的会话 ID,工具会调用供应商接口列出可用会话供用户选择。

GitHub Action 集成

该项目包含一个可复用的 GitHub Action,支持两种运行模式:

1. comment 模式:这是默认模式,它会读取提交中的 git notes,并将其作为评论发布在 GitHub 的提交记录或拉取请求(Pull Request)中。

2. gate 模式:作为 CI 门控使用。它运行审计命令,如果发现提交缺少必要的 AI 会话笔记,则会导致 CI 任务失败。

通过在工作流文件中引用 mandel-macaque/memento,开发者可以自动化管理代码库中的 AI 会话文档。

安装与构建

安装方式:支持通过 curl 脚本直接从 GitHub Release 下载最新版本的二进制文件。

本地构建:该项目基于 .NET SDK 10 开发,并使用 NativeAOT 技术编译为独立的可执行文件。支持 macOS (arm64)、Linux (x64) 以及 Windows (x64) 平台。

集成方式:将编译后的 git-memento 文件放入系统的 PATH 路径中,Git 就能自动识别并允许用户通过 git memento 调用它。

存储机制

笔记内容通过 git notes add 命令写入。为了支持多会话管理,笔记中使用了特定的 HTML 注释作为分界符,例如 git-memento-session:startgit-memento-session:end。在 Markdown 格式的对话记录中,用户的消息会标注为 Git 用户名,而助手消息会标注为对应的 AI 供应商名称。


原文:https://github.com/mandel-macaque/memento

评论:https://news.ycombinator.com/item?id=47212355

Report Page