---
read_when:
    - Вы хотите, чтобы агент создал или обновил навык через чат
    - Необходимо проверить, применить, отклонить или поместить в карантин созданный черновик навыка
    - Вы настраиваете одобрение, автономность, хранилище или ограничения Skill Workshop
    - Вы хотите понять, где рассматриваются предложения по самообучению
sidebarTitle: Skill Workshop
summary: Создание и обновление Skills рабочего пространства с помощью проверки Skill Workshop
title: Мастерская Skills
x-i18n:
    generated_at: "2026-07-16T16:53:09Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 2c2590f2a1bcad3b22ef8504eac7b3a44611c3fedc0df3832660f8926ce04252
    source_path: tools/skill-workshop.md
    workflow: 16
---

Skill Workshop — это управляемый OpenClaw процесс создания и обновления
Skills рабочего пространства. Агенты и операторы никогда не записывают `SKILL.md` напрямую
в рамках этого процесса — они создают **предложение** (ожидающий черновик с содержимым, привязкой
к цели, состоянием сканера, хешами и метаданными отката), которое становится действующим
навыком только после применения.

Skill Workshop записывает только Skills рабочего пространства. Он никогда не затрагивает встроенные
Skills, плагины, ClawHub, дополнительные корни, управляемые, персональные агентские или системные Skills.

## Как это работает

- **Сначала предложение:** сгенерированное содержимое хранится как `PROPOSAL.md`, а не
  `SKILL.md`.
- **Применение — единственная операция записи в действующую версию:** создание, обновление и пересмотр никогда не изменяют
  активные Skills.
- **Область действия — рабочее пространство:** создаваемые Skills помещаются в корень `skills/` рабочего пространства; обновления
  разрешены только для доступных для записи Skills рабочего пространства.
- **Без перезаписи:** создание завершается ошибкой, если целевой навык уже существует.
- **Привязка по хешу:** предложения обновления привязываются к текущему хешу цели и переходят в состояние
  `stale`, если действующий навык изменяется до применения.
- **Проверка сканером:** перед записью применение повторно запускает сканер безопасности.
- **Возможность восстановления:** перед изменением действующих файлов применение записывает метаданные отката.
- **Единообразные интерфейсы:** чат, CLI и Gateway вызывают один и тот же сервис.

## Жизненный цикл

```text
создание/обновление -> ожидает
пересмотр           -> ожидает
применение          -> применено
отклонение          -> отклонено
карантин            -> помещено в карантин
изменение цели      -> устарело
```

Только предложение `pending` можно пересматривать, применять, отклонять или помещать в карантин.

## Управление жизненным циклом

Gateway отслеживает совокупное использование Skills в общей базе данных состояния. Один раз в
день он проверяет Skills, созданные и применённые через Skill Workshop. Skills, не использовавшиеся
более 30 дней, переходят в состояние `stale`; через 90 дней они переходят в состояние `archived` и
не включаются в новые снимки Skills агентов. Файлы архивированных Skills на
диске не изменяются. Созданные вручную Skills никогда не управляются автоматически; в управление жизненным циклом
попадают только Skills, созданные из предложений Skill Workshop.

Закреплённые Skills не проходят переходы жизненного цикла. Устаревший навык возвращается в состояние `active`
после его использования и выполнения следующей проверки. Архивированные Skills возвращаются только посредством
явного восстановления:

Переходы жизненного цикла и восстановления применяются к новым сеансам; выполняющиеся сеансы сохраняют
текущий снимок Skills.

```bash
openclaw skills curator status
openclaw skills curator pin <skill>
openclaw skills curator unpin <skill>
openclaw skills curator restore <skill>
```

Все команды управления принимают `--json`. Команда состояния также сообщает о детерминированно выявленных
кандидатах на перекрытие исключительно в виде предложений; она никогда не объединяет Skills и не вызывает модель.

## Чат

Попросите агента создать нужный навык; он вызовет `skill_workshop` и вернёт
идентификатор предложения.

### Обучение на недавней работе

Используйте `/learn`, чтобы преобразовать текущий разговор или указанные источники в одно
предложение навыка, составленное с учётом стандартов:

```text
/learn
/learn docs/runbook.md и https://example.com/guide; сосредоточься на восстановлении
```

