# OpenClaude + Local LLM Handbook Практическая документация по запуску `openclaude` на сервере, подключению локальных и облачных моделей, работе с MCP/RAG и планированию железа под разные бюджеты. ## 1) Что такое LLM и токены - **LLM (Large Language Model)** - большая языковая модель, которая генерирует текст токен за токеном. - **Токен** - кусок текста (слово, часть слова, знак, пробел), не всегда "целое слово". - **Скорость 1-5 токенов/с** - скорость генерации ответа моделью (decode speed). - Очень грубо: `5 ток/с` часто ощущается как `~15-25 символов/с`, но это зависит от языка и модели. ## 2) Что такое MCP и зачем он нужен **MCP (Model Context Protocol)** - стандарт для подключения инструментов и источников данных к AI-агенту. Простая схема: - Модель = "мозг" - MCP-сервер = "шлюз к инструментам" - MCP-инструменты = конкретные действия (`search_docs`, `run_sql`, `create_ticket` и т.д.) Польза MCP: - Подключение к актуальным данным (документы, БД, API) - Контролируемое выполнение действий через схемы входа/выхода - Повторяемая интеграция для локальных и облачных сценариев ## 3) Основные сценарии работы OpenClaude `openclaude` поддерживает разные провайдеры, включая: - OpenAI-compatible API - Ollama (локально) - DeepSeek (через OpenAI-compatible endpoint) - Gemini, GitHub Models, Codex и др. ## 4) Быстрый запуск OpenClaude ### 4.1 Установка ```bash npm install -g @gitlawb/openclaude ``` ### 4.2 Локальный Ollama-профиль (бесплатно) ```bash export CLAUDE_CODE_USE_OPENAI=1 export OPENAI_BASE_URL=http://127.0.0.1:11434/v1 export OPENAI_MODEL=qwen2.5-coder:7b openclaude ``` ### 4.3 OpenAI-профиль ```bash export CLAUDE_CODE_USE_OPENAI=1 export OPENAI_API_KEY=sk-... export OPENAI_MODEL=gpt-4o openclaude ``` ### 4.4 DeepSeek-профиль ```bash export CLAUDE_CODE_USE_OPENAI=1 export OPENAI_BASE_URL=https://api.deepseek.com/v1 export OPENAI_API_KEY=sk-... export OPENAI_MODEL=deepseek-chat openclaude ``` ## 5) Локальные бесплатные модели: где брать и что ставить ### Где брать - Проще всего через `Ollama`: [https://ollama.com/library](https://ollama.com/library) ### Рекомендуемый старт - `qwen2.5-coder:7b` - хороший баланс для кода - `qwen2.5:3b` - если сервер слабый - `llama3.1:8b` - универсальный сильный baseline - `deepseek-r1:8b` - reasoning-ориентированный вариант ### Команды ```bash ollama pull qwen2.5-coder:7b ollama pull qwen2.5:3b ollama pull llama3.1:8b ollama pull deepseek-r1:8b ollama list ``` ## 6) Важный вопрос: локальные модели "дообучаются сами"? Короткий ответ: **нет**. - Обычная работа в чате не дообучает модель автоматически. - Качество повышают обычно так: - обновляют модель/тег (`ollama pull ...`) - улучшают системные промпты - подключают RAG (документы + retrieval) - Полноценный finetune/LoRA - отдельный ML-процесс. ## 7) Профили и переключение через direnv ### 7.1 Профили Создать: ```bash mkdir -p ~/.config/openclaude/profiles ``` `~/.config/openclaude/profiles/local.env` ```bash export CLAUDE_CODE_USE_OPENAI=1 export OPENAI_BASE_URL=http://127.0.0.1:11434/v1 export OPENAI_MODEL=qwen2.5-coder:7b unset OPENAI_API_KEY ``` `~/.config/openclaude/profiles/openai.env` ```bash export CLAUDE_CODE_USE_OPENAI=1 export OPENAI_BASE_URL=https://api.openai.com/v1 export OPENAI_API_KEY=sk-REPLACE_ME export OPENAI_MODEL=gpt-4o ``` `~/.config/openclaude/profiles/deepseek.env` ```bash export CLAUDE_CODE_USE_OPENAI=1 export OPENAI_BASE_URL=https://api.deepseek.com/v1 export OPENAI_API_KEY=sk-REPLACE_ME export OPENAI_MODEL=deepseek-chat ``` Права: ```bash chmod 600 ~/.config/openclaude/profiles/*.env ``` ### 7.2 Установка direnv ```bash sudo apt update sudo apt install -y direnv ``` Для bash: ```bash echo 'eval "$(direnv hook bash)"' >> ~/.bashrc source ~/.bashrc ``` Для zsh: ```bash echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc source ~/.zshrc ``` ### 7.3 Автопрофиль на папку проекта В корне проекта: ```bash cat > .envrc <<'EOF' source_env ~/.config/openclaude/profiles/local.env EOF direnv allow ``` ## 8) Минимальный RAG стек (локально) Рекомендуемая база: - Embeddings: `nomic-embed-text` (через Ollama) - Vector DB: Qdrant - Retrieval tool: MCP `search_docs` Минимальная схема: 1. Сложить документы (`md/txt/pdf`) 2. Разбить на чанки (`chunk_size ~1000`, overlap `~120`) 3. Сделать embeddings 4. Записать в Qdrant 5. Поднять MCP-инструмент `search_docs` 6. Вызывать его из OpenClaude ## 9) Быстрый чек-лист, если MCP "не виден" 1. MCP-сервер стартует вручную: ```bash python mcp_server.py ``` 2. Импорты и зависимости установлены: ```bash python -c "import fastmcp, qdrant_client, requests; print('ok')" ``` 3. Пути в `~/.claude/settings.json` корректны (`command`, `args`) 4. Qdrant доступен: `curl http://127.0.0.1:6333/collections` 5. Ollama доступен: `curl http://127.0.0.1:11434/api/tags` ## 10) План закупки железа под 3 бюджета Ориентиры даны для Linux-сервера и локального запуска LLM (Ollama/OpenAI-compatible). ### Бюджет A: Минимальный (CPU-only) **Для кого:** старт, RAG, базовые задачи, без требований к высокой скорости. - CPU: 8-12 vCPU (современные ядра) - RAM: 32 GB (минимум 16 GB, но хуже) - Disk: NVMe 512 GB - GPU: нет Ожидания: - модели 3B-7B с умеренной скоростью - ориентир decode: примерно `1-6 ток/с` (зависит от модели и квантизации) Рекомендованные модели: - `qwen2.5:3b` - `qwen2.5-coder:7b` (если хватает RAM/терпения) ### Бюджет B: Комфортный (1x GPU среднего класса) **Для кого:** ежедневная работа 1-3 пользователей, код + RAG в комфортном режиме. - CPU: 8-16 vCPU - RAM: 32-64 GB - GPU: 1x NVIDIA 12-16 GB VRAM (например, RTX 3060 12GB / 4070 Ti Super 16GB) - Disk: NVMe 1 TB Ожидания: - стабильная работа 7B/8B, лучше latency и throughput - ориентир decode: примерно `10-35 ток/с` Рекомендованные модели: - `qwen2.5-coder:7b` - `llama3.1:8b` - `deepseek-r1:8b` ### Бюджет C: Производительный (1-2 GPU высокого класса) **Для кого:** команда, многозадачность, более тяжелые модели и высокая отзывчивость. - CPU: 16+ vCPU - RAM: 64-128 GB - GPU: - вариант 1: 1x NVIDIA 24 GB VRAM (RTX 4090 / L40-class по бюджету) - вариант 2: 2x GPU по 16-24 GB для масштабирования - Disk: NVMe 2 TB Ожидания: - уверенная работа 14B+ (квантизованные), параллельные запросы - ориентир decode: `25-80+ ток/с` в зависимости от модели/батча Рекомендованные модели: - 14B-класс инструкт/кодовые варианты - mix моделей: одна "быстрая дешевая", одна "качественная тяжелая" ### Что критично кроме железа - стабильная версия драйверов CUDA (если NVIDIA) - быстрый NVMe (модели занимают много места) - мониторинг температуры/памяти/IO - резерв свободного диска под новые веса ## 11) Практика обновления и обслуживания моделей - Смотреть установленные: ```bash ollama list ``` - Обновлять нужные: ```bash ollama pull qwen2.5-coder:7b ``` - Удалять старые: ```bash ollama rm ``` - Проверять занятое место: ```bash sudo du -h --max-depth=2 /usr/share/ollama /var/lib/ollama 2>/dev/null | sort -h | tail -n 30 ``` ## 12) Подключение к приватным GitHub репозиториям без постоянного ввода PAT Рекомендуемый вариант: ```bash gh auth login gh auth status ``` Для HTTPS git credentials сохранять через credential helper (или использовать SSH-ключи). ## 13) Частые проблемы и быстрые фиксы ### 13.1 Скрипт запуска падает с `#!/usr/bin/env: No such file or directory` Причина: BOM в начале файла. Фикс: ```bash sed -i '1s/^\xEF\xBB\xBF//' script.sh chmod +x script.sh ``` ### 13.2 Почему после выбора зеркала apt все еще ходит в `ru.archive.ubuntu.com` Обычно источники лежат в `*.sources` (deb822), а не только в `sources.list`. Нужно менять и `URIs:` в deb822-блоках. --- ## Roadmap продолжения Когда вернемся к теме, логично идти так: 1. Проверка текущего сервера (CPU/RAM/GPU/NVMe) 2. Выбор стартового профиля (`local`/`openai`/`deepseek`) 3. Поднятие `openclaude` + smoke test 4. Запуск минимального RAG с Qdrant 5. Добавление MCP-инструментов под ваши рабочие данные 6. Оптимизация скорости и стоимости (routing между моделями) ## Дополнительные материалы в репозитории - Быстрый гайд: `docs/quickstart-30min.md` - Точка входа: `docs/START-HERE.md` - Готовый starter: `docs/rag-mcp-starter/` - Работа с GitHub/GitLab/Gitea: `docs/openclaude-with-repositories.md` - Примеры cron-автоматизации: `docs/cron-examples.md` - Автоустановка cron: `scripts/install-cron.sh` - Каталог моделей: `docs/model-catalog.md` - Выбор runtime: `docs/runtime-choice.md` - Локальный Cursor-like стек: `docs/cursor-like-stack.md` - Честные ожидания: `docs/expectations.md` - Шаблон benchmark: `docs/bench-template.md`