返回顶部
f

fork-manager分支管理工具

Manage forks with open PRs - sync upstream, rebase branches, track PR status, and maintain production branches with pending contributions. Supports automatic conflict resolution via --auto-resolve flag (spawns AI subagents to resolve rebase conflicts). Use when syncing forks, rebasing PR branches, building production branches that combine all open PRs, reviewing closed/rejected PRs, or managing local patches kept outside upstream. Requires Git and GitHub CLI (gh).

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 2.0.1
安全检测
已通过
1,451
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

fork-manager

Fork Manager Skill

管理你贡献了PR但同时也希望在合并到上游之前使用改进的分支。包括对本地补丁的支持——即使上游PR被关闭/拒绝,修复也会保留在生产分支中。

何时使用

  • - 将分支与上游同步
  • 检查开放PR的状态
  • 将PR分支重新基于最新的上游
  • 构建包含所有开放PR + 本地补丁的生产分支
  • 审查最近关闭/拒绝的PR并决定是否在本地保留
  • 管理本地补丁(未提交或被上游拒绝的修复)

何时不使用

  • - 通用GitHub查询(问题、PR、任何仓库的CI状态)→ 改用 github 技能
  • 分类/排序/优先级排序问题 → 改用 issue-prioritizer 技能
  • 在发布PR前审查代码变更 → 改用 pr-review 技能
  • 从头创建新PR(非分支同步)→ 直接使用 gh pr create

执行模型 — 编排器 + 工作器

技能绝不应由主代理内联执行。 始终使用编排器/工作器模式:

流程

  1. 1. 编排器(主代理) — 准备上下文并生成子代理:

sessions_spawn(
task: <包含仓库上下文、配置、最新历史记录的完整提示>,
model: <合适的模型>,
mode: run
)

  1. 2. 工作器(子代理) — 执行完整同步/状态/重新基等操作。读取SKILL.md,遵循流程,写入历史记录。
  2. 监控 — 编排器每4分钟通过 sessionslist / sessionshistory 检查进度:
- 如果工作器活跃且正在推进 → 等待 - 如果工作器停止/卡住(连续2次检查无新输出)→ subagents kill + 生成新工作器 - 如果工作器完成 → 读取结果并向用户报告
  1. 4. 回退 — 如果工作器失败(崩溃、超时、错误):
- 编排器检查仓库状态(git status,最新检查点) - 使用包含停止点的更新上下文生成新工作器 - 最多重试2次,然后向用户报告失败

工作器的上下文

编排器应在工作器的提示中包含:

  • - SKILL.md的路径(供工作器读取和遵循)
  • 仓库配置(内联或路径)
  • 历史记录的最新条目(摘要或路径)
  • 执行模式(完整同步、状态、全部重新基等)
  • 是定时模式还是手动模式
  • 用户的任何特定指令

为什么使用子代理?

  • - 弹性: 如果工作器失败,编排器可以恢复
  • 上下文窗口: 技能很重(145+个PR = 大量输出)。工作器消耗其上下文而不污染主代理
  • 未来并行性: 允许同时为不同仓库生成工作器

定时模式

当由定时任务(自动定期同步)调用时,遵循以下指南以实现高效执行:

  1. 1. 跳过交互式提示 — 自动解决不需要人工输入的决策:
- 重新基:自动尝试,报告失败 - 关闭的PR:报告但推迟决策(不删除也不保留,等待人工输入) - 审计结果:报告但不采取行动
  1. 2. 紧凑输出 — 使用摘要格式,而非完整详细报告:

🍴 分支同步完成 — <仓库>
主分支:同步了N个提交 (旧SHA → 新SHA)
PR:X个开放,Y个状态变更
- 已重新基:A/B干净(C个冲突)
生产分支:已重建干净 | N个冲突
值得注意的上游:[1-3条要点]

  1. 3. 失败时检查点 — 如果重新基失败或生产构建有冲突,将状态写入 repos/<名称>/checkpoint.json,以便下次运行(或手动调用)可以恢复
  2. 时间预算 — 目标总计<10分钟。如果重新基20+个PR,在最后批量推送而非逐个分支推送

