Claude Code +
hzdb (Meta Quest VR)

установка hzdb MCP-сервера, подключение Claude Code к устройству Meta Quest, подключение собственного LLM, запущенного на локальном железе, и практики экономии токенов.

Node.js 18+ Claude Code CLI Meta Quest + Developer Mode vLLM / llama.cpp
// 01 — Понимаем систему

Как это всё работает

hzdb (Horizon Debug Bridge) — это CLI от Meta с встроенным MCP-сервером. Claude Code подключается к нему как к инструменту и получает «руки и глаза» на устройстве: устанавливает билды, читает логи, снимает скриншоты, запускает трейсинг — всё через естественный язык.

// Полная архитектура стека
Claude Code CLI
↔
Anthropic API
или свой LLM (vLLM / llama.cpp)
Claude Code CLI
→ MCP →
hzdb MCP Server
npx @meta-quest/hzdb mcp server
→ ADB →
Meta Quest Device
Developer Mode ON
CLAUDE.md
+ Skills
загружается при старте
13 Agent Skills
(hz-vr-debug, hz-spatial-sdk…)
→ инструктируют
LLM-агент

Весь стек open-source (Apache 2.0), официально поддерживается Meta Platforms. hzdb — это не просто ADB-обёртка: он предоставляет 40+ MCP-инструментов, включая поиск по документации Horizon OS прямо из агента, Perfetto-трейсинг производительности, и управление файлами на устройстве.

// 02 — Что нужно иметь заранее

Предустановка и требования

🟩

Node.js 18 или новее

hzdb распространяется как npm-пакет. Проверьте: node -v. Рекомендуется LTS-версия с nodejs.org или через nvm.

🔵

Claude Code CLI

Установить: npm install -g @anthropic-ai/claude-code. Требует авторизацию через Anthropic аккаунт — или подключение своего LLM (см. раздел «Свой LLM»).

🥽

Meta Quest + Developer Mode

На устройстве должен быть включён Developer Mode. Включается через приложение Meta Quest на телефоне → Settings → Developer Mode.

🔌

ADB (Android Debug Bridge)

hzdb использует ADB под капотом. Установить через Android Platform Tools или brew install android-platform-tools (macOS).

Проверка окружения

Проверка зависимостейbash
# 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 подтвердите подключение
⚠️
Developer Mode на Quest: откройте приложение Meta Quest на смартфоне, перейдите в Menu → Devices → выберите гарнитуру → Developer Mode: ON. После включения перезагрузите гарнитуру. При первом USB-подключении на экране Quest появится запрос «Allow USB debugging» — нужно подтвердить надев гарнитуру.
// 03 — Установка

Установка hzdb и плагина

Два способа: через npm глобально, или через npx без постоянной установки. Дополнительно — клонирование репозитория agentic-tools для добавления skills в Claude Code.

// 04 — MCP-сервер

Подключение MCP-сервера

hzdb включает встроенный MCP-сервер с 40+ инструментами. Одна команда автоматически регистрирует его в вашем Claude Code и добавляет конфиг в нужный файл.

Автоматическая установка MCP

Регистрация MCP-сервера (один раз)bash
# 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

Что происходит при install

Команда mcp install claude-code автоматически добавляет запись в конфигурационный файл Claude Code (~/.claude/settings.json или аналог). После этого Claude Code знает, как запустить MCP-сервер hzdb и какие инструменты он предоставляет.

Ручная конфигурация (если авто не сработало)

~/.claude/settings.json — добавить в mcpServersjson
{
  "mcpServers": {
    "hzdb": {
      "command": "npx",
      "args": ["-y", "@meta-quest/hzdb", "mcp", "server"]
    }
  }
}

Полный список MCP-инструментов hzdb

ГруппаНазначениеПримеры операций
hzdb deviceУправление устройствомlist, info, reboot, connect
hzdb appУправление приложениямиinstall, launch, stop, list, inspect
hzdb captureЗахват экранаscreenshot (передаётся в контекст агента)
hzdb filesФайловые операцииls, push, pull, rm на устройстве
hzdb perfPerfetto-трейсингcapture, analyze — анализ производительности VR
hzdb docsПоиск по документацииПоиск в Meta Quest Developer Docs прямо из агента
hzdb asset3D-ассетыПоиск в библиотеке 3D-ассетов Meta
hzdb logЛоги устройстваadb logcat с фильтрацией
hzdb shellShell-командыПрямой shell на устройстве
hzdb adbADB passthroughЛюбые adb-команды напрямую
hzdb configКонфигурация CLIНастройки, профили
hzdb mcpУправление серверомinstall, server, status
// 05 — Agent Skills

13 Agent Skills — что умеет агент

