Перейти до основного вмісту

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.

OpenClaw виконує роботу із залежностями Plugin під час інсталяції/оновлення. Завантаження під час виконання не запускає менеджери пакетів, не відновлює дерева залежностей і не змінює каталог пакета OpenClaw.

Розподіл відповідальності

Пакети Plugin володіють своїм графом залежностей:
  • залежності часу виконання містяться в dependencies або optionalDependencies пакета Plugin
  • імпорти SDK/ядра є peer-залежностями або наданими OpenClaw імпортами
  • локальні Plugin для розробки постачають власні вже встановлені залежності
  • npm- і git-Plugin встановлюються в корені пакетів, якими володіє OpenClaw
OpenClaw володіє лише життєвим циклом Plugin:
  • виявити джерело Plugin
  • встановити або оновити пакет за явним запитом
  • записати метадані встановлення
  • завантажити точку входу Plugin
  • завершитися помилкою з практичною вказівкою, коли залежності відсутні

Корені встановлення

OpenClaw використовує стабільні корені для кожного джерела:
  • npm-пакети встановлюються в ~/.openclaw/npm
  • git-пакети клонуються в ~/.openclaw/git
  • локальні встановлення/встановлення зі шляху/архіву копіюються або посилаються без відновлення залежностей
npm-встановлення виконуються в npm-корені з:
cd ~/.openclaw/npm
npm install --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund
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-встановлення клонують або оновлюють репозиторій, а потім виконують:
npm install --omit=dev --ignore-scripts --no-audit --no-fund
Встановлений Plugin потім завантажується з цього каталогу пакета, тому розв’язання локальних для пакета та батьківських 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 не завантажується, а помилка має вказати оператору явне виправлення:
openclaw plugins update <id>
openclaw plugins install <source>
openclaw doctor --fix
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 installWorkspace-пакети 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-пакетів. Ці шляхи є лише застарілими залишками. Нові встановлення не повинні створювати їх.