
OpenResearch от alphaXiv превращает coding-агентов в исследовательских. Из коробки он работал с Claude Code, Codex, OpenCode, Cursor и Google Antigravity. Мне хотелось использовать в нём ещё три агента, которые уже стояли у меня на Windows: Kimi Code, MiniMax Code и ZCode. Я поставил эту задачу Claude Code в облачной сессии и получил форк с релизом для Windows и Linux, в котором новые агенты работают наравне со старыми.
Итоги в цифрах:
1 ч 51 мин чистой работы агента и $62 на токены (5265 руб. по курсу ЦБ РФ на сегодня). Работала модель Opus 5.5 в режиме мышления Extra: она вышла совсем недавно, 22 сентября, и эта задача с OpenResearch стала для меня хорошим поводом посмотреть её в деле;
13 ч 13 мин по часам от первого сообщения до релиза v0.3.1, основную часть заняли ночь (пока я спал) и мои проверки на Windows;
20 коммитов, 48 файлов, +3818/−451 строк, 27 новых тестов;
три релиза: v0.3.0, v0.3.1 и v0.3.2.
Дальше рассказываю, что такое OpenResearch, как мы разделили работу, как устроены адаптеры и на какие грабли наступили. Их набралось 13.
Что такое OpenResearch
OpenResearch — это локальное рабочее место для исследовательских агентов. Вы ставите CLI orx, запускаете orx up, и на http://127.0.0.1:4791 открывается дашборд. В нём вы ставите задачу coding-агенту: найти литературу, сформулировать гипотезу, написать код, запустить эксперимент и разобрать результат.

Возможности проекта:
Параллельное исследование. У каждого направления своя сессия агента и свой изолированный git worktree. Несколько агентов могут параллельно пробовать разные идеи.
Воспроизводимые эксперименты. Варианты хранятся в git-нативном дереве экспериментов, а каждый ран получает неизменяемый архив записанного коммита.
Доказательства в контексте. Логи, диффы, файлы, результаты и артефакты привязаны к работе, которая их породила.
Выбор агента и модели для каждой сессии. После нашей доработки агентов восемь: Claude Code, Codex, OpenCode, Cursor, Google Antigravity, Kimi Code, MiniMax Code и ZCode.
Выбор вычислений. Можно считать локально, по SSH, на Slurm, Kubernetes, Ray, Hugging Face Jobs, Modal, Tinker или на управляемых вычислениях openresearch.sh.
Литература. Команды
orx discover,orx paperиorx litищут по alphaXiv, OpenAlex, bioRxiv и PubMed.Всё локально. Проекты, чаты, эксперименты, раны, логи, код и артефакты лежат в SQLite и файлах на вашей машине. Создание проекта или запуск рана ничего не публикует.
Автоисследование. Агент может сам пройти цикл: предложить идею, изменить код, запустить эксперимент, посмотреть на результаты и решить, что пробовать дальше.
Под капотом orx — это программа на Rust. Дашборд написан на React и вшит в бинарник. Каждый агент подключён через свой адаптер (harness): адаптер умеет найти CLI агента, проверить вход, запустить ход и разобрать поток событий.
Задача и разделение ролей
Я сформулировал задачу так: «хочу получить релиз OpenResearch, который поддерживал бы Kimi, MiniMax Code и ZCode „из коробки“ наряду с Claude Code, Codex, OpenCode, Cursor и Google Antigravity».
Роли распределились так:
Claude работал в облачном Linux-контейнере Claude Code. Он писал код, тесты, скрипты-зонды и документацию, гонял CI и собирал релиз. Windows у него не было. Единственной Windows-машиной для него был GitHub Actions: я включил job, который собирает
orx.exeартефактом.Я запускал скрипты-зонды на своей Windows 10, входил в аккаунты агентов, проверял сборки и присылал логи и скриншоты.
Ключевые решения Claude вынес мне в виде вопросов с вариантами:
какие платформы релизить: выбрали Windows и Linux, без подписи macOS;
куда смотрит автообновление: на релизы форка;
кто проверяет живые ходы: я, на своей машине;
через что подключать Kimi и MiniMax: через официальные CLI, а не через внутренности десктоп-приложений.
Работа шла в режиме плана: Claude записывал план в файл, я его одобрял, и только потом начинались правки. Самая длинная пауза сессии, семь с лишним часов, — как раз ожидание такого одобрения, пока я спал.