Skills — это инструкционные файлы (SKILL.md), которые автоматически загружаются в контекст Claude Code при релевантных задачах. Каждый skill — это отдельная специализация агента.

SkillЧто делаетКогда полезно
hzdb-cliПолный справочник hzdb CLI — все команды, MCP-сервер, глубокая документацияПри любых вопросах о hzdb
hz-perfetto-debugАнализ VR-производительности через Perfetto tracesFramerate 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 SDKWeb-based VR / Three.js + WebXR
hz-api-upgradeМиграция приложений на новые версии Horizon OS SDKПосле выхода новой OS
hz-immersive-designerUX-принципы для VR/MR дизайнаUI/UX в пространственных приложениях
hz-spatial-sdkРазработка нативных spatial-приложений через Meta Spatial SDKMixed 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/KotlinAchievements, leaderboards, IAP, multiplayer

Структура репозитория

agentic-tools/ ├── .claude-plugin/ # Конфиг плагина для Claude Code │ ├── plugin.json │ └── marketplace.json ├── .cursor-plugin/ # Конфиг для Cursor ├── .github/plugin/ # Конфиг для GitHub Copilot CLI ├── docs/ │ └── hzdb.md # Полный справочник CLI (автогенерация) ├── skills/ # Каждый skill — отдельная директория │ ├── hzdb-cli/ │ │ ├── SKILL.md # Инструкционный файл skill'а │ │ └── references/ # Дополнительная документация │ ├── hz-vr-debug/ │ ├── hz-spatial-sdk/ │ └── ... (13 skills всего) ├── CLAUDE.md # → symlink на AGENTS.md, загружается автоматически ├── AGENTS.md # Навигационный гайд для агента └── .mcp.json # Project-level MCP конфиг
ℹ️
Каждый skill полностью автономен — нет перекрёстных ссылок между skills. Это сделано намеренно: skill загружается только тогда, когда он нужен, и не тащит в контекст лишнее. Это важно для экономии токенов.
// 06 — Свой LLM в сети

Подключение своего LLM к Claude Code

