Skills
Мастерская Skills
Skill Workshop — это управляемый OpenClaw процесс создания и обновления
Skills рабочего пространства. Агенты и операторы никогда не записывают SKILL.md напрямую
в рамках этого процесса — они создают предложение (ожидающий черновик с содержимым, привязкой
к цели, состоянием сканера, хешами и метаданными отката), которое становится действующим
навыком только после применения.
Skill Workshop записывает только Skills рабочего пространства. Он никогда не затрагивает встроенные Skills, плагины, ClawHub, дополнительные корни, управляемые, персональные агентские или системные Skills.
Как это работает
- Сначала предложение: сгенерированное содержимое хранится как
PROPOSAL.md, а неSKILL.md. - Применение — единственная операция записи в действующую версию: создание, обновление и пересмотр никогда не изменяют активные Skills.
- Область действия — рабочее пространство: создаваемые Skills помещаются в корень
skills/рабочего пространства; обновления разрешены только для доступных для записи Skills рабочего пространства. - Без перезаписи: создание завершается ошибкой, если целевой навык уже существует.
- Привязка по хешу: предложения обновления привязываются к текущему хешу цели и переходят в состояние
stale, если действующий навык изменяется до применения. - Проверка сканером: перед записью применение повторно запускает сканер безопасности.
- Возможность восстановления: перед изменением действующих файлов применение записывает метаданные отката.
- Единообразные интерфейсы: чат, CLI и Gateway вызывают один и тот же сервис.
Жизненный цикл
создание/обновление -> ожидаетпересмотр -> ожидаетприменение -> примененоотклонение -> отклоненокарантин -> помещено в карантинизменение цели -> устарелоТолько предложение pending можно пересматривать, применять, отклонять или помещать в карантин.
Управление жизненным циклом
Gateway отслеживает совокупное использование Skills в общей базе данных состояния. Один раз в
день он проверяет Skills, созданные и применённые через Skill Workshop. Skills, не использовавшиеся
более 30 дней, переходят в состояние stale; через 90 дней они переходят в состояние archived и
не включаются в новые снимки Skills агентов. Файлы архивированных Skills на
диске не изменяются. Созданные вручную Skills никогда не управляются автоматически; в управление жизненным циклом
попадают только Skills, созданные из предложений Skill Workshop.
Закреплённые Skills не проходят переходы жизненного цикла. Устаревший навык возвращается в состояние active
после его использования и выполнения следующей проверки. Архивированные Skills возвращаются только посредством
явного восстановления:
Переходы жизненного цикла и восстановления применяются к новым сеансам; выполняющиеся сеансы сохраняют текущий снимок Skills.
openclaw skills curator statusopenclaw skills curator pin <skill>openclaw skills curator unpin <skill>openclaw skills curator restore <skill>Все команды управления принимают --json. Команда состояния также сообщает о детерминированно выявленных
кандидатах на перекрытие исключительно в виде предложений; она никогда не объединяет Skills и не вызывает модель.
Чат
Попросите агента создать нужный навык; он вызовет skill_workshop и вернёт
идентификатор предложения.
Обучение на недавней работе
Используйте /learn, чтобы преобразовать текущий разговор или указанные источники в одно
предложение навыка, составленное с учётом стандартов:
/learn/learn docs/runbook.md и https://example.com/guide; сосредоточься на восстановленииЕсли запрос отсутствует, /learn просит агента выделить многократно применимый рабочий процесс из
текущего разговора. Если запрос задан, агент рассматривает пути, URL, вставленные
заметки и ссылки на разговор как источники, соблюдая требования к направленности, области действия и
именованию. Он собирает источники с помощью имеющихся инструментов, а затем вызывает
skill_workshop с action: "create".
Полученное предложение остаётся в состоянии pending; /learn никогда его не применяет. Проверьте и
примените его через обычный процесс утверждения или с помощью openclaw skills workshop.
Создание:
Создай навык morning-catchup, который выполняет мою процедуру обработки входящих по понедельникам.Обновление существующего навыка рабочего пространства:
Обнови trip-planning, чтобы перед бронированием он также проверял схемы мест.Доработка ожидающего предложения:
Покажи мне предложение morning-catchup.Пересмотри его, чтобы оно также отмечало всё с пометкой «срочно».Примени предложение morning-catchup.Инициированные агентом apply, reject и quarantine по умолчанию выполняются без дополнительного
запроса подтверждения. Установите skills.workshop.approvalPolicy в "pending",
чтобы требовать подтверждения оператора перед этими действиями.
Когда подтверждение обязательно, запрос указывает идентификатор предложения и целевой
навык, а также показывает описание предложения, количество вспомогательных файлов и размер основного текста.
Время ожидания подтверждения ограничено так, чтобы запрос завершился до срабатывания сторожевого таймера инструмента агента. Если
решение не поступает до истечения срока запроса, действие жизненного цикла не выполняется:
предложение остаётся ожидающим и неизменённым. Решение можно принять позднее в интерфейсе Skill Workshop или выполнить
openclaw skills workshop apply|reject|quarantine <proposal-id>. Агентам не следует
циклически повторять действие жизненного цикла, срок ожидания которого истёк.
CLI
# Созданиеopenclaw skills workshop propose-create \ --name morning-catchup \ --description "Ежедневная обработка входящих: сортировка, архивирование, выделение важного, создание черновиков, планирование" \ --proposal ./PROPOSAL.md # Обновление существующего навыка рабочего пространстваopenclaw skills workshop propose-update trip-planning --proposal ./PROPOSAL.md # Просмотр списка и подробностейopenclaw skills workshop listopenclaw skills workshop inspect <proposal-id> # Пересмотр до утвержденияopenclaw skills workshop revise <proposal-id> --proposal ./PROPOSAL.md # Завершениеopenclaw skills workshop apply <proposal-id>openclaw skills workshop reject <proposal-id> --reason "Дубликат"openclaw skills workshop quarantine <proposal-id> --reason "Требуется проверка безопасности"Каждая подкоманда принимает --agent <id> (целевое рабочее пространство; по умолчанию
определяется из текущего рабочего каталога, а затем используется агент по умолчанию) и --json (структурированный вывод).
propose-create, propose-update и revise также принимают --goal <text> и
--evidence <text>, чтобы записать контекст предложения вместе с --proposal.
Содержимое предложения
Пока предложение ожидает обработки, оно хранится как PROPOSAL.md с относящимися только к предложению
метаданными frontmatter:
---name: "morning-catchup"description: "Ежедневная обработка входящих: сортировка, архивирование, выделение важного, создание черновиков, планирование"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---При применении Skill Workshop записывает активный SKILL.md и удаляет
поля, относящиеся только к предложению: status, version предложения и date предложения.
Вспомогательные файлы
Используйте --proposal-dir, когда предлагаемому навыку нужны файлы рядом с
PROPOSAL.md:
openclaw skills workshop propose-create \ --name weekly-update \ --description "Подведение итогов пятницы: статистика, основные события, три главных задачи следующей недели" \ --proposal-dir ./weekly-update-proposalКаталог должен содержать PROPOSAL.md. Вспомогательные файлы должны находиться в
assets/, examples/, references/, scripts/ или templates/. Skill
Workshop сканирует, хеширует и сохраняет их вместе с предложением, а затем записывает
рядом с действующим SKILL.md только при применении.
Отклоняются следующие пути вспомогательных файлов: абсолютные пути, скрытые сегменты пути, обход каталогов, перекрывающиеся пути, исполняемые файлы, текст не в UTF-8, нулевые байты и пути за пределами стандартных каталогов вспомогательных файлов.
Инструмент агента
Модель использует skill_workshop с одним обязательным action:
create | update | revise | list | inspect | apply | reject | quarantine.
Остальные параметры применяются в зависимости от действия:
| Параметр | Используется в | Примечания |
|---|---|---|
name |
create, inspect, revise |
Обязателен для create; в противном случае находит ожидающее предложение по имени |
description |
create, update, revise |
Не более 160 байт |
skill_name |
update |
Имя или ключ существующего навыка |
proposal_content |
create, update, revise |
Хранится как PROPOSAL.md; ограничивается skills.workshop.maxSkillBytes |
support_files |
create, update, revise |
Массив { path, content } |
goal, evidence |
create, update, revise |
Контекст в свободной форме |
proposal_id |
inspect, revise, apply, reject, quarantine |
Целевое предложение |
reason |
apply, reject, quarantine |
Необязательно |
query, status, limit |
list |
Фильтрация/постраничный вывод; максимум limit — 50, по умолчанию — 20 |
Агенты должны использовать skill_workshop для работы с генерируемыми Skills. Они не должны
создавать или изменять файлы предложений через write, edit, exec, команды
оболочки или прямые операции с файловой системой.
Предлагаемые Skills
OpenClaw обнаруживает долговременные инструкции, такие как «в следующий раз», «запомни» и корректирующие замечания
по завершении интерактивного хода, включая неудачные ходы. На следующем ходу агент предлагает сохранить
последний обнаруженный рабочий процесс через skill_workshop; пользователь решает, создавать ли
предложение. Эта встроенная рекомендация сама по себе не создаёт и не изменяет навык. Включите
skills.workshop.autonomous.enabled, чтобы вместо этого напрямую создавать ожидающие предложения. В Control
UI вкладка Workshop предоставляет ту же настройку в виде переключателя Self-learning в заголовке страницы и
кнопки включения на пустой доске предложений.
Сканирование прошлых сеансов
Control UI может проверять более раннюю работу без включения автономного самообучения. Откройте Plugins → Workshop и выберите Find skill ideas. Сканирование начинается с самых новых подходящих сеансов и проверяет ограниченное окно содержательной работы. Оно пропускает сеансы cron, heartbeat, hook, субагентов, ACP, принадлежащие плагинам и внутренние сеансы проверки, а также разговоры, содержащие менее шести ходов модели.
Средство проверки использует настроенную модель выбранного агента и получает пакет расшифровок ограниченного размера с удалёнными секретами. Оно применяет те же строгие критерии, что и проверка опыта: конкретный шаблон восстановления или стабильную процедуру, которая позволит исключить не менее двух будущих вызовов модели или инструментов. Обычная работа и единичные факты не должны приводить к созданию предложения.
Одно сканирование может создать или пересмотреть не более трёх ожидающих предложений. Оно не может применять, отклонять, помещать в карантин или изменять действующий навык. Workshop показывает совокупный охват, например Проверено 20 сеансов · 18 июня–сегодня · Найдено 2 идеи. Выберите Scan earlier work, чтобы продолжить с сохранённого указателя на самый старый сеанс. После исчерпания доступной истории действие меняется на Scan new work.
Историческая проверка выполняется вручную, даже когда
skills.workshop.autonomous.enabled имеет значение false. Каждый щелчок запускает выполнение модели,
поэтому применяются тарифы провайдера и его условия обработки данных. Позиция курсора и показатели охвата
хранятся в общей базе данных состояния OpenClaw; содержимое расшифровки
не копируется в состояние сканирования.
Если включён автономный сбор, OpenClaw также может выполнить консервативную проверку после успешной
существенной работы и после перехода всей агентной системы в состояние простоя. Такая изолированная проверка может создать или
изменить не более одного ожидающего предложения. Она не может обновить активный навык или применить, отклонить либо поместить в карантин
предложение, даже когда approvalPolicy имеет значение "auto".
Сведения о включении, критериях применимости, конфиденциальности, затратах, пороговом значении для предложений и устранении неполадок см. в разделе Самообучение.
Одобрение и автономность
{ skills: { workshop: { autonomous: { enabled: false, }, allowSymlinkTargetWrites: false, approvalPolicy: "auto", maxPending: 50, maxSkillBytes: 40000, }, },}| Параметр | Значение по умолчанию | Эффект |
|---|---|---|
autonomous.enabled |
false |
Создаёт ожидающие предложения на основе явных исправлений, а после задержки простоя — на основе существенной завершённой работы с пригодным для повторного использования восстановлением или значительной экономией при полном цикле. |
allowSymlinkTargetWrites |
false |
Позволяет при применении записывать данные через символические ссылки навыков рабочей области, фактическая цель которых указана в skills.load.allowSymlinkTargets. |
approvalPolicy |
"auto" |
"auto" пропускает дополнительный запрос подтверждения для инициированных агентом действий apply, reject или quarantine (агент всё равно должен вызвать действие). "pending" требует одобрения. |
maxPending |
50 |
Ограничивает количество ожидающих и помещённых в карантин предложений для каждой рабочей области (1–200). |
maxSkillBytes |
40000 |
Ограничивает размер тела предложения в байтах (1024–200000). |
Автономный сбор распознаёт перспективные правила (например, «в дальнейшем») и реактивные исправления (например, «это не то, что было запрошено»). Новые инструкции группируются по темам в не более чем три предложения за один ход, совпадения в терминологии направляются в существующие доступные для записи навыки рабочей области, а собственное ожидающее предложение изменяется, когда другое исправление относится к тому же навыку.
Для успешной существенной работы без явного исправления изолированный запуск выбранной
модели определяет, соответствует ли завершённая траектория консервативному порогу создания предложения. Модели,
работающей на переднем плане, не предлагается обучаться до отправки ответа. Фоновый проверяющий сохраняет
запуск на переднем плане как источник происхождения предложения, не имеет доступа к общим инструментам агента и не может принимать решения
о жизненном цикле. Проверка начинается только тогда, когда среда выполнения на переднем плане сообщает как точную разрешённую модель,
так и то, что skill_workshop действительно был доступен. Поэтому ограничительная или неизвестная политика инструментов
приводит к безопасному отказу и не создаёт предложение.
Полное описание поведения автономной проверки и модели безопасности см. в разделе Самообучение.
Размер описаний предложений всегда ограничен 160 байтами независимо от
maxSkillBytes.
Методы Gateway
| Метод | Область действия |
|---|---|
skills.proposals.list |
operator.read |
skills.proposals.inspect |
operator.read |
skills.proposals.historyStatus |
operator.read |
skills.proposals.historyScan |
operator.admin |
skills.proposals.create |
operator.admin |
skills.proposals.update |
operator.admin |
skills.proposals.revise |
operator.admin |
skills.proposals.requestRevision |
operator.admin |
skills.proposals.apply |
operator.admin |
skills.proposals.reject |
operator.admin |
skills.proposals.quarantine |
operator.admin |
skills.curator.status |
operator.read |
skills.curator.pin |
operator.admin |
skills.curator.unpin |
operator.admin |
skills.curator.restore |
operator.admin |
requestRevision доступен только через Gateway (без эквивалента в CLI или инструментах агента): он
пересылает текстовые инструкции по изменению в сеанс чата владеющего агента
вместо непосредственной замены PROPOSAL.md; это предназначено для интерфейсов, которые просят агента
внести изменения, а не отправляют новое содержимое буквально.
historyStatus и historyScan — вспомогательные методы Control UI. historyScan
принимает direction: "older" | "newer"; результаты всегда остаются
ожидающими предложениями.
Хранение
<OPENCLAW_STATE_DIR>/skill-workshop/ proposals.json proposals/<proposal-id>/ proposal.json PROPOSAL.md rollback.json assets/ examples/ references/ scripts/ templates/Каталог состояния по умолчанию: ~/.openclaw.
proposal.json: каноническая запись предложения.proposals.json: индекс для быстрого формирования списка, который можно перестроить из папок предложений.PROPOSAL.md: ожидающее предложение навыка.rollback.json: метаданные восстановления, записываемые до того, как применение изменит активные файлы.
Ограничения
| Ограничение | Значение |
|---|---|
| Описание | 160 байт |
| Тело предложения | skills.workshop.maxSkillBytes (по умолчанию 40 000; жёсткий предел 1 МиБ) |
| Вспомогательные файлы | 64 на предложение |
| Размер вспомогательного файла | 256 КиБ каждый, всего 2 МиБ |
| Ожидающие + помещённые в карантин предложения | skills.workshop.maxPending на рабочую область (по умолчанию 50) |
Устранение неполадок
| Проблема | Решение |
|---|---|
Skill proposal description is too large |
Сократите description до 160 байт или менее. |
Skill proposal content is too large |
Сократите тело предложения или увеличьте skills.workshop.maxSkillBytes. |
Target skill changed after proposal creation |
Измените предложение с учётом текущей цели или создайте новое предложение. |
Proposal scan failed |
Изучите результаты сканирования, затем измените предложение или поместите его в карантин. |
untrusted symlink target |
Настройте skills.load.allowSymlinkTargets и включайте skills.workshop.allowSymlinkTargetWrites только для намеренно совместно используемых корневых каталогов навыков. |
Support file paths must be under one of... |
Переместите вспомогательные файлы в assets/, examples/, references/, scripts/ или templates/. |
| Предложение не отображается в списке | Проверьте выбранную рабочую область --agent и OPENCLAW_STATE_DIR. |
Агент не может вызвать skill_workshop |
Проверьте активную политику инструментов и режим запуска. coding включает этот инструмент; в ограничительных политиках tools.allow его необходимо указать явно, а запуски в песочнице должны использовать обычный сеанс агента на стороне хоста или CLI. |
Диагностика политики инструментов
Когда автономный сбор включён, openclaw doctor выполняет
проверку core/doctor/skill-workshop-tool-policy для агента по умолчанию. Если политика
скрывает skill_workshop, предупреждение указывает первый исключающий слой конфигурации и
точное изменение allow или alsoAllow, которое необходимо внести. В старых инструкциях по эксплуатации всё ещё может использоваться
openclaw plugins inspect skill-workshop; теперь эта команда поясняет, что Skill
Workshop является встроенным, и выводит ту же подсказку по политике, когда она применима.
Связанные разделы
- Skills — порядок загрузки, приоритет и видимость
- Самообучение — консервативные предложения навыков после завершения запуска
- Создание навыков — основы написания
SKILL.mdвручную - Конфигурация навыков — полная схема
skills.workshop - CLI навыков — команды
openclaw skills