煽动
   ](https://github.com/Fato07/agit/blob/main/go.mod) 
面向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 --cleanup演示
MCP集成
将agit添加到代理的MCP配置中,以实现自动基础设施感知:
{
"mcpServers": {
"agit": {
"command": "agit",
"args": ["serve"]
}
}
}现在,任何兼容MCP的代理都可以调用 agit_list_repos() 在启动时,立即知道有什么可用的。
命令
| 命令 | 描述 |
|---|---|
agit init .初始化agit(~/.agit/)。 | |
| `agit add | |
| ` | 注册Git仓库 |
agit repos | 列出已注册的存储库 |
agit spawn | 为代理创建独立的工作树 |
agit status [repo] | 显示工作树、代理、冲突 |
agit conflicts [repo] | 检查是否有重叠的文件更改 |
agit tasks | 管理任务(创建/索赔/完成/下一步) |
agit agents | 列出并管理已注册的AI代理 |
agit merge | 将工作台合并回基分支 |
agit cleanup | 删除已完成/过时的工作树 |
agit serve | 启动MCP服务器(stdio或SSE) |
agit update / agit upgrade | 自我更新至最新版本 |
agit config show | 显示当前配置 |
agit config set | 设置配置值 |
agit config path | 打印配置文件路径 |
agit config reset | 将配置重置为默认值 |
全球旗帜
| 标志 | 描述 |
|---|---|
--no-color | 禁用彩色输出 |
-q, --quiet | 抑制信息性消息 |
-o, --output | 输出格式: 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.
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 | 原子性地声明最高优先级的待处理任务 |
许可证
麻省理工学院
