Документация врала: реальный UserPromptSubmit шлёт поле prompt, а не user_prompt. Хук получал пустую строку и выходил с exit 0, пропуская блокировку. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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 setup.sh
Мастер-скрипт показывает меню:
Шаги для новой машины:
1) AI-инструменты
2) Сеть: ru-bypass + kill switch
Дополнительно (по необходимости):
3) Отключить kill switch
4) Включить kill switch
5) Статус
6) Проверить сеть
После установки, если shell ещё не видит новые команды:
exec bash
Сеть: ru-bypass + kill switch
Полная документация: 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.
Или напрямую:
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):
# 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
Проверка
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 CLIai-deepseek- Claude Code через DeepSeek APIai-kimi- Claude Code через официальный Kimi Code API (api.kimi.com/coding)ai-openrouter- Claude Code через OpenRouter (GPT-5.5, Claude и др.)ai-gemini- нативный Antigravity CLIagyai-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-sandboxai-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 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)