Гайд по настройке
Подключение RAGRAF к AutoClaw
--agent-kind autoclaw CLI + MCP zwork 2.0.2 · Electron подтверждено замерами сессии · zwork 2.0.2
Agent-среда автора RAGRAF (zwork 2.0.2, Electron): именно на ней продукт проектировался и на ней измерены опубликованные результаты. Подключение идёт двумя независимыми каналами — CLI без настройки и MCP через интерфейс продукта; --agent-kind autoclaw — реальный кодовый путь (атрибуция телеметрии, расширенный режим журнала). Всё в гайде — замеры интеграционной сессии и факты из кода приложения.
- 2 канала: CLI + MCP
- 24 инструмента ragraf_*
- 4 дефекта закрыто
- 18 корпусов в реестре автора
Обозначения в командах: <repo> — путь к локальному клону RAGRAF (в сессии автора — C:\AutoClaw\RAGRAF), <account> — каталог учётной записи AutoClaw, <корпус> — имя конфигурации корпуса. Команды и выводы приводятся как измерены — включая русские строки, которые печатает продукт.
Источник: документ интеграционной сессии «RAGRAF × AutoClaw: подключение, устройство, проверка» — замеры текущей сессии и факты из кода приложения.
Два канала: CLI и MCP
Смешивать каналы нельзя — от этого зависит, что именно проверять. CLI работает всегда и не зависит от настроек приложения; MCP даёт те же операции как инструменты агента, но требует регистрации сервера.
| Канал CLI | Канал MCP | |
|---|---|---|
| Как вызывается | python tools/ragraf.py … через инструмент оболочки | инструменты ragraf_* в списке агента |
| Кто запускает | агент вручную, команду | платформа, при подключённом сервере |
| Зависит от настроек приложения | нет | да (сервер надо зарегистрировать) |
| Что даёт | все 13 подкоманд и 22 операции | 24 операции как инструменты |
| Требует --project | да, или ensure <каталог> | нет: корпус берётся по рабочему каталогу |
Главное следствие
Если инструментов ragraf_* в списке нет — это не поломка RAGRAF: индекс, поиск, схема и графы остаются полностью рабочими через CLI. Замер сессии: tool_search по имени ragraf вернул 0 инструментов — канал MCP не активен, и правила проекта работают через первый канал.
Что уже настроено
Срез машины автора по замерам интеграционной сессии — ориентир «как должно выглядеть» после настройки.
| Элемент | Состояние · где |
|---|---|
| Правило «сначала RAGRAF» | есть · ~/.pi/agent/AGENTS.md, раздел 8 (~1300 строк) |
| Навык ragraf-core | есть в обоих аккаунтах · <account>\runtime\zwork-agent\skills\ragraf-core |
| Корпуса в реестре | 18 разработок · <repo>\catalog\catalog.json |
| CLI RAGRAF в окружении агента | работает · python tools/ragraf.py найден и отвечает |
| Инструменты ragraf_* (MCP) | не подключены · замер: tool_search → 0 |
Аккаунты AutoClaw на машине (у каждого своё дерево навыков и свой runtime)
%APPDATA%\AutoClaw-oversea-official\accounts\<account-1>\ (основной)
%APPDATA%\AutoClaw-oversea-official\accounts\<account-2>\Навык разложен в оба аккаунта — тогда при смене учётной записи он остаётся виден. Свежесть копий подтверждена замером: SKILL.md, reference/operations.md и reference/repair.md совпадают с проектной редакцией по SHA-256 в обоих аккаунтах.
Канал CLI: работает без настройки
Основной путь, пока MCP не зарегистрирован. Три правила.
- Первым шагом — актуализировать корпусОтвет несёт status: actual — индекс актуален, reindexed — пересобран только что, created — корпуса не было и он создан, not_a_project — каталог не похож на проект, error — причина в поле reason.Первый шаг задачи (PowerShell)
python <repo>\tools\ragraf.py ensure <каталог проекта> - Дальше — операция, а не чтение файловПризнак stale: true означает, что фактам верить нельзя до переиндексации: код ушёл вперёд. Это не «предупреждение на всякий случай».Операции индекса (PowerShell)
python <repo>\tools\ragraf.py -p <repo>\config\<корпус>.yaml query symbol --name corpus_hash python <repo>\tools\ragraf.py -p <repo>\config\<корпус>.yaml check - Список корпусов — командой без конфигурацииРеестр разработок виден без -p: catalog печатает все заведённые корпусы с ревизиями и суммами.Реестр корпусов (PowerShell)
python <repo>\tools\ragraf.py catalog
Почему CLI здесь предпочтительнее MCP
Не из-за удобства. Каждая команда печатает текст, который агент читает сам, а MCP-ответ надо интерпретировать по схеме. Плюс CLI не зависит ни от перезапуска приложения, ни от регистрации сервера — то есть не может «тихо отвалиться». Замер по полигону: 14 вызовов инструментов против 28 без индекса, попадание в файл-цель с первого запроса — 92%.
Канал MCP: устройство и подключение
Устройство подключения MCP в AutoClaw не совпадает с привычными клиентами (Claude Desktop, Codex, DeepSeek Harness), и это существенно. Четыре факта, измеренные в сессии:
- MCP-конфига в профиле нетПоиск по ~/.pi, <account>\runtime и <account>\projects не нашёл ни mcp.json, ни mcpServers в настройках. Регистрация живёт не в файле профиля.
- ragraf не регистрируется ни одним пакетом приложенияПроверены все таблицы runtime.sqlite (106 штук) — таблицы MCP-серверов нет; упоминания ragraf-mcp в базе оказались историей прошлых сессий, а не регистрацией.
- Вертикальный пакет объявляет MCP-серверы декларациейПоле mcpServers есть в схеме пакета: dist\resources\vertical-packs\code\zwork-pack.json. У официальных пакетов оно пустое ("mcpServers": []), а пользовательских пакетов на диске нет вовсе (поиск zwork-pack.json вне установки — 0 файлов).
- Встроенный агент MCP не обслуживает@earendil-works/pi-coding-agent не содержит ни строки про MCP (проверены dist и docs); все найденные в бандле упоминания mcpServers принадлежат встроенным SDK вендоров (Google/Gemini) и к AutoClaw отношения не имеют.
Вывод, который надо принять, а не обойти
Штатного файлового способа прописать MCP-сервер в AutoClaw не найдено. Подключение идёт через интерфейс продукта — настройки проекта/приложения. Выдуманного пути здесь не будет: инструкция из догадки ломает доверие ко всем остальным числам.
Как подключать и что проверять
- Найдите раздел MCP в настройках продуктаОткройте настройки проекта (или приложения) в AutoClaw и найдите раздел про MCP / внешние инструменты — сервер регистрируется там.
- Укажите запуск (значения проверены запуском)--project указывать не нужно: сервер сам определит корпус по рабочему каталогу через реестр разработок, а для чужого проекта корпус выбирается инструментом ragraf_use_project (список даёт ragraf_catalog).
- Проверьте, а не предположитеДо подключения вызовите tool_search с запросом ragraf — ожидается 0. После регистрации и перезапуска — 24 инструмента. Эта разница и есть доказательство, что подключение сработало.
команда: <repo>\.venv\Scripts\python.exe
аргументы: <repo>\tools\ragraf-mcp.py
--agent AutoClaw --agent-kind autoclaw
рабочий каталог: <repo>Если интерфейсного раздела нет
Тогда честный ответ такой: MCP-канал в этой сборке недоступен, а RAGRAF работает через CLI (раздел выше). Ничего не теряется, кроме того, что каждый вызов идёт командой, а не инструментом. Придумывать регистрацию правкой базы или подменой файла нельзя: runtime.sqlite — состояние приложения, и правка его в обход продукта ломает учёт прав и артефактов (таблицы governed_tool_*).
4 дефекта совместимости
Подключение ко второму клиенту (DeepSeek Harness) вскрыло дефекты, которые касались и AutoClaw. Все четыре закрыты, каждый — с регрессионной защитой.
- Сервер падал на первом русском ответе при урезанном окруженииMCP-клиент передаёт дочернему процессу только 12 переменных (APPDATA, HOMEDRIVE, HOMEPATH, LOCALAPPDATA, PATH, PROCESSOR_ARCHITECTURE, SYSTEMDRIVE, SYSTEMROOT, TEMP, USERNAME, USERPROFILE, PROGRAMFILES). Ни PYTHONUTF8, ни PYTHONIOENCODING туда не попадают, локаль процесса остаётся cp1252 — и send() падал с UnicodeEncodeError: charmap codec (src/ragraf/mcp_server.py). Оболочка AutoClaw ставит обе переменные, поэтому для AutoClaw дефект был невидим — он проявился только на втором клиенте. Правка: force_utf8_stdio() — потоки приводятся к UTF-8 в самом сервере, а не берутся из окружения.
- Обязательный --project не давал работать с несколькими проектамиПравка: --project необязателен, корпус ищется по рабочему каталогу (реестр разработок), добавлен инструмент ragraf_use_project. Один сервер обслуживает все 18 корпусов машины автора.
- Команда reindex не записывала прогон в реестрИзмерено на собственном корпусе: в индексе rev-0046, в реестре rev-0045 со старой суммой; check из-за этого переиндексировал корпус заново, а catalog и панель показывали прошедшее состояние. Правка: src/ragraf/cli.py — reindex пишет прогон той же общей точкой watch.record_index_run, что и index.
- ensure и use_project не попадали в статистикуТелеметрия навешивается обёрткой на методы op_* фасада, а эти две операции живут в MCP-сервере. В сводке usage их не было — то есть нельзя было ответить, соблюдают ли агенты правило первого шага. Правка: Facade.record_external_call (src/ragraf/facade.py) + запись со стороны сервера. Замер после правки: ensure 1, use_project 1 в сводке по агенту.
Зависимости: почему интерпретатор из .venv
На машине автора зависимости RAGRAF достижимы интерпретатору из PATH только через переменную PYTHONUSERBASE (%APPDATA%\AutoClaw-oversea-official\toolchain\python\Python313\site-packages). Внешний клиент её вычищает — и python из PATH падает на «не установлен PyYAML». Замерено: .venv проекта самодостаточен — при полностью снятых PYTHON*-переменных он импортирует yaml, fastembed, sqlite_vec, tree_sitter, ijson, tiktoken. Для AutoClaw это тоже полезно: CLI в оболочке агента работает и так, но .venv перестаёт зависеть от настроек окружения.
Навык и правила
Навык ragraf-core
Навык лежит в дереве каждого аккаунта:
%APPDATA%\AutoClaw-oversea-official\accounts\<account>\runtime\zwork-agent\skills\ragraf-core\
SKILL.md (вход: когда применять, порядок работы)
reference/operations.md (выбор операции и границы)
reference/repair.md (что делать, когда индекс сломан)Источник — каталог проекта: <repo>\docs\skills\ragraf-core. Правка идёт в проект, затем копируется в служебный каталог аккаунта. Иначе при следующем развёртывании копия в аккаунте «отстанет» от проекта и агент будет работать по старой редакции. Копий ровно две — по числу аккаунтов; в обоих навык есть.
Проверено замером свежести (сессия): в обоих аккаунтах лежат три файла — SKILL.md 9811 байт, reference/operations.md 7546, reference/repair.md 11271, — и SHA-256 каждого совпадает с проектной редакцией. То есть копия в аккаунте не отстала от источника.
$src = '<repo>\docs\skills\ragraf-core'
Get-ChildItem "$env:APPDATA\AutoClaw-oversea-official\accounts" -Directory | ForEach-Object {
$dst = Join-Path $_.FullName 'runtime\zwork-agent\skills\ragraf-core'
if (Test-Path -LiteralPath $dst) {
Copy-Item -Recurse -Force "$src\*" $dst
Write-Host "обновлено: $dst"
}
}Проверка навыка: файл начинается с ---, поля name и description разбираются построчно, размер меньше 256 КиБ, кодировка UTF-8 без BOM, переводы строк LF, а копия в аккаунте совпадает с проектной побайтово.
Правила: ~/.pi/agent/AGENTS.md
Это пользовательский файл правил AutoClaw — он подхватывается в любом проекте, где нет своего AGENTS.md, и наоборот: проектный AGENTS.md строже. Подхватывается также AGENTS.md из родительских каталогов до границы .git.
Раздел, который заставляет работать через индекс, — раздел 8 «Обязательное использование RAGRAF при разработке кода». Три места, которые надо знать:
| Что | Где |
|---|---|
| Первый шаг задачи | §8.2: ensure <каталог> |
| Инструменты ragraf_* предпочитать оболочке | §8.2.1 |
| Отчётность: ревизия, сумма, ссылки файл:строка | §8.7 |
Важно про формулировку
Если MCP не подключён, §8.2.1 предписывает «работать через оболочку командами §8.3 и далее — это не отменяет обязательности RAGRAF, а меняет только способ вызова». Правило остаётся исполнимым в обеих конфигурациях — именно поэтому индекс работает на этой машине без MCP.
Проверка — четыре уровня
От узкого к широкому: CLI и реестр → свежесть корпуса → MCP-канал → телеметрия. Каждый уровень — команда и ожидаемый результат из сессии.
Канал CLI жив и видит корпуса: реестр разработок и актуализация собственного корпуса RAGRAF.
python <repo>\tools\ragraf.py catalog
python <repo>\tools\ragraf.py ensure <repo>Ожидается
18 разработок в реестре; status: actual и совпадение сумм.Свежесть конкретного корпуса: сумма сейчас против суммы при индексации.
python <repo>\tools\ragraf.py -p <repo>\config\<корпус>.yaml checkОжидается
«сумма корпуса сейчас» = «сумма при индексации», «изменилось после индексации: нет».Канал MCP, когда подключён: tool_search возвращает 24 инструмента вместо 0 — эта разница и есть доказательство регистрации. Ниже — независимая проверка сервера без приложения: тест совместимости в урезанном окружении (15 проверок).
tool_search("ragraf") → до подключения: 0 инструментов
после регистрации и перезапуска: 24
ragraf_ensure() → status = actual | reindexed | created
ragraf_index_status() → index_rev, capability
ragraf_use_project(project="<имя>") → ревизия ДРУГОГО корпусаcd <repo>
Remove-Item Env:\PYTHONUTF8, Env:\PYTHONIOENCODING -ErrorAction SilentlyContinue
python tests\test_mcp_compat.py # 15 проверокВидно, кто и что вызвал: сводка по агенту с операциями.
python <repo>\tools\ragraf.py -p <repo>\config\<корпус>.yaml usage --agent AutoClawОжидается
Строка по агенту с числом вызовов и операциями, включая ensure. Если ensure в разбивке нет — значит клиент его не вызывал, а не «телеметрия потеряла».Откат
Регистрация MCP — единственное обратимое действие в интерфейсе: снять сервер в том же разделе настроек и перезапустить приложение. Индекс, реестр и корпуса от этого не меняются.
Правки самого RAGRAF аддитивные; чтобы вернуть прежнее поведение, достаточно трёх изменений: убрать вызов force_utf8_stdio(), вернуть required=True у --project, удалить ragraf_use_project из TOOLS и _handlers. Ни одно из них не затрагивает индекс, схему хранилища, нумерацию ревизий или реестр — переиндексация при откате не требуется.
Копии навыка в аккаунтах восстанавливаются из проекта:
Copy-Item -Recurse -Force <repo>\docs\skills\ragraf-core `
"$env:APPDATA\AutoClaw-oversea-official\accounts\<account>\runtime\zwork-agent\skills\ragraf-core"Где что лежит в AutoClaw
| Что | Путь |
|---|---|
| Установка приложения (zwork 2.0.2) | %LOCALAPPDATA%\Programs\AutoClaw2 |
| Код приложения (не asar) | …\resources\app\dist\main.cjs |
| Встроенный агент | …\resources\app\node_modules\@earendil-works\pi-coding-agent |
| Вертикальные паки (в т. ч. mcpServers) | …\app\dist\resources\vertical-packs\<pack>\zwork-pack.json |
| Каталог данных продукта | %APPDATA%\AutoClaw-oversea-official |
| Учётные записи | …\accounts\<sha256> |
| Навыки агента | <account>\runtime\zwork-agent\skills\<имя>\SKILL.md |
| Проекты | <account>\projects\<имя> |
| Состояние (БД, права, артефакты) | <account>\runtime\runtime.sqlite |
| Секреты и связи | <account>\runtime\*.enc, credentials.enc, owner-secrets.enc |
| Пользовательские правила (все проекты) | ~/.pi/agent/AGENTS.md |
| Правила каталога проекта | AGENTS.md в корне проекта |
Что не читать и не править
*.enc в runtime (содержимое не нужно — только имя, размер и правило) и runtime.sqlite в обход продукта: в нём права инструментов (governed_tool_approvals), артефакты (governed_tool_*) и привязки каналов. Правка этой базы руками обходит учёт прав — то есть делает больше, чем просили.
Особенность установки: код приложения лежит распакованным (resources\app\dist), а не в app.asar. Это удобно для разведки: файлы читаются обычными средствами, и main.cjs можно искать по строкам.
Приглашение в AutoClaw
Приглашай друзей — без ограничений!
Кредитный шторм AutoClawофициальная акция AutoClaw
По моему коду приглашения каждый присоединившийся получает дополнительные бонусные кредиты сверх приветственного гранта, а я получаю кредиты тоже: цикл «выигрывают оба» без ограничений на число приглашений. Это ничего не стоит, занимает десять секунд и остаётся лучшим способом поддержать разработчика, который ведёт эту страницу, гайды и подсказки по настройке.
- Двойная выгодаПриветственные токены и бонус за приглашение складываются, если регистрироваться по коду.
- Без ограниченийПриглашать можно сколько угодно: каждое присоединение пополняет кредиты обеим сторонам.
- Поддержка разработчикаИспользование кода — бесплатное «спасибо», за счёт которого выходят гайды, конфиги и обновления.
Работает на Windows, macOS и Linux. Уже установлено? Откройте AutoClaw → «Настройки» → «Введите код приглашения» → вставьте код. Затем поделитесь своей ссылкой и продолжите цепочку.
Это приглашение в программу AutoClaw, а не факт о RAGRAF: код и ссылка принадлежат аккаунту автора, страница не связана с программой официально и не получает за неё плату от продукта.