В Хабе инструментов карточка лежит в секции «Приложение», на главном экране её тайл называется «Интегр.». В отличие от большинства других настроек, эти данные лежат не в телефоне, а на сервере.
Возможности
- Секции и терминальная шапка. Шапка
y83@toolsпоказывает, сколько интеграций и токенов заполнено; блоки разложены по секциям: «поиск и код» (GitHub, AgentSearch), «медиа», «документация» и «git» (карточка GitLab). - Кнопка «i» у каждого блока — окно с нумерованной инструкцией: где взять токен, какой scope отметить, чем это грозит. Внизу окна — кнопка перехода на страницу выдачи (GitHub, Context7, GitLab) или на сайт сервиса (картинки); страница открывается во встроенном браузере.
- GitHub — токен для поиска по коду на GitHub. Поле с подсказкой формата, кнопка-глаз показывает введённое значение.
- AgentSearch — адрес поискового сервера и его токен. Это основной веб-поиск приложения и агента. Адрес должен быть полным, со схемой: ввод без неё отклонит сохранение.
- Генерация изображений — адрес сервиса картинок и его токен.
- Context7 — ключ документации библиотек. Инструкция с тремя шагами и кнопкой «Открыть страницу токенов» живёт в окне «i».
- GitLab — карточка показывает адрес сервера и состояние токена и ведёт на экран GitLab, где настраивается подключение и публикуются репозитории.
- Строка состояния под каждым блоком. Это цветная точка и подпись: «Токена нет», «Токен сохранён» (рядом маска с сервера) или «новый, не сохранён», пока введённое значение ещё не записано.
- Кнопка Test у каждого блока. Делает настоящий запрос во внешний сервис и показывает результат: зелёная галочка с сообщением об успехе или красный значок ошибки с причиной. Работает и с только что введённым значением, и с давно сохранённым, поэтому токен можно проверить до сохранения.
- Кнопка Remove у каждого блока, у которого уже есть ключ. Спрашивает подтверждение обычным диалогом и после согласия сразу сохраняет.
- Кнопка Save в закреплённом подвале — одна на весь экран, сохраняет все блоки разом и активна только при несохранённых правках (подвал подписывает «есть несохранённые правки»). Пока идёт сохранение, в кнопке крутится спиннер.
- Выход с несохранённым токеном (стрелка «назад» или системная кнопка) спрашивает «сохранить или выйти» — введённое значение не теряется молча.
- Строка статуса под шапкой: короткое сообщение «Настройки сохранены» и, если что-то перезапускалось, дописка «перезапущено: <компонент>». Ошибки висят до закрытия, успех гаснет сам.
- Ошибка загрузки показывается отдельной карточкой с кнопкой «Повторить»: если сервер не ответил, экран не остаётся пустым.
Технические данные
| Параметр | Значение |
|---|---|
| Блоков на экране | 5: GitHub, AgentSearch, картинки, Context7 и карточка GitLab |
| Блоков с адресом сервера | 2: поиск и картинки |
| Состояний у строки ключа | 3: ключа нет, ключ сохранён, ключ введён |
| Инструкций «как получить токен» | 5: по одной на блок (окно по кнопке «i») |
| Языков интерфейса | 2: русский (дефолт) и английский |
| Таймаут проверки ключа | до 20 секунд |
| Размер ответа при проверке | не больше 1 МиБ |
| Формат ключа Context7 | начинается с ctx7sk |
| Что перезапускается при сохранении | только Codex, если менялся ключ Context7 |
| Полных ключей в ответе сервера | нет, наружу уходят только маски |
| Где хранится | файл настроек на сервере, ключ Context7 ещё и в конфиге агента |
| Сейчас на устройстве | заполнены все четыре блока с токенами |
Что агент умеет
- Открыть экран командой моста и посмотреть на него снимок — так агент проверяет, какие ключи сохранены и какие маски видны.
- Работать с экраном как с обычным интерфейсом: вписать значение в поле, нажать «глаз», нажать Test или Save. Отдельных команд моста для чтения и записи ключей нет.
- Открыть инструкцию по токену — нажать «i» у нужного блока: окно с шагами покажет, где в сервисе выдают токен и какие scope отметить.
- Проверить, что сохранено, по маскам — прочитать их можно и через экран, и через обычный запрос к серверу.
- Чего агент не может: увидеть сами ключи. Приложение и сервер отдают только маску из четырёх последних символов, полное значение не покидает сервер даже по запросу.
Ограничения
- Главная ловушка: пустое поле при сохранении стирает ключ. У GitHub и AgentSearch пустая строка означает «записать пустое», поэтому если нажать Save, не вписав токен заново, сохранённый ключ будет удалён. Кнопка Remove делает ровно то же самое, только с подтверждением.
- Ключи не читаются обратно. После сохранения поле пустое, видна только маска. Чтобы убедиться, что ключ живой, нужно нажать Test.
- Пустое поле у картинок и Context7 означает «не трогать». Это не то же самое, что у GitHub: там, чтобы стереть ключ, нужно нажать Remove.
- Ключ Context7 проверяется только на сервере. Если вписать ключ не того формата, сохранение покажет ошибку в строке статуса под шапкой, а не под полем.
- Без ключа Context7 работает анонимно — с ограничением по частоте. Такой результат проверки это не поломка.
- Адрес поискового сервера должен быть полным, с префиксом. Ввод вроде «localhost:8080» блокирует сохранение всего экрана.
- Ошибка в одном поле может остановить сохранение. Кнопка одна на все блоки. Битый адрес поиска блокирует всё ещё до запроса, а вот если сервер забракует ключ Context7, токен GitHub к этому моменту уже записан.
- Перезапуск сервисов бывает только один. Если перезапуск не удался, сохранение всё равно считается успешным, а ошибка уходит в лог — про неработающую документацию можно узнать только по косвенным признакам.