inreview
InReview
InReview — это расширение VS Code для ревью локальных изменений Jujutsu (jj) без открытия pull request.
Выберите непрерывный диапазон изменений jj, просмотрите их объединённые или по-изменённые диффы в VS Code и оставляйте комментарии на новой стороне диффа. Нативный локальный MCP-мост позволяет GitHub Copilot CLI читать эти комментарии, отвечать на них и разрешать их после обновления кода.
InReview — это экспериментальная локальная сборка. Она не опубликована в VS Code Marketplace.
Возможности
Ревью исторического непрерывного диапазона изменений, revset или последних
Xизменений, заканчивающихся на@.Переключайтесь между одним объединённым диффом стека и диффами по каждому изменению.
Используйте встроенный редактор диффов VS Code, подсветку синтаксиса, темы и Comments API.
Добавляйте комментарии к добавленным строкам, неизменённым строкам контекста и целым файлам.
Просматривайте добавленные, изменённые, удалённые, переименованные, скопированные, бинарные файлы и символические ссылки.
Обновляйте ревью после переписывания jj, сохраняя точную историю комментариев.
Сохраняйте несоответствующие комментарии как устаревшие ветки обсуждений, связанные с исходным снимком.
Архивируйте и восстанавливайте локальные ревью.
Подключайте GitHub Copilot CLI один раз через нативный пользовательский MCP-мост.
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. Запускайте GitHub Copilot CLI в той же среде хост-процесса расширений, что и InReview. Мост не пересылает IPC между хостами.
Если VS Code не может найти jj, перезапустите все окна VS Code после изменения PATH или укажите в параметре 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 запускает рабочий процесс GitHub Actions Build VSIX packages. Запуск выгружает отдельные артефакты для вариантов x64 и arm64 для Linux, macOS и Windows.
Перезагрузите VS Code после установки.
Известная проблема: предупреждение об устаревании Node URL
VS Code 1.135 может выводить предупреждение Node DEP0169 о url.parse() после успешной установки любого локального VSIX. След устаревания указывает на запрос метаданных галереи в cliProcessMain.js VS Code; тот же след возникает с минимальным расширением в изолированных каталогах user-data и расширений. Тестовый запуск также может сообщать предупреждение как [AgentHost:stderr] сразу после запуска встроенного Agent Host в VS Code. Исходный код и производственная сборка InReview не вызывают устаревший API. Исправление в upstream принадлежит Microsoft: microsoft/vscode#301941; соответствующий отчёт о VSIX был закрыт как дубликат.
Ревью изменений
Откройте один доверенный репозиторий jj в VS Code.
Откройте представление 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 отклоняет слияния, расходящиеся изменения и неразрешённые конфликты в выбранном стеке. Обновление следует исходным стабильным идентификаторам изменений после переписывания; оно не добавляет новое дочернее изменение, которое позже станет @.
Choose Range просматривает до 200 предков @ страницами по 50. Включаются как самое новое, так и самое старое выбранные изменения. InReview отклоняет диапазон, который пересекает слияние, содержит расходящееся изменение или неразрешённый конфликт либо не образует единую непрерывную цепочку родителей.
Advanced jj Revset принимает любой revset, который разрешается в 1–200 изменений в одной непрерывной цепочке с одним родителем. InReview показывает предпросмотр разрешённых изменений и сохраняет их полные стабильные идентификаторы изменений. Он не сохраняет и не пересчитывает исходный revset при обновлении.
Построчные комментарии доступны только на добавленных или неизменённых строках новой стороны. Удалённые строки остаются видимыми, но их нельзя комментировать. Удалённые файлы могут получать комментарии к файлу. Обновление сохраняет ветку текущей, только если её полная цель и контекст имеют одно точное совпадение. Все остальные ветки становятся Outdated и остаются связанными со своим неизменяемым исходным снимком. Пользовательские комментарии можно редактировать или удалять. Ответы агента неизменяемы. Разрешённые ветки можно снова открыть.
Подключение GitHub Copilot CLI
Расширение устанавливает свой упакованный нативный мост в стабильное хранилище расширений. Один пользовательский демон моста обслуживает все подходящие окна InReview в одной среде хост-процесса расширений. Каждое доверенное окно регистрирует свою каноническую рабочую область через ограниченный пользователем сокет Unix-domain или именованный канал 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-сессии и предоставляет только шесть указанных выше инструментов. Мост направляет операции зарегистрированному процессу расширения; он не может читать произвольные файлы, выполнять команды оболочки или запускать jj. Не используйте его в недоверенной среде с общим пользователем.
Команды
Используйте палитру команд или соответствующие действия в представлениях и комментариях.
Command | Purpose |
InReview: Start Review | Выбирает и захватывает диапазон, revset или последний стек изменений. |
InReview: Refresh Review | Захватывает переписанные версии тех же стабильных идентификаторов изменений. |
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 | Управляет пользовательскими комментариями через интерфейс Comments в VS Code. |
InReview: Copy InReview MCP Setup | Копирует одноразовую команду нативного stdio или JSON-конфигурацию MCP. |
InReview: Show MCP Bridge Status | Показывает состояние установки нативного моста и регистрации рабочей области. |
Представления
Active Review показывает выбранные изменения, текущий снимок, режим отображения и изменённые файлы.
Comments группирует открытые текущие, открытые устаревшие и разрешённые ветки.
History показывает последние 20 архивных ревью.
Данные ревью хранятся в глобальном хранилище расширений VS Code. Они включают неизменяемые снимки файлов, метаданные ревью и комментарии. Они никогда не записываются в репозиторий. InReview использует сжатые контентно-адресуемые блобы, сериализует записи для каждого репозитория, сохраняет последние 20 архивных ревью и выполняет сборку мусора для неиспользуемых блобов. Он не отправляет телеметрию и не выполняет сетевых запросов. Трафик MCP остаётся в локальном пользовательском сокете или именованном канале.
Настройки
Setting | Default | Description |
|
| Имя команды или абсолютный путь к исполняемому файлу jj. |
|
| Начальное значение для запроса Current Stack (Last X). |
|
| Количество изменённых строк, требующее подтверждения. |
|
| Регистрирует подходящую доверенную рабочую область в нативном MCP-мосте. |
|
| Порог журналирования в выходном канале. |
Текущие ограничения
Один репозиторий jj на окно VS Code.
Ревью должны содержать один непрерывный стек изменений с одним родителем.
Изменения-слияния и неразрешённые конфликты отклоняются.
Комментарии к удалённым строкам не поддерживаются.
Нативные диффы по отдельным файлам вместо предлагаемого API многофайловых диффов VS Code.
Нет пересылки через мост между локальным и удалённым хостами расширений.
Нет облачной синхронизации или общего сервера ревью.
У моста нет токена приложения. Его локальная конечная точка 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 запускает проверку типов, линтинг, модульные и интеграционные тесты jj, production-сборку и проверку пакета.
Расширение использует стабильные публичные API VS Code. Оно не включает предлагаемые API. Проверка пакета обеспечивает точный список разрешённых элементов VSIX: манифест, README, журнал изменений, production-сборка и иконка.
Основные области исходного кода:
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.-