Коротко
- Семь синхронных методов
modelAccountConnectServiceполучили ожидаемых двойников (listLinksAsync,linkAsync,unlinkAsync,listAsync,selectAsync,statusAsync,cancelAsync). - Старые помощники транскрипта
prepareMessageAfterIdempotencyCheckиbeforeFreshMessageCommitостаются для устойчивых целей с прежним порядком транзакций; инкогнито и цели, привязанные к исполнителю, отклоняют старую форму с ошибкой, указывающей замену. - Эти миграции не трогают схемы RPC, сохранённые данные и поведение обновлений.
Сверено с документацией OpenClaw 2026.10.5, 21 октября 2026.
Семь синхронных методов modelAccountConnectService получили асинхронные двойники, а для подготовки транскрипта добавили отдельные пути.
Шаг 1. Замените семь методов modelAccountConnectService
Каждый асинхронный метод сохраняет аргументы синхронного двойника и возвращает ту же обёртку результата. Передайте текущего владельца и актуальный assertCurrent (колбэк проверки полномочий): сервис перепроверит полномочия во время асинхронной работы и перед тем, как отдать сводку или ссылки. Результаты не содержат учётных данных. Если исход записи неизвестен, не повторяйте вызов и не откатывайтесь к синхронному методу.
| Synchronous method | Awaited replacement |
| ------------------ | ------------------- |
| `listLinks` | `listLinksAsync` |
| `link` | `linkAsync` |
| `unlink` | `unlinkAsync` |
| `list` | `listAsync` |
| `select` | `selectAsync` |
| `status` | `statusAsync` |
| `cancel` | `cancelAsync` |
Шаг 2. Переведите подготовку транскрипта
Старые экспорты prepareMessageAfterIdempotencyCheck и beforeFreshMessageCommit остаются в записях transcript-lock-sync-message-preparation и transcript-strict-sync-message-preparation для устойчивых целей с прежним порядком транзакций. На инкогнито и actor-bound целях старая форма отклоняется с заменяющей ошибкой. Новые помощники — preparation.prepareMessage, preparation.source и withSessionTranscriptWrite.
preparation.prepareMessage
preparation.source
withSessionTranscriptWrite
Шаг 3. Переведите размещение и подготовку node-grant
На контексте Gateway размещение получило асинхронные варианты. Подготовьте данные перед зависимой работой и не освобождайте ресурсы запроса до результата.
workerSessionPlacementService.getManyAsync
placementStandingGrants.resolveBindingAsync
workerPlacementDispatchService.getAdmittedDeviceSessionCountsAsync
consume остаётся финальной синхронной границей авторизации транспорта: подготовленные ранее данные не заменяют текущие полномочия размещения, сопряжения и согласования родителя. Синхронные двойники из SDK 2026.9.8 сохранены как устаревшая совместимость до следующего Plugin SDK major.
Шаг 4. Сверьте упоминания и запись в Inbox
context.mentionInbox.list(client)иcontext.mentionInbox.dismiss(client, ids)замените на асинхронные двойникиlistAsyncиdismissAsyncс обратным вызовомpublish.recordCommittedInput(input)замените наawait recordCommittedInputAsync(input).invalidate(sessionKey)замените наawait invalidateAsync(sessionKey).
Внутри publish отправьте ответ Gateway без дополнительных await. Запись дожидается, пока модуль совместной работы обновит участие сессии, и только потом сохраняет элементы Inbox. Обе записи сохраняют владельцев и завершаются до остановки воркера Gateway. Старые синхронные методы остаются совместимыми адаптерами до следующего Plugin SDK major и явного согласования ломающего релиза.
Шаг 5. Переведите полномочия инструментов и поверхность инструментов
params.hostCapabilities.createToolSurfaceAsync(options, bindingOptions?)создаёт поверхность инструментов с актуальной политикой выполнения.createOpenClawCodingToolsAsync(options?)изopenclaw/plugin-sdk/agent-harness— для вызывающих вне harness.
Не используйте более ранний хэш как разрешение после await: каждое действие требует свежей подготовки и текущих полномочий владельца. При ошибке миграции или потере полномочий создание отклоняется, через синхронную фабрику повторять нельзя.
Шаг 6. V2-инжекция: подготовка и граница
Бэкенды версии V2 могут добавить queueMessageAsync. Он сохраняет существующие аргументы, но аргумент проверки заменяется на объект с тремя функциями.
Подготовка сама по себе не разрешает ввод после закрытия читателя. При делегировании встроенному механизму управления передайте функции подготовки без изменений, чтобы хост связал финальное чтение и постановку в очередь в одном допуске. Нативные транспорты могут использовать withPreparedCurrent. Приёмник без этой границы сохраняет синхронную проверку compatAssertCurrent прямо перед эффектом, вне разрешений обработчика.
Шаг 7. Финальная чистка импортов
- прямых вызовов
listLinks,link,unlink,list,select,status,cancelнаmodelAccountConnectService prepareMessageAfterIdempotencyCheckиbeforeFreshMessageCommitна инкогнито и actor-bound целях- синхронных
listиdismissуmentionInbox, кроме случаев, когда нужен совместимый адаптер - внутренних фабрик
createToolSurfaceиcreateOpenClawCodingToolsбезAsync
Как проверить
- Прогоните тесты против экземпляра 2026.10.5.
- Следите за предупреждениями с кодом
DEP_SESSION_PERSISTENCE: на старых вызовах должно появляться не больше одного предупреждения на плагин и метод за процесс; после миграции — ноль. - Если работаете из чекаута OpenClaw,
pnpm plugins:boundary-report --owner <id>покажет записи совместимости, сроки и гейты по нужному владельцу.
Если что-то пошло не так
- Плагин не загружается из-за пропавших имён в приватных фасадах среды выполнения. Экспорт восстановлен и помечен как устаревший в записи
plugin-sdk-private-runtime-shipped-exports, разрешено удалить после 2027-01-15. Перейдите на публичный подпуть или держите локальную копию в плагине.