inreview
InReview
InReview 是一个 VS Code 扩展,用于在不打开拉取请求的情况下审查本地的 Jujutsu (jj) 变更。
选择一段连续的 jj 变更范围,在 VS Code 中检查它们的合并差异或逐变更差异,并在差异的新侧留下评论。一个本地原生 MCP 桥接器让 GitHub Copilot CLI 能够读取这些评论、回复它们,并在其更新代码后解决它们。
InReview 是一个实验性的本地构建。它尚未发布到 VS Code Marketplace。
功能
审查一段历史连续的变更范围、一个 revset,或以
@结尾的最新X个变更。在单个合并栈差异和逐变更差异之间切换。
使用 VS Code 原生的差异编辑器、语法高亮、主题和 Comments API。
向新增行、未更改的上下文行和整个文件添加评论。
审查已添加、已修改、已删除、已重命名、已复制、二进制和符号链接条目。
在 jj 重写后刷新审查,同时保留精确的评论历史。
将未匹配的评论保留为链接到其原始快照的过时线程。
归档和恢复本地审查。
通过一个原生每用户 MCP 桥接器一次性连接 GitHub Copilot CLI。
Related MCP server: copilot-mcp-server
要求
VS Code 1.96 或更高版本。
jj0.44 或更高版本,且可供 VS Code 扩展宿主使用。一个受信任的文件系统工作区,其中包含一个 jj 仓库。
如果你需要代理审查支持,则需要 GitHub Copilot CLI。
打包的扩展包含原生桥接器可执行文件。最终用户不需要 Node.js、Rust 或其他桥接器运行时。
本地和远程扩展宿主均受支持,前提是匹配的原生 VSIX 能在其中运行。这包括 WSL、SSH、Dev Containers 和 VS Code Tunnels。请在与 InReview 相同的扩展宿主环境中运行 GitHub Copilot CLI。桥接器不会在宿主之间转发 IPC。
如果 VS Code 找不到 jj,请在更改 PATH 后重启每个 VS Code 窗口,或将 InReview: Jj Path 设置为可执行文件的绝对路径。
安装本地 VSIX
构建并安装:
npm ci
npm run package:vsix
code --install-extension .\inreview-<target>-0.0.1.vsix --force构建 VSIX 需要 Rust 1.88 或更高版本。<target> 是当前原生平台,例如 linux-x64、darwin-arm64 或 win32-x64。
每次提交到 main 都会运行 Build VSIX packages GitHub Actions 工作流。该运行会为 Linux、macOS 和 Windows 的 x64 和 arm64 变体分别上传工件。
安装后重新加载 VS Code。
已知问题:Node URL 弃用警告
VS Code 1.135 在成功安装任何本地 VSIX 后,可能会打印一条关于 url.parse() 的 Node DEP0169 警告。弃用跟踪指向 VS Code 的 cliProcessMain.js 中的扩展市场元数据请求;在隔离的 user-data 和扩展目录中使用最小扩展时也会出现相同的跟踪。测试启动也可能在 VS Code 内置的 Agent Host 启动后立即将警告报告为 [AgentHost:stderr]。InReview 的源代码和生产包不会调用已弃用的 API。Microsoft 拥有 microsoft/vscode#301941 中的上游修复;匹配的 VSIX 报告 已作为重复问题关闭。
审查变更
在 VS Code 中打开一个受信任的 jj 仓库。
打开 InReview 活动栏视图。
运行 InReview: Start Review。
选择 Choose Range、Current Stack (Last X) 或 Advanced: Enter jj Revset。
对于范围,先选择最新的包含变更,然后选择最旧的包含变更。使用 Load older changes 扩展历史窗口。
确认有序的选择预览。
在 Active Review 下选择一个文件以打开其原生差异。
在新增或未更改的新侧行上使用评论槽,或使用 Add File Comment。
在选定的变更被重写后,运行 InReview: Refresh Review。
InReview 存储不可变的快照。只有当线程的完整目标和上下文精确且唯一地映射到刷新后的差异时,它才会保持内联。否则,它会变为 Outdated,并继续在 Comments 视图中可用。
Last X 表示 @ 加上最多 X - 1 个直接祖先。该选择是一个连续的、单父级的堆栈。它会在 jj 根变更之前停止,因此一个请求可能包含少于 X 个变更。InReview 会拒绝所选堆栈中的合并、发散变更和未解决的冲突。刷新会在重写后遵循原始稳定变更 ID;它不会添加一个后来成为 @ 的新子变更。
Choose Range 以每页 50 个的方式浏览 @ 的最多 200 个祖先。所选的最新和最旧变更都会被包含。InReview 会拒绝跨越合并、包含发散变更或未解决冲突、或未形成一条连续父链的范围。
Advanced jj Revset 接受任何解析为一条连续、单父链中的 1–200 个变更的 revset。InReview 会预览解析后的变更并存储其完整的稳定变更 ID。它不会在刷新期间保存或重新评估原始 revset。
行评论仅适用于新侧上新增或未更改的行。已删除的行仍然可见,但不能评论。已删除的文件可以接收文件评论。刷新仅在线程的完整目标和上下文有一个精确匹配时才会保持其最新。所有其他线程都会变为 Outdated,并保持链接到其不可变的原始快照。用户评论可以编辑或删除。代理回复是不可变的。已解决的线程可以重新打开。
连接 GitHub Copilot CLI
该扩展将其打包的原生桥接器安装在稳定的扩展存储中。一个每用户桥接器守护进程为同一扩展宿主环境中的每个符合条件的 InReview 窗口提供服务。每个受信任的窗口通过用户受限的 Unix 域套接字或 Windows 命名管道注册其规范工作区。InReview 不会打开 TCP 端口。
当受信任的窗口包含一个受支持的 jj 仓库且 inreview.mcp.enabled 开启时,桥接器会自动启动。无需打开 InReview 视图或运行命令。
运行 InReview: Copy InReview MCP Setup。
选择
copilot mcp add命令或mcp-config.json片段。在相同的扩展宿主环境中,将结果粘贴到 GitHub Copilot CLI 一次。
使用
/mcp show确认服务器连接。
复制出的命令具有以下形式:
copilot mcp add --tools "list_workspaces,connect_workspace,read_review_metadata,read_comments,reply_comment,close_comments" inreview -- "<native-launcher>"inreview 条目会发现在该环境中注册的每个工作区。你不需要为每个仓库设置一个 MCP 条目。让代理列出打开的工作区,连接到一个返回的绝对根目录,并审查其打开的评论。
MCP 工具
Tool | Purpose |
| 列出向桥接器注册的规范根目录和宿主平台。 |
| 将 MCP 会话绑定到确切的工作区根目录和活动审查。 |
| 读取选定的变更、快照、文件元数据和评论计数。 |
| 读取经过筛选的当前、过时、打开或已解决的线程。 |
| 以 |
| 以原子方式解决一个或多个打开的线程,并可附带解决说明。 |
桥接器不使用 Bearer 令牌。它将套接字或命名管道限制为当前用户,验证有界消息,隔离 MCP 会话,并且只公开上述六个工具。桥接器将操作路由到已注册的扩展进程;它无法读取任意文件、运行 shell 命令或运行 jj。请勿在不受信任的共享用户环境中使用它。
命令
使用命令面板或匹配的视图和评论操作。
Command | Purpose |
InReview: Start Review | 选择并捕获一个范围、revset 或最新变更堆栈。 |
InReview: Refresh Review | 捕获相同稳定变更 ID 的重写版本。 |
InReview: Archive Review | 将活动审查设为只读并将其移至历史记录。 |
InReview: Restore Archived Review | 将已归档的审查恢复为活动审查。 |
InReview: Rename Review | 更改活动审查的标题。 |
InReview: Delete Archived Review | 永久删除一个已归档的审查。 |
InReview: Show Combined Diff | 将最旧变更的父级与堆栈头部进行比较。 |
InReview: Show Per-Change Diffs | 显示每个选定变更与其直接父级的差异。 |
InReview: Add File Comment | 添加适用于整个文件的评论。 |
InReview: Resolve Comment / Reopen Comment | 更改线程的解决状态。 |
InReview: Submit/Edit/Save/Cancel/Delete Comment | 通过 VS Code 的 Comments UI 管理用户评论。 |
InReview: Copy InReview MCP Setup | 复制一次性的原生 stdio 命令或 JSON MCP 配置。 |
InReview: Show MCP Bridge Status | 显示原生桥接器安装和工作区注册状态。 |
视图
Active Review 显示选定的变更、当前快照、显示模式和已更改的文件。
Comments 对打开的当前线程、打开的过时线程和已解决的线程进行分组。
History 显示最新的 20 个已归档审查。
审查数据存储在 VS Code 的扩展全局存储中。它包括不可变的文件快照、审查元数据和评论。它永远不会被写入仓库。InReview 使用压缩的内容寻址 blob,按仓库序列化写入,保留最新的 20 个已归档审查,并垃圾回收未被引用的 blob。它不发送遥测数据,也不发出网络请求。MCP 流量保持在本地每用户套接字或命名管道上。
设置
Setting | Default | Description |
|
| jj 可执行文件的命令名称或绝对路径。 |
|
| Current Stack (Last X) 提示的初始值。 |
|
| 需要确认的已更改行数。 |
|
| 向原生 MCP 桥接器注册符合条件的受信任工作区。 |
|
| 输出通道的日志记录阈值。 |
当前限制
每个 VS Code 窗口一个 jj 仓库。
审查必须包含一个连续的、单一父提交的变更栈。
合并变更和未解决的冲突将被拒绝。
不支持对已删除的行添加评论。
采用原生的逐文件 diff,而非 VS Code 提议的多文件 diff API。
不在本地和远程扩展主机之间进行桥接转发。
没有云同步或共享审查服务器。
桥接器没有应用程序令牌。其本地 IPC 端点依赖当前用户的 操作系统访问控制。
Linux、macOS、WSL、SSH、Dev Container 和 Tunnel 扩展主机均为 受支持的目标,但并未在 0.0.1 版本中全部进行手动验证。
开发
npm ci
npm run typecheck
npm run lint
npm run test:unit
npm run test:integration
npm run build:production
npm run validate:package
npm run package:vsixnpm run check 会运行类型检查、lint、单元测试和 jj 集成测试、生产包构建以及包验证。
该扩展使用稳定的公共 VS Code API。它不启用提议的 API。 包验证强制执行精确的 VSIX 允许列表:清单、README、 变更日志、生产包和图标。
主要源代码区域包括:
src/domain/ Persisted review and comment models
src/storage/ Atomic manifests, locks, and content-addressed blobs
src/jj/ Safe jj process adapter and snapshot capture
src/diff/ Git patch parsing and file classification
src/review/ Review lifecycle and comment services
src/vscode/ Views, native virtual diffs, and Comments API integration
src/mcp/ Streamable HTTP transport, tools, and Copilot setupThis server cannot be deployed
Maintenance
Related MCP Connectors
AI code review for GitHub PRs with an MCP autofix loop for Claude Code and Cursor
Adaptive plan/build/review cycles for AI coding assistants, persisted across sessions.
Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables management of GitHub pull request review threads through natural language, allowing users to list, reply to, and resolve PR review comments using GitHub's GraphQL API.4MIT
- AlicenseCqualityDmaintenanceConnects MCP-enabled editors to GitHub Copilot CLI for non-interactive code analysis, batch processing, and code review.106 npm5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to fetch GitHub pull request diffs and metadata, and post review comments directly through the MCP protocol.1MIT
- FlicenseNot gradedqualityDmaintenanceFetches GitHub PR comments and intelligently applies fixes directly in workspace files, supporting automatic issue resolution with smart pattern recognition.-