Skills
Мастерская Skills
Skill Workshop — управляемый механизм OpenClaw для создания и обновления Skills рабочего пространства. Агенты и операторы никогда не записывают SKILL.md напрямую через этот
механизм — они создают предложение (ожидающий черновик с содержимым, привязкой к целевому объекту,
состоянием сканера, хешами и метаданными отката), которое становится действующим
Skill только после применения.
Skill Workshop записывает только Skills рабочего пространства. Он никогда не затрагивает встроенные Skills, плагины, ClawHub, дополнительные корни, управляемые Skills, Skills личных агентов или системные Skills.
Как это работает
- Сначала предложение: сгенерированное содержимое сохраняется как
PROPOSAL.md, а неSKILL.md. - Применение — единственная операция записи в действующий Skill: создание, обновление и редактирование никогда не изменяют активные Skills.
- В пределах рабочего пространства: создаваемые Skills направляются в корень
skills/рабочего пространства; обновлять можно только доступные для записи Skills рабочего пространства. - Без перезаписи: создание завершается ошибкой, если целевой Skill уже существует.
- Привязка по хешу: предложения обновления привязываются к текущему хешу целевого объекта и переходят в состояние
stale, если действующий Skill изменяется до применения. - Проверка сканером: перед записью применение повторно запускает сканер безопасности.
- Возможность восстановления: перед изменением действующих файлов применение записывает метаданные отката.
- Единообразные интерфейсы: чат, CLI и Gateway вызывают один и тот же сервис.
Жизненный цикл
создание/обновление -> ожидаетредактирование -> ожидаетприменение -> примененоотклонение -> отклоненокарантин -> помещено в карантинизменение цели -> устарелоРедактировать, применять, отклонять или помещать в карантин можно только предложение pending.
Управление жизненным циклом
Gateway отслеживает совокупное использование Skills в общей базе данных состояния. Раз в
день он проверяет Skills, созданные и применённые через Skill Workshop. Skills, не использовавшиеся
более 30 дней, переходят в состояние stale; через 90 дней они переходят в состояние archived и
не включаются в новые снимки Skills агентов. Файлы архивированных Skills остаются на
диске без изменений. Созданные вручную Skills никогда не подвергаются такому управлению; в управление жизненным циклом
включаются только Skills, созданные из предложений Skill Workshop.
Закреплённые Skills не участвуют в переходах жизненного цикла. Устаревший Skill возвращается в состояние active
после использования и следующего запуска проверки. Архивированные Skills возвращаются только посредством
явного восстановления:
Переходы жизненного цикла и восстановление применяются к новым сеансам; выполняющиеся сеансы сохраняют текущий снимок Skills.
openclaw skills curator statusopenclaw skills curator pin <skill>openclaw skills curator unpin <skill>openclaw skills curator restore <skill>Все команды управления принимают --json. Команда состояния также сообщает о детерминированно обнаруженных
кандидатах на пересечение, но только как о рекомендациях; она никогда не объединяет Skills и не вызывает модель.
Чат
Попросите агента создать нужный Skill; он вызовет skill_workshop и вернёт
идентификатор предложения.
Обучение на основе недавней работы
Используйте /learn, чтобы преобразовать текущий разговор или указанные источники в одно
предложение Skill, составленное согласно стандартам:
/learn/learn docs/runbook.md и https://example.com/guide; сосредоточься на восстановленииЕсли запрос отсутствует, /learn просит агента выделить повторно используемый рабочий процесс из
текущего разговора. Если запрос указан, агент рассматривает пути, URL, вставленные
заметки и ссылки на разговор как источники, соблюдая требования к направленности, области действия и
именованию. Он собирает источники с помощью имеющихся инструментов, а затем вызывает
skill_workshop с action: "create".
Полученное предложение остаётся в состоянии pending; /learn никогда не применяет его. Проверьте и
примените его через обычный процесс утверждения или с помощью openclaw skills workshop.
Создание:
Создай Skill с именем morning-catchup, который выполняет мою стандартную обработку входящих по понедельникам.Обновление существующего Skill рабочего пространства:
Обнови trip-planning, чтобы он также проверял схемы мест перед бронированием.Последовательное улучшение ожидающего предложения:
Покажи предложение morning-catchup.Измени его, чтобы он также отмечал всё, что помечено как срочное.Примени предложение morning-catchup.Инициированные агентом apply, reject и quarantine по умолчанию показывают запрос
на подтверждение. Установите skills.workshop.approvalPolicy в "auto", чтобы пропускать его в
доверенных средах.
В запросе указываются идентификатор предложения и целевой Skill, а также показываются описание
предложения, количество вспомогательных файлов и размер основного содержимого. Время ожидания подтверждения ограничено,
чтобы операция завершилась до срабатывания сторожевого таймера инструмента агента. Если решение не поступает до
истечения срока запроса, действие жизненного цикла не выполняется: предложение остаётся ожидающим
и неизменным. Примите решение позже в интерфейсе Skill Workshop или выполните
openclaw skills workshop apply|reject|quarantine <proposal-id>. Агентам не следует
циклически повторять действие жизненного цикла после истечения срока его подтверждения.
CLI
# Созданиеopenclaw skills workshop propose-create \ --name morning-catchup \ --description "Ежедневная обработка входящих: сортировка, архивация, выделение важного, создание черновиков, планирование" \ --proposal ./PROPOSAL.md # Обновление существующего Skill рабочего пространства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 со служебными полями,
используемыми только для предложения:
---name: "morning-catchup"description: "Ежедневная обработка входящих: сортировка, архивация, выделение важного, создание черновиков, планирование"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---При применении Skill Workshop записывает действующий SKILL.md и удаляет
поля, относящиеся только к предложению: status, version предложения и date предложения.
Вспомогательные файлы
Используйте --proposal-dir, когда предлагаемому Skill нужны файлы рядом с
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 |
Имя или ключ существующего Skill |
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; пользователь решает, создавать ли
предложение. Эта встроенная функция рекомендаций сама по себе не создаёт и не изменяет Skill. Включите
skills.workshop.autonomous.enabled, чтобы вместо этого непосредственно создавать ожидающие предложения. В Control
UI вкладка Workshop предоставляет ту же настройку в виде переключателя Самообучение в заголовке страницы и
кнопки включения на пустой доске предложений.
При включённом автономном сборе OpenClaw также может выполнять консервативную проверку после успешной,
существенной работы и после перехода всей системы агентов в состояние бездействия. Эта изолированная проверка может создать или
изменить не более одного ожидающего предложения. Она не может обновить действующий Skill либо применить, отклонить или поместить
предложение в карантин, даже если approvalPolicy имеет значение "auto".
Сведения о включении, критериях допустимости, конфиденциальности и стоимости, пороговом значении для предложений и устранении неполадок см. в разделе Самообучение.
Утверждение и автономность
{ skills: { workshop: { autonomous: { enabled: false, }, allowSymlinkTargetWrites: false, approvalPolicy: "pending", maxPending: 50, maxSkillBytes: 40000, }, },}| Настройка | Значение по умолчанию | Эффект |
|---|---|---|
autonomous.enabled |
false |
Создаёт ожидающие предложения на основе явных исправлений, а после периода бездействия — на основе существенной завершённой работы, обеспечивающей повторно используемое восстановление или значительную экономию при повторном выполнении полного цикла. |
allowSymlinkTargetWrites |
false |
Позволяет применять изменения через символические ссылки на Skills рабочей области, фактическая цель которых указана в skills.load.allowSymlinkTargets. |
approvalPolicy |
"pending" |
"pending" требует запроса подтверждения перед инициированными агентом действиями apply, reject или quarantine. "auto" пропускает запрос (агент всё равно должен вызвать действие). |
maxPending |
50 |
Ограничивает количество ожидающих и помещённых в карантин предложений для каждой рабочей области (1-200). |
maxSkillBytes |
40000 |
Ограничивает размер тела предложения в байтах (1024-200000). |
Автономный сбор распознаёт предполагаемые правила (например, «в дальнейшем») и реактивные исправления (например, «это не то, о чём я просил»). Он группирует новые инструкции по темам, создавая до трёх предложений за один ход, направляет совпадения словаря в существующие доступные для записи Skills рабочей области и пересматривает собственное ожидающее предложение, когда другое исправление относится к тому же Skill.
Для успешно выполненной существенной работы без явного исправления изолированный запуск выбранной
модели определяет, соответствует ли завершённая траектория консервативному порогу создания предложения. Основной
модели не предлагается обучаться перед ответом. Фоновый рецензент сохраняет
основной запуск как источник происхождения предложения, не имеет доступа к общим инструментам агента и не может принимать решения
о жизненном цикле. Проверка начинается, только когда основная среда выполнения сообщает как точную разрешённую модель,
так и то, что skill_workshop действительно был доступен. Поэтому ограничивающая или неизвестная политика инструментов
безопасно блокирует процесс и не создаёт предложение.
Полное описание поведения автономной проверки и модели безопасности см. в разделе Самообучение.
Описание предложения всегда ограничено 160 байтами независимо от
maxSkillBytes.
Методы Gateway
| Метод | Область действия |
|---|---|
skills.proposals.list |
operator.read |
skills.proposals.inspect |
operator.read |
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 напрямую; это предназначено для интерфейсов, которые просят агента
переработать содержимое, а не отправляют новое содержимое буквально.
Хранение
<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: ожидающее предложение Skill.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 только для намеренно общих корневых каталогов Skills. |
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 — порядок загрузки, приоритет и видимость
- Самообучение — консервативные предложения Skills после запуска
- Создание Skills — основы написания
SKILL.mdвручную - Конфигурация Skills — полная схема
skills.workshop - CLI Skills — команды
openclaw skills