ai-mimo runs Claude Code through Xiaomi's Anthropic-compatible API (Token Plan or pay-as-you-go). The key's endpoint is found by probing token-plan-sgp, token-plan-ams and api.xiaomimimo.com (a key only works in its own region) and is saved to mimo_base_url; MIMO_BASE_URL overrides. Unreachable endpoints are skipped, token-plan-cn is left out of the probe since it times out from our network, and a 402 on the pay-as-you-go endpoint explains that a tp- Token Plan key is needed. Always the smartest model: mimo-v2.6-pro in every slot and for subagents, --model opus and --effort max on each start, 128000 output tokens (Claude Code's ceiling), real 1M context window. Measured on 13.10: MiMo ignores output_config.effort (even "bogus" is accepted, no length trend from low to max) and treats thinking adaptive like enabled, so reasoning is always on; EFFORT_MAPPING.md records this. /logout-mimo is registered as a command and handled by the logout hook (removes mimo_key and mimo_base_url). setup.sh status, statusline brand color, README, QUICK_START and AGENTS.md list the new launcher. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
16 KiB
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(Anthropic-эндпоинт Z.ai: настоящая 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-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
scripts/ai-setup.sh также устанавливает Google Android CLI (preview) - официальный терминальный инструмент для Android-разработки, заточенный под AI-агентов.
Что устанавливается:
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:
# После установки ai-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-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.