Claude Code использует Anthropic Messages API. Если вы хостите свою модель через vLLM (с поддержкой Anthropic API), llama.cpp (с PR #17570, январь 2026), LM Studio (с версии 0.4.1), или прокси LiteLLM — достаточно установить одну переменную окружения.

⚠️
Важно: формат API. Claude Code говорит на Anthropic Messages API (/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).

Вариант A: vLLM (рекомендуется для GPU-серверов)

vLLM реализует Anthropic Messages API нативно — Claude Code напрямую общается с vLLM без прокси.

Запуск vLLM с поддержкой Anthropic APIbash
# На сервере с 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
Подключение Claude Code к vLLM-серверуbash
# На машине разработчика: указать на 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

Вариант B: llama.cpp (CPU или гибридный, начиная с января 2026)

С PR #17570 llama.cpp-сервер поддерживает /v1/messages — Anthropic Messages API нативно.

llama.cpp сервер с Anthropic APIbash
# Собрать 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

Вариант C: LM Studio (локально, ≥ v0.4.1)

LM Studio 0.4.1 (январь 2026) добавил нативный Anthropic-совместимый /v1/messages endpoint.

LM Studio + Claude Codebash
# Запустить 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
💡
Какую модель выбрать для агентных задач (Claude Code + hzdb)? Модель обязана поддерживать tool calling / function calling. По данным huggingface.co (январь 2026) для агентных рабочих нагрузок рекомендуются: Qwen3 Coder (32B AWQ если есть GPU), Kimi K2, Llama 3.1 70B Instruct, MiniMax M2. Для небольшого железа: Qwen3-Coder-14B или Qwen3-Coder-7B.
// 07 — Прокси для Ollama и OpenAI-формата

LiteLLM / claude-code-proxy для Ollama

Если ваш сервер отдаёт OpenAI Chat Completions API (Ollama, TGI без --messages-api), нужен прокси-слой, который переводит Anthropic Messages API ↔ OpenAI формат.

LiteLLM Proxy

ТипOpen-source, Python
Поддержка 100+ моделей✓
Авторизация / команды✓
Балансировка нагрузки✓
Логирование/трейсинг✓
Подходит дляКомандный доступ, prod

claude-code-proxy

ТипOpen-source, Node/Python
Поддержка 100+ моделейOpenAI-compat.
Авторизация / командыНет
BIG/SMALL model маппинг✓
Streaming SSE✓
Подходит дляОдин разработчик, локально

Вариант A: LiteLLM Proxy (рекомендуется для команды)

LiteLLM Proxy — установка и запускbash
# Установить 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

Вариант B: claude-code-proxy (для одного разработчика)

claude-code-proxy — быстрый стартbash
# Клонировать прокси
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
ℹ️
BIG/SMALL модели в прокси: Claude Code внутри использует разные «веса» модели для разных задач: Opus-класс — для сложного рассуждения, Haiku-класс — для простых/быстрых операций. Прокси может маппировать эти запросы на разные локальные модели, экономя VRAM и время.

Скрипт автозапуска vLLM-сервера при старте системы (systemd)

/etc/systemd/system/vllm-coder.serviceini
[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
Включить и запустить сервисbash
sudo systemctl daemon-reload
sudo systemctl enable vllm-coder
sudo systemctl start vllm-coder
sudo systemctl status vllm-coder

# Логи:
journalctl -u vllm-coder -f
// 08 — Экономия токенов

Best Practices: экономия токенов

При использовании Anthropic API токены стоят денег. При использовании своего LLM — токены стоят времени и VRAM. Оба ресурса ограничены. Ниже — техники, которые реально работают.

1. Управление сессиями: /compact и /clear

Встроенные команды управления контекстомtext
# Сжать контекст (сохраняет суть, удаляет историю)
/compact

# С инструкцией что сохранить:
/compact Focus on code changes and test results

# Полностью очистить контекст (новая задача)
/clear

# Переименовать сессию перед очисткой (чтобы найти потом)
/rename vr-debug-session-01
/clear

# Вернуться к сессии
/resume vr-debug-session-01
💡
Правило компактизации: запускайте /compact при завершении логической фазы (отладка → готово), а не когда уже видите деградацию. Здоровая сессия даёт лучшую сводку. Используйте /clear при переходе к несвязанной задаче.

2. .claudeignore — исключить ненужные файлы

.claudeignore — в корне проектаtext
# Игнорировать build-артефакты
build/
dist/
*.apk
*.aab
*.ipa

# Unity-специфичные
Library/
Temp/
obj/
*.meta

# Зависимости
node_modules/
.gradle/
Packages/

# Логи и кэш
*.log
*.tmp
.DS_Store

# Большие ассеты
Assets/StreamingAssets/
Assets/Plugins/

3. @file-референсы вместо вставки в чат

Использование @file вместо копированияtext
# Плохо: вставить весь файл в промпт (мёртвый груз на весь сеанс)
"Вот мой код: [5000 строк вставлено]"

# Хорошо: @-референс загружается только когда нужен
"Проанализируй @Assets/Scripts/VRPlayerController.cs"
"Сравни @manifest.xml и @reference-manifest.xml"

# Для часто используемых руководств — отдельные .md файлы
"Следуй правилам из @docs/quest-perf-guidelines.md"

4. Path-scoped rules в CLAUDE.md

Правила только для конкретных директорийmarkdown

---
paths:
  - "Assets/Scripts/**/*.cs"
---
# Unity Quest Rules
- Не использовать Update() для логики, которую можно вынести в FixedUpdate()
- Все VR-взаимодействия через XRDirectInteractor
- Draw calls должны быть ниже 100 per frame
- Обязательно использовать Object Pooling для партиклей

5. Выбор модели под задачу

Тип задачиРекомендуемая модельПочему
Простые правки, рефакторингSonnet / Haiku-классДешевле, достаточно
Сложная архитектура, планированиеOpus-классЛучшее рассуждение
Дебаггинг с логами hzdbSonnet-классБаланс цена/качество
Perfetto trace анализOpus-классСложный анализ данных
VRC Store validationSonnet-классЧеклист-задача
// 09 — Персистентный контекст

CLAUDE.md для VR-проекта

CLAUDE.md — это файл, который Claude Code автоматически загружает при старте сессии. Он работает как постоянный системный промпт вашего проекта. Держите его под 200 строк.

CLAUDE.md — шаблон для Meta Quest проектаmarkdown
# 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 сохранить: список изменённых файлов, результаты тестов, найденные баги
⚠️
Размер CLAUDE.md критичен: каждый токен в CLAUDE.md — это токен на каждом ходу сессии, без исключений. Файл размером 5000 токенов добавляет 5000 токенов к каждому запросу. Держите под 200 строк. Всё специфичное — выносить в path-scoped rules.
// 10 — Полный рабочий процесс

Типичный Workflow с примерами промптов

Wi-Fi ADB — работа без USB

Подключение Quest по Wi-Fibash
# 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
💡
Итоговый чеклист быстрого старта:
1. npm install -g @meta-quest/hzdb
2. git clone https://github.com/meta-quest/agentic-tools.git && claude plugin add ./agentic-tools
3. npx @meta-quest/hzdb mcp install claude-code
4. Включить Developer Mode на Quest, подключить USB, принять запрос на устройстве
5. (Опционально) Настроить ANTHROPIC_BASE_URL на свой vLLM/llama.cpp
6. Создать CLAUDE.md в корне проекта (≤200 строк)
7. claude — начать работу