代码审查阅读器

一款VS Code扩展,使Copilot Chat可读取代码审查注释,实现自动化审查与修复工作流。

  • by corporealshift
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 corporealshift/copilot-review-mcp

使用说明

副驾驶评论阅读器

一个VS Code扩展,使Copilot Chat可以阅读代码审查注释。它将两个通常隔离的系统——Copilot评论面板和GitHub PR评论线程——连接成一个工具,Copilot Chat代理可以通过编程调用。

为什么存在

Copilot Chat可以运行代码审查并在VS代码评论面板中留下评论,但它没有内置的方法 读 这些评论回来了。GitHub PR评论也是如此——它们位于GitHub上,与您当地的Copilot聊天会话断开连接。

此扩展通过注册一个 语言建模工具 Copilot Chat可以调用该功能来检索评论,从而实现完全自动化的评论和修复工作流程。

设置

先决条件

  • VS代码1.96+
  • GitHub Copilot聊天扩展
  • gh CLI(用于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,立即开火并返回。

自动化工作流程

  1. 运行Copilot评论: Cmd+Shift+P → 副驾驶:查看更改
  2. 等待评论出现在评论面板中
  3. 询问Copilot聊天: “阅读#reviewComments并处理所有反馈”
  4. 代理读取评论并应用修复

对于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评论需要 gh CLI。 该工具外壳出来 gh api --如果 gh 未安装或未经过身份验证,PR注释将无法加载。示例代理的GraphQL突变(回复和解析PR线程)需要 repo 范围。如果 gh auth status 不显示 repo,重新运行 gh auth login 或 gh auth refresh -s repo.
  • 对象图遍历是版本敏感的。 本地评论阅读器浏览Copilot Chat的内部对象图,该图可以在扩展更新之间更改。看 内部.md 了解详情。