Git基础设施协调工具

agit是一个为AI编码代理提供Git基础设施感知和协调的工具,支持仓库管理、工作树隔离、冲突检测和任务协调。

  • by Fato07
  • Go
  • 本地部署
  • 1 星标
  • 更新于

使用说明

煽动

面向AI代理的基于基础架构的Git编排。

煽动 为AI编码代理提供对其Git基础架构的持久、可查询的感知。它管理本地存储库注册表,编排Git工作树以实现代理隔离,检测跨工作树冲突,并协调多个代理之间的任务分配。

问题

AI编码代理(Claude Code、Cursor、Codex、OpenClaw)在没有基础设施持久内存的情况下运行。每个会话都是盲目开始的——不知道可用的存储库、活动工作或其他代理正在做什么。当多个代理在同一个仓库上工作时,只有在合并时才会发现冲突。

解决方案

agit提供:

  • 持久注册表 --代理始终知道通过MCP可以获得哪些存储库
  • 工作树隔离 --每个代理都有自己的工作区,不需要踩脚趾
  • 冲突检测 --在合并时间之前了解重叠的更改
  • 任务协调 --代理以原子方式声明工作,防止重复
  • 钉钩系统 --在工作树、任务和冲突事件上触发自定义脚本

快速开始

# Install (binary)
curl -sSfL https://raw.githubusercontent.com/Fato07/agit/main/install.sh | sh

# Or install from source
go install github.com/fathindos/agit@latest

# Initialize
agit init

# Register your repos
agit add ~/projects/my-app --name my-app
agit add ~/projects/api --name api

# Spawn isolated worktrees for agents
agit spawn my-app --task "refactor auth" --agent claude-1
agit spawn my-app --task "add tests" --agent cursor-1

# Check for conflicts
agit conflicts my-app

# See everything at a glance
agit status

# Merge completed work back
agit merge <worktree-id> --cleanup

演示

MCP集成

将agit添加到代理的MCP配置中,以实现自动基础设施感知:

{
  "mcpServers": {
    "agit": {
      "command": "agit",
      "args": ["serve"]
    }
  }
}

现在,任何兼容MCP的代理都可以调用 agit_list_repos() 在启动时,立即知道有什么可用的。

命令

命令 描述
agit init .初始化agit(~/.agit/)。
agit add <path> 注册Git仓库
agit repos 列出已注册的存储库
agit spawn <repo> 为代理创建独立的工作树
agit status [repo] 显示工作树、代理、冲突
agit conflicts [repo] 检查是否有重叠的文件更改
agit tasks <repo> 管理任务(创建/索赔/完成/下一步)
agit agents 列出并管理已注册的AI代理
agit merge <id> 将工作台合并回基分支
agit cleanup 删除已完成/过时的工作树
agit serve 启动MCP服务器(stdio或SSE)
agit update / agit upgrade 自我更新至最新版本
agit config show 显示当前配置
agit config set <key> <value> 设置配置值
agit config path 打印配置文件路径
agit config reset 将配置重置为默认值

全球旗帜

标志 描述
--no-color 禁用彩色输出
-q, --quiet 抑制信息性消息
-o, --output <format> 输出格式: text (默认)或 json
-i, --interactive 启用交互式选择模式

配置

agit将其配置存储在 ~/.agit/config.toml.使用 agit config 子命令或直接编辑文件。

[server]
transport = "stdio"       # "stdio" or "sse"
port = 3847               # Port for SSE transport

[defaults]
branch_prefix = "agit/"           # Prefix for auto-generated branch names
worktree_dir = ".worktrees"       # Directory for worktrees within repos
cleanup_stale_after = "24h"       # Duration before stale worktrees are cleaned
auto_conflict_check = true        # Check for conflicts automatically

[agent]
heartbeat_interval = "30s"        # Agent heartbeat frequency
stale_after = "5m"                # Duration before agents are marked disconnected

[ui]
color = ""                # "auto", "always", or "never" (empty = auto)
output_format = ""        # "text" or "json" (empty = text)
compact = false           # Compact output mode

[updates]
enabled = true            # Enable automatic update checking
check_interval = "24h"   # How often to check for updates

hook_timeout = "30s"      # Maximum execution time for hooks

[hooks]
# Run shell commands on events (async, non-blocking)
# "worktree.created" = "notify-send 'New worktree created'"
# "task.claimed" = "echo $AGIT_TASK_ID >> /tmp/claimed.log"
# "task.completed" = "./scripts/on-task-done.sh"
# "task.failed" = "curl -X POST https://hooks.example.com/fail"
# "worktree.removed" = "echo cleaned"
# "conflict.detected" = "slack-notify 'Conflict found'"

支持的挂钩事件: worktree.created, worktree.removed, task.claimed, task.completed, task.failed, conflict.detected

钩子接收环境变量: AGIT_EVENT,加上特定于事件的变量,如 AGIT_WORKTREE_ID, AGIT_TASK_ID, AGIT_REPO.

所有点符号键 agit config set:

server.transport, server.port, defaults.branch_prefix, defaults.worktree_dir, defaults.cleanup_stale_after, defaults.auto_conflict_check, agent.heartbeat_interval, agent.stale_after, ui.color, ui.output_format, ui.compact, updates.enabled, updates.check_interval, hook_timeout, hooks.<event>

MCP工具参考

作为MCP服务器运行时(agit serve),代理可以使用以下工具:

工具 说明
agit_list_repos 列出所有已注册的存储库
agit_repo_status 获取特定存储库的详细状态
agit_spawn_worktree 为代理创建独立的工作树
agit_remove_worktree 从磁盘和注册表中删除工作树
agit_check_conflicts 扫描活动工作树中的文件冲突
agit_list_tasks 列出存储库的任务
agit_claim_task 原子性地声明代理的未决任务
agit_complete_task 使用可选结果将任务标记为已完成
agit_merge_worktree 将工作树分支合并到默认分支中
agit_register_agent 注册新的AI代理
agit_heartbeat 更新代理心跳时间戳
agit_create_task 为存储库创建新任务
agit_fail_task 将任务标记为失败,并注明可选原因
agit_start_task 使用工作台将已声明的任务标记为正在进行中
agit_list_agents 列出所有已注册的AI代理
agit_list_worktrees 列出存储库的工作树
agit_get_task 获取特定任务的详细信息
agit_add_repo 通过MCP注册Git存储库
agit_cleanup_worktrees 修剪孤儿工作树
agit_next_task 原子性地声明最高优先级的待处理任务

许可证

麻省理工学院