スキル
スラッシュコマンド
コマンドはゲートウェイによって処理されます。ほとんどのコマンドは、/で始まる単独のメッセージとして送信する必要があります。ホスト専用のbashチャットコマンドは ! <cmd> を使用します (/bash <cmd> はエイリアスです)。関連するシステムは2つあります:
- コマンド: 単独の
/...メッセージ。 - ディレクティブ:
/think,/verbose,/reasoning,/elevated,/exec,/model,/queue。- ディレクティブは、モデルがメッセージを見る前にメッセージから取り除かれます。
- 通常のチャットメッセージ(ディレクティブのみでない場合)では、これらは「インラインヒント」として扱われ、セッション設定を永続化しません。
- ディレクティブのみのメッセージ(メッセージがディレクティブのみを含む場合)では、セッションに永続化され、確認応答で返信します。
- ディレクティブは認可された送信者に対してのみ適用されます。
commands.allowFromが設定されている場合、それが唯一の許可リストとして使用されます。そうでない場合、認可はチャネルの許可リスト/ペアリングとcommands.useAccessGroupsから来ます。認可されていない送信者には、ディレクティブはプレーンテキストとして扱われます。
また、いくつかのインラインショートカット(許可リスト/認可された送信者のみ)があります: /help, /commands, /status, /whoami (/id)。これらは即座に実行され、モデルがメッセージを見る前に取り除かれ、残りのテキストは通常のフローを続けます。
設定
{
commands: {
native: "auto",
nativeSkills: "auto",
text: true,
bash: false,
bashForegroundMs: 2000,
config: false,
debug: false,
restart: false,
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
},
useAccessGroups: true,
},
}
commands.text(デフォルトtrue) は、チャットメッセージ内の/...の解析を有効にします。- ネイティブコマンドがないサービス(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams)では、これを
falseに設定してもテキストコマンドは機能します。
- ネイティブコマンドがないサービス(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams)では、これを
commands.native(デフォルト"auto") はネイティブコマンドを登録します。- Auto: Discord/Telegramではオン、Slackではオフ(スラッシュコマンドを追加するまで)。ネイティブサポートのないプロバイダでは無視されます。
- プロバイダごとに
channels.discord.commands.native、channels.telegram.commands.native、またはchannels.slack.commands.nativeを設定して上書きできます(bool または"auto")。 falseは、起動時にDiscord/Telegramで以前に登録されたコマンドをクリアします。SlackコマンドはSlackアプリで管理され、自動的には削除されません。
commands.nativeSkills(デフォルト"auto") は、サポートされている場合にスキルコマンドをネイティブに登録します。- Auto: Discord/Telegramではオン、Slackではオフ(Slackはスキルごとにスラッシュコマンドを作成する必要があります)。
- プロバイダごとに
channels.discord.commands.nativeSkills、channels.telegram.commands.nativeSkills、またはchannels.slack.commands.nativeSkillsを設定して上書きできます(bool または"auto")。
commands.bash(デフォルトfalse) は、ホストシェルコマンドを実行する! <cmd>を有効にします (/bash <cmd>はエイリアス;tools.elevated許可リストが必要)。commands.bashForegroundMs(デフォルト2000) は、bashがバックグラウンドモードに切り替わる前に待機する時間を制御します (0は即座にバックグラウンド化)。commands.config(デフォルトfalse) は/configを有効にします (openclaw.jsonの読み書き)。commands.debug(デフォルトfalse) は/debugを有効にします(ランタイムのみの上書き)。commands.allowFrom(オプション) は、コマンド認可のためのプロバイダごとの許可リストを設定します。設定されている場合、コマンドとディレクティブの唯一の認可ソースとなります(チャネルの許可リスト/ペアリングとcommands.useAccessGroupsは無視されます)。グローバルなデフォルトには"*"を使用します。プロバイダ固有のキーはそれを上書きします。commands.useAccessGroups(デフォルトtrue) は、commands.allowFromが設定されていない場合に、コマンドに対して許可リスト/ポリシーを強制します。
コマンド一覧
テキスト + ネイティブ(有効な場合):
/help/commands/skill <name> [input](名前でスキルを実行)/status(現在のステータスを表示; 利用可能な場合、現在のモデルプロバイダの使用量/クォータを含む)/allowlist(許可リストエントリの一覧表示/追加/削除)/approve <id> allow-once|allow-always|deny(exec承認プロンプトを解決)/context [list|detail|json]("コンテキスト"を説明;detailはファイルごと + ツールごと + スキルごと + システムプロンプトサイズを表示)/export-session [path](エイリアス:/export) (現在のセッションを完全なシステムプロンプト付きでHTMLにエクスポート)/whoami(あなたの送信者IDを表示; エイリアス:/id)/session idle <duration|off>(フォーカスされたスレッドバインディングの非アクティブ自動アンフォーカスを管理)/session max-age <duration|off>(フォーカスされたスレッドバインディングのハード最大経過時間自動アンフォーカスを管理)/subagents list|kill|log|info|send|steer|spawn(現在のセッションのサブエージェント実行を検査、制御、またはスポーン)/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions(ACPランタイムセッションを検査および制御)/agents(このセッションのスレッドにバインドされたエージェントを一覧表示)/focus <target>(Discord: このスレッド、または新しいスレッドをセッション/サブエージェントターゲットにバインド)/unfocus(Discord: 現在のスレッドバインディングを削除)/kill <id|#|all>(このセッションの実行中のサブエージェントを1つまたはすべて直ちに中止; 確認メッセージなし)/steer <id|#> <message>(実行中のサブエージェントを即座に操縦: 可能な場合は実行中に、そうでない場合は現在の作業を中止し、操縦メッセージで再起動)/tell <id|#> <message>(/steerのエイリアス)/config show|get|set|unset(設定をディスクに永続化、所有者専用;commands.config: trueが必要)/debug show|set|unset|reset(ランタイム上書き、所有者専用;commands.debug: trueが必要)/usage off|tokens|full|cost(応答ごとの使用量フッターまたはローカルコスト概要)/tts off|always|inbound|tagged|status|provider|limit|summary|audio(TTSを制御; /tts を参照)- Discord: ネイティブコマンドは
/voice(Discordは/ttsを予約); テキスト/ttsは引き続き機能します。
- Discord: ネイティブコマンドは
/stop/restart/dock-telegram(エイリアス:/dock_telegram) (返信をTelegramに切り替え)/dock-discord(エイリアス:/dock_discord) (返信をDiscordに切り替え)/dock-slack(エイリアス:/dock_slack) (返信をSlackに切り替え)/activation mention|always(グループのみ)/send on|off|inherit(所有者専用)/resetまたは/new [model](オプションのモデルヒント; 残りは通過)/think <off|minimal|low|medium|high|xhigh>(モデル/プロバイダによる動的選択; エイリアス:/thinking,/t)/verbose on|full|off(エイリアス:/v)/reasoning on|off|stream(エイリアス:/reason; オンの場合、Reasoning:で始まる別のメッセージを送信;stream= Telegramドラフトのみ)/elevated on|off|ask|full(エイリアス:/elev;fullはexec承認をスキップ)/exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>(/execを送信して現在の設定を表示)/model <name>(エイリアス:/models; またはagents.defaults.models.*.aliasからの/エイリアス)/queue <mode>(プラスdebounce:2s cap:25 drop:summarizeのようなオプション;/queueを送信して現在の設定を確認)/bash <command>(ホスト専用;! <command>のエイリアス;commands.bash: true+tools.elevated許可リストが必要)
テキストのみ:
/compact [instructions](/concepts/compaction を参照)! <command>(ホスト専用; 一度に1つ; 長時間実行ジョブには!poll+!stopを使用)!poll(出力 / ステータスを確認; オプションのsessionIdを受け入れる;/bash pollも機能)!stop(実行中のbashジョブを停止; オプションのsessionIdを受け入れる;/bash stopも機能)
注記:
- コマンドは、コマンドと引数の間にオプションの
:を受け入れます (例:/think: high,/send: on,/help:)。 /new <model>は、モデルエイリアス、provider/model、またはプロバイダ名(あいまい一致)を受け入れます。一致しない場合、テキストはメッセージ本文として扱われます。- プロバイダごとの完全な使用量内訳については、
openclaw status --usageを使用してください。 /allowlist add|removeはcommands.config=trueを必要とし、チャネルのconfigWritesを尊重します。/usageは応答ごとの使用量フッターを制御します;/usage costはOpenClawセッションログからのローカルコスト概要を表示します。/restartはデフォルトで有効です;commands.restart: falseを設定して無効にできます。- Discord専用ネイティブコマンド:
/vc join|leave|statusはボイスチャネルを制御します (channels.discord.voiceとネイティブコマンドが必要; テキストでは利用不可)。 - Discordスレッドバインディングコマンド (
/focus,/unfocus,/agents,/session idle,/session max-age) は、効果的なスレッドバインディングが有効になっている必要があります (session.threadBindings.enabledおよび/またはchannels.discord.threadBindings.enabled)。 - ACPコマンドリファレンスとランタイム動作: ACPエージェント。
/verboseはデバッグと追加の可視性を目的としています; 通常使用ではオフにしておいてください。- ツール失敗の概要は関連する場合に表示されますが、詳細な失敗テキストは
/verboseがonまたはfullの場合にのみ含まれます。 /reasoning(および/verbose) はグループ設定では危険です: 意図していない内部推論やツール出力を公開する可能性があります。特にグループチャットでは、オフのままにすることをお勧めします。- 高速パス: 許可リスト送信者からのコマンドのみのメッセージは即座に処理されます(キュー + モデルをバイパス)。
- グループメンションゲーティング: 許可リスト送信者からのコマンドのみのメッセージは、メンション要件をバイパスします。
- インラインショートカット(許可リスト送信者のみ): 特定のコマンドは、通常のメッセージに埋め込まれている場合にも機能し、モデルが残りのテキストを見る前に取り除かれます。
- 例:
hey /statusはステータス返信をトリガーし、残りのテキストは通常のフローを続けます。
- 例:
- 現在:
/help,/commands,/status,/whoami(/id)。 - 認可されていないコマンドのみのメッセージは黙って無視され、インライン
/...トークンはプレーンテキストとして扱われます。 - スキルコマンド:
user-invocableスキルはスラッシュコマンドとして公開されます。名前はa-z0-9_にサニタイズされます(最大32文字)。衝突がある場合は数値サフィックスが付きます(例:_2)。/skill <name> [input]は名前でスキルを実行します(ネイティブコマンドの制限によりスキルごとのコマンドができない場合に便利)。- デフォルトでは、スキルコマンドは通常のリクエストとしてモデルに転送されます。
- スキルはオプションで
command-dispatch: toolを宣言して、コマンドを直接ツールにルーティングできます(決定論的、モデルなし)。 - 例:
/prose(OpenProseプラグイン) — OpenProse を参照。
- ネイティブコマンド引数: Discordは動的オプションにオートコンプリートを使用します(および必須引数を省略した場合にボタンメニュー)。TelegramとSlackは、コマンドが選択肢をサポートし、引数を省略した場合にボタンメニューを表示します。
使用状況表示(どこに何が表示されるか)
- プロバイダ使用量/クォータ (例: "Claude 80% left") は、使用量追跡が有効な場合、現在のモデルプロバイダの
/statusに表示されます。 - 応答ごとのトークン数/コスト は
/usage off|tokens|fullで制御されます(通常の返信に追加)。 /model statusはモデル/認証/エンドポイントに関するものであり、使用量ではありません。
モデル選択 (/model)
/model はディレクティブとして実装されています。例:
/model
/model list
/model 3
/model openai/gpt-5.2
/model opus@anthropic:default
/model status
注記:
/modelと/model listは、コンパクトな番号付きピッカー(モデルファミリー + 利用可能なプロバイダ)を表示します。- Discordでは、
/modelと/modelsは、プロバイダとモデルのドロップダウンと送信ステップを含むインタラクティブなピッカーを開きます。 /model <#>はそのピッカーから選択します(可能な場合は現在のプロバイダを優先)。/model statusは、設定されたプロバイダエンドポイント (baseUrl) とAPIモード (api) を含む詳細ビューを表示します(利用可能な場合)。
デバッグ上書き
/debug を使用すると、ランタイムのみの設定上書き(メモリ、ディスクではない)を設定できます。所有者専用。デフォルトでは無効; commands.debug: true で有効化。例:
/debug show
/debug set messages.responsePrefix="[openclaw]"
/debug set channels.whatsapp.allowFrom=["+1555","+4477"]
/debug unset messages.responsePrefix
/debug reset
注記:
- 上書きは新しい設定読み取りに即座に適用されますが、
openclaw.jsonには書き込まれません。 - すべての上書きをクリアしてディスク上の設定に戻すには
/debug resetを使用します。
設定更新
/config はディスク上の設定 (openclaw.json) に書き込みます。所有者専用。デフォルトでは無効; commands.config: true で有効化。例:
/config show
/config show messages.responsePrefix
/config get messages.responsePrefix
/config set messages.responsePrefix="[openclaw]"
/config unset messages.responsePrefix
注記:
- 設定は書き込み前に検証されます; 無効な変更は拒否されます。
/configの更新は再起動後も永続化されます。
サービスごとの注意点
- テキストコマンド は通常のチャットセッションで実行されます(DMは
mainを共有、グループは独自のセッションを持ちます)。 - ネイティブコマンド は分離されたセッションを使用します:
- Discord:
agent:<agentId>:discord:slash:<userId> - Slack:
agent:<agentId>:slack:slash:<userId>(接頭辞はchannels.slack.slashCommand.sessionPrefixで設定可能) - Telegram:
telegram:slash:<userId>(CommandTargetSessionKey経由でチャットセッションをターゲット)
- Discord:
/stopはアクティブなチャットセッションをターゲットするため、現在の実行を中止できます。- Slack:
channels.slack.slashCommandは、単一の/openclawスタイルのコマンドに対して引き続きサポートされています。commands.nativeを有効にする場合、組み込みコマンドごとに1つのSlackスラッシュコマンドを作成する必要があります(/helpと同じ名前)。Slackのコマンド引数メニューは、エフェメラルなBlock Kitボタンとして配信されます。- Slackネイティブ例外: Slackは
/statusを予約しているため、/agentstatus(not/status) を登録します。テキスト/statusはSlackメッセージ内で引き続き機能します。
- Slackネイティブ例外: Slackは