Вечером за 1 ч 11 мин работы агента появились зонды, общий ACP-драйвер, три адаптера, интеграция в дашборд и зелёный CI. Утром за 40 минут агент исправил всё, что вскрылось на живой Windows, и выпустил два релиза. Остальное время сессия ждала: меня, CI или утра. Ночью агент просто ждал, пока я высплюсь и одобрю план: в отличие от меня, сон ему не нужен.
Как устроены адаптеры
Сначала Claude исследовал все три CLI. Он скачал npm-пакеты в контейнер, снял --help и проверил протоколы. Выяснилось вот что:
Kimi Code (
kimi) и MiniMax Code (mcode) умеют Agent Client Protocol (ACP), то есть JSON-RPC 2.0 по stdio. Обоим подходит один общий драйвер.ZCode ACP не поддерживает: его
app-serverговорит на закрытом протоколе. Зато у него есть режим печати-p … --output-format stream-jsonс--resume, почти как у Cursor.

В итоге получилось четыре новых файла в src/local/harness/:
Файл | Строк | Что делает |
|---|---|---|
| 1432 | Общий ACP-драйвер. Отвечает за initialize, resume, load и new, режимы, модели и thinking, стрим текста и инструментов, запросы разрешений, план-карточку |
| 303 | Kimi Code: поиск |
| 408 | MiniMax Code: поиск |
| 746 | ZCode: CLI или рантайм, встроенный в десктоп-приложение, разбор stream-json, режимы Edit, YOLO и Plan |
Один ход через ACP выглядит так:

Самое ценное в ACP — запрос разрешений. Агент присылает session/request_permission с вариантами «разрешить» и «отклонить». orx показывает в чате карточку «Approval required» и отвечает агенту выбором пользователя:
{"method":"session/request_permission","params":{ "options":[{"optionId":"approve_once","kind":"allow_once"}, {"optionId":"reject","kind":"reject_once"}], "toolCall":{"title":"Bash","content":[{"type":"text","text":"Running: rm hello.txt"}]}}}

ZCode оказался интереснее. Отдельного CLI у меня не было, только десктоп-приложение. Пользователей форка тоже не хотелось бы заставлять отдельно устанавливать CLI, если у них уже установлено десктопное приложение ZCode. Внутри Electron-бандла лежит тот же рантайм, что и у CLI: resources\glm\zcode.cjs. orx запускает его через сам ZCode.exe с ELECTRON_RUN_AS_NODE=1. Окно при этом не открывается, а вход и настройки провайдера берутся из десктопа.
Дашборд получил три новых идентификатора агентов, иконки, подписи и тексты онбординга на шести языках. Для Kimi и MiniMax появились кнопки установки и входа. Для ZCode их нет специально: его «бинарник» — это GUI-приложение.


Сложности и как мы их решали
Это главная часть. На пути к релизу мы поймали 13 сбоев. Ни один из них не был опечаткой: каждый сидел на стыке с чужой системой.

