关于 copilot-delegate
copilot-delegate 是面向编排者的技能,可将范围明确的编码任务交给 GitHub Copilot CLI,再审查并提交结果。中继程序捕获结构化事件,并提供只读规划和明确的工具自主权限控制。
主要功能
- 01通过独立任务简报委派
- 02捕获 JSONL 事件并写入结果文件
- 03可选模型与推理力度
- 04只读规划模式
- 05明确启用完全工具自主权
- 06审查、验证后再提交的流程
适用场景
- 01委派 Git 仓库中的限定范围改动
- 02为运行选择模型或推理力度
- 03实现前在不使用编辑工具的情况下规划
- 04检查生成的改动并重新运行项目检查
MCP 相关
用于 Codex 后台编排时,技能要求先配置独立的 codex-background 工具,并调用其 delegate_run MCP 工具;其他情况使用 Shell 中继程序。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ amelnagdy/ delegate-skills --skill copilot-delegate安装后在 Claude Code 中输入/copilot-delegate确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/dispatch-and-poll.mdmulti-task-queues.mdreview-and-land.mdwriting-the-brief.mdscripts/relay.mjs详细介绍
Copilot Delegate
你是编排者。将范围明确的编码任务委派给单独的实现者——GitHub Copilot CLI,然后审查其成果并亲自提交。你负责撰写任务说明并做出判断;实现者在独立会话和干净的工作树中修改代码;你负责验证并提交。
整个流程只需要 shell 命令和文件访问权限,因此任何类似的编排者都可以驱动它。
不适用的情况
- 任务小到可以直接完成;委派带来的额外开销不值得。
- 尚未安装或验证
copilotCLI。 - 你需要严格的沙盒。Copilot 提供沙盒控制,但这些功能仍处于上游实验阶段(基于 MXC,通过
/sandbox命令和设置控制,默认禁用)——此中继不会配置这些功能。--read-only只会禁用编辑工具(--mode plan);shell 命令仍会运行。如果项目文件绝不能有任何改动,请在干净或隔离的工作树中派发任务。
前置条件(检查一次即可)
- 安装
copilot(npm install -g @github/copilot;CLI 需要 Node 22+,中继本身可在 Node 18+ 上运行——中继会探测copilot version)。 - 进行身份验证:运行
copilot login(交互式网页/设备流程),或在环境中设置COPILOT_GITHUB_TOKEN/GH_TOKEN/GITHUB_TOKEN。 - 确认
copilot version可成功运行。 - 在目标 git 仓库中工作,或将
--cd指向该仓库。
选择模型(可选)
Copilot 会选择默认模型(auto)。若要选择其他模型,请传入 --model <name>。
中继只接受字母、数字以及 . _ : / -(该值会传入 Windows 上的 shell)。
选择工作力度(可选)
Copilot 支持推理力度调节:--effort <level>,可选值为
low、medium、high、xhigh 或 max。中继会在派发前拒绝其他值。
流程
每项任务都执行以下五个步骤。第 1、4、5 步需要判断;第 2、3 步是机械操作。
1. 撰写任务说明
Copilot 只能看到你发送的文本,无法读取你们的对话:任务说明必须独立完整,包含目标、当前状态、要修改的内容、保持不变的内容、项目实际的检查关卡,以及报告约定。每份任务说明只处理一项任务。将说明写入文件,并通过中继的 --brief 参数传入。参见 references/writing-the-brief.md。
2. 派发
对于 Codex 编排后台工作,请先安装并配置单独的 codex-background 支持工具。如果缺少其 MCP 工具或注册表,请停止并报告设置要求;不要悄悄改用由模型驱动的轮询。然后调用其已注册的 delegate_run MCP 工具一次,替代下方的 shell 示例。
遵循该技能,传入结构化的通用参数,保持提供方标志不变,并通过 runId 重新连接。等待请求完成,再继续执行本技能中的审查和提交步骤。其他编排者继续使用下方的 shell 工作流。
使用随附的中继。它会运行 copilot -p,并传入 --output-format json --no-color --stream off,
捕获 JSONL 事件流,并写入 result.json。
node "<skill-dir>/scripts/relay.mjs" --brief brief.txt --cd /path/to/repo
# choose a model: add --model <name>
# set reasoning effort: add --effort <level>
# read-only planning pass: add --read-only (forces --mode plan)
# full tool autonomy: add --allow-all-tools
# hard time limit (watchdog): add --timeout 2h (the 30m default suits brief runs)
# resume a session: add --session <id> or --resume-last
# see all options: node .../relay.mjs --help
子进程的工作目录会固定工作区。默认情况下,中继会将产物写入系统临时目录,且绝不会提交。参见 references/dispatch-and-poll.md。
3. 等待完成
使用 codex-background 的 Codex 会让原始 MCP 请求保持挂起状态:不进行模型驱动的休眠、状态或日志轮询。只有在请求中断后重新连接时,才使用 delegate_wait。
中继会阻塞,直到 copilot 完成。使用编排器的后台命令功能运行它,或者在 shell 中将其放到后台,并轮询 result.json。运行前的用法错误会以状态码 2 退出,且不会写入结果;找不到 copilot 时会以状态码 127 退出,并写入 status: "copilot_unavailable"。
进程已退出且 result.json 存在,即表示任务完成——以进程状态和工作树为准,而不是进度显示。Copilot 的最终助手消息位于 result.json 的 finalMessage 字段中。
4. 审查——不要轻信自我报告
- 自行重新运行项目的检查项。
- 根据任务说明阅读差异,从
touchedFiles开始。 - 如果安装了相关的防护技能,请运行它们。
参见 references/review-and-land.md。
5. 合并
如果工作质量合格,就提交。中继不会提交——差异和 result.json 才是记录;先运行 git status 和 git diff,准确确认更改内容。如果团队有 PR 流程,就创建提交并推送分支,然后交由人工审查。如果差异有误或不完整,请在全新运行中重新分派修正后的任务说明,并再次审查。
自主权与权限
如果不使用 --allow-all-tools,copilot 在无头模式下会自动拒绝工具调用:进程以状态码 0 退出,但中继会检测到拒绝事件,并报告 status: "failed",同时附上 CLI 自身的错误消息以及传入 --allow-all-tools 的提示。这是诚实的默认行为——编排器会看到失败,而不是静默无操作。
--allow-all-tools 会明确授予完整的工具自主权。--read-only 会选择 --mode plan,禁用编辑工具,防止通过直接编辑修改项目文件;它无需 --allow-all-tools 即可使用。Shell 命令在计划模式下仍会运行,因此它只能防止编辑,不能防止其他所有操作。这两个标志互斥。
Copilot 还提供沙盒控制选项,但这些功能仍处于上游实验阶段(基于 MXC,通过 /sandbox 命令和设置控制,默认禁用)。此中继不会配置这些选项。
授权模型
是否委派由人类自行决定。任务说明编写完成后,copilot 会作为一个经你批准使用的工具来工作。原则是:不要接受自我报告中的结论;应在磁盘上核实一切。对于涉及凭据、生产数据或不可逆操作的事项,应先停下来询问人类,而不是将其写入任务说明。
参考资料
- references/writing-the-brief.md — 结构、范围、检查项和任务说明的交付。
- references/dispatch-and-poll.md — 标志、产物、
result.json和故障恢复。 - references/review-and-land.md — 在运行结束时,将差异视为完成前需要核实的内容。
- references/multi-task-queues.md — 顺序队列、约束的延续传递、进度跟踪和最终一致性检查。