OpenClaw виконує роботу із залежностями Plugin під час інсталяції/оновлення. Завантаження під час виконання не запускає менеджери пакетів, не відновлює дерева залежностей і не змінює каталог пакета OpenClaw.Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Розподіл відповідальності
Пакети Plugin володіють своїм графом залежностей:- залежності часу виконання містяться в
dependenciesабоoptionalDependenciesпакета Plugin - імпорти SDK/ядра є peer-залежностями або наданими OpenClaw імпортами
- локальні Plugin для розробки постачають власні вже встановлені залежності
- npm- і git-Plugin встановлюються в корені пакетів, якими володіє OpenClaw
- виявити джерело Plugin
- встановити або оновити пакет за явним запитом
- записати метадані встановлення
- завантажити точку входу Plugin
- завершитися помилкою з практичною вказівкою, коли залежності відсутні
Корені встановлення
OpenClaw використовує стабільні корені для кожного джерела:- npm-пакети встановлюються в
~/.openclaw/npm - git-пакети клонуються в
~/.openclaw/git - локальні встановлення/встановлення зі шляху/архіву копіюються або посилаються без відновлення залежностей
openclaw plugins install npm-pack:<path.tgz> використовує той самий керований npm-корінь
для локального tarball npm-pack. OpenClaw читає npm-метадані tarball, додає його
до керованого кореня як скопійовану залежність file:, запускає звичайне встановлення npm,
а потім перевіряє метадані встановленого lockfile, перш ніж довіряти Plugin.
Це призначено для перевірки package-acceptance і release-candidate, де
локальний pack-артефакт має поводитися як артефакт реєстру, який він імітує.
npm може піднімати транзитивні залежності до ~/.openclaw/npm/node_modules поруч
із пакетом Plugin. OpenClaw сканує керований npm-корінь, перш ніж довіряти
встановленню, і використовує npm для видалення керованих npm пакетів під час видалення, тож підняті
залежності часу виконання залишаються всередині керованої межі очищення.
Plugin, які імпортують openclaw/plugin-sdk/*, оголошують openclaw як peer-
залежність. OpenClaw не дозволяє npm встановлювати окрему копію пакета хоста
з реєстру в керований корінь, бо застарілі пакети хоста можуть впливати на
peer resolution npm під час подальших встановлень Plugin. Керовані npm-встановлення пропускають
peer resolution/materialization npm для спільного кореня, а OpenClaw повторно встановлює
локальні для Plugin посилання node_modules/openclaw для встановлених пакетів, які оголошують
host peer після встановлення, оновлення або видалення.
git-встановлення клонують або оновлюють репозиторій, а потім виконують:
node_modules працює так само, як для звичайного
Node-пакета.
Локальні Plugin
Локальні Plugin розглядаються як каталоги під контролем розробника. OpenClaw не запускаєnpm install, pnpm install або відновлення залежностей для них. Якщо локальний
Plugin має залежності, встановіть їх у цьому Plugin перед завантаженням.
Сторонні локальні TypeScript Plugin можуть використовувати аварійний шлях Jiti. Пакетовані
JavaScript Plugin і вбудовані внутрішні Plugin завантажуються через нативні
import/require замість Jiti.
Запуск і перезавантаження
Запуск Gateway і перезавантаження конфігурації ніколи не встановлюють залежності Plugin. Вони читають записи встановлення Plugin, обчислюють точку входу й завантажують її. Якщо залежність відсутня під час виконання, Plugin не завантажується, а помилка має вказати оператору явне виправлення:doctor --fix може очистити застарілий стан залежностей, згенерований OpenClaw, і відновити
завантажувані Plugin, які відсутні в локальних записах встановлення, коли конфігурація
посилається на них. Doctor не відновлює залежності для вже встановленого
локального Plugin.
Вбудовані Plugin
Легкі та критично важливі для ядра вбудовані Plugin постачаються як частина OpenClaw. Вони або не повинні мати важкого дерева залежностей часу виконання, або мають бути винесені в завантажуваний пакет на ClawHub/npm. Поточний згенерований список Plugin, що постачаються в пакеті ядра, встановлюються ззовні або залишаються лише в джерельному коді, див. у Інвентарі Plugin. Маніфести вбудованих Plugin не повинні запитувати staging залежностей. Великі або необов’язкові функції Plugin мають пакуватися як звичайний Plugin і встановлюватися через той самий шлях npm/git/ClawHub, що й сторонні Plugin. У checkout джерельного коду OpenClaw розглядає репозиторій як pnpm-монорепозиторій. Післяpnpm install вбудовані Plugin завантажуються з extensions/<id>, тож локальні для пакета
workspace-залежності доступні, а зміни підхоплюються напряму. Розробка в checkout
джерельного коду є лише pnpm; звичайний npm install у корені репозиторію
не є підтримуваним способом підготовки залежностей вбудованих Plugin.
| Форма встановлення | Розташування вбудованого Plugin | Власник залежностей |
|---|---|---|
npm install -g openclaw | Зібране дерево часу виконання всередині пакета | Пакет OpenClaw і явні потоки встановлення/оновлення/doctor для Plugin |
Git checkout плюс pnpm install | Workspace-пакети extensions/<id> | pnpm workspace, включно з власними залежностями кожного пакета Plugin |
openclaw plugins install ... | Керований корінь Plugin npm/git/ClawHub | Потік встановлення/оновлення Plugin |
Очищення застарілого стану
Старіші версії OpenClaw генерували корені залежностей вбудованих Plugin під час запуску або під час відновлення doctor. Поточне очищення doctor видаляє ці застарілі каталоги та символічні посилання, коли використовується--fix, включно зі старими коренями plugin-runtime-deps, глобальними
символічними посиланнями пакетів Node-prefix, що вказують на обрізані цілі plugin-runtime-deps,
маніфестами .openclaw-runtime-deps*, згенерованими node_modules Plugin, каталогами етапу
встановлення та локальними для пакета сховищами pnpm. Пакетований postinstall також
видаляє ці глобальні символічні посилання перед обрізанням застарілих цільових коренів, щоб оновлення
не залишали обірвані імпорти ESM-пакетів.
Ці шляхи є лише застарілими залишками. Нові встановлення не повинні створювати їх.