Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AI Setup
Набор shell-лаунчеров для локальной установки и запуска нескольких AI coding CLI из единой точки входа.
Главный скрипт - ai-setup.sh. Он настраивает пользовательские директории, устанавливает глобальные правила агентов из GLOBAL_RULES.md, разворачивает кастомные скиллы и полностью перегенерирует standalone-скрипты в ~/.local/bin.
Что реально устанавливается и генерируется
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-скрипты полностью перезаписываются текущей эталонной версией из 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/
│ ├── ks-off.sh # временно отключить UFW kill switch
│ └── ks-on.sh # восстановить UFW kill switch
├── vless/
│ └── servers.conf # список VLESS-серверов для прокси
├── proxychains/
│ └── proxychains-xray.conf # конфиг proxychains (SOCKS5 через xray)
└── xray/ # (зарезервировано под будущие xray-конфиги)
При запуске 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 (опционально)
При запуске 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 ai-setup.sh
Скрипт прямо запрещает запуск от root. При этом, если Node.js не найден, он может попытаться установить Node.js через apt-get или dnf и тогда попросит sudo уже внутри этого шага.
После установки, если shell ещё не видит новые команды:
exec bash
Требования
bashcurlpython3- 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 CLIagy. При отсутствии пытается поставить через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.
При запуске 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 без перевода и смысловых правок.
Кратко правила Карпати:
- Think Before Coding - не гадать, явно проговаривать допущения, варианты и неясности.
- Simplicity First - писать минимальный код без speculative features и лишней конфигурируемости.
- Surgical Changes - трогать только нужное, не рефакторить соседний код, чистить только свои следы.
- Goal-Driven Execution - формулировать проверяемую цель и доводить работу до верификации.
Пользовательские глобальные правила:
- Всегда отвечать по-русски, на "ты", дружелюбно и как живой программист.
- Не выполнять
git commitбез прямой и однозначной просьбы. - Не выполнять
git addбез прямой просьбы, чтобы изменения оставались видны через обычныйgit diff. - Использовать обычный дефис
-, не em dash. - В начале работы внимательно учитывать все проектные
.mdфайлы. - При повторяющихся инструкциях предлагать reusable skill, но создавать или менять skill-файлы только после явного согласия.
Правило этого проекта:
- При каждом запуске
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.
Сетевые скрипты (network/)
Скрипты в home-configs/network/ не запускаются автоматически — ни ai-setup.sh, ни системой. Это ручные утилиты, которые нужно запускать явно от root.
Предназначены для окружения с Amnezia VPN и UFW kill switch (весь трафик через VPN, без VPN - только локалка).
ks-off.sh — временно отключить kill switch
sudo bash ~/path/to/home-configs/network/ks-off.sh
Отключает UFW. После этого нужно вручную отключить Amnezia через её GUI - трафик пойдёт напрямую через провайдера (российский IP). Используется когда нужен доступ к сайтам, которые блокируют VPN (ozon.ru и т.п.).
Перед запуском: выйди из Claude Code - сессия будет идти с другого IP.
ks-on.sh — восстановить kill switch
sudo bash ~/path/to/home-configs/network/ks-on.sh
Включает UFW обратно. Перед запуском нужно подключить Amnezia через GUI - иначе скрипт предупредит, что интерфейс amn0 не найден, и спросит подтверждение (без VPN весь интернет заблокируется).
Типичный workflow
# Нужен доступ к ru-сайтам напрямую:
1. Выйти из Claude Code
2. sudo bash ks-off.sh
3. Отключить Amnezia в GUI
# Возврат к нормальному режиму:
4. Подключить Amnezia в GUI (дождаться amn0)
5. sudo bash ks-on.sh
6. Войти в Claude Code
Тесты
В репозитории есть shell-тесты:
bash tests/test_fixes.sh
bash test_isolated.sh
tests/test_fixes.sh проверяет структуру ai-setup.sh и синтаксис bash. test_isolated.sh проверяет автоустановочные URL для ai-gpt и ai-kimi через mock curl.