установка hzdb MCP-сервера, подключение Claude Code к устройству Meta Quest, подключение собственного LLM, запущенного на локальном железе, и практики экономии токенов.
hzdb (Horizon Debug Bridge) — это CLI от Meta с встроенным MCP-сервером. Claude Code подключается к нему как к инструменту и получает «руки и глаза» на устройстве: устанавливает билды, читает логи, снимает скриншоты, запускает трейсинг — всё через естественный язык.
Весь стек open-source (Apache 2.0), официально поддерживается Meta Platforms. hzdb — это не просто ADB-обёртка: он предоставляет 40+ MCP-инструментов, включая поиск по документации Horizon OS прямо из агента, Perfetto-трейсинг производительности, и управление файлами на устройстве.
hzdb распространяется как npm-пакет. Проверьте: node -v. Рекомендуется LTS-версия с nodejs.org или через nvm.
Установить: npm install -g @anthropic-ai/claude-code. Требует авторизацию через Anthropic аккаунт — или подключение своего LLM (см. раздел «Свой LLM»).
На устройстве должен быть включён Developer Mode. Включается через приложение Meta Quest на телефоне → Settings → Developer Mode.
hzdb использует ADB под капотом. Установить через Android Platform Tools или brew install android-platform-tools (macOS).
# Node.js версия >= 18 node -v # npm доступен npm -v # ADB установлен и доступен adb version # Claude Code (если используете Anthropic API) claude --version # Подключить Quest по USB и проверить ADB adb devices # Ожидаемый вывод: <serial> device # Если 'unauthorized' — на Quest подтвердите подключение
Два способа: через npm глобально, или через npx без постоянной установки. Дополнительно — клонирование репозитория agentic-tools для добавления skills в Claude Code.
# Глобальная установка npm install -g @meta-quest/hzdb # Проверка hzdb --version hzdb --help # Или без установки через npx (каждый раз скачивает) npx -y @meta-quest/hzdb --help
# Клонировать официальный репозиторий Meta
git clone https://github.com/meta-quest/agentic-tools.git
cd agentic-tools
Репозиторий содержит 13 agent skills, CLAUDE.md и конфиги для Claude Code, Cursor, Copilot CLI, Android Studio и других агентов.
# Вариант 1: через маркетплейс (если доступен) /plugin marketplace add meta-quest/agentic-tools /plugin install agentic-tools@meta-quest # Вариант 2: локально из склонированного репо claude plugin add ./agentic-tools
# Список подключённых устройств hzdb device list # Информация об устройстве hzdb device info # Список установленных приложений hzdb app list # Тест лога (ctrl+c для выхода) hzdb log
Если устройство видно — всё готово к работе с агентом.
hzdb включает встроенный MCP-сервер с 40+ инструментами. Одна команда автоматически регистрирует его в вашем Claude Code и добавляет конфиг в нужный файл.
# Claude Code — основной вариант npx -y @meta-quest/hzdb mcp install claude-code # Другие поддерживаемые среды: npx -y @meta-quest/hzdb mcp install claude-desktop npx -y @meta-quest/hzdb mcp install cursor npx -y @meta-quest/hzdb mcp install vscode npx -y @meta-quest/hzdb mcp install vscode-insiders npx -y @meta-quest/hzdb mcp install windsurf npx -y @meta-quest/hzdb mcp install lm-studio # если используете LM Studio + свою модель npx -y @meta-quest/hzdb mcp install open-code # OpenCode (open-source) # Для project-level конфига (добавляет .mcp.json в текущую директорию) npx -y @meta-quest/hzdb mcp install project # Запуск MCP-сервера напрямую (для отладки или кастомной интеграции) npx -y @meta-quest/hzdb mcp server
Команда mcp install claude-code автоматически добавляет запись в конфигурационный файл Claude Code (~/.claude/settings.json или аналог). После этого Claude Code знает, как запустить MCP-сервер hzdb и какие инструменты он предоставляет.
{
"mcpServers": {
"hzdb": {
"command": "npx",
"args": ["-y", "@meta-quest/hzdb", "mcp", "server"]
}
}
}
| Группа | Назначение | Примеры операций |
|---|---|---|
| hzdb device | Управление устройством | list, info, reboot, connect |
| hzdb app | Управление приложениями | install, launch, stop, list, inspect |
| hzdb capture | Захват экрана | screenshot (передаётся в контекст агента) |
| hzdb files | Файловые операции | ls, push, pull, rm на устройстве |
| hzdb perf | Perfetto-трейсинг | capture, analyze — анализ производительности VR |
| hzdb docs | Поиск по документации | Поиск в Meta Quest Developer Docs прямо из агента |
| hzdb asset | 3D-ассеты | Поиск в библиотеке 3D-ассетов Meta |
| hzdb log | Логи устройства | adb logcat с фильтрацией |
| hzdb shell | Shell-команды | Прямой shell на устройстве |
| hzdb adb | ADB passthrough | Любые adb-команды напрямую |
| hzdb config | Конфигурация CLI | Настройки, профили |
| hzdb mcp | Управление сервером | install, server, status |
Skills — это инструкционные файлы (SKILL.md), которые автоматически загружаются в контекст Claude Code при релевантных задачах. Каждый skill — это отдельная специализация агента.
| Skill | Что делает | Когда полезно |
|---|---|---|
| hzdb-cli | Полный справочник hzdb CLI — все команды, MCP-сервер, глубокая документация | При любых вопросах о hzdb |
| hz-perfetto-debug | Анализ VR-производительности через Perfetto traces | Framerate drops, frame timing, CPU/GPU профилирование |
| hz-new-project-creation | Создание новых Quest-проектов (Unity, Unreal, Spatial SDK, WebXR) | Старт с нуля |
| hz-xr-simulator-setup | Настройка Meta XR Simulator для тестирования без физического устройства | CI/CD, разработка без Quest рядом |
| hz-unity-code-review | Ревью Unity-кода на соответствие Quest performance best practices | Оптимизация перед сабмитом в Meta Store |
| hz-android-2d-porting | Портирование Android 2D-приложений на Quest / Horizon OS | Перевод мобильного приложения в VR |
| hz-iwsdk-webxr | Создание WebXR-опытов через Immersive Web SDK | Web-based VR / Three.js + WebXR |
| hz-api-upgrade | Миграция приложений на новые версии Horizon OS SDK | После выхода новой OS |
| hz-immersive-designer | UX-принципы для VR/MR дизайна | UI/UX в пространственных приложениях |
| hz-spatial-sdk | Разработка нативных spatial-приложений через Meta Spatial SDK | Mixed Reality приложения |
| hz-vr-debug | Отладка Quest-приложений через hzdb: логи, скриншоты, диагностика | Дебаггинг runtime-ошибок |
| hz-vrc-check | Валидация приложения на соответствие VRC Store Publishing Requirements | Перед публикацией в Meta Store |
| hz-platform-sdk | Интеграция Horizon Platform SDK (17 API-пакетов) на Android/Kotlin | Achievements, leaderboards, IAP, multiplayer |
Claude Code использует Anthropic Messages API. Если вы хостите свою модель через vLLM (с поддержкой Anthropic API), llama.cpp (с PR #17570, январь 2026), LM Studio (с версии 0.4.1), или прокси LiteLLM — достаточно установить одну переменную окружения.
/v1/messages). Ollama и большинство self-hosted решений по умолчанию используют OpenAI Chat Completions API — это разные протоколы. Вам нужен либо сервер с нативной поддержкой Anthropic API (vLLM, llama.cpp ≥ PR#17570, LM Studio ≥ 0.4.1), либо прокси-слой (LiteLLM, claude-code-proxy).vLLM реализует Anthropic Messages API нативно — Claude Code напрямую общается с vLLM без прокси.
# На сервере с GPU: запустить vLLM # Модель должна поддерживать tool calling — обязательное требование Claude Code # Лучшие модели для агентных задач (2026): Qwen3 Coder, Kimi K2, Llama 3.1 70B Instruct pip install vllm # Запуск с поддержкой tool use (--enable-auto-tool-choice обязательно) vllm serve Qwen/Qwen3-Coder-32B-Instruct-AWQ \ --quantization awq \ --dtype half \ --enable-auto-tool-choice \ --tool-call-parser hermes \ --host 0.0.0.0 \ --port 8000 # Для Llama-3.1 tool parser другой: vllm serve meta-llama/Meta-Llama-3.1-70B-Instruct \ --enable-auto-tool-choice \ --tool-call-parser llama3_json \ --host 0.0.0.0 \ --port 8000
# На машине разработчика: указать на vLLM-сервер # Замените IP на адрес вашего GPU-сервера в сети export ANTHROPIC_BASE_URL="http://192.168.1.100:8000" export ANTHROPIC_API_KEY="local-key" # любая строка, vLLM не проверяет export ANTHROPIC_MODEL="Qwen/Qwen3-Coder-32B-Instruct-AWQ" # Запустить Claude Code — он пойдёт на ваш vLLM claude # Добавить в ~/.bashrc или ~/.zshrc для постоянного использования: echo 'export ANTHROPIC_BASE_URL="http://192.168.1.100:8000"' >> ~/.zshrc echo 'export ANTHROPIC_API_KEY="local-key"' >> ~/.zshrc echo 'export ANTHROPIC_MODEL="Qwen/Qwen3-Coder-32B-Instruct-AWQ"' >> ~/.zshrc
С PR #17570 llama.cpp-сервер поддерживает /v1/messages — Anthropic Messages API нативно.
# Собрать llama.cpp (или скачать бинарник с GitHub Releases) git clone https://github.com/ggerganov/llama.cpp cd llama.cpp cmake -B build -DGGML_CUDA=ON # убрать флаг для CPU-only cmake --build build --config Release -j # Скачать GGUF-модель с tool support (важно для Claude Code!) # Qwen3-Coder-14B Q4_K_M хорошо подходит для агентных задач wget https://huggingface.co/bartowski/Qwen3-Coder-14B-Q4_K_M.gguf # Запустить сервер — слушает 0.0.0.0 для доступа из сети ./build/bin/llama-server \ -m Qwen3-Coder-14B-Q4_K_M.gguf \ -ngl 40 \ # число слоёв на GPU (подобрать под VRAM) --host 0.0.0.0 \ --port 8080 \ --ctx-size 32768 # контекстное окно # На машине разработчика: export ANTHROPIC_BASE_URL="http://192.168.1.100:8080" export ANTHROPIC_API_KEY="local" export ANTHROPIC_MODEL="local-model" claude
LM Studio 0.4.1 (январь 2026) добавил нативный Anthropic-совместимый /v1/messages endpoint.
# Запустить LM Studio сервер (через приложение или CLI) lms server start --port 1234 # Подключить Claude Code export ANTHROPIC_BASE_URL="http://localhost:1234" export ANTHROPIC_AUTH_TOKEN="lmstudio" # Запустить Claude Code с конкретной моделью claude --model "openai/qwen3-coder-14b" # имя модели из LM Studio
Если ваш сервер отдаёт OpenAI Chat Completions API (Ollama, TGI без --messages-api), нужен прокси-слой, который переводит Anthropic Messages API ↔ OpenAI формат.
# Установить LiteLLM pip install litellm[proxy] # Создать конфиг litellm_config.yaml cat > litellm_config.yaml << 'EOF' model_list: - model_name: claude-3-5-sonnet-20241022 # имя, которое ждёт Claude Code litellm_params: model: ollama/qwen3-coder:14b # ваша модель в Ollama api_base: http://localhost:11434 - model_name: claude-3-haiku-20240307 # маленькая модель (для фоновых задач) litellm_params: model: ollama/qwen3:7b api_base: http://localhost:11434 EOF # Запустить прокси (порт 4000) litellm --config litellm_config.yaml --port 4000 # Подключить Claude Code к прокси export ANTHROPIC_BASE_URL="http://localhost:4000" export ANTHROPIC_API_KEY="any-key" claude
# Клонировать прокси git clone https://github.com/fuergaosi233/claude-code-proxy cd claude-code-proxy # Установить зависимости npm install # или pip install -r requirements.txt для Python-версии # Настроить .env cat > .env << 'EOF' OPENAI_API_KEY=local-key OPENAI_BASE_URL=http://localhost:11434/v1 # ваш Ollama или vLLM (OpenAI API) BIG_MODEL=qwen3-coder:32b # для сложных задач (Opus запросы) SMALL_MODEL=qwen3:7b # для простых (Haiku запросы) EOF # Запустить прокси на порту 8080 npm start # Подключить Claude Code export ANTHROPIC_BASE_URL="http://localhost:8080" export ANTHROPIC_API_KEY="any-key" claude
[Unit]
Description=vLLM Coder Server for Claude Code
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu
Environment=CUDA_VISIBLE_DEVICES=0
ExecStart=/usr/local/bin/vllm serve Qwen/Qwen3-Coder-32B-Instruct-AWQ \
--quantization awq \
--dtype half \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--host 0.0.0.0 \
--port 8000 \
--max-model-len 32768
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable vllm-coder
sudo systemctl start vllm-coder
sudo systemctl status vllm-coder
# Логи:
journalctl -u vllm-coder -f
При использовании Anthropic API токены стоят денег. При использовании своего LLM — токены стоят времени и VRAM. Оба ресурса ограничены. Ниже — техники, которые реально работают.
# Сжать контекст (сохраняет суть, удаляет историю) /compact # С инструкцией что сохранить: /compact Focus on code changes and test results # Полностью очистить контекст (новая задача) /clear # Переименовать сессию перед очисткой (чтобы найти потом) /rename vr-debug-session-01 /clear # Вернуться к сессии /resume vr-debug-session-01
/compact при завершении логической фазы (отладка → готово), а не когда уже видите деградацию. Здоровая сессия даёт лучшую сводку. Используйте /clear при переходе к несвязанной задаче.# Игнорировать build-артефакты build/ dist/ *.apk *.aab *.ipa # Unity-специфичные Library/ Temp/ obj/ *.meta # Зависимости node_modules/ .gradle/ Packages/ # Логи и кэш *.log *.tmp .DS_Store # Большие ассеты Assets/StreamingAssets/ Assets/Plugins/
# Плохо: вставить весь файл в промпт (мёртвый груз на весь сеанс) "Вот мой код: [5000 строк вставлено]" # Хорошо: @-референс загружается только когда нужен "Проанализируй @Assets/Scripts/VRPlayerController.cs" "Сравни @manifest.xml и @reference-manifest.xml" # Для часто используемых руководств — отдельные .md файлы "Следуй правилам из @docs/quest-perf-guidelines.md"
---
paths:
- "Assets/Scripts/**/*.cs"
---
# Unity Quest Rules
- Не использовать Update() для логики, которую можно вынести в FixedUpdate()
- Все VR-взаимодействия через XRDirectInteractor
- Draw calls должны быть ниже 100 per frame
- Обязательно использовать Object Pooling для партиклей
| Тип задачи | Рекомендуемая модель | Почему |
|---|---|---|
| Простые правки, рефакторинг | Sonnet / Haiku-класс | Дешевле, достаточно |
| Сложная архитектура, планирование | Opus-класс | Лучшее рассуждение |
| Дебаггинг с логами hzdb | Sonnet-класс | Баланс цена/качество |
| Perfetto trace анализ | Opus-класс | Сложный анализ данных |
| VRC Store validation | Sonnet-класс | Чеклист-задача |
CLAUDE.md — это файл, который Claude Code автоматически загружает при старте сессии. Он работает как постоянный системный промпт вашего проекта. Держите его под 200 строк.
# Quest VR Project
## Стек
- Unity 2022.3 LTS + Meta XR SDK 65+
- Target: Meta Quest 3 (Horizon OS 65+)
- Language: C#
- Build system: Gradle (Android)
## Команды
- Build: `./gradlew assembleDebug`
- Install on device: `hzdb app install build/*.apk`
- Logs: `hzdb log --filter Unity`
- Performance trace: `hzdb perf capture --duration 10`
## Директории
- `Assets/Scripts/` — основная логика
- `Assets/Prefabs/VR/` — VR-интерактивные объекты
- `Assets/StreamingAssets/` — НЕ редактировать автоматически
- `Library/`, `Temp/` — игнорировать
## Правила
- Draw calls < 100, полигоны < 500k на кадр
- Все VR объекты через Meta Interaction SDK
- Тесты в `Assets/Tests/`
- Не редактировать сгенерированные файлы в `Assets/Plugins/`
## Compact instructions
При /compact сохранить: список изменённых файлов, результаты тестов, найденные баги
# 1. (Если свой LLM) убедиться что сервер работает curl http://192.168.1.100:8000/health # 2. Установить переменные (если не в .bashrc) export ANTHROPIC_BASE_URL="http://192.168.1.100:8000" export ANTHROPIC_API_KEY="local-key" export ANTHROPIC_MODEL="Qwen/Qwen3-Coder-32B-Instruct-AWQ" # 3. Подключить Quest (USB или Wi-Fi ADB) hzdb device list # 4. Перейти в директорию проекта и запустить Claude Code cd ~/my-quest-app claude
Скажите агенту что нужно, он использует соответствующий skill:
Создай новый проект Meta Quest 3 на Unity 2022.3 LTS с Meta XR SDK. Нужно MR-приложение с пассквью (passthrough) и одним интерактивным объектом, с которым можно взаимодействовать через контроллеры Quest 3.
# Сборка и деплой одной командой Собери APK и установи на подключённый Quest, затем запусти и покажи логи. # Дебаггинг с логами Приложение крашится при запуске. Покажи последние 50 строк логов и определи причину краша. # Скриншот текущего состояния Сделай скриншот того, что сейчас показывает Quest.
Запусти Perfetto trace на 15 секунд пока я воспроизвожу просадку FPS, затем проанализируй результат и скажи где проблема с производительностью.
# Завершили дебаггинг, переходим к оптимизации /compact Focus on bugs found, performance issues, and code changes made # Теперь переходить к следующей задаче с чистым контекстом Теперь оптимизируем шейдеры. Открой @Assets/Shaders/Quest3PBR.shader
Проверь приложение на соответствие всем VRC-требованиям Meta Store. Выдай список того, что нужно исправить перед сабмитом.
# 1. Сначала подключить по USB и включить Wi-Fi ADB adb tcpip 5555 # 2. Узнать IP Quest (Settings → Wi-Fi → название сети → IP) # или через adb adb shell ip addr show wlan0 # 3. Отключить USB и подключиться по сети adb connect 192.168.1.50:5555 # 4. Проверить через hzdb hzdb device list
npm install -g @meta-quest/hzdb
git clone https://github.com/meta-quest/agentic-tools.git && claude plugin add ./agentic-tools
npx @meta-quest/hzdb mcp install claude-code
claude — начать работу