Windows
1. PowerShell 5.1 не понимает UTF-8 скрипт. Первый зонд probe-agents.ps1 упал с ошибками разбора. Причина: Windows PowerShell 5.1 читает файл без BOM в системной кодировке cp1251, и одно длинное тире — превращалось в мусор. Решение: зонд стал строго ASCII.
2. Зонд открывал окна десктопных приложений. Когда зонд запускался, у меня на экране «сами открывались и закрывались» Kimi и ZCode. Скрипт искал бинарники по имени, и Get-Command zcode без учёта регистра находил ZCode.exe на PATH. Решение: вторая версия зонда запускает только файлы с именами kimi, mcode и zcode, а в orx появился фильтр is_desktop_app. Если рядом с файлом лежит resources/app.asar, это Electron-приложение, и CLI его не считают.
3. MiniMax «Install broken». Дашборд показывал MiniMax оранжевым, а в консоли было:
C:\Users\...\.minimax-code\npm\mcode.cmd --version failed: '"node"' is not recognized as an internal or external command
npm-шим mcode.cmd вызывает node из PATH, а Node.js, который ставит установщик MiniMax, в PATH не попадает. Для ходов orx уже добавлял этот Node в PATH, а для проверки версии — нет. Решение: проверка версии теперь запускается с тем же PATH, что и ход, и для этого есть тест.
Установщики и вход
4. Официальный установщик MiniMax падает. Установщик писал «Staged versioned MCode release validation failed» и не оставлял mcode. Мы нашли обход: у него к этому моменту уже скачан собственный Node.js, и тем же npm можно поставить @minimax-ai/code в ~/.minimax-code/npm. Этот обход встроен в кнопку «Install» дашборда: если официальный путь не сработал, установщик переходит на npm.
5. mcode login уводит не в тот регион. Вход открывал account.minimax.cn, хотя мой десктоп работает с minimax.io. По умолчанию CLI выбирает регион cn. Решение: подсказки и кнопка входа используют mcode login --region global.
Поведение агентов
6. Режим Ask у MiniMax ничего не спрашивал. В тестах через ACP режим default у MiniMax спокойно выполнил rm -rf за пределами проекта без единого запроса. Выяснилось, что default — это собственная политика риска MiniMax, а не «спрашивать всегда». Решение: пункта «Ask» у MiniMax в orx нет. Первый раз Claude поправил только описание в модуле, а сам пункт остался в меню. Это заметили на живой проверке и убрали уже с тестом.
7. Kimi после продолжения сессии врёт о своём режиме. Я сделал ход в Auto, переключился на Ask и попросил закоммитить. Kimi закоммитил и даже настроил git config, не показав ни одной карточки. Claude воспроизвёл это в контейнере на фиктивном провайдере модели. После session/resume Kimi сообщает currentModeId: "default", хотя сессия продолжает работать в auto. orx видел «уже default» и режим не переключал. Решение: для продолжённой сессии orx больше не верит сообщённым значениям и всегда отправляет выбранные:
if available && (resumed || current != Some(mode)) { calls.push(("session/set_mode", json!({"sessionId": session_id, "modeId": mode}))); }
8. «Unknown thinking value: high». У Kimi набор уровней thinking зависит от модели: у одних это off/low/high/max, у других только off/on. orx проверял уровень по списку модели, с которой сессия открылась. После смены модели он отправлял high той модели, у которой такого уровня нет. Решение: orx сначала ставит модель, затем берёт configOptions из её ответа и выбирает thinking уже по новому списку. Модели с off/on получают on.
Аккаунты и тарифы
9. ZCode: «Insufficient balance». У моего аккаунта Z.ai не было ни плана, ни баланса, так что в десктопе ZCode тоже была ошибка. Адаптер пришлось писать без живого аккаунта. Claude поднял в контейнере фиктивный сервер, совместимый с OpenAI API, прописал его в ZCode как провайдер и записал настоящие потоки событий: текст, вызов инструмента, отказ, ошибку провайдера и продолжение сессии. Эти потоки лежат в тестах как фикстуры.
10. Kimi: «not signed in», хотя вход выполнен. Первый живой ход Kimi закончился сообщением о том, что я не вошёл. Логи были пустыми. Claude нашёл в исходниках Kimi, что код -32000 auth_required приходит и тогда, когда уже начатый ход упал на авторизации у провайдера. Причину Kimi кладёт в текст ошибки, а наш адаптер этот текст выбрасывал. Когда мы начали показывать текст, стала видна настоящая причина:
Kimi Code refused the request: 401 Your current subscription does not have access to kimi-for-coding-highspeed.
Модель K2.7 Code Highspeed просто не входит в мой тариф. Решение: такой отказ теперь показывается как отказ провайдера с причиной, а не как «вы не вошли». Выбор K2.8 Preview всё решил.
Сборка и CI
11. UI собрался без переводов. CI упал на проверке «Committed UI bundle matches source». Оказалось, что плагин paraglide (i18n) при сборке качает свои модули с jsdelivr. Из контейнера jsdelivr недоступен, и плагин молча собрал бандл с пустыми строками. Claude написал обходной скрипт: npm-версии плагинов раздаются с локального HTTP-сервера, сборка идёт через него, а конфигурация потом возвращается как была. Правильность проверили так: исходный upstream-коммит этим способом собрался в точно такой же бандл по хешу.
12. Тесты требовали команды установки для каждого агента. Тесты harness_setup проверяли, что у каждого агента есть команды install, login и update. У ZCode их нет специально. Решение: явный список исключений NO_SETUP и отдельная проверка, что для ZCode эти команды действительно не выдаются.
13. Релиз форка упал бы при компиляции. Релизный workflow upstream помечает сборку как официальную (ORX_OFFICIAL_RELEASE_BUILD=1). А build.rs в этом случае требует, чтобы репозиторий был alphaXiv/OpenResearch, иначе падает с panic:
Ok(value) if value == "1" => panic!( "ORX_OFFICIAL_RELEASE_BUILD=1 is only valid in alphaXiv/OpenResearch GitHub Actions" ),
Claude заметил это до первого релиза. Из релизного пайплайна форка он убрал всё, что есть только у alphaXiv: пометку официальной сборки, подпись macOS, проверку production-канала, контракт телеметрии и выпуск macOS-приложения. Сборки форка идут в канале development, поэтому в телеметрию alphaXiv ничего не уходит.
Бонус: заголовок чата
Уже во время работы над этой статьёй, на скриншотах из контейнера, всплыла ещё одна мелочь. Чаты Kimi и ZCode назывались «Read and follow .openresearch/agent/autoresearch-local.md…». Оба агента берут заголовок из начала первого prompt, а orx ставит туда указатель на плейбук сессии. Исправление убирает служебные вставки orx из заголовка агента. Оно вышло в релизе v0.3.2.
Что получилось


