Возможности
- 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-рендеринг через тип сообщенияpostLark для жирного/курсивного/зачеркнутого/ссылок/блоков кода (обычные ответы остаются на более лёгком типе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зафиксирован на linkerhoisted— Bun 1.3 изменил значение по умолчанию наisolated, но Vite + esbuild в этом монорепозитории ожидают размещениеhoisted(i18next, croner, pdfjs-dist, @tiptap/* должны разрешаться на верхнем уровнеnode_modules). Скрипт сборки для Windows уже использовал--linker=hoistedпо той же причине; закрепление вbunfig.tomlустраняет платформенное различие. (9ae87dc1)- Docker-образ теперь копирует
bunfig.toml— Без него контейнер использовал значение по умолчанию Bunisolated, что ломало сборку 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.dataaxios (чтобы ошибки 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, и заполнение его молча ломает входящие события.