合并
merge
/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-14. 清理工作树
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