配置

配置按仓库组织在 repos/<仓库名称>/config.json 中,相对于技能目录:

fork-manager/
├── SKILL.md
└── repos/
├── project-a/
│ └── config.json
└── project-b/
└── config.json

config.json 格式:

json
{
repo: owner/repo,
fork: your-user/repo,
localPath: /path/to/local/clone,
mainBranch: main,
productionBranch: main-with-all-prs,
upstreamRemote: upstream,
forkRemote: origin,
autoResolveConflicts: false,
openPRs: [123, 456],
prBranches: {
123: fix/issue-123,
456: feat/feature-456
},
localPatches: {
local/my-custom-fix: {
description: 补丁功能的简要描述,
originalPR: 789,
closedReason: rejected|superseded|duplicate|wontfix,
keepReason: 我们在本地保留的原因,
addedAt: 2026-02-07T00:00:00Z,
reviewDate: 2026-03-07T00:00:00Z
}
},
lastSync: 2026-01-28T12:00:00Z,
notes: {
mergedUpstream: {},
closedWithoutMerge: {},
droppedPatches: {}
}
}

自动冲突解决(autoResolveConflicts)

自动解决可以通过两种方式激活(任一即可):

  1. 1. 调用标志(临时,按执行):

/fork-manager --auto-resolve
/fork-manager full-sync --auto-resolve

  1. 2. 持久配置(对该仓库始终激活):
json { autoResolveConflicts: true }
来源行为
无(默认)冲突被报告但不解决。报告包含⚠️ 冲突需要开发者批准。
--auto-resolve 或 config.autoResolveConflicts: true
生成Opus子代理来解决冲突。结果分类为:琐碎/语义/不可解决。 |

优先级: 调用中的 --auto-resolve 即使配置为 false 也会激活解决。不存在 --no-auto-resolve — 如果配置为 true 而用户不想解决,只需不手动运行该步骤。

对于ClawHub用户: 只需在命令中传递 --auto-resolve。无需仓库配置。

localPatches 字段

localPatches 中的每个条目是一个本地分支,保留在生产分支中但没有向上游开放PR

字段描述
description补丁的功能
originalPR
被关闭的原始PR编号(如果直接作为补丁创建则为可选) |
| closedReason | PR被关闭的原因:rejected(维护者拒绝)、superseded(其他PR部分解决但不完全)、duplicate(我们自己关闭)、wontfix(上游不会解决) |
| keepReason | 我们需要在本地保留的原因 |
| addedAt | 转换为本地补丁的日期 |
| reviewDate | 重新评估是否仍然需要的日期(上游可能已解决) |

执行历史记录

每个管理的仓库都有一个 history.md 文件,记录技能的所有执行,作为仅追加的日志:

fork-manager/
└── repos/
├── project-a/
│ ├── config.json
│ └── history.md
└── project-b/
├── config.json
└── history.md

规则:开始前读取最新输出

在任何操作之前,读取目标仓库的 history.md 并提取最新条目(最后一个 --- 块)。这提供了关于以下内容的上下文:

  • - 上次执行做了什么
  • 哪些PR有问题
  • 做出了哪些决策
  • 是否有待处理的操作

bash

读取历史记录的最新条目(最后一个---之后的所有内容)


tail -n +$(grep -n ^---$ $SKILLDIR/repos/<仓库名称>/history.md | tail -1 | cut -d: -f1) $SKILLDIR/repos/<仓库名称>/history.md

如果文件不存在,创建带有标题的文件并正常继续。

规则:完成时记录输出

每次执行结束时,将完整结果追加到 history.md。格式:

markdown



Y

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 fork-manager-1776337469 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 fork-manager-1776337469 技能

通过命令行安装

skillhub install fork-manager-1776337469

下载

⬇ 下载 fork-manager v2.0.1(免费)

文件大小: 18.21 KB | 发布时间: 2026-4-17 14:48

v2.0.1 最新 2026-4-17 14:48
Remove pr-ship reference from report template (fully generic)

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部