Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agent Deck

Единый терминальный пульт для codex, claude, cursor-agent и opencode — на ratatui.

Один интерфейс, четыре агента, независимые сессии и бесплатный русско-английский перевод без единого потраченного токена.

┌─ Русский запрос ─────────────────────────────────────────────┐
│  «Отрефактори модуль аутентификации и покрой тестами»         │
└──────────────────────────────┬───────────────────────────────┘
                               │  Google Translate → LibreTranslate
                               │  0 токенов, ~150 мс
                               ▼
        English prompt ─►  Codex / Claude / Cursor / OpenCode
                               │  агент работает на английском
                               ▼
        English answer ─►  перевод обратно (0 токенов)
                               ▼
                         Русский ответ в transcript

Зачем это

Ассистенты берут деньги за токены, а русский текст токенизируется в среднем на четверть «тяжелее» английского. Agent Deck решает обе проблемы сразу:

  1. Перевод больше не стоит токенов. Раньше каждый русский запрос требовал трёх прогонов модели: перевести запрос, выполнить задачу, перевести ответ. Теперь перевод делают бесплатные сервисы по HTTP, а модель запускается ровно один раз — только на саму работу.
  2. Агент думает по-английски. В рабочий контекст уходит английский промпт, который короче русского оригинала (см. таблицу ниже). Экономия идёт и на входе, и на выходе.

Сколько токенов это экономит

Замер сделан токенизатором o200k_base — тем самым, что использует семейство GPT-5 / gpt-5.6-sol в Codex. Английские варианты получены тем же переводчиком, что встроен в утилиту.

Запрос Токенов (RU) Токенов (EN) Экономия
Исправь баг в app.rs и добавь тест 11 10 −9 %
Отрефактори модуль аутентификации, вынеси проверку токена, покрой юнит-тестами 31 19 −39 %
Добавь тёмную тему с переключением по горячей клавише и сохранением выбора 27 22 −19 %
Почему падает сборка после обновления зависимостей? Найди причину и предложи фикс 21 16 −24 %
Напиши функцию: парсит JSON от API, обрабатывает ошибки сети, возвращает типизированную структуру 27 20 −26 %
Итого 117 87 −26 %

Это экономия только на входном промпте. Сверх неё исчезают два полноценных прогона модели на перевод — на практике русский запрос дешевеет в разы, а не на четверть.

Повторить замер:

pip install tiktoken            # o200k_base — токенизатор gpt-5.6
python3 tools/measure_tokens.py # печатает таблицу по своим запросам

Что умеет

  • определяет установку и авторизацию codex, claude, cursor-agent, opencodeне читая файлы с токенами;
  • тянет актуальный список моделей прямо из Codex app-server и поддерживаемые каждой моделью уровни reasoning effort;
  • предлагает официальные aliases моделей Claude Code, модели Cursor Agent и reasoning-варианты OpenCode из их CLI;
  • переводит русский запрос → английский, отдаёт агенту, показывает ответ, переведённый обратно на русский;
  • держит независимую сессию каждого провайдера — можно переключаться между четырьмя CLI в одном окне;
  • запускает агентов в текущем каталоге.

Как устроен перевод

Перевод вынесен из ИИ в обычный HTTP-клиент (src/backend.rs):

  1. Google Translate — бесплатный публичный endpoint, без ключа. Основной путь.
  2. LibreTranslate — автоматический фолбэк, если Google недоступен. Полностью офлайн, если поднять свой сервер:
    docker run -ti --rm -p 5000:5000 libretranslate/libretranslate
    Адрес настраивается через LIBRETRANSLATE_URL (по умолчанию http://localhost:5000), ключ — через LIBRETRANSLATE_API_KEY.

Оба варианта не тратят токены. Компромисс честный: обычный машинный перевод может исказить длинные блоки кода внутри текста — короткие идентификаторы и пути (app.rs, Cargo.toml) переживают перевод нормально.

⚠️ Приватность перевода

В режиме по умолчанию текст запроса и ответа агента уходит в Google Translate — третью сторону. Если в запрос попадёт проприетарный код, внутренние пути или случайно вставленный секрет, всё это покинет вашу машину. Для чувствительных проектов есть офлайн-режим:

# только LibreTranslate; при локальном сервере ничего не уходит в интернет
export AGENT_DECK_TRANSLATE=local
AGENT_DECK_TRANSLATE Поведение
не задано Google, при ошибке — фолбэк на LibreTranslate
local / offline только LibreTranslate; Google не вызывается
google только Google, без фолбэка

Дополнительные меры в коде: соединение с Google идёт по HTTPS с проверкой сертификата; LIBRETRANSLATE_URL принимается только с https:// или http:// на loopback (localhost/127.0.0.1/::1) — чтобы промпт, который затем управляет агентом с правами записи, нельзя было перехватить по открытому каналу.

Требования

  • Rust 1.85+ (edition 2024);
  • хотя бы один CLI: codex, claude, cursor-agent или opencode;
  • авторизация штатной командой соответствующего CLI (бесплатные модели OpenCode работают без credentials);
  • доступ в сеть для перевода — или локальный LibreTranslate.

Сборка и запуск

# из каталога проекта
cargo run --release

# либо установить бинарник в ~/.cargo/bin
cargo install --path .

Запускать Agent Deck нужно из каталога проекта, над которым работаете:

cd /path/to/your/project
agent-deck

Клавиши

Клавиша Действие
/ список slash-команд
/provider · F2 выбор провайдера
/model · F3 выбор модели
/effort · F4 глубина рассуждений
/new · Ctrl+L новый разговор и свежие CLI-сессии
Enter перевести и отправить
Shift+Enter новая строка (если терминал различает сочетание)
PgUp / PgDn прокрутка transcript
? · F1 помощь
Ctrl+C закрыть меню; дважды — выйти

Безопасность и сеансы

Agent Deck вызывает официальные CLI как дочерние процессы и не открывает файлы с учётными данными. Рабочий Codex ограничен текущим workspace, Claude Code — в acceptEdits, Cursor Agent — в trusted print-режиме, OpenCode — в своей permission-конфигурации. Идентификаторы сессий живут только в памяти процесса. Перевод изолирован от рабочего сеанса: в контекст агента попадает лишь английский промпт.

Лицензия

GNU General Public License v3.0 или новее. Вы можете свободно использовать, изучать, менять и распространять код при условии, что производные работы остаются под той же лицензией.

About

Единый TUI для codex/claude/cursor/opencode с бесплатным RU↔EN переводом без токенов

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages