ai-eltex runs Claude Code through the Eltex LiteLLM proxy
(http://llm.eltex.loc:4000, team GLM subscription). The personal key
from admins is checked via /v1/models and stored in
~/.config/ai-setup/eltex_key; the model is taken from the key's
allowed list (ELTEX_MODEL / ELTEX_BASE_URL override). The proxy
ignores effort/thinking, so no effort forcing. /logout-eltex and
/logout in ai-eltex drop the key; setup.sh status shows it.
ru-bypass: hosts block now has an end marker and only that block is
rewritten, manual entries outside it survive; llm.eltex.loc/llm2 added
since the VPN DNS does not resolve it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Z.ai Anthropic endpoint reads output_config.effort and accepts all 5
Claude Code levels, but GLM 5.3 has only low/high/max natively:
medium -> low, xhigh -> high (measured, not documented by Z.ai).
ai-glm now starts on xhigh instead of max.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude Code не знает моделей glm-* и для glm-5.3 без суффикса считал окно
= 200K: счётчик ctx: врал в ~5 раз, автокомпакт жал сессию в 200K.
Окно теперь задаётся CLAUDE_CODE_MAX_CONTEXT_TOKENS=1000000 (env применяется
к не-claude моделям независимо от суффикса), поэтому [1m] у Haiku-слота
стал дублирующим и убран — все три слота пикера теперь glm-5.3.
Co-Authored-By: Claude <noreply@anthropic.com>
./setup.sh update (или --update) запускает git pull --ff-only + перегенерацию
всех ai-* лаунчеров без интерактивного меню — то же, что пункт меню 7 (логика
вынесена в общую do_update). Неизвестный аргумент печатает usage и выходит
с кодом 1, без аргументов открывается меню как раньше.
Co-Authored-By: Claude <noreply@anthropic.com>
glm-5.3 доступна на api.z.ai (вышла 2026-08-14, 1M контекст): opus/sonnet =
glm-5.3, haiku = glm-5.3[1m], subagent = glm-5.3, health-check ключа тоже
на 5.3. Секция OpenRouter остаётся на z-ai/glm-5.2 — там 5.3 ещё нет.
Co-Authored-By: Claude <noreply@anthropic.com>
GitLab access uses project access tokens, one per project, and a token from
another project answers 404 instead of 403 - a wrong token is indistinguishable
from a missing project. Nothing described where those tokens live, so agents
either guessed or gave up.
Added section 10 with the file -> project mapping (superapp-launcher,
common-library, smart_home), a working curl example, and the note that the
generic `gitlab_token` fallback is gone: helpers such as eltex-review need an
explicit --token-file.
Логин Claude.ai подвисал навсегда: claude auth login ждёт код из браузера в stdin, а хук запускал его в фоне с </dev/null, куда код вставить невозможно. Теперь /add-account поднимает логин со stdin из fifo и печатает ссылку, а /add-account <код> отдаёт код, дожидается обмена и сохраняет новый аккаунт по email из токена. Провал логина больше не маскируется под успешное сохранение текущего аккаунта, а фоновые процессы гасятся строго по своим PID вместо широкого pkill -f. Поведение закреплено пятью тестами в tests/test_fixes.sh.
Правило №6: читать задачи Redmine по персональному API-ключу из
~/.config/ai-setup/redmine_key, вытаскивать ТЗ/статус/комментарии
через /issues/<N>.json?include=journals. Ключ держать только в этом
файле, не вписывать в git.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Удалены все кастомные скиллы из home-configs/claude/skills и логика
их деплоя (секция 6.6 ai-setup.sh для Claude и Gemini). Из README
убраны упоминания про деплой скиллов, из test_fixes.sh — тест наличия
android-скилла. Хуки аккаунтов, команда android init, правило #5 про
reusable skills и симлинк общей папки ~/.claude/skills оставлены
нетронутыми — скиллы теперь устанавливаются из отдельного репозитория.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ai-setup.sh проверял только наличие node через command -v, поэтому системный Node v12 (Ubuntu 22.04) проходил проверку и установка NodeSource 22 не запускалась. Из-за этого хук claude-notifier падал с SyntaxError на optional chaining (?.) и nullish coalescing (??), которые поддерживаются только начиная с Node 14. Теперь скрипт извлекает мажорную версию и при значении меньше 18 ставит/обновляет Node, чтобы регенерация не возвращала сломанные хуки.
Co-Authored-By: Claude <noreply@anthropic.com>
Регрессия из c571584: поясняющий комментарий оказался посреди цепочки
continuation-строк (\), из-за чего statement разрывался — claude
запускался без ANTHROPIC_BASE_URL/AUTH_TOKEN/DEFAULT_*_MODEL (дефолтный
Anthropic, "Not logged in", glm-5.2 not recognized, откат на Haiku 4.5).
Комментарий перенесён над env-блоком, цепочка восстановлена.
Дополнительно: ai-glm стартует на /effort max. max невалиден в settings.json
(там только low/medium/high/xhigh), поэтому задаётся через CLI --effort +
CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1 (без неё glm-5.2 не распознан как
effort-capable и параметр не уходит к Z.ai). Проверено перехватом трафика:
Claude Code шлёт output_config.effort=max, Z.ai включает thinking
(+35% reasoning tokens vs low на нетривиальной задаче). /effort внутри
сессии работает; ручной override запуска: AI_EFFORT=high ai-glm.
Co-Authored-By: Claude <noreply@anthropic.com>
CLAUDE_CODE_DISABLE_1M_CONTEXT=1 заставлял Claude Code считать
контекстное окно = 200K, из-за чего ctx: в статус-баре заполнялся
в ~5 раз раньше реального лимита GLM 5.2 (1M токенов).
Флаг убран только в секции ai-glm. Прочие лаунчеры (deepseek/kimi/
openrouter/opencode) флаг оставляют — у них другой контекст, и флаг
убирает [1M]-дубли из пикера. ai-claude его не использует.
Co-Authored-By: Claude <noreply@anthropic.com>
- ai-setup.sh: brew shellenv + brew-ветки для jq/Node; npm-prefix теперь после установки Node
- ai-setup.sh: install_proxy использует OS_TAG/ARCH_TAG (качает darwin-arm64/amd64)
- ai-setup.sh: afplay в 5 звуковых блоках, портабельный sed -i (BSD), touch ~/.zshrc
- setup.sh: скрытие сетевых пунктов (2/3/4/6) на macOS + адаптация Статуса
Устраняет на маке: npm not found, «не удалось определить пакетный менеджер»,
«неизвестная архитектура: arm64». Сетевые скрипты (ru-bypass/ks-*) оставлены Linux-only.
Co-Authored-By: Claude <noreply@anthropic.com>
Пользователь перешёл на Amnezia VPN — встроенный VLESS-прокси (xray + proxychains4)
и отдельный server-installer fuck-rkn.sh (telemt + xray) больше не нужны. Убран
весь код в ai-setup.sh/setup.sh, конфиги с VPN-кредами, неактуальный тест и
упоминания в документации.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Генерация нативного лаунчера ai-cursor для Cursor CLI (agent) с
автоустановкой через cursor.com/install, интеграцией proxychains4 в
VLESS-режиме, обновлением ~/.cursorrules и флагом --force (--yolo).
Очистка старого ai-cursor из ~/.local/bin при нестандартном BIN_DIR.
Добавлены тест генерации и упоминания в EFFORT_MAPPING/QUICK_START/README.
Co-Authored-By: Claude <noreply@anthropic.com>
Убран вызов встроенного /review (multi-agent workflow). Теперь Claude
читает дифф сам и выдаёт только критические проблемы с готовыми diff-фиксами.
- Никаких sub-agent'ов и deep cross-file investigations
- Только баги, утечки, падения, гонки, нарушения инвариантов
- Исключены: форматирование, нейминг, стиль, рефакторинг
- Готовый diff на каждую проблему, коротко, на русском
Co-Authored-By: Claude <noreply@anthropic.com>
Пункты 1/7/8 вызывали AI_SETUP_VLESS=0, что запускало откат сетевых настроек
(stop xray, сброс прокси GNOME, перепись Firefox user.js, IPv6 on), хотя они
относятся только к установке AI-инструментов. Добавлен режим skip (дефолт):
сеть не трогается, лаунчеры синхронизируются с текущим состоянием xray.
Включение/отключение VLESS - только пункт 9.
Co-Authored-By: Claude <noreply@anthropic.com>
- слот HAIKU переведён с MiniMax M3 на GLM 5.2 (z-ai/glm-5.2)
- слот FABLE (Llama 4 Maverick) удалён полностью
- README и заголовок ai-setup.sh обновлены соответственно
Co-Authored-By: Claude <noreply@anthropic.com>
- ai-deepseek, ai-glm, ai-openrouter: AI_RESET_KEY=1 принудительно
удаляет сохранённый ключ перед запуском
- при 429 предлагается ввести новый ключ вместо немедленного выхода
- OpenRouter сбрасывает ключ без reauth (там нет переменной reauth)
Co-Authored-By: Claude <noreply@anthropic.com>
- устанавливать jq автоматически, необходим для statusline-command.sh
- не спрашивать GitHub PAT в пункте 1, пропускать marketplace без GITHUB_TOKEN
- добавлена документация по Unicode-рендерингу статусной строки
Co-Authored-By: Claude <noreply@anthropic.com>
Пункты 1 (AI-инструменты), 7 (Обновить), 8 (Android CLI) теперь запускают
ai-setup.sh с AI_SETUP_VLESS=0 без вопросов. Пункт 9 (VLESS) спрашивает
включить/отключить и передаёт AI_SETUP_VLESS=1/0 соответственно.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Новый лаунчер ai-glm запускает Claude Code через официальный Anthropic-совместимый
API Zhipu AI (api.z.ai). Модели: glm-5.2 (opus/sonnet), glm-5.2[1m] (haiku).
Обновлены документация, статус, тесты и EFFORT_MAPPING.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Добавлены домены study-git.eltex-co.ru и study-red.eltex-co.ru в builtin kill switch exceptions и /etc/hosts блок.
Co-Authored-By: Claude <noreply@anthropic.com>
Статусбар слепо доверял accounts/current и показывал legacy-имя даже когда
активна сессия другого аккаунта. Теперь сверяем accessToken из
<current>.credentials.json с активным ~/.claude/.credentials.json и при
расхождении резолвим аккаунт по токену: локальный матч плюс account-email.sh
вместо haiku-велосипеда. Kimi-блок показывает alias (account1/account2).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
EFFORT_MAPPING, statusline и _apply_effort переведены на нативное
хранение уровня в settings.json лаунчера. Убран CLAUDE_CODE_EFFORT_LEVEL
(он блокировал /effort внутри сессии) и кэш ~/.cache/ai-setup/effort_*,
который никто не читал и который врал относительно реального уровня.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Хуки add-account и switch-account теперь ветвятся по AI_LAUNCHER:
claude - циклический обход сохранённых Claude.ai аккаунтов,
kimi - добавление и переключение API-ключей по кругу.
Skills обновлены под "account or API key".
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Установка android CLI из dl.google.com для linux/mac/windows
- Запуск android init для деплоя skills в агентов
- Кастомный skill android-cli в home-configs/claude/skills/
- Пункт меню 8) Android CLI в setup.sh
- Тесты и документация
Co-Authored-By: Claude <noreply@anthropic.com>
- Update ai-openrouter models in ai-setup.sh output and header
- Fix effort persistence wording (statusbar -> launcher)
- Unify KS_EXCEPTIONS -> KILL_SWITCH_EXCEPTIONS in docs and setup.sh prompt
- Clarify menu item 7 only updates AI launchers
- Add IPv6 note after ks-off.sh
- Scope UFW before.rules insertion to *filter section
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Добавлен _openrouter_balance() в ai-api-helpers.sh
- Statusline теперь показывает баланс для openrouter лаунчера
- Обновлены дефолтные модели в ai-openrouter (Grok 4.20 как opus и т.д.)
- Улучшена изоляция конфигов для deepseek/kimi/openrouter
Co-Authored-By: Claude <noreply@anthropic.com>
Лимиты привязаны к аккаунту, но кэш rate_limits ключевался только по
model_id. При /switch-account (та же модель) проценты смешивались между
аккаунтами. Добавил account в ключ кэша — у каждого аккаунта свои проценты.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Корень багов с потерей токенов: claude auth status читает
oauthAccount.emailAddress из ~/.claude.json, который рассинхронизирован
с реальным токеном в .credentials.json. Из-за этого хуки определяли
текущий аккаунт неверно и сохраняли активный токен под чужим именем,
затирая credentials другого аккаунта.
- account-email.sh (новый): определяет email по OAuth-токену —
локальный матчинг с accounts/, затем API /api/oauth/profile
- switch-account-hook.sh: current выводится из токена, а не из
auth status/хрупкого файла current — порча файлов исключена.
Перезапуск не нужен: на Linux Claude Code перечитывает
.credentials.json на лету
- add-account-hook.sh: email нового аккаунта тоже через хелпер
- skill add-account: убрано упоминание перезапуска
- ai-setup.sh: деплой account-email.sh (секция 6.7.05)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- новый хук add-account-hook.sh: сохраняет текущий аккаунт по реальному
email (claude auth status), запускает OAuth-логин в фоне и после успеха
сам сохраняет новый аккаунт в ~/.claude/accounts + делает его current
- switch-account-hook.sh: активный аккаунт определяется через
claude auth status, а не через хрупкий файл current - защита от порчи
сохранённых credentials при рассинхроне токена
- скилл add-account: краткая инструкция после срабатывания хука
- ai-setup.sh: деплой add-account-hook + регистрация в UserPromptSubmit
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Раньше все ai-* лаунчеры делили один ~/.claude и общий settings.json, из-за
чего кастомная модель (openai/gpt-5.5) из ai-openrouter протекала в пикер
ai-claude. Теперь каждый сторонний провайдер изолирован в своём
CLAUDE_CONFIG_DIR (~/.config/ai-setup/cfg/<launcher>) - свои settings.json и
.claude.json, ноль протечек. ai-claude остаётся на ~/.claude (нативный логин).
Пикеры /model приведены к требуемому виду:
- ai-deepseek: только DeepSeek V4 Pro (opus) и DeepSeek V4 Flash (haiku),
дефолт Pro; через availableModels + ANTHROPIC_DEFAULT_*_MODEL_NAME
- ai-kimi: только Kimi K2.6 (opus)
- ai-claude: только нативные модели Claude
Общие skills и CLAUDE.md шарятся симлинком из ~/.claude.
Persistence effort - гибрид:
- low/medium/high/xhigh живут нативно в settings.json лаунчера, /effort
внутри сессии работает свободно и уровень сохраняется
- max нельзя сохранить в settings.json (session-only), поэтому он
восстанавливается через CLAUDE_CODE_EFFORT_LEVEL; в такой max-сессии
/effort залочен (ограничение Claude Code), выход - AI_EFFORT=<lvl> ai-*
Текущий уровень ловит статусбар в ~/.cache/ai-setup/effort_<launcher>.
Удалён устаревший effort-save-hook (заменён нативным persistence + гибридом),
почищен из ~/.claude/settings.json и осиротевший кэш model_*.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- _brand_color: цвет имени модели по AI_LAUNCHER
deepseek=синий(69), claude=оранжевый(173), kimi=голубой(81),
openrouter=фиолетовый(135), остальные=кремовый(223)
- _restore_model / _restore_model_str: сохранение и восстановление
model_id в кэше лаунчера (~/.cache/ai-setup/model_<launcher>)
- effort-save-hook также сохраняет model_id при завершении сессии
- ai-claude/ai-openrouter используют восстановленную модель при старте
Co-Authored-By: Claude <noreply@anthropic.com>