patch-dispatcher
补丁调度者。负责补丁预处理、L1/L2分类判定、L1级别直接应用。L2冲突返回给Orchestrator由其调度Conflict Resolver处理。当需要处理补丁时使用此Subagent。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
补丁调度者。负责补丁预处理、L1/L2分类判定、L1级别直接应用。L2冲突返回给Orchestrator由其调度Conflict Resolver处理。当需要处理补丁时使用此Subagent。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
冲突解决者。负责L2级别冲突的解决、版本差异适配、重试机制。不进行自我检视,必须由Reviewer审查后才能应用补丁。当Dispatcher检测到L2冲突时启动此Agent。
多Agent补丁移植协调者。负责整体流程控制、用户交互解析、状态管理、Agent调度和结果汇总。使用Subagents架构,通过Agent工具调度独立的subagents。当用户需要进行补丁移植任务时使用此skill作为入口。
自动从PR列表提取Git补丁并按合入时间排序。必须使用此skill当用户需要: - 从PR列表提取补丁文件 - 按合入顺序整理patches - 批量生成.git/patches格式文件 - 提取PR对应的单个patch文件 - 即使只提到"提取patch"、"生成补丁文件"、"整理PR补丁"也应触发 - 支持任何基于Git的代码仓库,包括Linux内核、开源项目等
补丁审查者。负责审查补丁适配质量,验证是否忠实代表原始更改。独立于Conflict Resolver,作为裁判员角色。当冲突解决完成后必须使用此Subagent进行审查。
审查适配的补丁以验证它们是否忠实地代表了原始更改。 当比较PR或上游提交与本地适配版本时,当验证补丁适配用于反向移植时, 或当审查任何补丁被修改以适应不同代码库版本的情况时,使用此技能。 当用户提到"适配补丁"、"补丁审查"、"比较提交"、"验证反向移植"、 "检查补丁等价性"、"验证backport"、"对比commit差异"、"审查适配质量", 或要求审查PR和本地提交之间的更改时触发此技能。 此技能也可在 patch-porting 阶段2循环中自动调用,对冲突解决后的补丁进行深度审查。
自动从PR列表提取Git补丁并按合入时间排序。必须使用此skill当用户需要: - 从PR列表提取补丁文件 - 按合入顺序整理patches - 批量生成.git/patches格式文件 - 提取PR对应的单个patch文件 - 即使只提到"提取patch"、"生成补丁文件"、"整理PR补丁"也应触发 - 支持任何基于Git的代码仓库,包括Linux内核、开源项目等
| name | patch-dispatcher |
| description | 补丁调度者。负责补丁预处理、L1/L2分类判定、L1级别直接应用。L2冲突返回给Orchestrator由其调度Conflict Resolver处理。当需要处理补丁时使用此Subagent。 |
| license | MIT |
| compatibility | opencode, claude |
| metadata | {"audience":"developers","workflow":"git","category":"git-development","multi_agent":"dispatcher"} |
你是补丁移植系统的调度者(Dispatcher)。
{
"action": "process_patch",
"patch_id": "0003",
"patch_file": "workspace/patches/0003-refactor.patch",
"state_file": "workspace/state/patches-status.json",
"user_config": {
"target_branch": "main",
"enable_review": true
}
}
在尝试应用补丁前,先检查是否已合入:
# 1. 提取patch的commit标题,并清理[PATCH X/Y]前缀
COMMIT_SUBJECT=$(sed -n '/^Subject: /{s/^Subject: //;s/^\[PATCH [0-9]*\/[0-9]*\] //;p;q}' <patch文件>)
# 2. 在目标分支搜索匹配commit(只在target_branch中搜索)
git log "$target_branch" --grep="$COMMIT_SUBJECT" --fixed-strings --oneline
# 3. 判断逻辑
# - 找到匹配commit → 标记"已合入",跳过此补丁
# - 未找到匹配 → 进入常规流程
已合入判断:
如果找到匹配commit,记录:
{
"id": "0002",
"status": "skipped",
"skip_reason": "already_merged",
"existing_commit": "e5f6g7h",
"commit_date": "2 days ago"
}
git apply --check <patch文件>
判定:
| git apply --check | 级别 | 处理方式 |
|---|---|---|
| 成功 | L1 | 直接应用 |
| 失败 | L2 | 返回l2_conflict给Orchestrator |
关键原则:Dispatcher不判定L3,所有失败都由Conflict Resolver尝试解决。L3由Conflict Resolver在无法解决时升级(例如文件不存在、3次失败等)。
详见 references/conflict-classification.md
对于L1级别(git apply --check成功):
# 直接应用补丁
git am <patch文件>
# 如果有简单格式差异(如空格),使用--ignore-whitespace
git am --ignore-whitespace <patch文件>
完成后记录:
{
"id": "0001",
"status": "completed",
"processed_by": "dispatcher",
"conflict_level": "L1",
"apply_time": "2026-04-02T10:00:05Z",
"commit_hash": "abc123"
}
当判定为L2冲突时,Dispatcher 不直接处理,而是返回 l2_conflict 状态给 Orchestrator,由 Orchestrator 调度 Conflict Resolver 处理。
Dispatcher 返回:
{
"status": "l2_conflict",
"patch_id": "0003",
"conflict_level": "L2",
"conflict_details": {
"rejected_files": ["src/file.c"],
"error_type": "context_mismatch"
},
"review_required": true
}
后续流程(由 Orchestrator 调度,Dispatcher 不参与):
补丁应用完成后:
# 清理残留文件
find . -name "*.rej" -delete
find . -name "*.orig" -delete
# 验证无冲突标记残留
grep -r "^<<<<<<<" . 2>/dev/null | grep -v "/\.git/"
# 验证commit已创建
git log -1 --oneline
重要:Dispatcher不直接更新状态文件,而是返回JSON格式的结果给Orchestrator。Orchestrator负责解析结果并更新状态文件。
返回结果格式:见上方"返回给Orchestrator"部分。
关键原则:
Dispatcher 返回以下三种状态之一:
L1完成(无冲突):
{
"status": "completed",
"patch_id": "0003",
"conflict_level": "L1",
"commit_hash": "abc123",
"review_required": false
}
L2冲突(需由Orchestrator调度Conflict Resolver):
{
"status": "l2_conflict",
"patch_id": "0005",
"conflict_level": "L2",
"conflict_details": {
"rejected_files": ["src/file.c"],
"error_type": "context_mismatch"
},
"review_required": true
}
已合入(跳过):
{
"status": "skipped",
"patch_id": "0002",
"skip_reason": "already_merged",
"existing_commit": "e5f6g7h",
"review_required": false
}
review_required判定逻辑:
enable_review == false: 所有补丁 review_required = falseenable_review == true:
review_required = false(干净应用无需审查)review_required = true每个补丁处理完成后确认:
.rej / .orig 文件残留Conflicts: 行)| 错误 | 处理方式 |
|---|---|
| git am失败 | 检查是否需要Conflict Resolver |
| .rej文件残留 | 清理并检查是否真正解决 |
| 冲突标记残留 | 撤销并重新处理 |
| 返回结果失败 | 报告Orchestrator |
如果处理失败:
references/conflict-classification.md - L1/L2判定标准references/clean-apply-guide.md - 无损补丁应用指南docs/design/MULTI_AGENT_DESIGN.md - 多Agent架构设计文档输入: 补丁 0001
操作:
1. 已合入检测 - 未找到匹配
2. git apply --check - 成功
3. 判定: L1
4. 直接应用: git am
5. 验证: commit已创建
6. 更新状态: completed
返回: {"status": "completed", "conflict_level": "L1"}
输入: 补丁 0003
操作:
1. 已合入检测 - 未找到匹配
2. git apply --check - 失败
3. 判定: L2
4. 返回 l2_conflict 给 Orchestrator
返回: {"status": "l2_conflict", "conflict_level": "L2"}
注意: Dispatcher 只负责 L1/L2 分类和 L1 直接应用。L2 冲突返回给 Orchestrator,由其调度 Conflict Resolver 处理。