The admins moved the config back to llm.eltex.loc:4000, but the raw /anthropic path is not set up there (401 "No Anthropic credential"; glm-5.3 is also 403 for the keys). The regular /v1/messages route with anth-glm-5.3 (glm-5.3 on the Z.ai Anthropic endpoint) covers what we need, so Claude Code talks to the proxy root again: - images via Z.ai's server-side analyze_image (Read png -> server_tool_use analyze_image -> correct answer, same as ai-glm); - effort works: low has no thinking, medium/high/max do; - a 309K-token request passes, [1m] keeps the 1M window; - prompt cache: 94-98% of input is a cache read from the second call. anth-glm-5.3 goes into every picker slot; zai-glm-5.3 and flash are not used. Effort stays max by default via CLI --effort. Checked on 21.10: all 6 pilot keys see the same models and answer on anth-glm-5.3; the full checks were run on one key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AI Setup
Набор shell-скриптов для установки AI coding CLI и настройки сети с Amnezia VPN.
Точка входа - setup.sh (мастер-скрипт с меню). Он вызывает нужный скрипт из scripts/.
Структура репозитория
setup.sh # мастер-скрипт с меню
scripts/
├── ai-setup.sh # устанавливает AI-инструменты в выбранный BIN_DIR
├── 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
│ └── statusline-command.sh # статусная строка Claude Code
└── network/
└── README.md # подробная документация по сетевой настройке
tests/
├── test_fixes.sh # юнит-тесты структуры ai-setup.sh
└── test_network.sh # тесты маршрутизации
test_isolated.sh # проверка автоустановки ai-gpt, ai-kimi и ai-glm
test_sigint.sh # ручной тест поведения SIGINT
Установка
Запускать от обычного пользователя, не через sudo:
bash setup.sh
Мастер-скрипт показывает меню:
Шаги для новой машины:
1) AI-инструменты
2) Сеть: ru-bypass + kill switch
Дополнительно (по необходимости):
3) Отключить kill switch
4) Включить kill switch
5) Статус
6) Проверить сеть
7) Обновить # git pull + перегенерация AI-лаунчеров
После установки, если shell ещё не видит новые команды:
exec bash
Обновление одной командой
./setup.sh update # или: ./setup.sh --update
То же, что пункт меню 7) Обновить: git pull --ff-only + перегенерация всех
ai-* лаунчеров через scripts/ai-setup.sh. Без аргументов открывается меню.
Сеть: 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_<profile>.conf (по умолчанию профиль равен $(hostname)).
Или напрямую:
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-onlineru-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-bypass: local hostsи# ru-bypass: end; ручные записи вне блока скрипт не трогает)
При каждом запуске:
- Скачивает список .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):
# 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 <DEV> (ya.ru напрямую)
ip route get 10.10.0.1 # -> dev <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 CLIai-deepseek- Claude Code через DeepSeek APIai-kimi- Claude Code через официальный Kimi Code API (api.kimi.com/coding)ai-glm- Claude Code через Zhipu AI GLM 5.3 API (api.z.ai/api/anthropic)ai-eltex- Claude Code через корпоративный LLM-прокси Eltex (http://llm.eltex.loc:4000, LiteLLM, team-подписка GLM). Ключ выдают админы (дока), модельanth-glm-5.3(GLM 5.3 на Anthropic-эндпоинте Z.ai) во всех слотах/model: картинки через серверныйanalyze_image, как вai-glm, effort, кеш, окно 1M; если ключу недоступнаanth-glm-5.3, лаунчер выходит с понятной ошибкой; переопределение:ELTEX_MODEL,ELTEX_BASE_URLai-eltex-qwen- то же через корпоративный LLM-прокси Eltex, но на моделях Qwen со своим ключом от админов: по умолчаниюEltex-Coder-Senior(Qwen3.8-27B), если она есть у ключа, иначеEltex-Qwen3_8-Flash-Next; ключ можно задать вAI_ELTEX_LLM_API_KEY, как в онбординге Eltex AI; переопределение:ELTEX_QWEN_MODEL,ELTEX_BASE_URLai-mimo- Claude Code через Xiaomi MiMo V2.6 (Anthropic-совместимый API, Token Plan или pay-as-you-go): всегда самая умная модельmimo-v2.6-pro(во всех слотах и сабагентах,--model opusна каждом запуске), effortmax, вывод до 128000 токенов, окно 1M. Эндпоинт региона подписки (token-plan-sgp/-ams, дляsk-ключаapi.xiaomimimo.com) находится перебором при вводе ключа; переопределение:MIMO_BASE_URL(нужно дляtoken-plan-cn: он в перебор не входит, с наших машин не отвечает)ai-qwen- Claude Code через Alibaba Cloud Model Studio (Token Plan, Anthropic-совместимый APItoken-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic): общий ключ вшит в скрипт, запускается сразу без ввода ключа.qwen3.8-maxв opus/sonnet и сабагентах (--model opusна каждом запуске),qwen3.8-flashв haiku, effortmax, окно 1M, картинки видят обе моделиai-openrouter- Claude Code через OpenRouter (GPT-5.5, Grok, Qwen, GLM 5.2 и др.)ai-opencode- Claude Code через OpenCode Go + routatic-proxy (DeepSeek, Kimi, Qwen, GLM, MiniMax, MiMo)ai-gemini- нативный Antigravity CLIagyai-cursor- нативный Cursor CLIagentai-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)
Android CLI
Google Android CLI (preview) - официальный терминальный инструмент для Android-разработки, заточенный под AI-агентов. По умолчанию не устанавливается: scripts/ai-setup.sh (пункты меню 1 и 7) его не трогает. Ставится только по выбору - bash setup.sh → пункт 8) Android CLI (или напрямую bash scripts/android-cli-setup.sh).
Что устанавливается:
android- бинарь CLI в~/.local/bin/(или~/binчерез symlink)android-cliskill в~/.claude/skills/для Claude Code
Поддерживаемые платформы:
- Linux:
x86_64,arm64 - macOS:
x86_64,arm64 - Windows:
x86_64(ограниченная поддержка,android emulatorотключён в v0.7)
Ключевые команды:
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:
# После установки android-cli-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.
Ключи и конфиги
~/.config/ai-setup/deepseek_key- DeepSeek API key (права 600)~/.config/ai-setup/kimi_key- Kimi API key (права 600)~/.config/ai-setup/glm_key- Zhipu AI (GLM) API key (права 600)~/.config/ai-setup/eltex_key- ключ корпоративного LLM-прокси Eltex от админов (права 600)~/.config/ai-setup/eltex_qwen_key- ключ для моделей Qwen на том же прокси (права 600)~/.config/ai-setup/mimo_key- Xiaomi MiMo API key (права 600),mimo_base_url- найденный для него эндпоинт~/.config/ai-setup/openrouter_key- OpenRouter API key (права 600)~/.config/ai-setup/opencode_key- OpenCode Go API key (права 600)~/.config/ai-setup/global_rules.md- глобальные правила агентов~/.config/ai-setup/network_<profile>.conf- сохранённые сетевые профили (GATEWAY,DEV,LOCAL_DNS,AMNEZIA_SERVER,KILL_SWITCH_EXCEPTIONS)
Права запуска агентов
ai-gptиспользует--dangerously-bypass-approvals-and-sandboxai-claude,ai-deepseek,ai-kimi,ai-glm,ai-eltex,ai-eltex-qwen,ai-mimo,ai-qwen,ai-openrouter,ai-opencode,ai-geminiиспользуют--dangerously-skip-permissionsai-cursorиспользует--force(алиас--yolo)
Удобно для локального coding workflow, но это не sandbox для недоверенного кода.
Правила агентов
В home-configs/GLOBAL_RULES.md - компактные правила о границах автономности, минимальных
изменениях, пропорциональной проверке, работе с Git и контекстом проекта, а также пользовательские
настройки: русский язык, доступ к Redmine и запрет на commit/staging без явной команды.
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-glm, ai-openrouter, ai-opencode).
Нативные 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)- (опционально)
gsettings- для автонастройки системного прокси GNOME
Тесты
bash tests/test_fixes.sh # структура ai-setup.sh и синтаксис bash
bash test_isolated.sh # автоустановка ai-gpt, ai-kimi и ai-glm через mock curl
bash tests/test_network.sh # маршрутизация (нужен активный ru-bypass)
# test_sigint.sh # ручной диагностический тест SIGINT
Лицензия
MIT License. Copyright (c) 2026 Виталий Никитенко. См. LICENSE.