Агент | Как подключён | Режимы | Модели | Продолжение сессии |
|---|---|---|---|---|
Kimi Code | ACP, | Ask, Auto, YOLO, | K2.8 Preview, K2.7 Code Highspeed, K3-256k, K3; thinking low/high/max |
|
MiniMax Code | ACP, | Auto, Full access, | MiniMax-M3 (± thinking), M2.7 |
|
ZCode | stream-json, | Edit, YOLO, | из настроек ZCode |
|

Релизы
Все три релиза собраны для Windows x64, Linux x64 и Linux ARM64 и опубликованы на странице релизов форка. Время указано по UTC и по Москве.
Версия | Дата и время | Что вошло |
|---|---|---|
25.09.2026, 10:16 UTC (13:16 МСК) | Первый релиз форка. Адаптеры Kimi Code, MiniMax Code и ZCode, общий ACP-драйвер, установка и вход из дашборда, иконки агентов, исправления по живой проверке на Windows. Сборки для Windows и Linux, | |
25.09.2026, 11:13 UTC (14:13 МСК) | Уровень thinking у Kimi выбирается по текущей модели: больше нет ошибки «Unknown thinking value». Иконки трёх новых агентов в README | |
25.09.2026, 12:59 UTC (15:59 МСК) | Заголовки чатов Kimi Code и ZCode берутся из сообщения пользователя, а не из служебной инструкции orx |
Все три агента видны в Settings → Harnesses, ставятся skills (orx install-skills), продолжают сессию после перезапуска orx up и получают плейбук OpenResearch. Для Kimi и MiniMax есть кнопки установки и входа прямо в дашборде.
Как начать (мини-инструкция по моему форку OpenResearch для учёных и исследователей)
Windows (сначала поставьте Git for Windows, OpenResearch использует Git Bash):
powershell -ExecutionPolicy Bypass -c "irm https://github.com/artur-shaikhutdinov/OpenResearch-Kimi-MiniMax-ZCode/releases/latest/download/openresearch-cli-installer.ps1 | iex"
Можно и без установщика: скачайте openresearch-cli-x86_64-pc-windows-msvc.zip со страницы релизов и распакуйте orx.exe.
Linux:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/artur-shaikhutdinov/OpenResearch-Kimi-MiniMax-ZCode/releases/latest/download/openresearch-cli-installer.sh | sh
Дальше:
orx upоткроет дашборд наhttp://127.0.0.1:4791.Поставьте нужного агента и войдите в него:
Kimi Code:
irm https://code.kimi.com/kimi-code/install.ps1 | iex(Linux:curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash), затемkimi login. Выбирайте модель, которая входит в ваш тариф.MiniMax Code: кнопка Install в Settings → Harnesses, затем
mcode login --region global(или--region cnдля китайского аккаунта).ZCode: достаточно десктоп-приложения ZCode с выполненным входом. Нужны план GLM Coding или баланс.
Claude Code, Codex, OpenCode, Cursor и Antigravity подключаются как раньше.
orx install-skillsустановит skill OpenResearch во все найденные агенты, включая три новых.Создайте проект и откройте чат. В пикере выберите агента, модель и режим.
Обновление до новой версии форка:
orx update.
C:\...\orx-windows-x86_64>orx update Updating orx 0.3.1 → 0.3.2 ... ✓ Updated orx 0.3.1 → 0.3.2.
Выводы
Что агент сделал хорошо. Claude сам прошёл путь от «изучи проект» до двух релизов. Он спроектировал общий ACP-драйвер, записал настоящие потоки событий в фикстуры, нашёл причины нескольких ошибок в чужих минифицированных исходниках и воспроизвёл баг Kimi на фиктивном провайдере до того, как чинить. Отдельно стоит отметить поведение: каждую развилку, которая меняла продукт, он выносил на моё решение, не пушил в main и не мержил сам. Однажды система разрешений заблокировала ему мерж, и он честно попросил сделать это меня.
Где без человека никак.
Живые аккаунты и тарифы: ни один mock не расскажет, что K2.7 Highspeed не входит в мой план.
Настоящая Windows с её кодировками, GUI-файлами на PATH и npm-шимами.
Продуктовые решения: платформы, версия релиза, куда смотрят обновления.
Из 13 проблем восемь нашлись только на моей машине.
Сколько стоило. $62 (5265 руб. по курсу ЦБ РФ на сегодня) и около двух часов работы агента, растянутых на вечер и утро с ночным перерывом на мой сон. Самой дорогой частью оказалось не написание кода, а цикл «собрать → проверить на Windows → разобрать лог». Отрисовка схем для этой статьи с использованием плагина diagram-design, съёмка скриншотов в контейнере Linux и подготовка версии релиза v0.3.2 с исправлением ошибки про заголовки чатов обошлись ещё в $26 (2208 руб. по курсу ЦБ).
ИИ для open source. В конце концов я создал Feature Request Issue и Pull Request с запросом на слияние моего форка с проектом OpenRearch. Будет приятно, если результаты работы включат в оригинал этого open source продукта.
Ссылки
Форк: artur-shaikhutdinov/OpenResearch-Kimi-MiniMax-ZCode, релиз v0.3.2
Оригинал: alphaXiv/OpenResearch, документация: openresearch.sh/docs
Запрос на слияние: Pull Request #441, feature request: Issue #440
Kimi Code: code.kimi.com, MiniMax Code: minimax.io, ZCode: z.ai
Схемы нарисованы плагином diagram-design в палитре дашборда OpenResearch. Скриншоты чатов Kimi и ZCode сняты в контейнере на фиктивном провайдере модели, скриншоты Windows — на моей машине.

