合并

merge
分类通用
作者Alireza Rezvani
许可MIT
评分4.20/5
使用2.5K

/hub:merge — 合并获胜者

将表现最佳的 agent 分支合并到基准分支,通过 git 标签归档失败分支,并清理工作树。

用法

code
/hub:merge                                       # 合并最近会话的获胜者
/hub:merge 20260317-143022                       # 合并指定会话的获胜者
/hub:merge 20260317-143022 --agent agent-2       # 明确指定获胜者

执行流程

1. 确定获胜者

如果指定了 --agent,则使用该 agent。否则,使用最近一次 /hub:eval 中排名第一的 agent。

2. 合并获胜者

bash
git checkout {base_branch}
git merge --no-ff hub/{session-id}/{winner}/attempt-1 \
  -m "hub: merge {winner} from session {session-id}

Task: {task}
Winner: {winner}
Session: {session-id}"

3. 归档失败者

针对每个非获胜 agent:

bash
# 创建归档标签(永久保留提交记录)
git tag hub/archive/{session-id}/{agent-id} hub/{session-id}/{agent-id}/attempt-1

删除分支引用(提交记录通过标签保留)

git branch -D hub/{session-id}/{agent-id}/attempt-1

4. 清理工作树

bash
python {skill_path}/scripts/session_manager.py --cleanup {session-id}

5. 合并后总结

写入 .agenthub/board/results/merge-summary.md

markdown
---
author: coordinator
timestamp: {now}
channel: results
---

合并总结

  • 会话 (Session): {session-id}
  • 获胜者 (Winner): {winner}
  • 合并至 (Merged into): {base_branch}
  • 已归档 (Archived): {loser-1}, {loser-2}, ...
  • 清理工作树数量: {count}

6. 更新状态

bash
python {skill_path}/scripts/session_manager.py --update {session-id} --state merged

安全机制

  • 合并前与用户确认 — 先展示 diff 摘要
  • 严禁强制推送 (force-push) — 始终使用 --no-ff 合并以保持清晰的历史记录
  • 归档而非删除 — 失败 agent 的提交记录通过标签保留
  • 清理工作树 — 不要在磁盘上留下孤立目录

合并后通知

告知用户:

  • 获胜者已合并至 {base_branch}

  • 失败者已通过标签 hub/archive/{session-id}/agent-{N} 归档

  • 工作树已清理

  • 会话状态:merged