# AI Setup Набор shell-скриптов для установки AI coding CLI и настройки сети с Amnezia VPN. Точка входа - `setup.sh` (мастер-скрипт с меню). Он вызывает нужный скрипт из `scripts/`. ## Структура репозитория ``` setup.sh # мастер-скрипт с меню scripts/ ├── ai-setup.sh # устанавливает AI-инструменты в ~/.local/bin ├── ru-bypass.sh # .ru трафик напрямую, kill switch для остального ├── ks-off.sh # временно отключить kill switch └── ks-on.sh # восстановить kill switch home-configs/ ├── GLOBAL_RULES.md # глобальные правила для всех агентов ├── claude/ │ └── skills/ # кастомные скиллы для Claude Code (и Gemini) ├── 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 ``` ## Установка Запускать от обычного пользователя, не через `sudo`: ```bash bash setup.sh ``` Мастер-скрипт показывает меню: ``` Шаги для новой машины: 1) AI-инструменты 2) Сеть: ru-bypass + kill switch Дополнительно (по необходимости): 3) Отключить kill switch 4) Включить kill switch 5) Статус 6) Проверить сеть ``` После установки, если 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_$(hostname).conf`. Или напрямую: ```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 - NM dispatcher `/etc/NetworkManager/dispatcher.d/99-ru-bypass` - перезапускает скрипт при поднятии amn0 При каждом запуске: - Скачивает список .ru IP-блоков из RIPE (кэш 24ч, `/var/cache/ru-delegations.txt`) - Обновляет ipset `ru-direct` (~11000 записей) - Сохраняет ipset в `/etc/ipset.conf` для восстановления после ребута - Добавляет маршруты через GATEWAY для всех .ru блоков и RFC1918 ### 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 wlp1s0 (ya.ru напрямую) ip route get 10.10.0.1 # -> dev wlp1s0 (*.loc напрямую) bash tests/test_network.sh # полные тесты ``` ## AI инструменты `scripts/ai-setup.sh` устанавливает и настраивает все AI CLI. После запуска генерируются или обновляются в `~/.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, Claude и др.) - `ai-gemini` - нативный Antigravity CLI `agy` - `ai-api-helpers.sh` - вспомогательные функции для лаунчеров - `claude-gpt-effort-proxy.py` - прокси для маппинга effort-уровней (GPT 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/` ## VLESS / Xray (опционально) При запуске `scripts/ai-setup.sh` спрашивает, нужен ли VLESS-прокси для AI API запросов. Если выбрать **Y**: - Читает список серверов из `home-configs/vless/servers.conf` - Проверяет каждый сервер реальным curl'ом через SOCKS5 - Устанавливает Xray, генерирует конфиг, создаёт systemd сервис - Все лаунчеры оборачиваются в `proxychains4` Если выбрать **n** - VLESS отключается, прокси и IPv6 сбрасываются в дефолт. ## Ключи и конфиги - `~/.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_$(hostname).conf` - сохранённые GATEWAY/DEV для текущей машины ## Права запуска агентов - `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`) между провайдерами (Anthropic, GPT-5.5, DeepSeek V4, Kimi K2.6, Gemini 3.x). `claude-gpt-effort-proxy.py` маппит `xhigh` → `high` для GPT-бэкенда (нет нативного `xhigh` у GPT). ## Требования - `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) ```