副驾驶评论阅读器
一个VS Code扩展,使Copilot Chat可以阅读代码审查注释。它将两个通常隔离的系统——Copilot评论面板和GitHub PR评论线程——连接成一个工具,Copilot Chat代理可以通过编程调用。
为什么存在
Copilot Chat可以运行代码审查并在VS代码评论面板中留下评论,但它没有内置的方法 _读_ 这些评论回来了。GitHub PR评论也是如此——它们位于GitHub上,与您当地的Copilot聊天会话断开连接。
此扩展通过注册一个 语言建模工具 Copilot Chat可以调用该功能来检索评论,从而实现完全自动化的评论和修复工作流程。
设置
先决条件
- VS代码1.96+
- GitHub Copilot聊天扩展
ghCLI(用于PR评论)-- 安装那么gh auth login
安装
从github上的releases部分下载扩展进行安装,然后运行
code --install-extension copilot-review-reader-0.1.0.vsix --force
您需要重新加载vscode以启用扩展。然后将示例代理复制到以下位置之一:
- 项目范围:
.github/agents/review-resolver.md(仅在该仓库中可用) - 用户范围:
~/.copilot/agents/review-resolver.md(适用于所有工作区)
来源
cd copilot-review-reader
yarn install
yarn build
yarn package # or: ./node_modules/.bin/vsce package --no-dependencies --allow-missing-repository
code --install-extension copilot-review-reader-0.1.0.vsix --force然后重新加载VS代码。
用法
在Copilot聊天
参考工具 #reviewComments 在任何Copilot聊天消息中:
Read #reviewComments and fix all the issues或者让代理自动调用它。该扩展注册了两个工具:
#reviewComments (review-reader_getReviewComments)
阅读现有的评论。使用 source 要筛选的参数:
source | 上面写着什么 |
|---|---|
"all" (默认) | 本地Copilot评论和GitHub PR评论 |
"local" | 仅来自VS代码注释面板的注释(副驾驶审查) |
"pr" | 仅来自GitHub PR的评论(通过 gh CLI) |
#startReview (review-reader_startReview)
以编程方式触发对未提交更改的Copilot代码审查,并可选择等待结果。
| 参数 | 默认值 | 说明 |
|---|---|---|
scope | "all" | "all" =阶段性+非阶段性, "staged" =仅索引, "unstaged" =仅工作树 |
waitForComments | true | 如果 true,阻止,直到审阅完成并返回评论。如果 false,立即开火并返回。 |
自动化工作流程
- 运行Copilot评论:
Cmd+Shift+P→ 副驾驶:查看更改 - 等待评论出现在评论面板中
- 询问Copilot聊天: _“阅读#reviewComments并处理所有反馈”_
- 代理读取评论并应用修复
对于PR评论,只需打开一个有活动PR的分支,该工具就会通过以下方式自动检测到它 gh pr view.
命令
| 命令 | 描述 |
|---|---|
Review Reader: Show Review Comments | 将找到的注释+调试日志转储到输出通道 |
Review Reader: Dump Comments to File | 将本地评论写入 .review-comments.json 在工作区根目录中 |
评论格式
该工具返回一个JSON数组。每条评论看起来像:
{
"file": "src/editor/fields/media-field.tsx",
"line": 40,
"endLine": 42,
"column": 1,
"author": "copilot",
"body": "This layout change from inline-block to block will break the thumbnail grid.",
"suggestion": "display: 'inline-block'",
"source": "local",
"outdated": false,
"url": null
}| 字段 | 描述 |
|---|---|
file | 工作区根的相对路径 |
line / endLine | 基于1的线范围 |
column | 1-基柱 |
author | "copilot" 对于本地,PR的GitHub用户名 |
body | 评论文本 |
suggestion | 可选的建议修复(代码或标记) |
source | "local" 或 "pr" |
outdated | 仅限PR——评论是否针对过时的代码 |
url | 仅限PR-评论的GitHub API URL |
代理示例
示例代理定义包含在 example-agent.md它定义了一个“审查解析器”代理,该代理自主读取审查评论,对其进行分类和修复,在循环中触发本地审查,并提交结果——所有这些都不需要人为干预。
局限性
- 当地评论需要积极审查。 如果没有运行副驾驶审查,
source: "local"什么也不返回。 - PR评论需要
ghCLI。 该工具外壳出来gh api--如果gh未安装或未经过身份验证,PR注释将无法加载。示例代理的GraphQL突变(回复和解析PR线程)需要repo范围。如果gh auth status不显示repo,重新运行gh auth login或gh auth refresh -s repo. - 对象图遍历是版本敏感的。 本地评论阅读器浏览Copilot Chat的内部对象图,该图可以在扩展更新之间更改。看 内部.md 了解详情。
