OpsDeck 0.8.3 — вкладки ИИ-чата, контекст хостов и приложение полегче
ИИ-чат дорос до рабочего инструмента: вкладки, привязка к терминалу или серверу и история между запусками. Теперь ИИ сам знает, что крутится на ваших хостах, а локальная модель подсказывает, потянет ли её этот компьютер. А ещё — целая серия PR от @LockerWarUA: приложение быстрее запускается, меньше дёргает диск, git, хранилище паролей и серверы. Спасибо всем, кто пишет и присылает PR! 🙌
✨ Новое
-
Вкладки в ИИ-чате — до восьми разговоров рядом: + добавляет, двойной клик переименовывает, название по умолчанию — начало первого вопроса. Вкладку можно привязать:
- к вкладке терминала — чат берёт оттуда папку и оболочку, «▸ В терминал» вставляет туда же, а переход на эту вкладку терминала открывает её чат;
- к серверу из списка SSH — модель знает, про какой сервер вопрос, а расследование агента идёт только на этом хосте.
(#97)
-
История чата между запусками. Вкладки, названия, разговоры и привязки к серверам сохраняются в
ai-chats.jsonрядом с настройками (права0600). От расследований агента остаются вопрос и итог, вывод команд — нет. Отключается галочкой в ⚙ → Локальный ИИ, там же кнопка «Удалить сохранённую историю». (#100) -
Контекст для ИИ у SSH-хостов: что на сервере крутится и что важно — «PostgreSQL 16, основная база заказов; бэкапы в 03:00; без согласования не перезапускать». ИИ получает это сам: агент — для хостов из задачи, чат — для своего сервера. У своих хостов это поле в диалоге хоста, у хостов из
~/.ssh/config— кнопка с листком (сам файл OpsDeck не трогает). Текст идёт модели как сведения, а не указания. -
Правая кнопка мыши в терминале — на выбор, в ⚙ → Терминал: меню (как раньше), «Вставить из буфера» как в PuTTY или «Копировать выделение, иначе вставить» как в Windows Terminal. Действует сразу во всех терминалах, включая SSH и CLI-агентов. (#99)
-
Описание и подзадачи в «Задачах». Строки с отступом под задачей — как их показывает Obsidian — теперь её описание и подзадачи, а не отдельные задачи в общем списке. Задача раскрывается по клику, ☑ N/M показывает, сколько сделано, описание правится на месте, подзадача добавляется по Enter. Удаление задачи уносит и её блок, а поиск находит задачу и по тексту подзадачи.
🤖 Локальный ИИ
- Qwen3.8 27B в списке моделей: плотная модель, около 16,5 ГБ, рекомендовано 24 ГБ памяти; движок обновлять не нужно.
- «Потянет ли этот компьютер» — у каждой модели: ★ самая сильная из тех, что пойдут без оговорок, ⚠ памяти впритык или медленно без видеокарты, ✕ не потянет. Под выбранной моделью написано почему. Модель с ✕ скачивается только после подтверждения, а если не хватает места на диске, загрузка не начнётся, вместо того чтобы оборваться на 15-м гигабайте из 17. Видеопамять пока не учитывается.
- Привычки DevOps-инженера для чата и агента: от симптома снаружи внутрь, сначала смотреть, потом менять,
plan/--check/--dry-runдо применения, не печатать секреты, итог в виде «причина — доказательство — что сделать — как проверить». Чат и агент получают и справку по инструментам из базы знаний — меньше выдуманных флагов.
⚡ Быстрее и тише
- Запуск вдвое легче: IDE (CodeMirror, разбор YAML) и тексты справки грузятся при первом открытии, а не при каждом старте — код, который разбирается при запуске, сократился с 2,2 до 1,1 МБ. Первое открытие IDE и справки — на несколько десятков миллисекунд дольше. (#101, @LockerWarUA)
- Подсказки команд в терминале не тормозят на большой истории: индекс общий и не копируется на каждой паузе ввода, устаревший обновляется в фоне и перечитывает только изменённые файлы истории и заметок. (#103, @LockerWarUA)
- Алерты не переписывают файл на каждом опросе. Если источник вернул те же алерты,
alerts.jsonне перезаписывается и раздел не перерисовывается; повторная отправка Prometheus (сдвигendsAt) изменением не считается. На стенде с тремя постоянными алертами — 0 записей вместо 16 за 4 минуты. Заодно «просмотрен» у находок ИИ без своего времени больше не сбрасывается каждым опросом. (#108, @LockerWarUA) - Пароль коннектора алертов не читается из хранилища паролей на каждом опросе: после первого чтения он хранится в памяти (затирается при сбросе), а при остановке опроса и сохранении коннектора сбрасывается. На Linux это минус сессия D-Bus раз в минуту на источник и никаких окон ввода пароля посреди простоя. Ошибка хранилища больше не превращается молча в пустой пароль — она попадает в журнал. (#109, @LockerWarUA)
- Мониторинг на Windows: одна ssh-сессия на хост вместо входа на каждый опрос. В OpenSSH для Windows нет ControlMaster, поэтому каждое обновление доски было полным входом — при 20 хостах и интервале 30 с это 40 строк в журнале авторизации сервера в минуту, а с fail2ban или
MaxStartupsещё и риск бана. Теперь доска держит одно соединение с каждым хостом и закрывает его после 2 минут без опросов, какControlPersistна Linux и macOS. Нужен вход по ключу; ошибки входа объясняются, как и раньше. (#105, @LockerWarUA) - Панель «Файлы» не гоняет git вхолостую. Раньше открытая панель каждые 5 с запускала
git rev-parseиgit status, даже если ничего не менялось: 48 процессов git за 2 минуты простоя, а в большом репозитории следующийstatusнакладывался на ещё не закончившийся. Теперь панель сверяет дешёвый отпечаток (ветка, индекс, содержимое показанных папок) без запуска git и запускаетstatusтолько при изменении и только по одному. Папка вне репозитория запоминается до ⟳ или до следующей команды в терминале. Фоновыйstatusбольше не берётindex.lock, поэтому не срывает git-команду, которую вы запустили в тот же момент. (#114, @LockerWarUA)
🐞 Исправления
- Язык системы на чистой установке. На нерусской системе интерфейс открывался на английском, справка — на русском, а после перезапуска весь интерфейс становился русским. Теперь язык следует за системой с первого запуска. (#102, @LockerWarUA)
- Закрытая панель терминала больше не трогает терминал: таймер подсказки и кадр подсветки ввода, запрошенные до закрытия, ничего не делают, а ответ подсказки, который был ещё в пути, отбрасывается. (#104, @LockerWarUA)
🔒 Безопасность
- dompurify 3.4.17 — три критические уязвимости в очистке HTML (ею чистятся заметки).
- undici 7.30.1 / 8.12.3 — используется только в e2e-тестах, в приложение не попадает.
- ctutils 0.4.6; для
crypto-bigint0.5 риск принят до перехода библиотеки pgp на новую версию.
👥 Участники релиза
- @LockerWarUA — PR #101–#105, #108, #109, #114: быстрый запуск, подсказки команд, алерты без лишней записи и лишних чтений паролей, ssh-сессия мониторинга на Windows, git в панели «Файлы» только при изменениях, язык на чистой установке, закрытие панели терминала.
Хотите поучаствовать? PR принимаются в ветку dev, подробности в CONTRIBUTING.md.