跳转到正文

自定义代理

本页介绍位于 .github/agents/中的仓库级自定义代理。每个代理都是一个 .agent.md 文件,由 YAML 前置元数据和指令组成,用于让 Copilot 专门处理代码审查、安全性、无障碍性或拉取请求摘要。

.agent.md 格式

自定义代理使用顶部包含前置元数据的 Markdown 文件:

---
name: dotnet-reviewer
description: Senior .NET code reviewer specializing in C# best practices, security, and performance
tools: ['agent', 'read', 'search']
model: claude-sonnet-4.6
---

name 是调用名称, description 告知 Copilot 该代理适用的场景, tools 声明代理可以使用的功能,而 model (如存在)用于固定模型。Markdown 正文包含角色、审查清单、输出格式以及所有交叉验证指令。

dotnet-reviewer

  • 路径.github/agents/dotnet-reviewer.agent.md
  • 前置元数据名称dotnet-reviewer
  • 前置元数据说明Senior .NET code reviewer specializing in C# best practices, security, and performance
  • 工具['agent', 'read', 'search']
  • 固定模型claude-sonnet-4.6
  • 触发场景:当变更需要 .NET 专项审查时使用,尤其适用于安全性、性能、可空引用类型、异步用法、资源释放或 EF Core 模式。
  • 调用示例
@dotnet-reviewer review the changes in AgentHQDemo.Api for async and EF Core issues

该代理还会指示自身在审查后将 security-scanner 作为子代理运行,然后直接报告两组发现。

security-scanner

  • 路径.github/agents/security-scanner.agent.md
  • 前置元数据名称security-scanner
  • 前置元数据说明Security-focused code reviewer that identifies vulnerabilities and compliance issues
  • 工具['agent', 'read', 'search']
  • 固定模型gpt-5.3-codex
  • 触发场景:用于审查 OWASP Top 10 问题、输入验证、身份验证与授权、敏感数据泄露、不安全解析或日志记录不足。
  • 调用示例
@security-scanner check the chat and transaction endpoints for OWASP issues

该代理要求每项发现都包含严重级别、适用时的 CWE、位置、攻击场景、修复措施和参考资料。如果存在用户界面代码,它会指示自身将 accessibility-auditor 作为子代理运行。

pr-summary

  • 路径.github/agents/pr-summary.agent.md
  • 前置元数据名称pr-summary
  • 前置元数据说明Generates concise, informative PR summaries from code changes
  • 工具['agent', 'read', 'search']
  • 固定模型:未声明。
  • 触发场景:用于编写拉取请求说明、汇总差异,或按功能、修复、测试、文档和配置对变更分组。
  • 调用示例
@pr-summary summarise this PR and call out reviewer risks

预期输出包括单行摘要、分组后的变更概述、关键变更文件、影响评估和测试说明。它还要求使用 dotnet-reviewer 进行交叉验证,并且在最终的代码质量部分仅包含“严重”和“高”级别的发现。

accessibility-auditor

  • 路径.github/agents/accessibility-auditor.agent.md
  • 前置元数据名称accessibility-auditor
  • 前置元数据说明:“当用户要求审查代码中的无障碍问题或合规性时,请使用此代理。”

    触发短语包括:

    • “检查此代码是否存在无障碍问题”
    • “审查 WCAG 合规性”
    • “审计无障碍问题”
    • “查找无障碍违规”
    • “这是否符合无障碍要求?”

    示例:

    • 用户说“能否审查此组件的无障碍性?”→ 调用此代理审计代码
    • 用户问“此表单是否符合 WCAG 标准?”→ 调用此代理检查合规性
    • 用户说“此代码可能存在哪些无障碍问题?”→ 调用此代理识别问题
    • 编写用户界面代码后,如果可能存在无障碍问题,则主动调用此代理
  • 工具['read', 'search']
  • 固定模型:未声明。
  • 触发场景:说明中明确列出了“检查此代码是否存在无障碍问题”“审查 WCAG 合规性”“审计无障碍问题”“查找无障碍违规”和“这是否符合无障碍要求?”等短语。
  • 调用示例
@accessibility-auditor review the Blazor components for WCAG 2.1 AA issues

该代理检查语义化 HTML、ARIA、键盘导航、颜色对比度、焦点状态、表单标签、动态效果、媒体替代内容和响应式行为。

共享指令与审查专用指令

.github/copilot-instructions.md 是此仓库中所有助手的共享规范,其中说明了 .NET 10 零售分析应用、编码约定、Copilot SDK 模式、测试要求和安全规则。

.github/copilot-review-instructions.md 的范围更窄,提供审查时所需的上下文,包括 GitHub Copilot SDK v1.0.9 的命名空间 GitHub.Copilot、显式 session.On<T>(...) 用法、SSE 流式传输规则、模型发现预期,以及演示中有意保留的代码异味;除非明确要求,否则审查者不应标记这些代码异味。

模型固定配置的经验

security-scanner.agent.md 现在固定使用 model: gpt-5.3-codex。原值的大小写错误且末尾带有空格;实时模型列表中只有 gpt-5.3-codex 。无效的模型固定配置可能导致代理无法启动,因此前置元数据中的模型 ID 必须准确无误。