awesome-copilot 中的 Universal PR Comment Addresser:用 Copilot 自定义 Agent 系统化处理 Pull Request 评审意见
awesome-copilot 中的 Universal PR Comment Addresser用 Copilot 自定义 Agent 系统化处理 Pull Request 评审意见【免费下载链接】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本篇基于 awesome-copilot 仓库中的 agents/address-comments.agent.md 完整解读这个名为 “Universal PR Comment Addresser” 的 GitHub Copilot 自定义 Agent它如何仅用一个带 YAML front matter 的 Markdown 文件定义出 22 个工具权限、一套“先判断再动手”的评审意见处理规则以及“改完必跑测试、必提交、再处理下一条”的闭环工作流。读完本文你可以复现这类 Agent 的完整编写方式并理解 awesome-copilot 仓库对 Agent 文件元数据、工具声明的校验与发布机制。一、这个 Agent 在 awesome-copilot 仓库中的位置awesome-copilot 是一个社区贡献型的 GitHub Copilot 资源仓库按目录组织 agents自定义 Agent、instructions指令、skills技能、hooks钩子等详见 AGENTS.md。address-comments是其中定位很明确的工作流型 Agent它不绑定任何语言或框架而是专门负责“处理你 Pull Request 上的评审意见”这件事。该 Agent 的核心信息如下取自源文件 agents/address-comments.agent.mddescription:Address PR commentsname:Universal PR Comment Addresser角色定位正文第一句Your job is to address comments on your pull request.在仓库文档侧它被收录在 docs/README.agents.md 的 Custom Agents 表格中表中条目名为 “Universal PR Comment Addresser”对应文件链接为../agents/address-comments.agent.md即仓库根目录下的 agents/address-comments.agent.md。按照该文档的说明用户有两种使用方式点击表格中的 VS Code / VS Code Insiders 安装按钮直接安装下载该*.agent.md文件放到自己的仓库中。激活方式同样在 docs/README.agents.md 中说明通过 VS Code Chat 界面调用、在 Copilot coding agentCCA中指派或通过 Copilot CLI若 Agent 依赖 MCP serverAgent 可访问相应 server 提供的工具。而address-comments的 front matter 中没有声明mcp-servers字段属于纯内置工具集 Agent安装即用。二、Front matter 逐字段解析name、description 与 22 项工具清单源文件的前 29 行是完整的 YAML front matteragents/address-comments.agent.md原文如下--- description: Address PR comments name: Universal PR Comment Addresser tools: [ changes, codebase, editFiles, extensions, fetch, findTestFiles, githubRepo, new, openSimpleBrowser, problems, runCommands, runTasks, runTests, search, searchResults, terminalLastCommand, terminalSelection, testFailure, usages, vscodeAPI, microsoft.docs.mcp, github ] ---各字段的作用与仓库约束如下字段本 Agent 的取值仓库侧约束依据 AGENTS.md 与 CONTRIBUTING.mddescriptionAddress PR comments必填非空AGENTS.md 要求值用引号包裹该值会直接渲染进生成的 README 表格nameUniversal PR Comment Addresser代码审查清单要求是人类可读名AGENTS.md 中给出的正例正是 Address Comments 这类写法而不是文件名address-commentstools22 项内置工具推荐提供Recommended to includetoolsfieldmodel未设置仓库强烈建议提供Strongly recommended本文件未声明即使用宿主默认模型值得注意的是文件名本身address-comments.agent.md完全符合 CONTRIBUTING.md 中 Adding an Agent 一节要求的小写 连字符 .agent.md扩展名命名规范。tools 清单的分组解读这 22 个工具可以按职责分为五组恰好覆盖读意见 → 改代码 → 验证 → 提交的完整链路上下文与搜索codebase检索代码库、search、searchResults搜索及查看搜索结果、usages查看符号使用点、changes查看当前改动。处理评审意见时Agent 需要知道改的是哪几行、还有谁在调用它这一组工具提供了定位能力。文件编辑editFiles编辑现有文件、new新建文件。当评审意见要求补一个测试文件时new工具就是必需项。测试与问题诊断runTests运行测试、testFailure读取测试失败详情、findTestFiles定位测试文件、problems查看诊断问题。这四者共同支撑原文档改完必须跑测试这一步骤。终端与任务runCommands、runTasks、terminalLastCommand、terminalSelection。提交代码git commit等操作依赖终端类工具。外部资源githubRepo读取当前仓库信息如 PR 上下文、githubGitHub 相关操作、fetch抓取网页内容、openSimpleBrowser简易浏览器、extensions扩展信息、vscodeAPI访问 VS Code API、microsoft.docs.mcp通过 MCP 检索 Microsoft 官方文档。从源码结构看这些tools字段并非仓库脚本逐值硬校验的对象eng/generate-website-data.mjs 在生成网站数据时只是把frontmatter.tools原样读出默认空数组连同name、description、model、handoffs、mcp-servers一起构成站点条目。真正对 Agent 文件做格式约束的是仓库文档 AGENTS.md 中 Code Review Checklist 的 Agent 部分front matter 存在、description非空且带引号、name为人类可读名、文件名为小写连字符——address-comments.agent.md逐条满足是清单里被点名的示范样例。三、决策规则什么意见该处理什么意见该拒绝原文档 When to address or not address comments 一节agents/address-comments.agent.md只有一段话但信息密度很高它给 Agent 设定了判断优先级Reviewers are normally, but not always right. If a comment does not make sense to you, ask for more clarification. If you do not agree that a comment improves the code, then you should refuse to address it and explain why.可以拆解为三个分支意见可执行且合理→ 进入修改流程见下节意见含义不明→ 不猜测、不硬改向用户请求澄清ask for more clarification意见不合理→ 明确拒绝执行refuse to address it并必须解释拒绝理由。第三条是这类 Agent 设计中的关键差异点多数照单全收型 Agent 会盲目执行评审意见而这里明确赋予 Agent 有立场的行为契约——它更像一名会反驳 reviewer 的工程师而不是无脑执行器。这一规则也与仓库中其他强调批判性思维的 Agent如 agents/critical-thinking.agent.md 的 Challenge assumptions 定位形成风格呼应。四、执行规则只改该改的并且一次改全Addressing Comments 一节agents/address-comments.agent.md给出了四条硬约束原文完整继承如下只处理给定的那条意见You should only address the comment provided, not make unrelated changes。禁止顺手重构、禁止夹带无关改动——这保证每个 PR 提交都对应一条评审意见diff 可追溯。改动尽可能简单Make your changes as simple as possible and avoid adding excessive code. If you see an opportunity to simplify, take it. Less is more. 简单优先若过程中发现简化机会则顺势简化。同类问题一次改全You should always change all instances of the same issue the comment was about in the changed code. 评审意见指向的是一类问题例如这里不该用字符串拼接Agent 必须扫出 PR 变更范围内该问题的所有出现位置并一并修复而不是只改 reviewer 圈出的那一处。补齐测试覆盖Always add test coverage for your changes if it is not already present. 修改若无既有测试覆盖必须新增测试。这四条规则与 front matter 的工具集是自洽的规则 3 依赖search/usages做全范围定位规则 4 依赖new、editFiles、findTestFiles落地测试代码。五、修复后的三步闭环Run tests → Commit → Fix next commentAfter Fixing a comment 一节agents/address-comments.agent.md把单条意见的处理收尾定义为严格的三步1. Run tests运行测试原文只有一行If you do not know how, ask the user. 即改动完成后必须运行测试验证如果 Agent 无法确定该项目的测试运行方式必须向用户询问而不是自行猜测命令。结合工具集看how 的判断通常借助runTests、runTasks读取项目已配置的测试任务完成失败详情由testFailure回读。2. Commit the changes提交变更You should commit changes with a descriptive commit message. 提交信息必须具有描述性能对应到所处理的那条评审意见。这一步依赖runCommands/terminalSelection等终端类工具。由于步骤 1 已强制跑过测试提交动作实际上携带了测试已验证的前置条件。3. Fix next comment处理下一条意见Move on to the next comment in the file or ask the user for the next comment. 形成循环语义若同一上下文中还有后续意见则继续否则向用户索取下一条。三步连起来构成修复 → 验证 → 提交 → 取下一意见的状态机这也是该 Agent 被命名为 Addresser 而非 Fixer 的原因——它管理的是整个意见队列而不是一次性代码修改。六、仓库侧如何校验与发布这个 Agent 文件address-comments.agent.md进入 awesome-copilot 仓库后会经历如下由仓库脚本驱动的发布链路可结合 AGENTS.md Adding New Resources 一节对照理解Front matter 解析eng/update-readme.mjs 使用 vfile-matter 解析所有.agent.md的 front matter优先取name字段作为展示标题取不到时回退到 front matter 之后的第一个 Markdown 标题——本文件的 H1 正是 Universal PR Comment Addresserdescription字段则直接用作表格描述。网站数据生成eng/generate-website-data.mjs 筛选agents/下所有.agent.md输出id去掉扩展名的文件名、title、description、model缺省为 null、tools本例为 22 项数组、handoffs与mcpServers取mcp-servers的键等字段。README 表格生成运行npm run build后该 Agent 会以 Universal PR Comment Addresser | Address PR comments 的条目出现在 docs/README.agents.md 的表格中并附带 VS Code / VS Code Insiders 安装入口。插件物化当 Agent 被打包进 plugin 时eng/materialize-plugins.mjs 会把顶层agents/下的文件按*.agent.md规则映射到插件产物目录eng/validate-plugins.mjs 中 agents 组合字段的声明也固定为./agents/前缀 .agent.md后缀。以上脚本行为均可在eng/目录下直接查证对贡献者而言本地验证命令是npm run build加提交前执行bash eng/fix-line-endings.shAGENTS.md 的 pre-commit checklist。七、如何复用把它装进你自己的 PR 流程基于本文的解读复用或仿写该 Agent 的路径非常清晰直接安装通过 docs/README.agents.md 表格中的安装入口安装或将 agents/address-comments.agent.md 拷贝到自己仓库的.github/agents/或团队约定的 Agent 目录下按需裁剪 tools如果团队不用microsoft.docs.mcp可从 front matter 的tools数组中移除若评审意见常涉及远端状态issue 联动保留githubRepo、github即可补充 model 字段仓库规范强烈建议声明model如 CONTRIBUTING.md 示例中的model: gpt-5本文件未声明团队可据自身模型策略添加按仓库规范自检description非空且带引号、name为人类可读名、文件名为小写连字符、提交前npm run build重新生成文档表格——这四条即 AGENTS.md 中 Agent 代码审查清单的核心项。综合来看address-comments.agent.md的价值不在于篇幅而在于它用一份不到 60 行的声明式文件把评审意见处理这一协作环节固化成了可安装、可复用、行为边界清晰的 Agent 契约front matter 圈定能力22 个工具正文圈定行为判断 → 最小化修改 → 同类改全 → 补测试 → 跑测试 → 提交 → 下一条。这套元数据 行为规则的写法正是 awesome-copilot 仓库中所有*.agent.md文件的通用范式。【免费下载链接】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),仅供参考

相关新闻

最新新闻

日新闻

周新闻

月新闻