0.9.0 30 апреля 2026 г.

Апгрейд Claude Agent SDK, Lark / Feishu сообщения, Telegram супергруппы с темами

Возможности Claude Agent SDK переведён на нативно-бинарное распределение (0.2.123) — SDK 0.2.113 разделил пакет на тонкую основу ( @anthropic-ai/claude-agent-sdk ) и дополнительную зависимость для…

Возможности

  • Claude Agent SDK переведён на нативно-бинарное распределение (0.2.123) — SDK 0.2.113 разделил пакет на тонкую основу (@anthropic-ai/claude-agent-sdk) и дополнительную зависимость для каждой платформы, содержащую нативный бинарник claude. AIKraft Agents теперь разрешает бинарник через псевдоним сборочного скрипта @anthropic-ai/claude-agent-sdk-binary/claude (с fallback на пакет для каждой архитектуры в dev-режиме), а ripgrep перешёл с устаревшей вендорской копии SDK на верхнеуровневую зависимость @vscode/ripgrep. electron-builder.yml теперь включает тонкую основу, псевдоним бинарника и @vscode/ripgrep как extraResources на macOS, Linux и Windows; скрипты сборки кросс-выбирают пакет бинарника целевой архитектуры через npm pack, если хостовая архитектура отличается. Размер бандла растёт примерно на 210 МБ на платформу — неизбежно для новой модели упаковки SDK. (9ae87dc1)
  • Адаптер сообщений Lark / Feishu (Фаза 1 + Фаза 2) — Третья платформа сообщений помимо Telegram и WhatsApp. Подключите Lark Custom App через Open Platform — open.larksuite.com (международный) или open.feishu.cn (Китай) — через тот же процесс /pair, что и Telegram, без необходимости публичного webhook URL (транспорт по длинному соединению WebSocket). Фаза 1 охватывает App ID + App Secret + селектор региона в Настройки → Сообщения → Lark / Feishu, текст входящих/исходящих для DM, @упоминания в группах и сессионный паринг. Фаза 2 добавляет живое редактирование сообщений (одиночное сообщение с потоковой передачей), интерактивные карточки для кнопок Accept Plan / Allow / Deny (схема 2.0, максимум 10 кнопок, метки до 30 символов), двунаправленные вложения изображений и файлов, а также Markdown-рендеринг через тип сообщения post Lark для жирного/курсивного/зачеркнутого/ссылок/блоков кода (обычные ответы остаются на более лёгком типе text). 24 новых ключа i18n на каждую локаль среди всех 7 поддерживаемых локалей. Закрывает , частично решает и . (5443aa41, e56862e4)
  • Паринг Telegram супергрупп и маршрутизация по темам для каждой автоматизации — Подключите супергруппу Telegram к workspace из Настройки → Сообщения → Telegram → Pair Supergroup; бот захватывает chat.id супергруппы после ввода /pair <code> в любой теме. Паринг требует chat.type === 'supergroup' И is_forum === true, поэтому DM, базовые группы и обычные супергруппы не могут быть зарегистрированы как супергруппа workspace. Связанные привязки отображаются как Group › Topic #N в Настройках и list_messaging_channels. Добавьте необязательное поле telegramTopic к любому матчеру автоматизации в automations.json, и созданная сессия привязывается к форумной теме с этим именем (создаётся при первом использовании, переиспользуется далее; матчеры с одинаковым значением делят одну тему). Поддерживается расширение переменных окружения для значения темы (например, "Reports: $LABEL"). (77e1f5f1, dd22996e)

json { "matcher": "^urgent$", "telegramTopic": "Urgent Alerts", "actions": [ { "type": "prompt", "prompt": "Investigate the urgent issue: $LABEL" } ] }

  • Режим Группировка по непрочитанным в представлении Все сессии — Третья опция группировки помимо Группировки по дате и Группировки по статусу разделяет список сессий на две фиксированные категории: Unread (N) сверху, Read (N) снизу, отсортированные по lastMessageAt внутри каждой. Обе категории всегда отображаются, даже если пусты, чтобы активный режим был всегда виден; пустые группы скрывают значок сворачивания. Режим отключён в подвидах состояния (Инбокс, Отмеченные и т.д.), где фильтрация по статусу уже ограничивает список — в них используется Группировка по дате. Состояние сворачивания хранится отдельно для каждого режима, поэтому сворачивание группы Read в режиме Unread не влияет на другие режимы. (59b826a2)
  • Переработка настроек Telegram в сообщениях выведена в продакшн — Карточка Настройки → Сообщения → Telegram теперь разделяет привязки на строку прямой сессии (DM-паринг) и секцию Супергруппа (сводящий чек при подключении, CTA "Pair Supergroup" при отсутствии подключения), что зеркалирует паттерн WorkspaceOverrideCard из настроек AI. Привязки, привязанные к темам, отображаются как строки Title / # TopicName · Topic #N. Карточки WhatsApp и Lark сохраняют существующее плоское расположение — у них нет концепции супергрупп/тем. (312016a3, 7e235f8e)

