OpenClawのSkill Workshop
適用されて初めてスキルになる提案、ライフサイクル、チャットとCLIでの作成、learnコマンド、承認と自律性の設定
自分でスキルを書けるエージェントには、何も誤って稼働しない経路が必要です。OpenClawのSkill Workshopがその管理された経路です。エージェントとオペレーターは提案、つまりコンテンツ、ターゲットのバインディング、スキャナーの状態、ハッシュ、ロールバック用メタデータを含む保留中の下書きを作成し、それは適用されたときに初めて稼働中のスキルになります。デフォルトでは、Workshopはステートディレクトリ内にあるアクティブなエージェント自身のworkshop-skillsディレクトリの下にのみ書き込み、セッションのワークスペースや管理されたスキルライブラリとは分離されています。同梱、プラグイン、ClawHub、プロジェクト、ワークスペースのスキルは、それぞれ専用のツールで編集します。ここでは、ライフサイクルのルール、レビューの画面、チャットとCLIからの作成、learnと修復のフロー、そして設定を紹介します。
ライフサイクルのルール
- 提案優先:生成されたコンテンツはスキルファイルではなく提案ファイルとして保存されます。稼働中のスキルへの書き込みはapplyだけなので、create、update、reviseがアクティブなスキルを変更することはありません。作成と更新はエージェントのWorkshopディレクトリ内にとどまり、スキルがWorkshopの所有となるのは、まさにそこに置かれている場合です。
- 上書きなし:そのディレクトリにターゲットがすでに存在する場合createは失敗し、他のソースのスキルが変更されることはありません。同名のスキルについては、読み込み順序によってどの定義が優先されるかが決まります。update提案は現在のターゲットのハッシュに紐付けられ、applyの前に稼働中のスキルが変更されるとstaleになります。
- スキャナーによるゲートと復旧可能性:applyは書き込み前にセキュリティスキャナーを再実行し、ブロックするのはcriticalの検出結果だけで、warnレベルの検出結果は表示されたままになります。ロールバック用メタデータは稼働中のファイルに触れる前に書き込まれます。createとreviseは、変更不可能な提案の世代全体を書き出してアトミックなリネームで公開するため、中断が起きても見えるのは前の世代か新しい世代のどちらかです。
- 状態:create、update、revise、evaluateは提案をpendingのままにします。apply、reject、quarantineはそれをapplied、rejected、quarantinedに移します。ターゲットが変更されるとstaleになり、revise、apply、reject、quarantineができるのはpendingの提案だけです。チャット、CLI、Gatewayはすべて同じサービスを呼び出します。
稼働中のスキルへの書き込みはapplyだけです。create、update、reviseがアクティブなスキルを変更することはありません。
レビュー、作成、学習
コントロールUIでは、Workshopはpluginsの下にあります。skillsビューには選択したエージェントのWorkshopディレクトリにインストールされているものが一覧表示され、変更されたスキルが先頭に並び、保持されている適用済みバージョンに対する追加と削除がインラインで表示されます。suggestionsビューには、評価、修正、適用、却下を待つpendingの提案が並びます。過去のapplied、rejected、quarantined、staleの提案は、CLIとGatewayから引き続き確認できます。チャットからは欲しいスキルを頼むだけで、エージェントがworkshopツールを呼び出して提案IDを返します。たとえば「月曜日の受信箱ルーチンを実行するスキルを作って」「旅行計画のスキルを座席表も確認するように更新して」「提案を見せて」「修正して」「適用して」といった具合です。learnコマンドは、現在の会話、または名前を指定したソース、パス、URL、貼り付けたメモを、最も一致するpendingの提案または稼働中のスキルに振り分け、必要な場合にのみ新しく作成し、決して適用はしません。現在のターンで使ったスキルが間違っていると判明した場合、エージェントは稼働中のスキルを読み、的を絞ったパッチの提案を作成します。スキル全体がモデルの読み取り予算を超える場合は、正確な1つの範囲を用意します。ランタイムのレシートにより対象はその実行で使われたスキルに限定され、修復されたスキルは新しいセッションに反映され、実行中のセッションは自身のスナップショットを保持します。CLIはこのすべてを備えています。名前、説明、提案ファイルを指定するpropose-create、propose-update、list、inspect、revise、インストール済みプラグインの評価器によるevaluate、apply、そして理由を付けるrejectとquarantineで、いずれもエージェントIDとJSON出力を受け付けます。
設定
- 自律モードはデフォルトでautoです。offは自律的なキャプチャを無効にしつつ永続的な指示のナッジは維持し、proposeは修正や完了した相当量の作業からpendingの提案を作成し、autoは通常のエージェントツールを使って、提案のスキャンや自動のロールバック用スナップショットなしに、ターンごとおよび毎週のWorkshopのメンテナンスを直接行います。ユーザーが依頼した作成、learnコマンド、手動の学習セッションは、どのモードでも機能します。
- 承認ポリシーはデフォルトでautoなので、エージェントが開始したapply、reject、quarantineは追加の確認なしに実行されます。pendingではオペレーターの承認が必要で、確認プロンプトには提案とターゲットの名前が示され、説明、サポートファイルの数、本文のサイズが表示されます。期限切れになったプロンプトは何も実行せずに提案をpendingのままにするため、エージェントは期限切れのアクションをループで再試行すべきではありません。
- 上限:pendingとquarantinedの提案はエージェントあたり50件(1から200の範囲)、提案の本文は40,000バイト(おおよそ1,000から200,000の範囲)、自律的な提案には別に10,000文字の上限があり、説明は常に160バイトが上限です。コントロールUIのアクションで、自律性を有効にせずに過去の会話をスキャンすることもできます。通常のセッションがマイニングの指示とともに開始され、現在のモードに従います。
提案を供給する切り離されたバックグラウンドのレビューについてはOpenClawの自己学習を、これらの設定が含まれる完全なスキーマについてはOpenClawのスキル設定をご覧ください。
位置づけ
Workshopは、エージェントが生成するスキルのためのものです。手書きのワークスペーススキルと管理されたライブラリはそれぞれ独自の画面を持ち、共有Gateway上の個人ライブラリのスキルは、提案ではなく管理されたリビジョンを公開します。手書きの経路についてはOpenClawのスキルを作成するを、evaluateステップがその評価器を実行する画面についてはOpenClawのプラグインをご覧ください。
Dialiでは
Dialiでは、Workshopディレクトリはボリューム上のアシスタントのステートディレクトリの下にあるため、提案と適用済みのスキルはリリースをまたいで残ります。レビューの画面はコントロールUIのWorkshopタブです。アシスタントについてはDialiのマネージドOpenClawホスティングを、それを囲む境界についてはDialiのセキュリティをご覧ください。
- まず提案。稼働中のスキルへの書き込みはapplyだけです。
- ハッシュで紐付け、スキャナーでゲートし、ロールバックに備えます。
- learnは準備するだけで、決して適用しません。
読むだけでなく、作ってみましょう
エージェントを設定してチャネルを選べば、いつも開いているアプリの中でエージェントが働き始めます。
