mcpField
C
copilot-delegate

copilot-delegate

github.com/amelnagdyAgent 工作流2.5k3.1k 次安装2 周前更新
代码仓库

关于 copilot-delegate

copilot-delegate 是面向编排者的技能,可将范围明确的编码任务交给 GitHub Copilot CLI,再审查并提交结果。中继程序捕获结构化事件,并提供只读规划和明确的工具自主权限控制。

主要功能

  1. 01通过独立任务简报委派
  2. 02捕获 JSONL 事件并写入结果文件
  3. 03可选模型与推理力度
  4. 04只读规划模式
  5. 05明确启用完全工具自主权
  6. 06审查、验证后再提交的流程

适用场景

  1. 01委派 Git 仓库中的限定范围改动
  2. 02为运行选择模型或推理力度
  3. 03实现前在不使用编辑工具的情况下规划
  4. 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.md
multi-task-queues.md
review-and-land.md
writing-the-brief.md
scripts/
relay.mjs

详细介绍

Copilot Delegate

你是编排者。将范围明确的编码任务委派给单独的实现者——GitHub Copilot CLI,然后审查其成果并亲自提交。你负责撰写任务说明并做出判断;实现者在独立会话和干净的工作树中修改代码;你负责验证并提交。

整个流程只需要 shell 命令和文件访问权限,因此任何类似的编排者都可以驱动它。

不适用的情况

  • 任务小到可以直接完成;委派带来的额外开销不值得。
  • 尚未安装或验证 copilot CLI。
  • 你需要严格的沙盒。Copilot 提供沙盒控制,但这些功能仍处于上游实验阶段(基于 MXC,通过 /sandbox 命令和设置控制,默认禁用)——此中继不会配置这些功能。--read-only 只会禁用编辑工具(--mode plan);shell 命令仍会运行。如果项目文件绝不能有任何改动,请在干净或隔离的工作树中派发任务。

前置条件(检查一次即可)

  1. 安装 copilot(npm install -g @github/copilot;CLI 需要 Node 22+,中继本身可在 Node 18+ 上运行——中继会探测 copilot version)。
  2. 进行身份验证:运行 copilot login(交互式网页/设备流程),或在环境中设置 COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN。
  3. 确认 copilot version 可成功运行。
  4. 在目标 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 会作为一个经你批准使用的工具来工作。原则是:不要接受自我报告中的结论;应在磁盘上核实一切。对于涉及凭据、生产数据或不可逆操作的事项,应先停下来询问人类,而不是将其写入任务说明。

参考资料

评论

支持 Markdown