@mobcode/openclaw-plugin
v0.1.45
Published
MobCode integration plugin for OpenClaw
Maintainers
Readme
MobCode OpenClaw Plugin
Отдельный plugin-проект для OpenClaw, который можно ставить в уже существующий сервер OpenClaw как локальную папку.
Зачем он нужен
Этот каркас заточен под мобильную интеграцию MobCode и закрывает первую архитектурную основу под такие задачи:
- получить по RPC redacted snapshot runtime-конфига;
- получать список провайдеров через MobCode static catalog;
- получать список моделей конкретного provider через live fetch в upstream API провайдера;
- иметь отдельное mobile-friendly хранилище сообщений по session key;
- хранить rich artifacts и открывать их из мобильной истории;
- маршрутизировать app-surface actions (
mobcode_open) в активный MobCode client; - связать self-hosted OpenClaw с backend push relay через server/device pairing;
- подготовить базу под approvals, diff-flow и custom tools.
Что уже есть
Плагин регистрирует:
- gateway methods:
mobcode.capabilitiesmobcode.config.snapshotmobcode.providers.availablemobcode.provider.models.listmobcode.messages.pagemobcode.approvals.listmobcode.artifacts.getmobcode.artifacts.resolveBlobmobcode.client.connectmobcode.client.pingmobcode.client.disconnectmobcode.client.bind_sessionmobcode.client.resolve_action
- tools:
present_artifactmobcode_open
- bundled skill:
mobcode-ui
- HTTP routes:
/plugins/mobcode/health/plugins/mobcode/config/plugins/mobcode/providers/plugins/mobcode/provider-models?providerId=.../plugins/mobcode/messages?sessionKey=.../plugins/mobcode/artifacts?artifactId=...
- background service, которая:
- слушает transcript updates;
- индексирует сообщения в SQLite;
- делает history backfill через публичный
chat.historyи вытаскивает artifacts из tool-result history в SQLite; - слушает
exec.approval.requested/resolvedчерез внутренний gateway approvals client; - при включенном push шлёт
approval_requiredиrun_finishedв backend push relay, если в текущей session нет живого MobCode client.
mobcode.messages.pageотдает уже нормализованные one-bubble conversation messages с ordered timelinetext -> tool -> artifact -> text, а не только raw transcript rows.
Что пока частично или TODO
providers.availableсейчас отдает MobCode static provider catalog, синхронизированный с мобильным клиентом, а не настоящий OpenClaw onboarding wizard source of truth.provider.models.listполучает модели по сети для конкретного provider, используяapi.runtime.config.loadConfig()иapi.runtime.modelAuth.resolveApiKeyForProvider(...), не отдавая токены в mobileapp.present_artifactиmobcode_openуже зарегистрированы как plugin tools;mobcode_openшлёт realtime request всем живым MobCode clients, привязанным к текущей session, и завершает tool call по первому ответу или timeout.- вместе с plugin устанавливается bundled skill
mobcode-ui, который подсказывает OpenClaw агенту, когда использоватьpresent_artifactиmobcode_open. - push sender теперь вынесен в backend relay; production verification и iOS Live Activity UX еще остаются.
- file diff flow лучше делать через интеграцию с официальным
diffsplugin, а не изобретать свой формат. - mobile approvals построены поверх существующих
exec.approval.*методов OpenClaw: plugin хранит state/history, а resolve по-прежнему идет через штатный RPC. - custom chart tools пока не реализованы, но под них уже есть правильная точка расширения:
registerTool. - history backfill через
chat.historyportable, но ограничен 1000 последними сообщениями, потому что это hard-cap самого OpenClaw gateway method.
Установка из папки
На сервере с OpenClaw:
openclaw plugins install @mobcode/openclaw-plugin
openclaw gateway restartЛокальная разработка из папки по-прежнему поддерживается:
openclaw plugins install ./openclaw-mobcode-plugin
openclaw gateway restartЕсли хочешь линк для разработки:
openclaw plugins install -l ./openclaw-mobcode-plugin
openclaw gateway restartКонфиг
Пример plugin config:
{
"plugins": {
"entries": {
"mobcode": {
"enabled": true,
"config": {
"storage": {
"retainMessages": true,
"maxMessagesPerSession": 2000,
"retentionDays": 30,
"cleanupIntervalMs": 3600000
},
"push": {
"enabled": false,
"backend": {
"baseUrl": "https://api.mobcodee.ru/api/v1",
"requestTimeoutMs": 15000
}
},
"security": {
"allowSecretMaterialOverGateway": false
}
}
}
}
}
}Следующие шаги
- Довести production verification pairing/push relay и retry/token cleanup на backend delivery.
- Подключить diff/viewer flow через официальный
diffsplugin. - Добавить
registerToolдля графиков/диаграмм поверх artifact pipeline. - Усилить iOS terminated-app / Live Activity path.
Важный нюанс про portability
Этот plugin больше не зависит от openclaw/src/... для provider/model discovery.
mobcode.providers.availableработает на своем static catalog.mobcode.provider.models.listработает через публичный plugin runtime (loadConfig+resolveApiKeyForProvider) и сетевой запрос к upstream provider API.
Это делает plugin переносимым для обычной npm/бинарной установки OpenClaw, но означает, что provider catalog пока остается MobCode-owned, а не OpenClaw-owned source of truth.
