# AI Setup Набор shell-лаунчеров для локальной установки и запуска нескольких AI coding CLI из единой точки входа. Точка входа — `setup.sh` (мастер-скрипт с меню). Он вызывает нужный скрипт из `scripts/`. `scripts/ai-setup.sh` настраивает пользовательские директории, устанавливает глобальные правила агентов из `GLOBAL_RULES.md`, разворачивает кастомные скиллы и полностью перегенерирует standalone-скрипты в `~/.local/bin`. ## Что реально устанавливается и генерируется `scripts/ai-setup.sh` работает с такими путями: - `~/.local/bin` - standalone-лаунчеры и вспомогательные скрипты. - `~/.config/ai-setup` - сохранённые ключи и глобальные правила. - `~/.npm-global` - пользовательский npm prefix. - `~/.claude/skills/` - кастомные скиллы для Claude Code. - `~/.gemini/config/plugins/local-setup/skills/` - те же скиллы для Gemini/agy. После запуска генерируются или обновляются: - `~/.local/bin/ai-claude` - `~/.local/bin/ai-gpt` - `~/.local/bin/ai-deepseek` - `~/.local/bin/ai-kimi` - `~/.local/bin/ai-openrouter` - `~/.local/bin/ai-gemini` - `~/.local/bin/ai-api-helpers.sh` - `~/.local/bin/claude-gpt-effort-proxy.py` Все генерируемые standalone-скрипты полностью перезаписываются текущей эталонной версией из `scripts/ai-setup.sh`. Старое содержимое не сливается и не дописывается. ## Структура конфигов Все конфиги, которые разворачиваются в домашнюю директорию, живут в папке `home-configs/`: ``` home-configs/ ├── GLOBAL_RULES.md # глобальные правила для всех агентов ├── claude/ │ └── skills/ # кастомные скиллы для Claude Code (и Gemini) │ ├── el-review/ │ │ └── SKILL.md │ └── el-review-heavy/ │ └── SKILL.md ├── network/ │ └── README.md # документация по сетевой настройке ├── vless/ │ └── servers.conf # список VLESS-серверов для прокси ├── proxychains/ │ └── proxychains-xray.conf # конфиг proxychains (SOCKS5 через xray) └── xray/ # (зарезервировано под будущие xray-конфиги) ``` При запуске `scripts/ai-setup.sh`: - `GLOBAL_RULES.md` копируется в `~/.config/ai-setup/global_rules.md` и рассылается в нативные 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/`. Для Gemini также генерируется `plugin.json`, чтобы `agy` распознал плагин `local-setup`. Лаунчеры дополнительно обновляют native rule-файлы через helper `_build_ai_sys_prompt` при своём запуске. В native rule-файлы попадают только глобальные правила. Полный prompt с проектными `.md` используется в `ai-claude`, `ai-deepseek`, `ai-openrouter` и `ai-gemini`; `ai-gpt` и `ai-kimi` полагаются на native rule-файлы своих CLI. ## VLESS / Xray (опционально) При запуске `scripts/ai-setup.sh` первым делом спрашивает, нужен ли режим VLESS-прокси: ``` Установить встроенный vless? [Y/n] ``` Если выбрать **Y** (по умолчанию): - Читает список серверов из `home-configs/vless/servers.conf`. - Реально проверяет каждый сервер: запускает `xray` с временным конфигом и тестирует curl'ом через SOCKS5. Работающие серверы помечаются зелёным, неработающие — красным. - Пользователь выбирает сервер. - Устанавливается Xray (`/usr/local/bin/xray`), генерируется конфиг (`/etc/xray/config.json`), создаётся и запускается systemd-сервис. - Отключается IPv6 на уровне системы (VLESS с ним конфликтует). - Устанавливается `proxychains-ng`. - Firefox настраивается на SOCKS5 (`127.0.0.1:1080`) с remote DNS. - Системный прокси (GNOME) настраивается для Chrome/Chromium. - **Все лаунчеры оборачиваются в `proxychains4`** — трафик идёт через xray. Если выбрать **n** (direct-режим — или если ранее был включён VLESS, а теперь отключается): - Останавливается и отключается systemd-сервис xray. - Системный прокси сбрасывается в `none`. - Firefox переключается на прямой доступ. - IPv6 восстанавливается. ## Установка Запускать от обычного пользователя, не через `sudo`: ```bash bash setup.sh ``` Мастер-скрипт предложит меню с выбором что запустить. Либо напрямую: ```bash bash scripts/ai-setup.sh ``` Скрипт прямо запрещает запуск от root. При этом, если Node.js не найден, он может попытаться установить Node.js через `apt-get` или `dnf` и тогда попросит `sudo` уже внутри этого шага. После установки, если shell ещё не видит новые команды: ```bash exec bash ``` ## Требования - `bash` - `curl` - `python3` - Node.js/npm для npm-глобальных инструментов - (опционально) `proxychains-ng` — для VLESS-режима - (опционально) `gsettings` — для автонастройки системного прокси Если Node.js отсутствует, скрипт пытается поставить его автоматически для систем с `apt-get` или `dnf`. Для остальных систем Node.js нужно поставить вручную. ## Команды **На базе Claude Code:** - `ai-claude` - запускает оригинальный Claude Code (Anthropic API). - `ai-deepseek` - запускает Claude Code через DeepSeek Anthropic-compatible API. Проверяет и сохраняет DeepSeek API key. - `ai-kimi` - запускает Claude Code через официальный Kimi Code API (`https://api.kimi.com/coding/`). Проверяет и сохраняет Kimi API key. - `ai-openrouter` - запускает Claude Code через OpenRouter API (модели: GPT-5.5, Claude Opus 4.8, Claude Sonnet 4.6 и любые другие с OpenRouter). Проверяет и сохраняет OpenRouter API key. **Нативные CLI:** - `ai-gpt` - запускает нативный OpenAI Codex CLI. При отсутствии пытается поставить через `https://chatgpt.com/codex/install.sh` (fallback: npm). - `ai-gemini` - запускает нативный Antigravity CLI `agy`. При отсутствии пытается поставить через `https://antigravity.google/cli/install.sh`. ## Ключи и конфиги - DeepSeek key хранится в `~/.config/ai-setup/deepseek_key` с правами `600`. - Kimi key хранится в `~/.config/ai-setup/kimi_key` с правами `600`. - OpenRouter key хранится в `~/.config/ai-setup/openrouter_key` с правами `600`. - Исходник глобальных правил лежит в `home-configs/GLOBAL_RULES.md`. - При запуске глобальные правила пишутся в `~/.config/ai-setup/global_rules.md`. При запуске `scripts/ai-setup.sh` сразу обновляются native rule-файлы: - `~/.codex/AGENTS.md` - `~/.kimi-code/AGENTS.md` - `~/.claude/CLAUDE.md` - `~/.gemini/GEMINI.md` Лаунчеры дополнительно обновляют эти файлы через helper `_build_ai_sys_prompt` при своём запуске. ## Права запуска агентов Лаунчеры запускают CLI в максимально свободном режиме: - `ai-gpt` использует `--dangerously-bypass-approvals-and-sandbox`. - `ai-claude`, `ai-deepseek`, `ai-kimi`, `ai-openrouter` и `ai-gemini` используют `--dangerously-skip-permissions`. Это удобно для локального coding workflow, но это не sandbox для недоверенного кода. ## Правила агентов Действуют правила Карпати как есть: английский блок из `GLOBAL_RULES.md` устанавливается в `~/.config/ai-setup/global_rules.md` без перевода и смысловых правок. Кратко правила Карпати: 1. Think Before Coding - не гадать, явно проговаривать допущения, варианты и неясности. 2. Simplicity First - писать минимальный код без speculative features и лишней конфигурируемости. 3. Surgical Changes - трогать только нужное, не рефакторить соседний код, чистить только свои следы. 4. Goal-Driven Execution - формулировать проверяемую цель и доводить работу до верификации. Пользовательские глобальные правила: 1. Всегда отвечать по-русски, на "ты", дружелюбно и как живой программист. 2. Не выполнять `git commit` без прямой и однозначной просьбы. 3. Не выполнять `git add` без прямой просьбы, чтобы изменения оставались видны через обычный `git diff`. 4. Использовать обычный дефис `-`, не em dash. 5. В начале работы внимательно учитывать все проектные `.md` файлы. 6. При повторяющихся инструкциях предлагать reusable skill, но создавать или менять skill-файлы только после явного согласия. Правило этого проекта: 1. При каждом запуске `ai-setup.sh` все генерируемые standalone-скрипты в `~/.local/bin` (`ai-gpt`, `ai-deepseek`, `ai-kimi`, `ai-openrouter`, `ai-gemini`, `ai-api-helpers.sh`, `ai-claude`) должны полностью перезаписываться актуальными версиями. Merge и append старого содержимого запрещены. ## Effort Mapping В репозитории есть `EFFORT_MAPPING.md` — документ с полной таблицей маппинга effort-уровней между провайдерами (Anthropic, GPT-5.5, DeepSeek V4, Kimi K2.6, Gemini 3.x). Описывает, во что превращается `low`/`medium`/`high`/`xhigh`/`max` у каждого провайдера и где именно выполняется маппинг. Также скрипт генерирует `~/.local/bin/claude-gpt-effort-proxy.py` — легковесный прокси, который маппит `xhigh` → `high` для `claude-code-proxy` (GPT-бэкенд). Без него Claude Code не смог бы использовать `xhigh` effort с GPT. ## Сетевые скрипты (scripts/) Скрипты в `scripts/` **не запускаются автоматически** — ни `setup.sh`, ни системой. Это ручные утилиты, которые нужно запускать явно от root (или через `bash setup.sh`). Предназначены для окружения с Amnezia VPN и UFW kill switch (весь трафик через VPN, без VPN - только локалка). ### ks-off.sh — временно отключить kill switch ```bash sudo bash scripts/ks-off.sh ``` Отключает UFW. После этого нужно вручную отключить Amnezia через её GUI - трафик пойдёт напрямую через провайдера (российский IP). Используется когда нужен доступ к сайтам, которые блокируют VPN (ozon.ru и т.п.). **Перед запуском:** выйди из Claude Code - сессия будет идти с другого IP. ### ks-on.sh — восстановить kill switch ```bash sudo bash scripts/ks-on.sh ``` Включает UFW обратно. Перед запуском нужно подключить Amnezia через GUI - иначе скрипт предупредит, что интерфейс `amn0` не найден, и спросит подтверждение (без VPN весь интернет заблокируется). ### Типичный workflow ``` # Нужен доступ к ru-сайтам напрямую: 1. Выйти из Claude Code 2. sudo bash scripts/ks-off.sh 3. Отключить Amnezia в GUI # Возврат к нормальному режиму: 4. Подключить Amnezia в GUI (дождаться amn0) 5. sudo bash scripts/ks-on.sh 6. Войти в Claude Code ``` ## Тесты В репозитории есть shell-тесты: ```bash bash tests/test_fixes.sh bash test_isolated.sh ``` `tests/test_fixes.sh` проверяет структуру `scripts/ai-setup.sh` и синтаксис bash. `test_isolated.sh` проверяет автоустановочные URL для `ai-gpt` и `ai-kimi` через mock `curl`.