# AI Setup Набор shell-скриптов для установки AI coding CLI и настройки сети с Amnezia VPN. Точка входа - `setup.sh` (мастер-скрипт с меню). Он вызывает нужный скрипт из `scripts/`. ## Структура репозитория ``` setup.sh # мастер-скрипт с меню scripts/ ├── ai-setup.sh # устанавливает AI-инструменты в выбранный BIN_DIR ├── fuck-rkn.sh # серверный установщик nginx + telemt + xray ├── ru-bypass.sh # .ru трафик напрямую, kill switch для остального ├── ks-off.sh # временно отключить kill switch └── ks-on.sh # восстановить kill switch home-configs/ ├── GLOBAL_RULES.md # глобальные правила для всех агентов ├── claude/ │ ├── hooks/ # хуки аккаунтов Claude Code │ ├── skills/ # кастомные скиллы для Claude Code (и Gemini) │ └── statusline-command.sh # статусная строка Claude Code ├── network/ │ └── README.md # подробная документация по сетевой настройке ├── vless/ │ └── servers.conf # список VLESS-серверов для прокси └── proxychains/ └── proxychains-xray.conf # конфиг proxychains (SOCKS5 через xray) tests/ ├── test_fixes.sh # юнит-тесты структуры ai-setup.sh └── test_network.sh # тесты маршрутизации test_isolated.sh # проверка автоустановки ai-gpt и ai-kimi test_sigint.sh # ручной тест поведения SIGINT ``` ## Установка Запускать от обычного пользователя, не через `sudo`: ```bash bash setup.sh ``` Мастер-скрипт показывает меню: ``` Шаги для новой машины: 1) AI-инструменты 2) Сеть: ru-bypass + kill switch Дополнительно (по необходимости): 3) Отключить kill switch 4) Включить kill switch 5) Статус 6) Проверить сеть 7) Обновить # git pull + перегенерация AI-лаунчеров ``` После установки, если shell ещё не видит новые команды: ```bash exec bash ``` ## Сеть: ru-bypass + kill switch Полная документация: [`home-configs/network/README.md`](home-configs/network/README.md) ### Что это - **.ru сайты** (ozon.ru, госуслуги и др.) - идут **напрямую** через провайдера с российским IP - **\*.loc офисные адреса** - тоже напрямую через локальный роутер - **Всё остальное** - только через Amnezia VPN - **Если Amnezia упала** - не-.ru трафик блокируется UFW (kill switch), .ru и *.loc продолжают работать ### Как работает Amnezia захватывает весь трафик двумя широкими маршрутами (`0.0.0.0/1` и `128.0.0.0/1` через `amn0`). `ru-bypass.sh` добавляет тысячи более специфичных маршрутов для .ru IP-блоков через локальный роутер. Ядро Linux выбирает самый специфичный маршрут - .ru идёт напрямую, остальное в amn0. UFW настроен так: ``` default deny outgoing — запрещено всё по умолчанию allow out on amn0 — через Amnezia можно всё before.rules: ipset ru-direct — для .ru IP разрешён прямой выход before.rules: RFC1918 — 10/8, 172.16/12, 192.168/16 тоже напрямую (*.loc) ``` ### Первый запуск Через меню (`bash setup.sh` → пункт 2) - он автоматически определит GATEWAY и DEV из `ip route show default`, предложит профиль и сохранит настройки в `~/.config/ai-setup/network_.conf` (по умолчанию профиль равен `$(hostname)`). Или напрямую: ```bash sudo bash scripts/ru-bypass.sh # для другой сети: sudo GATEWAY=10.0.0.1 DEV=eth0 bash scripts/ru-bypass.sh ``` ### Что устанавливается при первом запуске - `ipset` (если не установлен) - Скрипт копируется в `/usr/local/bin/ru-bypass.sh` - `ru-ipset-restore.service` - восстанавливает ipset из файла **до старта UFW** при загрузке - `ru-bypass.service` - обновляет RIPE-список и маршруты после network-online - `ru-bypass.timer` - ежедневно запускает обновление RIPE-списка и маршрутов - NM dispatcher `/etc/NetworkManager/dispatcher.d/99-ru-bypass` - перезапускает скрипт при поднятии amn0 - `/etc/ru-bypass.conf` - root-конфиг для запусков из systemd/NM dispatcher - `/etc/hosts` блок для локальных Eltex-доменов При каждом запуске: - Скачивает список .ru IP-блоков из RIPE (кэш 24ч, `/var/cache/ru-delegations.txt`) - Обновляет ipset `ru-direct` (~11000 записей) - Добавляет в ipset встроенные и пользовательские kill switch исключения - Сохраняет ipset в `/etc/ipset.conf` для восстановления после ребута - Добавляет маршруты через GATEWAY для всех .ru блоков и RFC1918 - Обновляет UFW `before.rules`, добавляет прямые iptables-правила и отключает IPv6 при активном kill switch ### ks-off / ks-on Для ситуаций когда нужен временный доступ без VPN (сайты, блокирующие нероссийский IP): ```bash # 1. Выйти из Claude Code # 2. Отключить kill switch sudo bash scripts/ks-off.sh # 3. Отключить Amnezia в GUI # Возврат: # 4. Подключить Amnezia в GUI (дождаться amn0) sudo bash scripts/ks-on.sh # 5. Войти в Claude Code ``` ### Проверка ```bash ip route get 8.8.8.8 # -> dev amn0 (Google через VPN) ip route get 77.88.8.8 # -> dev (ya.ru напрямую) ip route get 10.10.0.1 # -> dev (*.loc напрямую) bash tests/test_network.sh # полные тесты ``` ## AI инструменты `scripts/ai-setup.sh` устанавливает и настраивает все AI CLI. После запуска генерируются или обновляются в выбранном `BIN_DIR`: `~/bin`, если он уже есть в `PATH`, иначе `~/.local/bin`. - `ai-claude` - Claude Code (Anthropic API) - `ai-gpt` - нативный OpenAI Codex CLI - `ai-deepseek` - Claude Code через DeepSeek API - `ai-kimi` - Claude Code через официальный Kimi Code API (`api.kimi.com/coding`) - `ai-openrouter` - Claude Code через OpenRouter (GPT-5.5, Grok, Qwen, MiniMax, Llama и др.) - `ai-gemini` - нативный Antigravity CLI `agy` - `ai-api-helpers.sh` - вспомогательные функции для лаунчеров - `claude-gpt-effort-proxy.py` - совместимый helper для старого GPT/claude-code-proxy backend Все генерируемые скрипты полностью перезаписываются при каждом запуске `scripts/ai-setup.sh`. Также устанавливается: - `~/.config/ai-setup/global_rules.md` и native rule-файлы (`~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md`, `~/.kimi-code/AGENTS.md`, `~/.gemini/GEMINI.md`) - Скиллы из `home-configs/claude/skills/` в `~/.claude/skills/` и `~/.gemini/config/plugins/local-setup/skills/` ## Android CLI `scripts/ai-setup.sh` также устанавливает [Google Android CLI](https://d.android.com/tools/agents) (preview) - официальный терминальный инструмент для Android-разработки, заточенный под AI-агентов. Что устанавливается: - `android` - бинарь CLI в `~/.local/bin/` (или `~/bin` через symlink) - `android-cli` skill в `~/.claude/skills/` для Claude Code Поддерживаемые платформы: - Linux: `x86_64`, `arm64` - macOS: `x86_64`, `arm64` - Windows: `x86_64` (ограниченная поддержка, `android emulator` отключён в v0.7) Ключевые команды: ```bash android --version # версия CLI android info # информация об SDK и путях android sdk list # список доступных SDK-пакетов android sdk install ... # установить пакеты SDK android create ... # создать новый Android-проект android emulator start # запустить эмулятор android run --apks ... # установить и запустить APK android update # обновить сам Android CLI ``` Интеграция с Claude Code: ```bash # После установки ai-setup.sh выполняется автоматически: android init ``` Это разворачивает `android-cli` skill в `~/.claude/skills/`, после чего Claude Code понимает Android CLI и может использовать его для SDK, эмулятора и сборок. Ограничения: - Android CLI находится в preview, API/команды могут меняться. - На Windows в v0.7 отключена команда `android emulator`. - Если уже установлен Android Studio, Android CLI может использовать тот же SDK или создать новый в `~/.android/sdk`. Проверяй активный путь через `android info`. - Android CLI - нативный бинарь, который спавнит дочерние процессы (emulator, gradle, adb), поэтому он не оборачивается в `proxychains4`. ## VLESS / Xray (опционально) При запуске `scripts/ai-setup.sh` спрашивает, нужен ли VLESS-прокси для AI API запросов. Если выбрать **Y**: - Читает список серверов из `home-configs/vless/servers.conf` - Проверяет каждый сервер реальным curl'ом через SOCKS5 - Устанавливает Xray, генерирует конфиг, создаёт systemd сервис - Все лаунчеры оборачиваются в `proxychains4` Если выбрать **n** - VLESS отключается, xray останавливается, системный/Firefox прокси сбрасываются в direct. IPv6 включается обратно только если UFW kill switch не активен. ## Ключи и конфиги - `~/.config/ai-setup/deepseek_key` - DeepSeek API key (права 600) - `~/.config/ai-setup/kimi_key` - Kimi API key (права 600) - `~/.config/ai-setup/openrouter_key` - OpenRouter API key (права 600) - `~/.config/ai-setup/global_rules.md` - глобальные правила агентов - `~/.config/ai-setup/network_.conf` - сохранённые сетевые профили (`GATEWAY`, `DEV`, `LOCAL_DNS`, `AMNEZIA_SERVER`, `KILL_SWITCH_EXCEPTIONS`) ## Права запуска агентов - `ai-gpt` использует `--dangerously-bypass-approvals-and-sandbox` - `ai-claude`, `ai-deepseek`, `ai-kimi`, `ai-openrouter`, `ai-gemini` используют `--dangerously-skip-permissions` Удобно для локального coding workflow, но это не sandbox для недоверенного кода. ## Правила агентов В `home-configs/GLOBAL_RULES.md` - правила Карпати (Think Before Coding, Simplicity First, Surgical Changes, Goal-Driven Execution) плюс пользовательские правила (отвечать по-русски, не коммитить без команды, не делать git add без команды и др.). `scripts/ai-setup.sh` копирует их в native rule-файлы всех CLI. Лаунчеры обновляют их при каждом запуске. ## Effort Mapping `EFFORT_MAPPING.md` - таблица effort-уровней (`low`/`medium`/`high`/`xhigh`/`max`) для Claude Code лаунчеров (`ai-claude`, `ai-deepseek`, `ai-kimi`, `ai-openrouter`). Нативные `ai-gpt` и `ai-gemini` живут отдельно. `claude-gpt-effort-proxy.py` маппит `xhigh` -> `high` для совместимости со старым GPT/claude-code-proxy backend; текущие лаунчеры его напрямую не вызывают. ## Требования - `bash`, `curl`, `python3` - Node.js/npm (для ai-gpt через Codex CLI и ai-gemini через agy) - `ipset` (устанавливается автоматически при запуске ru-bypass.sh) - (опционально) `proxychains-ng` - для VLESS-режима - (опционально) `gsettings` - для автонастройки системного прокси GNOME ## Тесты ```bash bash tests/test_fixes.sh # структура ai-setup.sh и синтаксис bash bash test_isolated.sh # автоустановка ai-gpt и ai-kimi через mock curl bash tests/test_network.sh # маршрутизация (нужен активный ru-bypass) # test_sigint.sh # ручной диагностический тест SIGINT ```