Улучшения

  • Устойчивая загрузка сообщений сессии с элементом управления повтором — Загрузка сообщений сессии имела два сценария сбоя, из-за которых пользователи смотрели бесконечные спиннеры: устаревшие флаги loaded после обновления метаданных и потерянные ответы транспорта. Новый replaceLoadedSessionAtom выполняет авторитетное полное обновление сессии, помечая её как загруженную и обновляя метаданные в одной транзакции, устраняя предыдущий риск расхождения updateSessionDirect + sessionMetaMapAtom.set. Новый помощник deriveSessionMessagesLoadState различает состояния: в памяти готово vs устаревший флаг загрузки, известно пусто vs ещё не загружено, и сбои загрузки vs всё ещё загружается — используется ChatDisplay для отображения элемента управления Повторить вместо бесконечного вращения при сбое транспорта. Анимация загрузки AnimatePresence переключается на mode="sync", чтобы устаревшее завершение загрузки не могло кратковременно скрыть готовый контент при восстановлении. (d8262fab)
  • bunfig.toml зафиксирован на linker hoisted — Bun 1.3 изменил значение по умолчанию на isolated, но Vite + esbuild в этом монорепозитории ожидают размещение hoisted (i18next, croner, pdfjs-dist, @tiptap/* должны разрешаться на верхнем уровне node_modules). Скрипт сборки для Windows уже использовал --linker=hoisted по той же причине; закрепление в bunfig.toml устраняет платформенное различие. (9ae87dc1)
  • Docker-образ теперь копирует bunfig.toml — Без него контейнер использовал значение по умолчанию Bun isolated, что ломало сборку Vite. (cbed3061, 1e85b5a2)
  • Веб-интерфейс: npm-зависимости и workspace-зависимости теперь объявлены явноapps/webui неявно наследовал зависимости через размещение hoisted в node_modules. Объявление @craft-agent/{shared,ui} как workspace-зависимостей и явное перечисление каждой npm-зависимости времени выполнения, которую импортирует исходный код, сохраняет пакет самостоятельным и сборки Docker воспроизводимыми. (7fd8177f, 9c9eb073)

Исправления

  • API-ключи loopback-конечных точек теперь отправляются в запросах — Кастомные OpenAI-совместимые конечные точки, настроенные для loopback-хоста (localhost, 127.0.0.1), молча удаляли API-ключ из исходящих запросов, возвращая 401 от любого локального прокси, требующего аутентификации. Ключ теперь проходит без изменений. Исправляет . (62c65169)
  • Переопределения Vision на кастомных конечных точках сохраняются от начала до конца — Возможности моделей кастомных конечных точек теперь могут сохранять явные переопределения supportsImages: true / supportsImages: false при прокрутке и изменении запросов. В частности, supportsImages: false остаётся доступным для переопределения глобального значения по умолчанию для изображений. (81259d0b)
  • Валидация Mermaid выровнена с рендереромmermaid_validate и встроенный рендерер диаграмм используют одну и ту же конфигурацию парсера, поэтому диаграмма, прошедшая валидацию, теперь действительно отображается, а ошибки валидации зеркалируют сообщения рендерера. (8b39c84c)
  • Устаревший переподключение больше не оставляет список сессий необновлённым — После переподключения список сессий мог оставаться привязанным к состоянию до отключения, пока пользователь не обновил страницу вручную. Список теперь обновляется авторитетно при переподключении. (3a2f7b6b)
  • Интерактивные карточки Lark отображаются надёжно — Серия исправлений для нового адаптера Lark: обёртка схемы 2.0 в конструкторе карточек (elements под body вместо верхнего уровня), схема кнопок (behaviors[] вместо устаревшей обёртки action), извлечение ошибок из response.data axios (чтобы ошибки Lark code/message отображались в логах вместо неясных полей axios), а также жизненный цикл WS и диагностическое логирование прихода событий. Путь с плоским полезным нагрузом из диспетчера SDK теперь обрабатывается. Отправка планов, кнопки Allow/Deny и Accept Plan работают от начала до конца. (d47b6648, 8cc5fb3f, 23576f15, d7126b80, 1273a1d0, b958ae4f)
  • Диалог подключения Lark автоматически закрывается при привязке — После успешного паринга диалог подключения автоматически закрывается и отображает подтверждающий текст, как в потоке Telegram. Меню подключения в меню сессии теперь включает Lark / Feishu помимо Telegram и WhatsApp. (ef8884f5, 6e3455f7)
  • OAuth-всплывающие окна WebUI работают на iOS Safari — Строгая семантика блокировки всплывающих окон iOS Safari требовала открытия OAuth-всплывающего окна синхронно внутри обработчика пользовательского жеста. Поток теперь повторно использует предварительно открытое окно и навигирует в него после вычисления URL аутентификации, вместо открытия из асинхронного обратного вызова. (5e0e7d1d)

Несовместимые изменения

  • Нет для пользователей. Изменение Claude SDK является внутренним — не требуется изменение конфигурации. Конфигурации кастомных конечных точек, автоматизации и привязки сообщений продолжают работать без изменений.

Примечания

  • Рабочие пространства, обновляющиеся с 0.8.13, увидят рост размера приложения примерно на 210 МБ на платформу при следующей установке — это неизбежно для новой модели упаковки Claude Agent SDK (нативный бинарник claude теперь поставляется для каждой платформы вместо скрипта cli.js). Действий не требуется.
  • Полное руководство по настройке Lark доступно по адресу docs.aikraft.ru/messaging/lark. При настройке Custom App оставьте поле Encrypt Key пустым — режим длинного соединения не использует шифрование полезной нагрузки webhook, и заполнение его молча ломает входящие события.

← Все версии