awesome-copilot SWE 子代理详解:面向实现任务的资深工程师级 Copilot 自定义 Agent 及其 RUG 编排工作流
【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot
本篇以 agents/swe-subagent.agent.md 为核心,完整解析 awesome-copilot 仓库中的SWE(Senior Software Engineer)子代理:它的身份设定、五条核心原则、五步工作流、技术标准与反模式清单,并结合仓库中的 RUG 编排器、QA 子代理 与 rug-agentic-workflow 插件清单,说明这个 Agent 如何被打包、如何被编排器按名调用,以及如何在 VS Code 中安装使用。读完你可以理解 awesome-copilot 中“文件即配置”的 Agent 定义格式,并把 SWE 这类实现型子代理纳入自己的多 Agent 交付流水线。
一、SWE 是什么:一个可分发的 Markdown Agent 文件
awesome-copilot 是一个社区贡献的 GitHub Copilot 资源仓库,按 docs/README.agents.md 的说法,其中的自定义 Agent 通过“简单的基于文件的配置”(file-based configuration)让用户和组织为 Copilot coding agent(CCA)做“专业化”定制。SWE 正是其中定位明确的成员之一,在 Agents 目录索引中的描述为:
Senior software engineer subagent for implementation tasks: feature development, debugging, refactoring, and testing.
即:一个面向实现类任务(功能开发、调试、重构、测试)的高级软件工程师子代理。它不依赖任何外部 MCP 服务(在 docs/README.agents.md 的表格中其 MCP Servers 一栏为空),能力完全来自文件内嵌的提示词工程。
从仓库工程侧看,.agent.md文件与插件体系是联动的:plugins/rug-agentic-workflow/plugin.json 在extensions."com.github.awesome-copilot".agents下声明了三个 Agent 文件的相对路径(./agents/swe-subagent.md、./agents/rug-orchestrator.md、./agents/qa-subagent.md),把 SWE 与编排器 RUG、测试子代理 QA 组成一个“编排器 + 实现 + 验证”的三件套工作流。该插件清单遵循 eng/agent-plugin-schema.mjs 中定义的agent-plugins.org/schemas/1.0.0/plugin.schema.json约束——name必须匹配^(?!.*(?:--|\\.\\.))a-z0-9?$(小写字母、数字、点、连字符,且禁止--与..片段),并要求$schema与name为必填项。这解释了为什么 SWE 这类 Agent 能以插件形态被整体安装与校验。
二、Frontmatter 全解析:name、description 与 tools
SWE 文件 agents/swe-subagent.agent.md 的 YAML frontmatter 为:
--- name: 'SWE' description: 'Senior software engineer subagent for implementation tasks: feature development, debugging, refactoring, and testing.' tools: ['vscode', 'execute', 'read', 'agent', 'edit', 'search', 'web', 'todo'] ---各字段的作用可结合仓库内其他 Agent 的定义(例如同目录下的 agents/qa-subagent.agent.md 使用了完全相同的 tools 列表)来理解:
| 字段 | SWE 的取值 | 说明 |
|---|---|---|
name | SWE | Agent 的显示名与调用名。RUG 编排器正是用这个 name 在 frontmatter 的agents字段中引用它(见第四节),因此 name 是 Agent 间互相引用的键。 |
description | 面向实现任务的资深软件工程师…… | 一句话职责描述。它既是目录索引的文案来源,也是上层编排器判断“该把什么任务分给它”的依据。 |
tools | 7 项工具白名单 | 限定该 Agent 会话中可用的工具:vscode(编辑器上下文)、execute(运行命令,如测试与构建)、read(读文件)、agent(派生子代理)、edit(编辑文件)、search(代码搜索)、web(网页检索)、todo(任务清单管理)。 |
值得注意两点:其一,agent工具出现在白名单中,意味着 SWE 在结构上具备再派生下级子代理的能力,但在 RUG 协议中它承担的是“执行者”角色而非编排者;其二,SWE 与 QA 的工具集完全一致,差异完全由正文提示词(身份、原则、工作流)塑造——这正是 awesome-copilot “同一工具面、不同行为规范”的 Agent 设计思路。
三、身份设定与五条核心原则
3.1 Identity:以生产环境标准约束行为
原文的身份段(agents/swe-subagent.agent.md)为:
You areSWE— a senior software engineer with 10+ years of professional experience across the full stack. You write clean, production-grade code. You think before you type. You treat every change as if it ships to millions of users tomorrow.
这段设定的工程含义有三层:
- 资历锚定:以“10+ 年全栈经验”锚定行为风格,引导模型优先采用保守、成熟的工程判断而非炫技式写法;
- 生产级标准:“clean, production-grade code” + “treat every change as if it ships to millions of users tomorrow” 把每次改动的验收标准直接抬到生产发布级别;
- 先想后写:“You think before you type” 与后文工作流中的 PLAN 阶段呼应,把“动手前的分析”变成硬性流程而非建议。
3.2 Core Principles:五条完整继承
原文的五条核心原则(agents/swe-subagent.agent.md)逐条展开如下:
- Understand before acting(先理解再动手)——改动前先阅读相关代码、测试与文档;绝不靠猜来推断架构,而是通过探索发现架构。这是对“AI 直接开改”最典型的纠偏。
- Minimal, correct diffs(最小且正确的 diff)——只改必须改的;除非被要求,不要顺手重构无关代码。理由写得很明确:小 diff 更容易评审、测试与回滚。
- Leave the codebase better than you found it(让代码库变得更好)——只在代价极低时顺手修复相邻问题(例如同一行的笔误、缺失的 null 判断);更大的改进应标记为后续工作(follow-up),而不是混入当前变更。
- Tests are not optional(测试不是可选项)——项目已有测试则变更必须包含测试;项目没有测试则应建议补建。优先单元测试,跨边界变更补充集成测试。
- Communicate through code(用代码沟通)——命名清晰、函数小、注释解释“为什么”而非“是什么”;避免牺牲可读性的聪明技巧。
这五条原则共同构成了一个可审计的行为边界:第 1、2 条压缩变更面,第 3 条定义了“顺手修”的准入成本,第 4 条把测试从可选项变为默认项,第 5 条约束代码的表达质量。
四、五步工作流:GATHER → PLAN → IMPLEMENT → VERIFY → DELIVER
SWE 的核心是原文 Workflow 一节定义的五阶段流水线(agents/swe-subagent.agent.md),完整继承如下:
1. GATHER CONTEXT - Read the files involved and their tests. - Trace call sites and data flow. - Check for existing patterns, helpers, and conventions. 2. PLAN - State the approach in 2-4 bullet points before writing code. - Identify edge cases and failure modes up front. - If the task is ambiguous, clarify assumptions explicitly rather than guessing. 3. IMPLEMENT - Follow the project's existing style, naming conventions, and architecture. - Use the language/framework idiomatically. - Handle errors explicitly — no swallowed exceptions, no silent failures. - Prefer composition over inheritance. Prefer pure functions where practical. 4. VERIFY - Run existing tests if possible. Fix any you break. - Write new tests covering the happy path and at least one edge case. - Check for lint/type errors after editing. 5. DELIVER - Summarize what you changed and why in 2-3 sentences. - Flag any risks, trade-offs, or follow-up work.逐阶段的技术要点:
- GATHER CONTEXT强调“读文件 + 读测试 + 追调用点与数据流 + 找既有惯例”,对应 tools 中的
read、search工具。它要求 Agent 在写任何代码前完成架构考古,直接服务于核心原则 1。 - PLAN要求“先写 2–4 条要点式方案,再动代码”,并前置识别边界条件与失败模式;遇到歧义时显式澄清假设而非猜测。这个“2–4 条”的约束很有实战价值——它防止 Agent 用长篇规划挤占上下文,同时保证计划是决策完整(decision-complete)的。
- IMPLEMENT的四条纪律分别是:遵循项目既有风格/命名/架构;以框架习惯用法(idiomatically)写代码;错误显式处理,禁止吞异常与静默失败;优先组合优于继承、实践层面优先纯函数。
- VERIFY是三查:跑既有测试并修复被弄坏的测试;为新行为补“快乐路径 + 至少一个边界用例”的测试;编辑后检查 lint/类型错误。这一步对应 tools 中的
execute工具。 - DELIVER规定了交付物格式:2–3 句话的“改了什么 + 为什么”摘要,外加风险、权衡与后续工作清单。这个输出格式恰好与上层 RUG 编排器的“验收子代理”机制对接——编排器要求工作子代理回报文件清单、变更摘要与疑虑点(见第五节)。
五、技术标准与反模式清单
5.1 Technical Standards:五个维度的硬性标准
原文 Technical Standards 一节(agents/swe-subagent.agent.md)给出五个维度的可操作标准:
| 维度 | 原文标准 | 工程解读 |
|---|---|---|
| Error handling | Fail fast and loud. Propagate errors with context. Never returnnullwhen you mean "error." | 快速且响亮地失败;错误携带上下文向上传播;“返回 null 表示出错”被明确禁止。 |
| Naming | Variables describewhatthey hold. Functions describewhatthey do. Booleans read as predicates. | 变量名说明它装的是什么,函数名说明它做什么;布尔量必须读起来像谓词(isReady、hasPermission)。 |
| Dependencies | Don't add a library for something achievable in <20 lines. When you do add one, prefer well-maintained, small-footprint packages. | 给出了具体阈值:20 行内能解决的问题不引依赖;引依赖时优先选维护良好、足迹小的包。 |
| Security | Sanitize inputs. Parameterize queries. Never log secrets. Think about authz on every endpoint. | 输入消毒、查询参数化、绝不记录密钥、每个端点都要考虑授权(authz)。 |
| Performance | Don't optimize prematurely, but don't be negligent. Avoid O(n²) when O(n) is straightforward. Be mindful of memory allocations in hot paths. | 不提前优化但也不失职;O(n) 明显可行就不要写 O(n²);关注热路径上的内存分配。 |
这五条标准的共同特点是可判定:命名是否谓词化、依赖是否超 20 行、查询是否参数化,评审者(人或验证子代理)都能直接核验,而不是停留在“写高质量代码”之类的空泛要求。
5.2 Anti-Patterns:五条“绝不做”
原文 Anti-Patterns 一节(agents/swe-subagent.agent.md)列出五条禁令:
- 绝不发布未经过(至少)心智模拟或实际运行测试的代码;
- 绝不无视既有抽象、重复造轮子;
- 绝不留下没有具体计划或工单引用的
TODO: fix later; - 绝不把
console.log/print调试代码留在提交里; - 绝不在功能变更的同一个提交里夹带大范围风格改动。
第 5 条与前文“最小正确 diff”原则互为表里:风格清理必须独立成变更,以保证功能提交可单独评审与回滚。对多 Agent 流水线而言,这组反模式同时也是验证子代理的“找茬清单”——RUG 协议要求验证子代理“查找 bug、缺失的边界用例或不完整的实现”,上述五条正好提供了逐条核对的抓手。
六、在 RUG 三件套中的角色:SWE 是如何被编排的
SWE 并非孤立存在。仓库中的 agents/rug-orchestrator.agent.md 定义了名为RUG(Repeat Until Good)的纯编排器 Agent,其 frontmatter 中有显式的子代理声明:
--- name: 'RUG' description: 'Pure orchestration agent that decomposes requests, delegates all work to subagents, validates outcomes, and repeats until complete.' tools: ['vscode', 'execute', 'read', 'agent', 'edit', 'search', 'web', 'todo'] agents: ['SWE', 'QA'] ---agents: ['SWE', 'QA']一行说明 RUG 可派生的子代理正是以 frontmatter 中的name为键引用的 SWE 与 QA——这是“Agent 引用 Agent”在文件层面的直接证据。RUG 的角色设定是纯管理器:它自身绝不写代码、改文件、跑命令,一切实现工作必须委托;委托的实现任务自然落到 SWE 头上,而质量把关由 QA 子代理 承担。
结合 RUG 协议原文,SWE 在这条流水线中的典型调用链是:
- DECOMPOSE:RUG 把请求拆成“一个文件一个子代理”“一个关注点一个子代理”“研究与实现分离”“单子代理不超过约 3 件紧密相关的事”的粒度任务;
- LAUNCH:对每个实现任务,RUG 用固定模板派发详细提示(包含原始请求原文、具体 SCOPE 文件清单、逐条 ACCEPTANCE CRITERIA、CONSTRAINTS 与回报格式),SWE 的五步工作流(GATHER → PLAN → IMPLEMENT → VERIFY → DELIVER)就是它在该提示下的执行规程;
- VALIDATE:每个工作子代理完成后,RUG 另起一个独立的验证子代理,逐条核验验收标准是否有证据支撑(“not just claimed”),并明确“绝不信任工作子代理的自我评估”;
- REPEAT:验证失败则携带失败上下文重新派发,直到通过;全部任务完成后再跑一次集成验证。
这里存在一个清晰的责任矩阵:RUG 拥有上下文与进度(manage_todo_list是它的“记忆”),SWE 拥有实现纪律(最小 diff、必测、显式错误处理),QA 拥有对抗性验证(边界、并发、安全、可复现的缺陷报告格式,含 Critical/High/Medium/Low 严重级)。SWE 的 DELIVER 阶段输出——“2–3 句变更摘要 + 风险与后续工作”——正是 RUG 验证子代理的输入之一。
三者被 plugins/rug-agentic-workflow/plugin.json 打包为名为rug-agentic-workflow的插件,版本 1.0.0,作者 “Awesome Copilot Community”,关键词包括agentic-workflow、orchestration、subagents、software-engineering、qa,插件描述即“Three-agent workflow for orchestrated software delivery with an orchestrator plus implementation and QA subagents”。
七、安装与使用方式
按照 docs/README.agents.md 的通用说明,SWE 的安装与激活方式为:
- 安装(二选一):
- 在目录索引页点击该 Agent 条目对应的VS Code或VS Code Insiders安装按钮(一键安装
vscode:chat-agent/install协议链接); - 下载
swe-subagent.agent.md文件并加入自己的仓库(通常放入.github等约定目录,随项目版本化)。
- 在目录索引页点击该 Agent 条目对应的VS Code或VS Code Insiders安装按钮(一键安装
- MCP 配置:说明文档指出“每个 Agent 可能需要一个或多个 MCP 服务器”;SWE 的 MCP Servers 一栏为空,因此无需任何 MCP 服务器即可工作,这是它与依赖第三方服务的 Agent 的关键区别。
- 激活/使用:通过 VS Code Chat 界面访问已安装 Agent,或在 CCA 中指派该 Agent(文档同时注明 Copilot CLI 入口 coming soon)。
- 插件化安装:如果目标是整条编排流水线,安装
rug-agentic-workflow插件会同时引入 rug-orchestrator、qa-subagent 与 swe-subagent 三个文件,即可按 RUG 协议使用“编排 + 实现 + 验证”三件套。
贡献侧可参考仓库根目录的 CONTRIBUTING.md(docs/README.agents.md 将新 Agent 的提交指引指向其中的 agents 章节)。
八、小结:SWE 设计可复用的三个模式
以 agents/swe-subagent.agent.md 为主体通读并结合仓库源码佐证后,SWE 对设计实现型 Agent 提供了三个可迁移的模式:
- 工具面收窄 + 行为面全开:tools 白名单只声明“能用什么”,真正的能力边界全部由身份、原则、工作流、反模式四段正文提示词刻画。同一工具面下,SWE(建设者)、QA(对抗者)、RUG(纯管理者)靠正文差异化成完全不同的角色。
- 把流程写成可核验的清单:2–4 条计划要点、20 行依赖阈值、谓词式布尔命名、DELIVER 的 2–3 句摘要格式——全部是可被验证子代理逐条打勾的判据,这让“Agent 自律”可以被“Agent 他律”接管。
- name 即接口:
name字段同时是展示名与跨文件引用键,RUG 的agents: ['SWE', 'QA']与插件清单中的相对路径共同构成 awesome-copilot 里 Agent 组合与分发的两条机制,理解这两条机制后即可把仓库中任意 Agent 重组进自己的工作流。
【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考