Если запрос отсутствует, `/learn` просит агента выделить многократно применимый рабочий процесс из
текущего разговора. Если запрос задан, агент рассматривает пути, URL, вставленные
заметки и ссылки на разговор как источники, соблюдая требования к направленности, области действия и
именованию. Он собирает источники с помощью имеющихся инструментов, а затем вызывает
`skill_workshop` с `action: "create"`.

Полученное предложение остаётся в состоянии `pending`; `/learn` никогда его не применяет. Проверьте и
примените его через обычный процесс утверждения или с помощью `openclaw skills workshop`.

Создание:

```text
Создай навык morning-catchup, который выполняет мою процедуру обработки входящих по понедельникам.
```

Обновление существующего навыка рабочего пространства:

```text
Обнови trip-planning, чтобы перед бронированием он также проверял схемы мест.
```

Доработка ожидающего предложения:

```text
Покажи мне предложение morning-catchup.
Пересмотри его, чтобы оно также отмечало всё с пометкой «срочно».
Примени предложение morning-catchup.
```

Инициированные агентом `apply`, `reject` и `quarantine` по умолчанию выполняются без дополнительного
запроса подтверждения. Установите `skills.workshop.approvalPolicy` в `"pending"`,
чтобы требовать подтверждения оператора перед этими действиями.

Когда подтверждение обязательно, запрос указывает идентификатор предложения и целевой
навык, а также показывает описание предложения, количество вспомогательных файлов и размер основного текста.
Время ожидания подтверждения ограничено так, чтобы запрос завершился до срабатывания сторожевого таймера инструмента агента. Если
решение не поступает до истечения срока запроса, действие жизненного цикла не выполняется:
предложение остаётся ожидающим и неизменённым. Решение можно принять позднее в интерфейсе Skill Workshop или выполнить
`openclaw skills workshop apply|reject|quarantine <proposal-id>`. Агентам не следует
циклически повторять действие жизненного цикла, срок ожидания которого истёк.

## CLI

```bash
# Создание
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 list
openclaw 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:

```markdown
---
name: "morning-catchup"
description: "Ежедневная обработка входящих: сортировка, архивирование, выделение важного, создание черновиков, планирование"
status: proposal
version: "v1"
date: "2026-05-30T00:00:00.000Z"
---
```

При применении Skill Workshop записывает активный `SKILL.md` и удаляет
поля, относящиеся только к предложению: `status`, `version` предложения и `date` предложения.

## Вспомогательные файлы

Используйте `--proposal-dir`, когда предлагаемому навыку нужны файлы рядом с
`PROPOSAL.md`:

```bash
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`, команды
оболочки или прямые операции с файловой системой.

<Note>
`skill_workshop` — это встроенный инструмент агента, включённый в
`tools.profile: "coding"`. Если более строгая политика скрывает его, добавьте
`skill_workshop` в активный список `tools.allow` или используйте
`tools.alsoAllow: ["skill_workshop"]`, когда область действия использует профиль без
явного `tools.allow`. Запуски в песочнице не создают инструмент
Skill Workshop на стороне хоста, поэтому выполняйте действия проверки предложений из обычного
сеанса агента на стороне хоста или через CLI.
</Note>

## Предлагаемые 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"`.

Сведения о включении, критериях применимости, конфиденциальности, затратах,
пороговом значении для предложений и устранении неполадок см. в разделе [Самообучение](/ru/tools/self-learning).

## Одобрение и автономность

```json5
{
  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` действительно был доступен. Поэтому ограничительная или неизвестная политика инструментов
приводит к безопасному отказу и не создаёт предложение.

Полное описание поведения автономной проверки и модели безопасности см. в разделе [Самообучение](/ru/tools/self-learning).

Размер описаний предложений всегда ограничен 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"`; результаты всегда остаются
ожидающими предложениями.

## Хранение

```text
<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](/ru/tools/skills) — порядок загрузки, приоритет и видимость
- [Самообучение](/ru/tools/self-learning) — консервативные предложения навыков после завершения запуска
- [Создание навыков](/ru/tools/creating-skills) — основы написания `SKILL.md`
  вручную
- [Конфигурация навыков](/ru/tools/skills-config) — полная схема `skills.workshop`
- [CLI навыков](/ru/cli/skills) — команды `openclaw skills`
