From f040220db19bebec31f735a165440b37c986da3a Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Tue, 21 Apr 2026 17:48:57 +0000 Subject: [PATCH] chore(i18n): refresh ja-JP translations --- docs/ja-JP/channels/discord.md | 634 ++++++++++++----------- docs/ja-JP/channels/slack.md | 396 +++++++------- docs/ja-JP/channels/telegram.md | 655 ++++++++++++------------ docs/ja-JP/gateway/multiple-gateways.md | 129 +++-- docs/ja-JP/tools/slash-commands.md | 346 +++++++------ 5 files changed, 1094 insertions(+), 1066 deletions(-) diff --git a/docs/ja-JP/channels/discord.md b/docs/ja-JP/channels/discord.md index db865b57a..698cc8a46 100644 --- a/docs/ja-JP/channels/discord.md +++ b/docs/ja-JP/channels/discord.md @@ -1,74 +1,74 @@ --- read_when: - - Discordチャネル機能に取り組んでいるとき + - Discordチャンネル機能の開発中 summary: Discordボットのサポート状況、機能、設定 title: Discord x-i18n: - generated_at: "2026-04-09T01:29:36Z" + generated_at: "2026-04-21T17:45:41Z" model: gpt-5.4 provider: openai - source_hash: 3cd2886fad941ae2129e681911309539e9a65a2352b777b538d7f4686a68f73f + source_hash: 1681315a6c246c4b68347f5e22319e132f30ea4e29a19e7d1da9e83dce7b68d0 source_path: channels/discord.md workflow: 15 --- -# Discord (Bot API) +# Discord(Bot API) -ステータス: 公式Discord gateway経由でDMとguild channelに対応済みです。 +ステータス: 公式のDiscord gateway経由でDMとguild channelに対応済みです。 - - Discord DMはデフォルトでペアリングモードです。 + + DiscordのDMはデフォルトでペアリングモードになります。 - - ネイティブコマンドの動作とコマンドカタログ。 + + ネイティブのコマンド動作とコマンドカタログ。 - - チャネル横断の診断と修復フロー。 + + チャンネルをまたいだ診断と修復フロー。 ## クイックセットアップ -新しいapplicationをbot付きで作成し、そのbotを自分のサーバーに追加して、OpenClawにペアリングする必要があります。botは自分専用のプライベートサーバーに追加することをおすすめします。まだサーバーがない場合は、先に[作成してください](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server)(**Create My Own > For me and my friends** を選択)。 +新しいapplicationをbot付きで作成し、そのbotをサーバーに追加して、OpenClawにペアリングする必要があります。botは自分専用のプライベートサーバーに追加することをおすすめします。まだ持っていない場合は、先に[作成してください](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server)(**Create My Own > For me and my friends** を選択)。 - [Discord Developer Portal](https://discord.com/developers/applications)にアクセスし、**New Application** をクリックします。「OpenClaw」のような名前を付けます。 + [Discord Developer Portal](https://discord.com/developers/applications)に移動し、**New Application** をクリックします。「OpenClaw」のような名前を付けます。 - サイドバーの **Bot** をクリックします。**Username** を、OpenClaw agentに付けている名前に設定します。 + サイドバーの **Bot** をクリックします。**Username** は、OpenClaw agentに付けている名前に設定してください。 - **Bot** ページのまま、**Privileged Gateway Intents** までスクロールし、以下を有効にします。 + 引き続き **Bot** ページで、**Privileged Gateway Intents** までスクロールし、以下を有効にします: - **Message Content Intent**(必須) - - **Server Members Intent**(推奨。ロールallowlistと名前からIDへの照合に必要) + - **Server Members Intent**(推奨。role allowlistと名前からIDへの照合に必須) - **Presence Intent**(任意。presence更新が必要な場合のみ) - **Bot** ページの上部まで戻り、**Reset Token** をクリックします。 + **Bot** ページの上部に戻り、**Reset Token** をクリックします。 - 名前に反して、これは最初のtokenを生成するものであり、何かが「reset」されるわけではありません。 + 名前に反して、これは最初のtokenを生成します。何かが「リセット」されるわけではありません。 - tokenをコピーして、どこかに保存します。これが **Bot Token** で、すぐ後で必要になります。 + tokenをコピーしてどこかに保存します。これが **Bot Token** で、このあとすぐに必要になります。 - サイドバーの **OAuth2** をクリックします。サーバーにbotを追加するために必要な権限を持つ招待URLを生成します。 + サイドバーの **OAuth2** をクリックします。サーバーにbotを追加するために、適切な権限を持つ招待URLを生成します。 - **OAuth2 URL Generator** までスクロールし、以下を有効にします。 + **OAuth2 URL Generator** までスクロールし、以下を有効にします: - `bot` - `applications.commands` - 下に **Bot Permissions** セクションが表示されます。以下を有効にします。 + 下に **Bot Permissions** セクションが表示されます。以下を有効にします: - View Channels - Send Messages @@ -77,30 +77,30 @@ x-i18n: - Attach Files - Add Reactions(任意) - 下部に生成されたURLをコピーし、ブラウザに貼り付けて、自分のサーバーを選び、**Continue** をクリックして接続します。これでDiscordサーバーにbotが表示されるはずです。 + 下部に生成されたURLをコピーしてブラウザに貼り付け、サーバーを選択し、**Continue** をクリックして接続します。これでDiscordサーバー内にbotが表示されるはずです。 - - Discordアプリに戻り、内部IDをコピーできるようにDeveloper Modeを有効にする必要があります。 + + Discordアプリに戻り、内部IDをコピーできるようにするため、Developer Modeを有効にする必要があります。 1. **User Settings**(アバターの横の歯車アイコン)→ **Advanced** → **Developer Mode** をオンにする 2. サイドバーの **server icon** を右クリック → **Copy Server ID** 3. 自分の **avatar** を右クリック → **Copy User ID** - **Server ID** と **User ID** をBot Tokenと一緒に保存してください。次のステップで、この3つすべてをOpenClawに渡します。 + **Server ID** と **User ID** を Bot Token と一緒に保存してください。次のステップで、この3つすべてをOpenClawに送ります。 ペアリングを機能させるには、DiscordでbotがあなたにDMを送れる必要があります。**server icon** を右クリック → **Privacy Settings** → **Direct Messages** をオンにします。 - これにより、サーバーメンバー(botを含む)があなたにDMを送れるようになります。OpenClawでDiscord DMを使いたい場合は、これを有効のままにしてください。guild channelのみを使う予定なら、ペアリング後にDMを無効にできます。 + これにより、サーバーメンバー(botを含む)があなたにDMを送信できるようになります。OpenClawでDiscord DMを使いたい場合は、これを有効のままにしてください。guild channelだけを使う予定なら、ペアリング後にDMを無効にしても構いません。 - - Discord bot tokenは秘密情報です(パスワードのようなものです)。agentにメッセージを送る前に、OpenClawを実行しているマシンで設定してください。 + + Discord bot tokenは秘密情報です(パスワードのようなものです)。agentにメッセージを送る前に、OpenClawを実行しているマシン上で設定してください。 ```bash export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN" @@ -110,20 +110,20 @@ openclaw config set channels.discord.enabled true --strict-json openclaw gateway ``` - OpenClawがすでにバックグラウンドサービスとして実行中なら、OpenClaw Mac app経由、または `openclaw gateway run` プロセスを停止して再起動して再起動してください。 + OpenClawがすでにバックグラウンドサービスとして動作している場合は、OpenClaw Macアプリから再起動するか、`openclaw gateway run` プロセスを停止して再起動してください。 - - 既存の任意のチャネル(例: Telegram)でOpenClaw agentと会話し、次のように伝えます。Discordが最初のチャネルである場合は、代わりにCLI / configタブを使ってください。 + + 既存の任意のチャンネル(例: Telegram)でOpenClaw agentと会話し、次のように伝えます。Discordが最初のチャンネルである場合は、代わりにCLI / configタブを使用してください。 - > 「Discord bot tokenはすでにconfigに設定しました。User ID `` と Server ID `` でDiscordのセットアップを完了してください。」 + > 「Discord bot tokenはすでにconfigに設定しました。User ID `` と Server ID `` でDiscordセットアップを完了してください。」 - ファイルベースのconfigを使いたい場合は、次のように設定します。 + ファイルベースのconfigを使いたい場合は、次のように設定します: ```json5 { @@ -140,13 +140,13 @@ openclaw gateway } ``` - デフォルトaccount用のenv fallback: + デフォルトアカウントのenv fallback: ```bash DISCORD_BOT_TOKEN=... ``` - プレーンテキストの `token` 値もサポートされています。`channels.discord.token` では、env/file/exec provider全体でSecretRef値もサポートされています。詳しくは[Secrets Management](/ja-JP/gateway/secrets)を参照してください。 + プレーンテキストの `token` 値にも対応しています。`channels.discord.token` では、env/file/exec provider全体でSecretRef値も利用できます。詳しくは[Secrets Management](/ja-JP/gateway/secrets)を参照してください。 @@ -154,13 +154,13 @@ DISCORD_BOT_TOKEN=... - gatewayが起動するまで待ってから、DiscordでbotにDMを送ってください。ペアリングコードが返ってきます。 + gatewayが実行中になるまで待ってから、DiscordでbotにDMを送ってください。botがペアリングコードを返します。 - - 既存チャネル上のagentにペアリングコードを送ります。 + + 既存のチャンネルで、そのペアリングコードをagentに送ります: - > 「このDiscord pairing codeを承認してください: ``」 + > 「このDiscordペアリングコードを承認してください: ``」 @@ -172,29 +172,29 @@ openclaw pairing approve discord - ペアリングコードは1時間で期限切れになります。 + ペアリングコードの有効期限は1時間です。 - これで、DiscordのDM経由でagentと会話できるようになるはずです。 + これでDiscordのDM経由でagentと会話できるようになります。 -token解決はaccount認識対応です。configのtoken値がenv fallbackより優先されます。`DISCORD_BOT_TOKEN` はdefault accountでのみ使用されます。 -高度なoutbound call(message tool/channel action)では、明示的な呼び出し単位の `token` がその呼び出しに使われます。これは送信系とread/probe系のaction(たとえばread/search/fetch/thread/pins/permissions)に適用されます。account policy/retry設定は、アクティブなruntime snapshot内で選択されたaccountから引き続き取得されます。 +token解決はアカウント認識型です。configのtoken値はenv fallbackより優先されます。`DISCORD_BOT_TOKEN` はデフォルトアカウントにのみ使われます。 +高度な送信呼び出し(message tool/channel action)では、明示的な呼び出し単位の `token` がその呼び出しに使われます。これは送信およびread/probe系のaction(たとえばread/search/fetch/thread/pins/permissions)に適用されます。アカウントポリシーやretry設定は、アクティブなruntime snapshotで選択されたアカウントから引き続き取得されます。 -## 推奨: guild workspaceを設定する +## 推奨: guild workspaceをセットアップする -DMが機能するようになったら、Discordサーバーを完全なworkspaceとして設定できます。各channelが独自のcontextを持つ独立したagent sessionになります。これは、自分と自分のbotだけがいるプライベートサーバーにおすすめです。 +DMが動作したら、Discordサーバーをフルworkspaceとしてセットアップできます。各チャンネルが独自のcontextを持つ独立したagent sessionになります。これは、あなたとbotだけのプライベートサーバーにおすすめです。 - これにより、agentはDMだけでなく、サーバー上の任意のchannelで応答できるようになります。 + これにより、agentがDMだけでなく、サーバー上の任意のチャンネルで応答できるようになります。 - - > 「自分のDiscord Server ID `` をguild allowlistに追加してください」 + + > 「私のDiscord Server ID `` をguild allowlistに追加してください」 @@ -219,15 +219,15 @@ DMが機能するようになったら、Discordサーバーを完全なworkspac - - デフォルトでは、agentはguild channel内では@mentionされたときだけ応答します。プライベートサーバーでは、すべてのメッセージに応答させたい場合が多いでしょう。 + + デフォルトでは、agentはguild channelでは @mention されたときだけ応答します。プライベートサーバーなら、すべてのメッセージに応答するようにしたいはずです。 - - > 「このサーバーで、自分のagentが@mentionなしでも応答できるようにしてください」 + + > 「このサーバーでは、@mentioned しなくてもagentが応答できるようにしてください」 - guild configで `requireMention: false` を設定します。 + guild configで `requireMention: false` を設定します: ```json5 { @@ -252,34 +252,34 @@ DMが機能するようになったら、Discordサーバーを完全なworkspac デフォルトでは、長期memory(MEMORY.md)はDM sessionでのみ読み込まれます。guild channelではMEMORY.mdは自動読み込みされません。 - - > 「Discord channelで質問するとき、MEMORY.mdから長期contextが必要ならmemory_searchまたはmemory_getを使ってください。」 + + > 「Discord channelで質問するとき、MEMORY.md の長期contextが必要なら memory_search または memory_get を使ってください。」 - - すべてのchannelで共有contextが必要な場合は、安定した指示を `AGENTS.md` または `USER.md` に置いてください(これらはすべてのsessionに注入されます)。長期メモは `MEMORY.md` に保持し、必要に応じてmemory toolsでアクセスしてください。 + + すべてのチャンネルで共有contextが必要な場合は、安定した指示を `AGENTS.md` または `USER.md` に置いてください(これらはすべてのsessionに注入されます)。長期メモは `MEMORY.md` に保持し、必要に応じてmemory toolsでアクセスしてください。 -これで、Discordサーバーにいくつかchannelを作成して会話を始められます。agentはchannel名を認識でき、各channelは独立したsessionを持つので、`#coding`、`#home`、`#research` など、ワークフローに合うものを設定できます。 +では、Discordサーバーにいくつかチャンネルを作成して、会話を始めてください。agentはチャンネル名を認識でき、各チャンネルは独立したsessionを持つため、`#coding`、`#home`、`#research` など、ワークフローに合う形で設定できます。 -## Runtime model +## ランタイムモデル - GatewayがDiscord接続を管理します。 -- 返信ルーティングは決定的です: Discordのinbound replyはDiscordに返されます。 -- デフォルト(`session.dmScope=main`)では、direct chatはagentのmain session(`agent:main:main`)を共有します。 -- Guild channelは独立したsession keyです(`agent::discord:channel:`)。 -- Group DMはデフォルトで無視されます(`channels.discord.dm.groupEnabled=false`)。 -- ネイティブslash commandは独立したcommand session(`agent::discord:slash:`)で実行されますが、ルーティングされた会話sessionへの `CommandTargetSessionKey` は保持されます。 +- 返信ルーティングは決定的です。Discordからの受信返信はDiscordへ返されます。 +- デフォルト(`session.dmScope=main`)では、ダイレクトチャットはagentのメインsession(`agent:main:main`)を共有します。 +- guild channelは独立したsession keyです(`agent::discord:channel:`)。 +- group DMはデフォルトで無視されます(`channels.discord.dm.groupEnabled=false`)。 +- ネイティブのスラッシュコマンドは独立したcommand session(`agent::discord:slash:`)で実行されますが、ルーティングされた会話sessionには `CommandTargetSessionKey` が引き続き渡されます。 ## Forum channels -Discord forumとmedia channelはthread postのみ受け付けます。OpenClawはそれらを作成する2つの方法をサポートしています。 +Discordのforum channelとmedia channelはthread投稿のみ受け付けます。OpenClawはそれらを作成する2つの方法をサポートしています: -- forum親(`channel:`)にメッセージを送信すると、自動でthreadが作成されます。thread titleには、メッセージの最初の空でない行が使われます。 -- `openclaw message thread create` を使って直接threadを作成します。forum channelには `--message-id` を渡さないでください。 +- forum親 (`channel:`) にメッセージを送信してthreadを自動作成する。thread titleには、メッセージの最初の空でない行が使われます。 +- `openclaw message thread create` を使って直接threadを作成する。forum channelでは `--message-id` を渡さないでください。 例: forum親に送信してthreadを作成する @@ -295,35 +295,35 @@ openclaw message thread create --channel discord --target channel: \ --thread-name "Topic title" --message "Body of the post" ``` -forum親はDiscord componentを受け付けません。componentが必要な場合は、thread自体(`channel:`)に送信してください。 +forum親はDiscord componentsを受け付けません。componentsが必要な場合は、thread自体(`channel:`)に送信してください。 -## Interactive components +## インタラクティブcomponents -OpenClawはagent message向けにDiscord components v2 containerをサポートしています。`components` payload付きでmessage toolを使ってください。interaction結果は通常のinbound messageとしてagentにルーティングされ、既存のDiscord `replyToMode` 設定に従います。 +OpenClawはagent message向けにDiscord components v2コンテナをサポートしています。`components` payload付きでmessage toolを使ってください。interactionの結果は通常の受信メッセージとしてagentにルーティングされ、既存のDiscord `replyToMode` 設定に従います。 サポートされるblock: - `text`, `section`, `separator`, `actions`, `media-gallery`, `file` -- action rowでは最大5個のbutton、または単一のselect menuを使用可能 -- select type: `string`, `user`, `role`, `mentionable`, `channel` +- Action rowでは、最大5つのbuttonまたは単一のselect menuを使用できます +- Select type: `string`, `user`, `role`, `mentionable`, `channel` -デフォルトでは、componentは単回使用です。期限切れまでbutton、select、formを複数回使えるようにするには、`components.reusable=true` を設定してください。 +デフォルトでは、componentsは単回使用です。button、select、formを有効期限が切れるまで複数回使えるようにするには、`components.reusable=true` を設定してください。 -buttonをクリックできるユーザーを制限するには、そのbuttonに `allowedUsers` を設定します(Discord user ID、tag、または `*`)。設定されている場合、一致しないユーザーにはephemeralな拒否が返されます。 +buttonをクリックできるユーザーを制限するには、そのbuttonに `allowedUsers` を設定します(Discord user ID、tag、または `*`)。設定されている場合、一致しないユーザーにはephemeralな拒否メッセージが表示されます。 -`/model` と `/models` slash commandは、providerとmodelのdropdownにSubmit手順を加えたインタラクティブなmodel pickerを開きます。pickerの返信はephemeralで、起動したユーザー本人だけが使用できます。 +`/model` と `/models` のスラッシュコマンドでは、providerとmodelのドロップダウン、およびSubmitステップを備えたインタラクティブなmodel pickerが開きます。pickerの返信はephemeralで、呼び出したユーザーだけが使用できます。 ファイル添付: -- `file` blockはattachment参照(`attachment://`)を指している必要があります -- `media`/`path`/`filePath`(単一ファイル)でattachmentを指定します。複数ファイルには `media-gallery` を使ってください -- upload名をattachment参照に一致させたい場合は、`filename` を使って上書きします +- `file` blockは添付参照(`attachment://`)を指している必要があります +- 添付は `media`/`path`/`filePath`(単一ファイル)で提供してください。複数ファイルには `media-gallery` を使います +- 添付参照に一致する必要がある場合は、アップロード名を上書きするために `filename` を使います -Modal form: +モーダルフォーム: -- 最大5個のfieldを持つ `components.modal` を追加します -- field type: `text`, `checkbox`, `radio`, `select`, `role-select`, `user-select` -- OpenClawがtrigger buttonを自動で追加します +- 最大5つのfieldを含む `components.modal` を追加します +- Field type: `text`, `checkbox`, `radio`, `select`, `role-select`, `user-select` +- OpenClawが自動的にトリガーbuttonを追加します 例: @@ -332,45 +332,45 @@ Modal form: channel: "discord", action: "send", to: "channel:123456789012345678", - message: "Optional fallback text", + message: "任意のフォールバックテキスト", components: { reusable: true, - text: "Choose a path", + text: "進むパスを選択", blocks: [ { type: "actions", buttons: [ { - label: "Approve", + label: "承認", style: "success", allowedUsers: ["123456789012345678"], }, - { label: "Decline", style: "danger" }, + { label: "辞退", style: "danger" }, ], }, { type: "actions", select: { type: "string", - placeholder: "Pick an option", + placeholder: "オプションを選択", options: [ - { label: "Option A", value: "a" }, - { label: "Option B", value: "b" }, + { label: "オプション A", value: "a" }, + { label: "オプション B", value: "b" }, ], }, }, ], modal: { - title: "Details", - triggerLabel: "Open form", + title: "詳細", + triggerLabel: "フォームを開く", fields: [ - { type: "text", label: "Requester" }, + { type: "text", label: "依頼者" }, { type: "select", - label: "Priority", + label: "優先度", options: [ - { label: "Low", value: "low" }, - { label: "High", value: "high" }, + { label: "低", value: "low" }, + { label: "高", value: "high" }, ], }, ], @@ -382,48 +382,48 @@ Modal form: ## アクセス制御とルーティング - - `channels.discord.dmPolicy` はDMアクセスを制御します(legacy: `channels.discord.dm.policy`)。 + + `channels.discord.dmPolicy` はDMアクセスを制御します(旧: `channels.discord.dm.policy`): - `pairing`(デフォルト) - `allowlist` - - `open`(`channels.discord.allowFrom` に `"*"` を含める必要があります。legacy: `channels.discord.dm.allowFrom`) + - `open`(`channels.discord.allowFrom` に `"*"` を含める必要があります。旧: `channels.discord.dm.allowFrom`) - `disabled` - DM policyがopenでない場合、未知のユーザーはブロックされます(`pairing` モードではペアリングが促されます)。 + DMポリシーがopenでない場合、未知のユーザーはブロックされます(`pairing` モードではペアリングを促されます)。 - 複数accountの優先順位: + マルチアカウントの優先順位: - - `channels.discord.accounts.default.allowFrom` は `default` accountにのみ適用されます。 - - 名前付きaccountは、自身の `allowFrom` が未設定の場合に `channels.discord.allowFrom` を継承します。 - - 名前付きaccountは `channels.discord.accounts.default.allowFrom` は継承しません。 + - `channels.discord.accounts.default.allowFrom` は `default` アカウントにのみ適用されます。 + - 名前付きアカウントは、自身の `allowFrom` が未設定の場合に `channels.discord.allowFrom` を継承します。 + - 名前付きアカウントは `channels.discord.accounts.default.allowFrom` を継承しません。 - 配信用DM target format: + 配信時のDMターゲット形式: - `user:` - - `<@id>` mention + - `<@id>` メンション - 種別が明示されたuser/channel targetがない限り、数値だけのIDは曖昧なため拒否されます。 + 種別が明示されたuser/channelターゲットがない限り、数値IDのみの指定は曖昧であり拒否されます。 - - guild処理は `channels.discord.groupPolicy` で制御されます。 + + Guild処理は `channels.discord.groupPolicy` によって制御されます: - `open` - `allowlist` - `disabled` - `channels.discord` が存在する場合の安全なbaselineは `allowlist` です。 + `channels.discord` が存在する場合の安全なベースラインは `allowlist` です。 `allowlist` の動作: - - guildは `channels.discord.guilds` に一致する必要があります(`id` 推奨、slugも可) - - 任意の送信者allowlist: `users`(安定したID推奨)と `roles`(role IDのみ)。どちらかが設定されている場合、送信者は `users` または `roles` のいずれかに一致すれば許可されます - - 直接の名前/tag一致はデフォルトで無効です。緊急互換モードとしてのみ `channels.discord.dangerouslyAllowNameMatching: true` を有効にしてください - - `users` には名前/tagも使えますが、IDの方が安全です。名前/tagの項目が使われていると `openclaw security audit` が警告します - - guildに `channels` が設定されている場合、一覧にないchannelは拒否されます - - guildに `channels` blockがない場合、そのallowlist済みguild内のすべてのchannelが許可されます + - guild は `channels.discord.guilds` と一致する必要があります(`id` 推奨、slugも可) + - 任意の送信者allowlist: `users`(安定したIDを推奨)および `roles`(role IDのみ)。どちらかが設定されている場合、送信者は `users` または `roles` のいずれかに一致すれば許可されます + - 直接の名前/tag一致はデフォルトで無効です。緊急時の互換モードとしてのみ `channels.discord.dangerouslyAllowNameMatching: true` を有効にしてください + - 名前/tagは `users` でサポートされますが、IDのほうが安全です。名前/tagエントリが使われていると、`openclaw security audit` が警告します + - guild に `channels` が設定されている場合、一覧にないchannelは拒否されます + - guild に `channels` ブロックがない場合、そのallowlist済みguild内のすべてのchannelが許可されます 例: @@ -449,33 +449,33 @@ Modal form: } ``` - `DISCORD_BOT_TOKEN` だけを設定して `channels.discord` blockを作成しない場合、runtime fallbackは `groupPolicy="allowlist"` になります(ログに警告あり)。これは `channels.defaults.groupPolicy` が `open` でも同様です。 + `DISCORD_BOT_TOKEN` だけを設定し、`channels.discord` ブロックを作成しない場合、ランタイムのfallbackは `groupPolicy="allowlist"` になります(ログに警告が出ます)。`channels.defaults.groupPolicy` が `open` でも同様です。 - - guild messageはデフォルトでmention gatedです。 + + guildメッセージはデフォルトでメンション必須です。 - mention検出には以下が含まれます。 + メンション検出には以下が含まれます: - - 明示的なbot mention - - 設定されたmention pattern(`agents.list[].groupChat.mentionPatterns`、fallbackは `messages.groupChat.mentionPatterns`) - - 対応ケースでの暗黙のreply-to-bot動作 + - botへの明示的なメンション + - 設定されたメンションパターン(`agents.list[].groupChat.mentionPatterns`、fallbackは `messages.groupChat.mentionPatterns`) + - サポート対象ケースでのbotへの暗黙的な返信動作 `requireMention` はguild/channelごとに設定します(`channels.discord.guilds...`)。 - `ignoreOtherMentions` は、別のuser/roleにはmentionしているがbotにはmentionしていないmessageを任意で破棄します(@everyone/@hereを除く)。 + `ignoreOtherMentions` は、別のuser/roleにはメンションしているがbotにはしていないメッセージを任意で破棄します(@everyone/@hereを除く)。 Group DM: - - デフォルト: 無視(`dm.groupEnabled=false`) + - デフォルト: 無視されます(`dm.groupEnabled=false`) - 任意のallowlistは `dm.groupChannels` 経由(channel IDまたはslug) -### ロールベースのagent routing +### roleベースのagentルーティング -`bindings[].match.roles` を使うと、Discord guild memberをrole IDごとに別のagentへルーティングできます。ロールベースbindingはrole IDのみ受け付け、peerまたはparent-peer bindingの後、guild-only bindingの前に評価されます。bindingが他のmatch fieldも設定している場合(例: `peer` + `guildId` + `roles`)、設定されたすべてのfieldが一致する必要があります。 +`bindings[].match.roles` を使うと、Discord guild memberをrole IDごとに別のagentへルーティングできます。roleベースのbindingはrole IDのみ受け付け、peerまたはparent-peer bindingの後、guild-only bindingの前に評価されます。bindingに他のmatch fieldも設定されている場合(例: `peer` + `guildId` + `roles`)、設定されたすべてのfieldが一致する必要があります。 ```json5 { @@ -506,26 +506,26 @@ Modal form: 1. Discord Developer Portal -> **Applications** -> **New Application** 2. **Bot** -> **Add Bot** - 3. bot tokenをコピー + 3. bot tokenをコピーする - - **Bot -> Privileged Gateway Intents** で以下を有効にします。 + + **Bot -> Privileged Gateway Intents** で、以下を有効にします: - Message Content Intent - Server Members Intent(推奨) - Presence intentは任意で、presence updateを受け取りたい場合にのみ必要です。bot presence(`setPresence`)の設定には、member向けpresence updateを有効にする必要はありません。 + Presence intentは任意で、presence更新を受け取りたい場合にのみ必要です。bot presenceの設定(`setPresence`)自体には、member向けpresence更新を有効にする必要はありません。 - + OAuth URL generator: - - scope: `bot`, `applications.commands` + - スコープ: `bot`, `applications.commands` - 一般的なbaseline permission: + 一般的なベースライン権限: - View Channels - Send Messages @@ -539,64 +539,68 @@ Modal form: - Discord Developer Modeを有効にしてから、以下をコピーします。 + Discord Developer Modeを有効にしてから、以下をコピーします: - server ID - channel ID - user ID - 信頼できるauditとprobeのため、OpenClaw configでは数値IDを推奨します。 + 監査やprobeの信頼性のため、OpenClaw configでは数値IDを推奨します。 -## Native commandsとcommand auth +## ネイティブコマンドとコマンド認証 - `commands.native` のデフォルトは `"auto"` で、Discordでは有効です。 -- チャネルごとのoverride: `channels.discord.commands.native` -- `commands.native=false` は、以前登録されたDiscord native commandを明示的に消去します。 -- Native command authは、通常のmessage処理と同じDiscord allowlist/policyを使用します。 -- 権限のないユーザーにもDiscord UI上ではcommandが表示される場合がありますが、実行時にはOpenClaw authが強制され、「not authorized」が返されます。 +- チャンネル単位の上書き: `channels.discord.commands.native`。 +- `commands.native=false` を設定すると、以前に登録されたDiscordネイティブコマンドが明示的にクリアされます。 +- ネイティブコマンド認証は、通常のメッセージ処理と同じDiscord allowlist/ポリシーを使用します。 +- 権限のないユーザーにもDiscord UI上ではコマンドが表示される場合がありますが、実行時にはOpenClaw認証が適用され、「not authorized」が返されます。 -コマンドカタログと動作については[Slash commands](/ja-JP/tools/slash-commands)を参照してください。 +コマンドカタログと動作については、[Slash commands](/ja-JP/tools/slash-commands)を参照してください。 -デフォルトのslash command設定: +デフォルトのスラッシュコマンド設定: - `ephemeral: true` -## 機能詳細 +## 機能の詳細 - - Discordはagent output内のreply tagをサポートします。 + + Discordはagent出力内の返信タグをサポートします: - `[[reply_to_current]]` - `[[reply_to:]]` - これは `channels.discord.replyToMode` で制御されます。 + これは `channels.discord.replyToMode` によって制御されます: - `off`(デフォルト) - `first` - `all` - `batched` - 注: `off` は暗黙のreply threadingを無効にします。明示的な `[[reply_to_*]]` tagは引き続き尊重されます。 - `first` は、そのturnの最初のoutbound Discord messageに常に暗黙のnative reply参照を付けます。 - `batched` は、inbound turnが複数messageのdebounced batchだった場合にのみ、Discordの暗黙のnative reply参照を付けます。これは、すべての単一message turnではなく、曖昧で連続的なchatに対して主にnative replyを使いたい場合に便利です。 + 注: `off` は暗黙的な返信スレッド化を無効にします。明示的な `[[reply_to_*]]` タグは引き続き尊重されます。 + `first` は、そのターンの最初の送信Discordメッセージに常に暗黙的なネイティブ返信参照を付与します。 + `batched` は、 + 受信ターンが複数メッセージのdebounced batchだった場合にのみ、Discordの暗黙的なネイティブ返信参照を付与します。これは、 + 曖昧で短時間に集中するチャットで主にネイティブ返信を使いたいが、 + 単一メッセージのターンすべてでは使いたくない場合に便利です。 - message IDはcontext/history内に表出されるため、agentは特定のmessageを対象にできます。 + message IDはcontext/historyに公開されるため、agentは特定のメッセージを対象にできます。 - - OpenClawは一時messageを送信して、textが届くたびに編集することで、下書きreplyをstreamできます。 + + OpenClawは、一時メッセージを送信し、テキスト到着に応じて編集することで、返信ドラフトをストリーミングできます。 - - `channels.discord.streaming` はpreview streamingを制御します(`off` | `partial` | `block` | `progress`、デフォルト: `off`)。 - - Discordのpreview editはすぐにrate limitに達することがあり、特に複数のbotやgatewayが同じaccountまたはguild trafficを共有している場合があるため、デフォルトは `off` のままです。 - - `progress` はチャネル間の一貫性のために受け付けられ、Discordでは `partial` にマップされます。 - - `channels.discord.streamMode` はlegacy aliasで、自動移行されます。 - - `partial` はtoken到着に合わせて単一のpreview messageを編集します。 - - `block` は下書きサイズのchunkを出力します(サイズと分割点の調整には `draftChunk` を使います)。 + - `channels.discord.streaming` はプレビューストリーミングを制御します(`off` | `partial` | `block` | `progress`、デフォルト: `off`)。 + - Discordのプレビュー編集は、特に複数のbotやgatewayが同じアカウントまたはguild trafficを共有している場合に、すぐにレート制限に達する可能性があるため、デフォルトは `off` のままです。 + - `progress` はチャンネル間の一貫性のために受け付けられ、Discordでは `partial` にマップされます。 + - `channels.discord.streamMode` は旧エイリアスで、自動移行されます。 + - `partial` は、token到着に合わせて単一のプレビューメッセージを編集します。 + - `block` は、ドラフトサイズのchunkを出力します(サイズと分割位置の調整には `draftChunk` を使います)。 + - `streaming.preview.toolProgress` は、tool/progress更新で同じドラフトプレビューメッセージを再利用するかどうかを制御します(デフォルト: `true`)。個別のtool/progressメッセージを維持するには `false` を設定してください。 例: @@ -610,7 +614,7 @@ Modal form: } ``` - `block` モードのchunking default(`channels.discord.textChunkLimit` に合わせてclampされます): + `block` モードのchunkingデフォルト(`channels.discord.textChunkLimit` に収まるように制限されます): ```json5 { @@ -627,46 +631,47 @@ Modal form: } ``` - Preview streamingはtext専用で、media replyは通常配信にfallbackします。 + プレビューストリーミングはテキスト専用です。media返信は通常配信にfallbackします。 - 注: preview streamingはblock streamingとは別です。Discordでblock streamingが明示的に有効な場合、OpenClawは二重streamingを避けるためpreview streamをスキップします。 + 注: プレビューストリーミングはblock streamingとは別物です。Discordでblock streamingが明示的に + 有効になっている場合、OpenClawは二重ストリーミングを避けるためプレビューストリームをスキップします。 - - Guild history context: + + guild履歴context: - - `channels.discord.historyLimit` デフォルト `20` + - `channels.discord.historyLimit` のデフォルトは `20` - fallback: `messages.groupChat.historyLimit` - - `0` で無効 + - `0` で無効化 - DM history controls: + DM履歴の制御: - `channels.discord.dmHistoryLimit` - `channels.discord.dms[""].historyLimit` - Thread behavior: + thread動作: - Discord threadはchannel sessionとしてルーティングされます - - parent thread metadataはparent-session linkageに使用できます - - thread固有のentryが存在しない限り、thread configは親channel configを継承します + - 親thread metadataは親sessionリンクに使えます + - thread固有のエントリが存在しない限り、thread configは親channel configを継承します - channel topicは **untrusted** contextとして注入されます(system promptとしてではありません)。 - replyとquoted-messageのcontextは現在、受信したまま保持されます。 - Discord allowlistは主に、誰がagentを起動できるかを制御するものであり、完全な補助contextのredaction boundaryではありません。 + channel topicは **信頼されていない** contextとして注入されます(system promptとしてではありません)。 + 返信および引用メッセージのcontextは、現在は受信したまま維持されます。 + Discordのallowlistは主に、誰がagentをトリガーできるかを制御するものであり、完全な補足contextのredaction境界ではありません。 - - Discordではthreadをsession targetにbindできるため、そのthread内の後続messageは同じsession(subagent sessionを含む)に継続してルーティングされます。 + + Discordでは、threadをsession targetにバインドできます。これにより、そのthread内の後続メッセージは同じsession(subagent sessionを含む)にルーティングされ続けます。 コマンド: - - `/focus ` 現在または新規threadをsubagent/session targetにbind - - `/unfocus` 現在のthread bindingを解除 + - `/focus ` 現在または新規のthreadをsubagent/session targetにバインド + - `/unfocus` 現在のthread bindingを削除 - `/agents` アクティブなrunとbinding状態を表示 - - `/session idle ` focused bindingの非アクティブ時自動unfocusを確認/更新 - - `/session max-age ` focused bindingの最大有効期間を確認/更新 + - `/session idle ` focused bindingの無操作時自動unfocusを確認/更新 + - `/session max-age ` focused bindingのハード最大期間を確認/更新 Config: @@ -685,31 +690,31 @@ Modal form: enabled: true, idleHours: 24, maxAgeHours: 0, - spawnSubagentSessions: false, // opt-in + spawnSubagentSessions: false, // オプトイン }, }, }, } ``` - 注: + 注記: - - `session.threadBindings.*` はグローバルdefaultを設定します。 - - `channels.discord.threadBindings.*` はDiscordの動作をoverrideします。 - - `sessions_spawn({ thread: true })` 用にthreadを自動作成/自動bindするには、`spawnSubagentSessions` をtrueにする必要があります。 - - ACP用にthreadを自動作成/自動bindするには、`spawnAcpSessions` をtrueにする必要があります(`/acp spawn ... --thread ...` または `sessions_spawn({ runtime: "acp", thread: true })`)。 - - accountでthread bindingが無効な場合、`/focus` と関連するthread binding操作は利用できません。 + - `session.threadBindings.*` はグローバルデフォルトを設定します。 + - `channels.discord.threadBindings.*` はDiscordの動作を上書きします。 + - `sessions_spawn({ thread: true })` に対してthreadを自動作成/バインドするには、`spawnSubagentSessions` をtrueにする必要があります。 + - ACP(`/acp spawn ... --thread ...` または `sessions_spawn({ runtime: "acp", thread: true })`)に対してthreadを自動作成/バインドするには、`spawnAcpSessions` をtrueにする必要があります。 + - アカウントでthread bindingが無効な場合、`/focus` および関連するthread binding操作は利用できません。 - 詳しくは[Sub-agents](/ja-JP/tools/subagents)、[ACP Agents](/ja-JP/tools/acp-agents)、[Configuration Reference](/ja-JP/gateway/configuration-reference)を参照してください。 + [Sub-agents](/ja-JP/tools/subagents)、[ACP Agents](/ja-JP/tools/acp-agents)、[Configuration Reference](/ja-JP/gateway/configuration-reference)を参照してください。 - 安定した「常時稼働」ACP workspaceには、Discord conversationを対象にするトップレベルの型付きACP bindingを設定します。 + 安定した「常時稼働」ACP workspaceには、Discord conversationを対象とするトップレベルの型付きACP bindingを設定します。 - Config path: + Configパス: - - `bindings[]` に `type: "acp"` と `match.channel: "discord"` を設定 +- `bindings[]` で `type: "acp"` と `match.channel: "discord"` を使用 例: @@ -759,34 +764,34 @@ Modal form: } ``` - 注: + 注記: - - `/acp spawn codex --bind here` は現在のDiscord channelまたはthreadをその場でbindし、以後のmessageを同じACP sessionにルーティングし続けます。 - - これは「新しいCodex ACP sessionを開始する」を意味することはありますが、それ自体では新しいDiscord threadは作成しません。既存のchannelがchat surfaceのまま使われます。 - - Codex自体は、ディスク上の独自の `cwd` またはbackend workspaceで動作する場合があります。そのworkspaceはruntime stateであり、Discord threadではありません。 - - Thread messageは親channel ACP bindingを継承できます。 - - bind済みchannelまたはthreadでは、`/new` と `/reset` は同じACP sessionをその場でresetします。 - - 一時的なthread bindingも引き続き機能し、有効な間はtarget解決をoverrideできます。 - - `spawnAcpSessions` は、OpenClawが `--thread auto|here` 経由で子threadを作成/bindする必要がある場合にのみ必要です。現在のchannelでの `/acp spawn ... --bind here` には不要です。 + - `/acp spawn codex --bind here` は現在のDiscord channelまたはthreadをその場でバインドし、以後のメッセージを同じACP sessionへルーティングし続けます。 + - これは「新しいCodex ACP sessionを開始する」ことを意味する場合もありますが、それ自体では新しいDiscord threadは作成しません。既存のchannelがチャット画面のまま使われます。 + - Codexは引き続き、ディスク上の自身の `cwd` またはbackend workspaceで実行される場合があります。そのworkspaceはruntime stateであり、Discord threadではありません。 + - threadメッセージは親channelのACP bindingを継承できます。 + - バインドされたchannelまたはthreadでは、`/new` と `/reset` はその場で同じACP sessionをリセットします。 + - 一時的なthread bindingも引き続き機能し、有効な間はtarget解決を上書きできます。 + - `spawnAcpSessions` が必要なのは、OpenClawが `--thread auto|here` によって子threadを作成/バインドする必要がある場合のみです。現在のchannelでの `/acp spawn ... --bind here` には不要です。 - binding動作の詳細は[ACP Agents](/ja-JP/tools/acp-agents)を参照してください。 + binding動作の詳細は [ACP Agents](/ja-JP/tools/acp-agents) を参照してください。 - - guildごとのreaction notification mode: + + guildごとのリアクション通知モード: - `off` - `own`(デフォルト) - `all` - `allowlist`(`guilds..users` を使用) - reaction eventはsystem eventに変換され、ルーティングされたDiscord sessionに添付されます。 + リアクションイベントはsystem eventに変換され、ルーティングされたDiscord sessionに添付されます。 - - `ackReaction` は、OpenClawがinbound messageを処理中であることを示す確認emojiを送信します。 + + `ackReaction` は、OpenClawが受信メッセージを処理中であることを示す確認用emojiを送信します。 解決順序: @@ -795,15 +800,15 @@ Modal form: - `messages.ackReaction` - agent identityのemoji fallback(`agents.list[].identity.emoji`、なければ `"👀"`) - 注: + 注記: - Discordはunicode emojiまたはcustom emoji名を受け付けます。 - - channelまたはaccountでreactionを無効にするには `""` を使います。 + - channelまたはaccountでリアクションを無効にするには `""` を使用します。 - channel起点のconfig書き込みはデフォルトで有効です。 + チャンネル起点のconfig書き込みはデフォルトで有効です。 これは `/config set|unset` フローに影響します(command機能が有効な場合)。 @@ -822,7 +827,7 @@ Modal form: - `channels.discord.proxy` を使って、Discord gateway WebSocket trafficと起動時REST lookup(application ID + allowlist解決)をHTTP(S) proxy経由にルーティングします。 + `channels.discord.proxy` を使って、Discord gateway WebSocketトラフィックと起動時のREST lookup(application ID + allowlist解決)をHTTP(S) proxy経由にします。 ```json5 { @@ -834,7 +839,7 @@ Modal form: } ``` - accountごとのoverride: + アカウントごとの上書き: ```json5 { @@ -853,7 +858,7 @@ Modal form: - proxied messageをsystem member identityに対応付けるため、PluralKit解決を有効にします。 + proxied messageをsystem member identityにマッピングするためのPluralKit解決を有効にします: ```json5 { @@ -861,24 +866,24 @@ Modal form: discord: { pluralkit: { enabled: true, - token: "pk_live_...", // optional; needed for private systems + token: "pk_live_...", // 任意。private systemで必要 }, }, }, } ``` - 注: + 注記: - - allowlistには `pk:` を使用できます - - member display nameは、`channels.discord.dangerouslyAllowNameMatching: true` の場合にのみ名前/slugで一致判定されます - - lookupは元message IDを使用し、時間範囲制約があります + - allowlistでは `pk:` を使用できます + - member display nameは、`channels.discord.dangerouslyAllowNameMatching: true` の場合にのみ name/slugで照合されます + - lookupは元のmessage IDを使用し、時間ウィンドウ制約があります - lookupに失敗した場合、proxied messageはbot messageとして扱われ、`allowBots=true` でない限り破棄されます - presence updateは、statusまたはactivity fieldを設定したとき、またはauto presenceを有効にしたときに適用されます。 + statusまたはactivity fieldを設定したとき、またはauto presenceを有効にしたときに、presence更新が適用されます。 statusのみの例: @@ -898,7 +903,7 @@ Modal form: { channels: { discord: { - activity: "Focus time", + activity: "集中時間", activityType: 4, }, }, @@ -911,7 +916,7 @@ Modal form: { channels: { discord: { - activity: "Live coding", + activity: "ライブコーディング", activityType: 1, activityUrl: "https://twitch.tv/openclaw", }, @@ -919,7 +924,7 @@ Modal form: } ``` - activity type対応表: + Activity type対応表: - 0: Playing - 1: Streaming(`activityUrl` が必要) @@ -928,7 +933,7 @@ Modal form: - 4: Custom(activity textをstatus stateとして使用。emojiは任意) - 5: Competing - auto presenceの例(runtime health signal): + Auto presenceの例(runtime health signal): ```json5 { @@ -945,45 +950,49 @@ Modal form: } ``` - auto presenceはruntime availabilityをDiscord statusに対応付けます: healthy => online、degradedまたはunknown => idle、exhaustedまたはunavailable => dnd。任意のtext override: + Auto presenceはruntime availabilityをDiscord statusにマッピングします: healthy => online、degradedまたはunknown => idle、exhaustedまたはunavailable => dnd。任意のtext上書き: - `autoPresence.healthyText` - `autoPresence.degradedText` - - `autoPresence.exhaustedText`(`{reason}` placeholderをサポート) + - `autoPresence.exhaustedText`(`{reason}` プレースホルダー対応) - DiscordはDMでのbuttonベース承認処理をサポートし、必要に応じて元のchannelに承認promptを投稿することもできます。 + DiscordはDMでのbuttonベースの承認処理をサポートしており、必要に応じて承認プロンプトを元のchannelにも投稿できます。 - Config path: + Configパス: - `channels.discord.execApprovals.enabled` - - `channels.discord.execApprovals.approvers`(任意。可能なら `commands.ownerAllowFrom` にfallback) + - `channels.discord.execApprovals.approvers`(任意。可能な場合は `commands.ownerAllowFrom` にfallback) - `channels.discord.execApprovals.target`(`dm` | `channel` | `both`、デフォルト: `dm`) - `agentFilter`, `sessionFilter`, `cleanupAfterResolve` - `enabled` が未設定または `"auto"` で、`execApprovals.approvers` または `commands.ownerAllowFrom` のどちらかから少なくとも1人のapproverを解決できる場合、Discordはnative exec approvalを自動有効化します。Discordは、channel `allowFrom`、legacy `dm.allowFrom`、またはdirect-message `defaultTo` からexec approverを推測しません。Discordをnative approval clientとして明示的に無効化するには `enabled: false` を設定してください。 + Discordは、`enabled` が未設定または `"auto"` で、`execApprovals.approvers` または `commands.ownerAllowFrom` のいずれかから少なくとも1人のapproverを解決できる場合、ネイティブexec approvalを自動有効化します。Discordは、channelの `allowFrom`、旧 `dm.allowFrom`、またはダイレクトメッセージの `defaultTo` からexec approverを推測しません。ネイティブ承認クライアントとしてのDiscordを明示的に無効化するには `enabled: false` を設定してください。 - `target` が `channel` または `both` の場合、承認promptはchannel内に表示されます。解決済みapproverだけがbuttonを使用でき、他のユーザーにはephemeralな拒否が返されます。承認promptにはcommand textが含まれるため、channel配信は信頼できるchannelでのみ有効にしてください。session keyからchannel IDを導出できない場合、OpenClawはDM配信にfallbackします。 + `target` が `channel` または `both` の場合、承認プロンプトはchannelに表示されます。解決済みのapproverだけがbuttonを使え、他のユーザーにはephemeralな拒否が返されます。承認プロンプトにはcommand textが含まれるため、channel配信は信頼できるchannelでのみ有効にしてください。session keyからchannel IDを導出できない場合、OpenClawはDM配信にfallbackします。 - Discordは、他のchat channelで使用される共有承認buttonも描画します。native Discord adapterは主に、approverのDM routingとchannel fanoutを追加します。 - それらのbuttonが存在する場合、それらが主要な承認UXです。OpenClawは、tool resultがchat approvalを利用不可と示す場合、または手動承認しか手段がない場合にのみ、手動 `/approve` commandを含めるべきです。 + Discordは、他のチャットチャンネルで使われる共有承認buttonもレンダリングします。ネイティブのDiscord adapterは、主にapprover DMルーティングとchannel fanoutを追加します。 + それらのbuttonが存在する場合、それが主要な承認UXになります。OpenClawは、 + tool resultでチャット承認が利用不可と示される場合、または手動承認が唯一の手段である場合にのみ、 + 手動の `/approve` コマンドを含めるべきです。 - このhandler向けのGateway authは、他のGateway clientと同じ共有credential解決契約を使います。 + このhandlerのGateway authは、他のGateway clientと同じ共有credential解決契約を使用します: - - env優先のlocal auth(`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD` の後に `gateway.auth.*`) - - local modeでは、`gateway.auth.*` が未設定の場合にのみ `gateway.remote.*` をfallbackとして使えます。設定済みだが未解決のlocal SecretRefはfail closedします - - 該当する場合は `gateway.remote.*` 経由でremote-modeもサポート - - URL overrideはoverride-safeです: CLI overrideは暗黙credentialを再利用せず、env overrideはenv credentialのみを使います + - env優先のlocal auth(`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`、次に `gateway.auth.*`) + - local modeでは、`gateway.auth.*` が未設定の場合にのみ `gateway.remote.*` をfallbackとして使用できます。設定済みだが未解決のlocal SecretRefはfail closedします + - 該当する場合は `gateway.remote.*` によるremote-modeサポート + - URL上書きはoverride-safeです。CLI上書きでは暗黙credentialを再利用せず、env上書きではenv credentialのみを使用します 承認解決の動作: - - `plugin:` 接頭辞付きIDは `plugin.approval.resolve` で解決されます。 + - `plugin:` 接頭辞付きのIDは `plugin.approval.resolve` で解決されます。 - それ以外のIDは `exec.approval.resolve` で解決されます。 - - Discordはここで追加のexec-to-plugin fallback hopは行いません。どのGateway methodを呼ぶかはID prefixで決まります。 + - Discordはここで追加のexec-to-plugin fallback hopを行いません。IDの + 接頭辞によって呼び出すgateway methodが決まります。 - Exec approvalのデフォルト有効期限は30分です。approvalがunknown approval IDで失敗する場合は、approver解決、機能の有効化、配信されたapproval id kindが保留中リクエストと一致していることを確認してください。 + Exec approvalのデフォルト有効期限は30分です。unknown approval IDで承認が失敗する場合は、 + approver解決、機能の有効化、および配信されたapproval id種別が保留中リクエストと一致していることを確認してください。 関連ドキュメント: [Exec approvals](/ja-JP/tools/exec-approvals) @@ -1001,25 +1010,25 @@ Discord message actionには、messaging、channel admin、moderation、presence - moderation: `timeout`, `kick`, `ban` - presence: `setPresence` -`event-create` actionは、scheduled eventのcover imageを設定するための任意の `image` パラメータ(URLまたはlocal file path)を受け付けます。 +`event-create` actionは、scheduled eventのカバー画像を設定するための任意の `image` パラメータ(URLまたはlocal file path)を受け付けます。 -action gateは `channels.discord.actions.*` の下にあります。 +action gateは `channels.discord.actions.*` 配下にあります。 デフォルトのgate動作: -| Action group | Default | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | -| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | enabled | -| roles | disabled | -| moderation | disabled | -| presence | disabled | +| Action group | デフォルト | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- | +| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | enabled | +| roles | disabled | +| moderation | disabled | +| presence | disabled | ## Components v2 UI -OpenClawはexec approvalとcross-context markerにDiscord components v2を使用します。Discord message actionも、カスタムUI用の `components` を受け付けられます(高度な用途。discord tool経由でcomponent payloadを構築する必要があります)。一方、legacy `embeds` も引き続き利用できますが、推奨されません。 +OpenClawは、exec approvalとcross-context markerにDiscord components v2を使用します。Discord message actionもcustom UI向けに `components` を受け付けられます(高度な用途。discord tool経由でcomponent payloadを構築する必要があります)。一方、旧来の `embeds` も引き続き利用可能ですが、推奨されません。 -- `channels.discord.ui.components.accentColor` は、Discord component containerで使われるaccent colorを設定します(hex)。 -- accountごとの設定は `channels.discord.accounts..ui.components.accentColor`。 +- `channels.discord.ui.components.accentColor` は、Discord component containerで使用するアクセントカラー(hex)を設定します。 +- アカウントごとの設定は `channels.discord.accounts..ui.components.accentColor` を使います。 - components v2が存在する場合、`embeds` は無視されます。 例: @@ -1040,17 +1049,17 @@ OpenClawはexec approvalとcross-context markerにDiscord components v2を使用 ## Voice channels -OpenClawはDiscord voice channelに参加し、リアルタイムで継続的な会話を行えます。これはvoice message attachmentとは別機能です。 +OpenClawは、リアルタイムで継続的な会話のためにDiscord voice channelへ参加できます。これはvoice message attachmentとは別機能です。 要件: -- native command(`commands.native` または `channels.discord.commands.native`)を有効にします。 -- `channels.discord.voice` を設定します。 +- ネイティブコマンドを有効にする(`commands.native` または `channels.discord.commands.native`)。 +- `channels.discord.voice` を設定する。 - botには対象voice channelでのConnect + Speak権限が必要です。 -sessionを制御するには、Discord専用native command `/vc join|leave|status` を使います。このcommandはaccount default agentを使用し、他のDiscord commandと同じallowlistおよびgroup policyルールに従います。 +sessionの制御にはDiscord専用のネイティブコマンド `/vc join|leave|status` を使用します。このコマンドはアカウントのデフォルトagentを使用し、他のDiscordコマンドと同じallowlistおよびgroup policyルールに従います。 -auto-joinの例: +自動参加の例: ```json5 { @@ -1076,25 +1085,25 @@ auto-joinの例: } ``` -注: +注記: -- `voice.tts` はvoice playback専用で `messages.tts` をoverrideします。 -- voice transcript turnはDiscord `allowFrom`(または `dm.allowFrom`)からowner statusを導出します。owner以外のspeakerはowner専用tool(たとえば `gateway` や `cron`)にアクセスできません。 -- voiceはデフォルトで有効です。無効化するには `channels.discord.voice.enabled=false` を設定します。 +- `voice.tts` は、voice再生に限って `messages.tts` を上書きします。 +- voice transcript turnは、Discordの `allowFrom`(または `dm.allowFrom`)からowner statusを導出します。ownerでない話者は、owner専用tool(たとえば `gateway` や `cron`)にアクセスできません。 +- voiceはデフォルトで有効です。無効にするには `channels.discord.voice.enabled=false` を設定します。 - `voice.daveEncryption` と `voice.decryptionFailureTolerance` は `@discordjs/voice` のjoin optionにそのまま渡されます。 -- `@discordjs/voice` のdefaultは、未設定時に `daveEncryption=true` と `decryptionFailureTolerance=24` です。 -- OpenClawは受信decrypt failureも監視し、短時間に繰り返しfailureが発生するとvoice channelからleave/rejoinして自動復旧します。 -- 受信ログに `DecryptionFailed(UnencryptedWhenPassthroughDisabled)` が繰り返し表示される場合、これは上流の `@discordjs/voice` の受信バグで、[discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) で追跡されている可能性があります。 +- 未設定の場合、`@discordjs/voice` のデフォルトは `daveEncryption=true` および `decryptionFailureTolerance=24` です。 +- OpenClawは受信時のdecrypt失敗も監視し、短時間に失敗が繰り返された場合はvoice channelから退出・再参加して自動復旧します。 +- 受信ログに `DecryptionFailed(UnencryptedWhenPassthroughDisabled)` が繰り返し表示される場合、これは [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) で追跡されている上流の `@discordjs/voice` 受信バグである可能性があります。 ## Voice messages -Discord voice messageはwaveform previewを表示し、OGG/Opus audioとmetadataが必要です。OpenClawはwaveformを自動生成しますが、gateway host上でaudio fileを検査および変換するために `ffmpeg` と `ffprobe` が利用可能である必要があります。 +Discordのvoice messageは波形プレビューを表示し、OGG/Opus音声とmetadataが必要です。OpenClawは波形を自動生成しますが、音声ファイルの検査と変換のためにgateway host上で `ffmpeg` と `ffprobe` が使用可能である必要があります。 要件と制約: -- **local file path** を指定してください(URLは拒否されます)。 -- text contentは省略してください(Discordは同じpayload内でtext + voice messageを許可しません)。 -- 任意のaudio formatを受け付けます。必要に応じてOpenClawがOGG/Opusに変換します。 +- **ローカルファイルパス** を指定してください(URLは拒否されます)。 +- テキストcontentは省略してください(Discordでは同じpayload内でテキスト + voice messageは許可されません)。 +- 任意の音声形式を受け付けます。必要に応じてOpenClawがOGG/Opusに変換します。 例: @@ -1105,7 +1114,7 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a ## トラブルシューティング - + - Message Content Intentを有効にする - user/member解決に依存する場合はServer Members Intentを有効にする @@ -1113,11 +1122,11 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a - + - `groupPolicy` を確認する - `channels.discord.guilds` 配下のguild allowlistを確認する - - guildの `channels` mapが存在する場合、一覧にあるchannelだけが許可される + - guildの `channels` mapが存在する場合、一覧にあるchannelだけが許可されます - `requireMention` の動作とmention patternを確認する 便利な確認コマンド: @@ -1130,16 +1139,16 @@ openclaw logs --follow - + よくある原因: - - `groupPolicy="allowlist"` なのに一致するguild/channel allowlistがない - - `requireMention` が間違った場所に設定されている(`channels.discord.guilds` またはchannel entryの下である必要があります) - - 送信者がguild/channel `users` allowlistによってブロックされている + - 一致するguild/channel allowlistがない状態で `groupPolicy="allowlist"` になっている + - `requireMention` が間違った場所に設定されている(`channels.discord.guilds` またはchannel entry配下である必要があります) + - 送信者がguild/channelの `users` allowlistによってブロックされている - + 典型的なログ: @@ -1147,18 +1156,18 @@ openclaw logs --follow - `Slow listener detected ...` - `discord inbound worker timed out after ...` - Listener budget knob: + Listener budgetの設定項目: - - 単一account: `channels.discord.eventQueue.listenerTimeout` - - 複数account: `channels.discord.accounts..eventQueue.listenerTimeout` + - 単一アカウント: `channels.discord.eventQueue.listenerTimeout` + - マルチアカウント: `channels.discord.accounts..eventQueue.listenerTimeout` - Worker run timeout knob: + Worker run timeoutの設定項目: - - 単一account: `channels.discord.inboundWorker.runTimeoutMs` - - 複数account: `channels.discord.accounts..inboundWorker.runTimeoutMs` - - デフォルト: `1800000`(30分)。無効化するには `0` を設定 + - 単一アカウント: `channels.discord.inboundWorker.runTimeoutMs` + - マルチアカウント: `channels.discord.accounts..inboundWorker.runTimeoutMs` + - デフォルト: `1800000`(30分)。無効にするには `0` を設定 - 推奨baseline: + 推奨ベースライン: ```json5 { @@ -1179,75 +1188,76 @@ openclaw logs --follow } ``` - listenerの初期化が遅い場合は `eventQueue.listenerTimeout` を使い、queueされたagent turnに別個の安全弁が欲しい場合のみ `inboundWorker.runTimeoutMs` + listenerの初期化が遅い場合は `eventQueue.listenerTimeout` を使い、キューされたagent turnに対して + 別の安全弁が必要な場合にのみ `inboundWorker.runTimeoutMs` を使ってください。 - - `channels status --probe` のpermission checkは、数値channel IDでのみ機能します。 + + `channels status --probe` の権限チェックは、数値channel IDに対してのみ機能します。 - slug keyを使っている場合、runtime matchingは機能することがありますが、probeではpermissionを完全には検証できません。 + slug keyを使用している場合、ランタイムでの一致は動作することがありますが、probeでは権限を完全には検証できません。 - + - - DM無効: `channels.discord.dm.enabled=false` - - DM policy無効: `channels.discord.dmPolicy="disabled"`(legacy: `channels.discord.dm.policy`) - - `pairing` モードでpairing approval待ち + - DMが無効: `channels.discord.dm.enabled=false` + - DMポリシーが無効: `channels.discord.dmPolicy="disabled"`(旧: `channels.discord.dm.policy`) + - `pairing` モードでペアリング承認待ち - - デフォルトではbotが作成したmessageは無視されます。 + + デフォルトではbot作成messageは無視されます。 - `channels.discord.allowBots=true` を設定する場合は、loop動作を避けるために厳格なmentionとallowlistルールを使ってください。 - botをmentionしたbot messageだけを受け付けるには、`channels.discord.allowBots="mentions"` を推奨します。 + `channels.discord.allowBots=true` を設定する場合は、ループ動作を避けるために厳格なmentionおよびallowlistルールを使ってください。 + botにメンションしたbot messageのみ受け付ける `channels.discord.allowBots="mentions"` を推奨します。 - - Discord voice receive recovery logicが入っているように、OpenClawを最新に保つ(`openclaw update`) - - `channels.discord.voice.daveEncryption=true`(デフォルト)を確認する - - `channels.discord.voice.decryptionFailureTolerance=24`(上流default)から始め、必要時のみ調整する - - 以下のログを監視する: + - Discord voice受信の復旧ロジックが含まれるよう、OpenClawを最新に保つ(`openclaw update`) + - `channels.discord.voice.daveEncryption=true`(デフォルト)であることを確認する + - `channels.discord.voice.decryptionFailureTolerance=24`(上流デフォルト)から始め、必要な場合にのみ調整する + - 以下のログを確認する: - `discord voice: DAVE decrypt failures detected` - `discord voice: repeated decrypt failures; attempting rejoin` - - 自動rejoin後もfailureが続く場合は、ログを収集して [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) と比較する + - 自動再参加後も失敗が続く場合は、ログを収集して [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) と比較してください -## Configuration reference pointers +## Configuration referenceの参照先 主な参照先: - [Configuration reference - Discord](/ja-JP/gateway/configuration-reference#discord) -重要度の高いDiscord field: +重要なDiscord field: -- 起動/auth: `enabled`, `token`, `accounts.*`, `allowBots` -- policy: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*` -- command: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*` -- event queue: `eventQueue.listenerTimeout`(listener budget), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency` +- 起動/認証: `enabled`, `token`, `accounts.*`, `allowBots` +- ポリシー: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*` +- コマンド: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*` +- event queue: `eventQueue.listenerTimeout`(listener budget)、`eventQueue.maxQueueSize`、`eventQueue.maxConcurrency` - inbound worker: `inboundWorker.runTimeoutMs` -- reply/history: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` -- delivery: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage` -- streaming: `streaming`(legacy alias: `streamMode`), `draftChunk`, `blockStreaming`, `blockStreamingCoalesce` +- 返信/履歴: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` +- 配信: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage` +- ストリーミング: `streaming`(旧エイリアス: `streamMode`)、`streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce` - media/retry: `mediaMaxMb`, `retry` - - `mediaMaxMb` はoutbound Discord uploadの上限です(デフォルト: `100MB`) -- actions: `actions.*` + - `mediaMaxMb` は送信するDiscord uploadの上限を設定します(デフォルト: `100MB`) +- action: `actions.*` - presence: `activity`, `status`, `activityType`, `activityUrl` - UI: `ui.components.accentColor` -- features: `threadBindings`, トップレベルの `bindings[]`(`type: "acp"`), `pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix` +- 機能: `threadBindings`, トップレベル `bindings[]`(`type: "acp"`)、`pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix` ## 安全性と運用 -- bot tokenは秘密情報として扱ってください(監視付き環境では `DISCORD_BOT_TOKEN` 推奨)。 -- Discord permissionは最小権限にしてください。 -- command deploy/stateが古い場合は、gatewayを再起動して `openclaw channels status --probe` で再確認してください。 +- bot tokenは秘密情報として扱ってください(監視付き環境では `DISCORD_BOT_TOKEN` を推奨)。 +- 最小権限のDiscord permissionを付与してください。 +- command deploy/stateが古い場合は、gatewayを再起動し、`openclaw channels status --probe` で再確認してください。 ## 関連 diff --git a/docs/ja-JP/channels/slack.md b/docs/ja-JP/channels/slack.md index 6ecd32662..331da8cde 100644 --- a/docs/ja-JP/channels/slack.md +++ b/docs/ja-JP/channels/slack.md @@ -4,17 +4,17 @@ read_when: summary: Slack のセットアップとランタイム動作(Socket Mode + HTTP リクエスト URL) title: Slack x-i18n: - generated_at: "2026-04-21T13:35:23Z" + generated_at: "2026-04-21T17:45:41Z" model: gpt-5.4 provider: openai - source_hash: 2fe3c3c344e1c20c09b29773f4f68d2790751e76d8bbaa3c6157e3ff75978acf + source_hash: f30b372a3ae10b7b649532181306e42792aca76b41422516e9633eb79f73f009 source_path: channels/slack.md workflow: 15 --- # Slack -ステータス: Slack アプリ連携による DM + チャンネルは本番対応済みです。デフォルトモードは Socket Mode で、HTTP リクエスト URL もサポートされています。 +ステータス: Slack アプリ連携による DM とチャンネルに対応した本番運用対応。デフォルトモードは Socket Mode で、HTTP リクエスト URL もサポートされています。 @@ -31,15 +31,15 @@ x-i18n: ## クイックセットアップ - + Slack アプリ設定で **[Create New App](https://api.slack.com/apps/new)** ボタンを押します。 - - **from a manifest** を選択し、アプリ用のワークスペースを選びます - - 下記の[マニフェスト例](#manifest-and-scope-checklist)を貼り付け、そのまま作成を続けます + - **from a manifest** を選び、アプリ用のワークスペースを選択します + - 以下の[マニフェスト例](#manifest-and-scope-checklist)を貼り付け、そのまま作成に進みます - `connections:write` を付けた **App-Level Token** (`xapp-...`) を生成します - - アプリをインストールし、表示された **Bot Token** (`xoxb-...`) をコピーします + - アプリをインストールし、表示される **Bot Token** (`xoxb-...`) をコピーします @@ -57,7 +57,7 @@ x-i18n: } ``` - 環境変数のフォールバック(デフォルトアカウントのみ): + 環境変数でのフォールバック(デフォルトアカウントのみ): ```bash SLACK_APP_TOKEN=xapp-... @@ -77,15 +77,15 @@ openclaw gateway - + Slack アプリ設定で **[Create New App](https://api.slack.com/apps/new)** ボタンを押します。 - - **from a manifest** を選択し、アプリ用のワークスペースを選びます + - **from a manifest** を選び、アプリ用のワークスペースを選択します - [マニフェスト例](#manifest-and-scope-checklist)を貼り付け、作成前に URL を更新します - - リクエスト検証用の **Signing Secret** を保存します - - アプリをインストールし、表示された **Bot Token** (`xoxb-...`) をコピーします + - リクエスト検証用に **Signing Secret** を保存します + - アプリをインストールし、表示される **Bot Token** (`xoxb-...`) をコピーします @@ -106,9 +106,9 @@ openclaw gateway ``` - マルチアカウント HTTP では一意の webhook パスを使ってください + マルチアカウント HTTP では一意の Webhook パスを使用してください - アカウントごとに異なる `webhookPath`(デフォルトは `/slack/events`)を設定し、登録が競合しないようにしてください。 + 登録が衝突しないように、各アカウントに別々の `webhookPath`(デフォルトは `/slack/events`)を設定してください。 @@ -128,13 +128,13 @@ openclaw gateway ## マニフェストとスコープのチェックリスト - + ```json { "display_information": { "name": "OpenClaw", - "description": "OpenClaw 用の Slack コネクタ" + "description": "OpenClaw 用 Slack コネクター" }, "features": { "bot_user": { @@ -148,7 +148,7 @@ openclaw gateway "slash_commands": [ { "command": "/openclaw", - "description": "OpenClaw にメッセージを送信する", + "description": "OpenClaw にメッセージを送信", "should_escape": false } ] @@ -205,13 +205,13 @@ openclaw gateway - + ```json { "display_information": { "name": "OpenClaw", - "description": "OpenClaw 用の Slack コネクタ" + "description": "OpenClaw 用 Slack コネクター" }, "features": { "bot_user": { @@ -225,7 +225,7 @@ openclaw gateway "slash_commands": [ { "command": "/openclaw", - "description": "OpenClaw にメッセージを送信する", + "description": "OpenClaw にメッセージを送信", "should_escape": false, "url": "https://gateway-host.example.com/slack/events" } @@ -291,31 +291,31 @@ openclaw gateway ### 追加のマニフェスト設定 -上記のデフォルトを拡張する各種機能を表に出します。 +上記のデフォルトを拡張する各種機能を有効にします。 - + - 単一の設定済みコマンドの代わりに、複数の[ネイティブスラッシュコマンド](#commands-and-slash-behavior)をニュアンス付きで使用できます。 + 単一の設定済みコマンドの代わりに、複数の[ネイティブスラッシュコマンド](#commands-and-slash-behavior)を条件付きで使用できます。 - - `/status` コマンドは予約済みなので、`/status` の代わりに `/agentstatus` を使ってください。 - - 同時に利用可能なスラッシュコマンドは 25 個までです。 + - `/status` コマンドは予約されているため、`/status` の代わりに `/agentstatus` を使用します。 + - 同時に利用可能にできるスラッシュコマンドは最大 25 個です。 - 既存の `features.slash_commands` セクションを、[利用可能なコマンド](/ja-JP/tools/slash-commands#command-list) の一部で置き換えてください。 + 既存の `features.slash_commands` セクションを、[利用可能なコマンド](/ja-JP/tools/slash-commands#command-list) のサブセットに置き換えてください。 - + ```json "slash_commands": [ { "command": "/new", - "description": "新しいセッションを開始する", + "description": "新しいセッションを開始", "usage_hint": "[model]" }, { "command": "/reset", - "description": "現在のセッションをリセットする" + "description": "現在のセッションをリセット" }, { "command": "/compact", @@ -324,115 +324,115 @@ openclaw gateway }, { "command": "/stop", - "description": "現在の実行を停止する" + "description": "現在の実行を停止" }, { "command": "/session", - "description": "スレッド紐付けの有効期限を管理する", + "description": "スレッドバインディングの有効期限を管理", "usage_hint": "idle or max-age " }, { "command": "/think", - "description": "思考レベルを設定する", + "description": "思考レベルを設定", "usage_hint": "" }, { "command": "/verbose", - "description": "詳細出力を切り替える", + "description": "詳細出力を切り替え", "usage_hint": "on|off|full" }, { "command": "/fast", - "description": "fast モードを表示または設定する", + "description": "高速モードの表示または設定", "usage_hint": "[status|on|off]" }, { "command": "/reasoning", - "description": "reasoning の表示を切り替える", + "description": "reasoning の表示を切り替え", "usage_hint": "[on|off|stream]" }, { "command": "/elevated", - "description": "elevated モードを切り替える", + "description": "elevated モードを切り替え", "usage_hint": "[on|off|ask|full]" }, { "command": "/exec", - "description": "exec のデフォルトを表示または設定する", + "description": "exec のデフォルトを表示または設定", "usage_hint": "host= security= ask= node=" }, { "command": "/model", - "description": "モデルを表示または設定する", + "description": "モデルの表示または設定", "usage_hint": "[name|#|status]" }, { "command": "/models", - "description": "プロバイダー一覧、またはプロバイダーのモデル一覧を表示する", + "description": "プロバイダー一覧、またはプロバイダーのモデル一覧を表示", "usage_hint": "[provider] [page] [limit=|size=|all]" }, { "command": "/help", - "description": "短いヘルプ要約を表示する" + "description": "短いヘルプ概要を表示" }, { "command": "/commands", - "description": "生成されたコマンドカタログを表示する" + "description": "生成されたコマンドカタログを表示" }, { "command": "/tools", - "description": "現在のエージェントが今使えるものを表示する", + "description": "現在のエージェントが今使えるものを表示", "usage_hint": "[compact|verbose]" }, { "command": "/agentstatus", - "description": "利用可能な場合はプロバイダー使用量やクォータを含むランタイムステータスを表示する" + "description": "利用可能な場合はプロバイダー使用状況やクォータを含むランタイムステータスを表示" }, { "command": "/tasks", - "description": "現在のセッションのアクティブな最近のバックグラウンドタスクを一覧表示する" + "description": "現在のセッションのアクティブまたは最近のバックグラウンドタスクを一覧表示" }, { "command": "/context", - "description": "コンテキストがどのように組み立てられるかを説明する", + "description": "コンテキストがどのように組み立てられるかを説明", "usage_hint": "[list|detail|json]" }, { "command": "/whoami", - "description": "あなたの送信者 ID を表示する" + "description": "送信者 ID を表示" }, { "command": "/skill", - "description": "名前を指定して skill を実行する", + "description": "名前で skill を実行", "usage_hint": " [input]" }, { "command": "/btw", - "description": "セッションコンテキストを変更せずに補足の質問をする", + "description": "セッションコンテキストを変更せずに脇道の質問をする", "usage_hint": "" }, { "command": "/usage", - "description": "使用量フッターを制御するか、コスト要約を表示する", + "description": "使用量フッターを制御するか、コスト概要を表示", "usage_hint": "off|tokens|full|cost" } ] ``` - + ```json "slash_commands": [ { "command": "/new", - "description": "新しいセッションを開始する", + "description": "新しいセッションを開始", "usage_hint": "[model]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/reset", - "description": "現在のセッションをリセットする", + "description": "現在のセッションをリセット", "url": "https://gateway-host.example.com/slack/events" }, { @@ -443,115 +443,115 @@ openclaw gateway }, { "command": "/stop", - "description": "現在の実行を停止する", + "description": "現在の実行を停止", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/session", - "description": "スレッド紐付けの有効期限を管理する", + "description": "スレッドバインディングの有効期限を管理", "usage_hint": "idle or max-age ", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/think", - "description": "思考レベルを設定する", + "description": "思考レベルを設定", "usage_hint": "", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/verbose", - "description": "詳細出力を切り替える", + "description": "詳細出力を切り替え", "usage_hint": "on|off|full", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/fast", - "description": "fast モードを表示または設定する", + "description": "高速モードの表示または設定", "usage_hint": "[status|on|off]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/reasoning", - "description": "reasoning の表示を切り替える", + "description": "reasoning の表示を切り替え", "usage_hint": "[on|off|stream]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/elevated", - "description": "elevated モードを切り替える", + "description": "elevated モードを切り替え", "usage_hint": "[on|off|ask|full]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/exec", - "description": "exec のデフォルトを表示または設定する", + "description": "exec のデフォルトを表示または設定", "usage_hint": "host= security= ask= node=", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/model", - "description": "モデルを表示または設定する", + "description": "モデルの表示または設定", "usage_hint": "[name|#|status]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/models", - "description": "プロバイダー一覧、またはプロバイダーのモデル一覧を表示する", + "description": "プロバイダー一覧、またはプロバイダーのモデル一覧を表示", "usage_hint": "[provider] [page] [limit=|size=|all]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/help", - "description": "短いヘルプ要約を表示する", + "description": "短いヘルプ概要を表示", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/commands", - "description": "生成されたコマンドカタログを表示する", + "description": "生成されたコマンドカタログを表示", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/tools", - "description": "現在のエージェントが今使えるものを表示する", + "description": "現在のエージェントが今使えるものを表示", "usage_hint": "[compact|verbose]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/agentstatus", - "description": "利用可能な場合はプロバイダー使用量やクォータを含むランタイムステータスを表示する", + "description": "利用可能な場合はプロバイダー使用状況やクォータを含むランタイムステータスを表示", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/tasks", - "description": "現在のセッションのアクティブな最近のバックグラウンドタスクを一覧表示する", + "description": "現在のセッションのアクティブまたは最近のバックグラウンドタスクを一覧表示", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/context", - "description": "コンテキストがどのように組み立てられるかを説明する", + "description": "コンテキストがどのように組み立てられるかを説明", "usage_hint": "[list|detail|json]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/whoami", - "description": "あなたの送信者 ID を表示する", + "description": "送信者 ID を表示", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/skill", - "description": "名前を指定して Skills を実行する", + "description": "名前で skill を実行", "usage_hint": " [input]", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/btw", - "description": "セッションコンテキストを変更せずに補足の質問をする", + "description": "セッションコンテキストを変更せずに脇道の質問をする", "usage_hint": "", "url": "https://gateway-host.example.com/slack/events" }, { "command": "/usage", - "description": "使用量フッターを制御するか、コスト要約を表示する", + "description": "使用量フッターを制御するか、コスト概要を表示", "usage_hint": "off|tokens|full|cost", "url": "https://gateway-host.example.com/slack/events" } @@ -562,13 +562,13 @@ openclaw gateway - - デフォルトの Slack アプリ ID ではなく、アクティブなエージェント ID(カスタムのユーザー名とアイコン)を送信メッセージで使いたい場合は、`chat:write.customize` の bot スコープを追加してください。 + + 送信メッセージでデフォルトの Slack アプリ ID ではなく、アクティブなエージェント ID(カスタムユーザー名とアイコン)を使いたい場合は、`chat:write.customize` bot スコープを追加してください。 絵文字アイコンを使う場合、Slack では `:emoji_name:` 構文が必要です。 - + `channels.slack.userToken` を設定する場合、一般的な読み取りスコープは次のとおりです。 - `channels:history`, `groups:history`, `im:history`, `mpim:history` @@ -584,27 +584,27 @@ openclaw gateway ## トークンモデル -- Socket Mode では `botToken` + `appToken` が必要です。 -- HTTP モードでは `botToken` + `signingSecret` が必要です。 -- `botToken`、`appToken`、`signingSecret`、`userToken` には、平文の文字列または SecretRef オブジェクトを指定できます。 -- 設定内のトークンは環境変数フォールバックより優先されます。 +- Socket Mode には `botToken` + `appToken` が必要です。 +- HTTP モードには `botToken` + `signingSecret` が必要です。 +- `botToken`、`appToken`、`signingSecret`、`userToken` はプレーンテキスト文字列または SecretRef オブジェクトを受け付けます。 +- config のトークンは環境変数フォールバックより優先されます。 - `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` の環境変数フォールバックはデフォルトアカウントにのみ適用されます。 -- `userToken` (`xoxp-...`) は設定のみ対応です(環境変数フォールバックなし)。デフォルトでは読み取り専用動作(`userTokenReadOnly: true`)になります。 +- `userToken`(`xoxp-...`)は config 専用です(環境変数フォールバックなし)。デフォルトでは読み取り専用動作(`userTokenReadOnly: true`)です。 ステータススナップショットの動作: -- Slack アカウント検査では、認証情報ごとの `*Source` および `*Status` フィールド(`botToken`、`appToken`、`signingSecret`、`userToken`)を追跡します。 -- ステータスは `available`、`configured_unavailable`、または `missing` です。 -- `configured_unavailable` は、そのアカウントが SecretRef または別の非インラインなシークレットソースで設定されているものの、現在のコマンド/ランタイム経路では実際の値を解決できなかったことを意味します。 +- Slack アカウント検査では、認証情報ごとの `*Source` と `*Status` フィールド(`botToken`、`appToken`、`signingSecret`、`userToken`)を追跡します。 +- ステータスは `available`、`configured_unavailable`、`missing` です。 +- `configured_unavailable` は、そのアカウントが SecretRef または別のインラインではないシークレットソース経由で設定されているものの、現在のコマンドまたはランタイム経路では実際の値を解決できなかったことを意味します。 - HTTP モードでは `signingSecretStatus` が含まれます。Socket Mode では必要な組み合わせは `botTokenStatus` + `appTokenStatus` です。 -アクション/ディレクトリ読み取りでは、設定されていれば user token を優先できます。書き込みでは bot token が引き続き優先されます。user-token による書き込みは、`userTokenReadOnly: false` かつ bot token が利用できない場合にのみ許可されます。 +アクションやディレクトリー読み取りでは、設定されていれば user token が優先されることがあります。書き込みでは bot token が引き続き優先されます。user-token での書き込みが許可されるのは、`userTokenReadOnly: false` で、かつ bot token が利用できない場合のみです。 ## アクションとゲート -Slack アクションは `channels.slack.actions.*` によって制御されます。 +Slack アクションは `channels.slack.actions.*` で制御されます。 現在の Slack ツールで利用可能なアクショングループ: @@ -616,31 +616,31 @@ Slack アクションは `channels.slack.actions.*` によって制御されま | memberInfo | enabled | | emojiList | enabled | -現在の Slack メッセージアクションには、`send`、`upload-file`、`download-file`、`read`、`edit`、`delete`、`pin`、`unpin`、`list-pins`、`member-info`、`emoji-list` が含まれます。 +現在の Slack メッセージアクションには `send`、`upload-file`、`download-file`、`read`、`edit`、`delete`、`pin`、`unpin`、`list-pins`、`member-info`、`emoji-list` が含まれます。 ## アクセス制御とルーティング - `channels.slack.dmPolicy` は DM アクセスを制御します(旧式: `channels.slack.dm.policy`)。 + `channels.slack.dmPolicy` は DM アクセスを制御します(旧: `channels.slack.dm.policy`)。 - `pairing`(デフォルト) - `allowlist` - - `open`(`channels.slack.allowFrom` に `"*"` を含める必要があります。旧式: `channels.slack.dm.allowFrom`) + - `open`(`channels.slack.allowFrom` に `"*"` を含める必要があります。旧: `channels.slack.dm.allowFrom`) - `disabled` DM フラグ: - `dm.enabled`(デフォルト true) - `channels.slack.allowFrom`(推奨) - - `dm.allowFrom`(旧式) + - `dm.allowFrom`(旧) - `dm.groupEnabled`(グループ DM のデフォルトは false) - - `dm.groupChannels`(任意の MPIM allowlist) + - `dm.groupChannels`(オプションの MPIM allowlist) マルチアカウントの優先順位: - `channels.slack.accounts.default.allowFrom` は `default` アカウントにのみ適用されます。 - - 名前付きアカウントでは、自身の `allowFrom` が未設定の場合に `channels.slack.allowFrom` を継承します。 + - 名前付きアカウントは、自身の `allowFrom` が未設定の場合に `channels.slack.allowFrom` を継承します。 - 名前付きアカウントは `channels.slack.accounts.default.allowFrom` を継承しません。 DM でのペアリングには `openclaw pairing approve slack ` を使います。 @@ -654,26 +654,26 @@ Slack アクションは `channels.slack.actions.*` によって制御されま - `allowlist` - `disabled` - チャンネル allowlist は `channels.slack.channels` 配下にあり、安定したチャンネル ID を使うべきです。 + チャンネル allowlist は `channels.slack.channels` 配下にあり、安定したチャンネル ID を使う必要があります。 - ランタイムに関する注記: `channels.slack` が完全に存在しない場合(環境変数のみのセットアップ)、ランタイムは `groupPolicy="allowlist"` にフォールバックし、警告を記録します(`channels.defaults.groupPolicy` が設定されていても同様です)。 + ランタイムに関する注意: `channels.slack` が完全に存在しない場合(環境変数のみのセットアップ)、ランタイムは `groupPolicy="allowlist"` にフォールバックし、警告を記録します(`channels.defaults.groupPolicy` が設定されていても同様です)。 名前/ID 解決: - - チャンネル allowlist エントリと DM allowlist エントリは、トークンアクセスが許可されていれば起動時に解決されます - - 未解決のチャンネル名エントリは設定どおり保持されますが、デフォルトではルーティングで無視されます - - 受信認可とチャンネルルーティングはデフォルトで ID 優先です。直接のユーザー名/slug 一致には `channels.slack.dangerouslyAllowNameMatching: true` が必要です + - チャンネル allowlist エントリーと DM allowlist エントリーは、トークンアクセスが可能であれば起動時に解決されます + - 未解決のチャンネル名エントリーは設定どおり保持されますが、デフォルトではルーティング時に無視されます + - 受信認可とチャンネルルーティングはデフォルトで ID 優先です。直接のユーザー名/slug 一致を使うには `channels.slack.dangerouslyAllowNameMatching: true` が必要です - チャンネルメッセージはデフォルトでメンションゲートされます。 + チャンネルメッセージはデフォルトでメンションによるゲートがかかります。 メンションソース: - 明示的なアプリメンション(`<@botId>`) - メンション正規表現パターン(`agents.list[].groupChat.mentionPatterns`、フォールバックは `messages.groupChat.mentionPatterns`) - - ボットへの暗黙のスレッド返信動作(`thread.requireExplicitMention` が `true` の場合は無効) + - 暗黙の bot 返信スレッド動作(`thread.requireExplicitMention` が `true` の場合は無効) チャンネルごとの制御(`channels.slack.channels.`。名前は起動時解決または `dangerouslyAllowNameMatching` 経由のみ): @@ -684,68 +684,69 @@ Slack アクションは `channels.slack.actions.*` によって制御されま - `systemPrompt` - `tools`, `toolsBySender` - `toolsBySender` のキー形式: `id:`、`e164:`、`username:`、`name:`、または `"*"` ワイルドカード - (旧式のプレフィックスなしキーも引き続き `id:` のみにマップされます) + (旧来の接頭辞なしキーも `id:` のみに引き続きマップされます) -## スレッディング、セッション、返信タグ +## スレッド、セッション、返信タグ -- DM は `direct`、チャンネルは `channel`、MPIM は `group` としてルーティングされます。 +- DM は `direct` としてルーティングされ、チャンネルは `channel`、MPIM は `group` としてルーティングされます。 - デフォルトの `session.dmScope=main` では、Slack DM はエージェントのメインセッションに集約されます。 - チャンネルセッション: `agent::slack:channel:`。 -- スレッド返信は、該当する場合にスレッドセッション接尾辞(`:thread:`)を作成できます。 +- スレッド返信では、必要に応じてスレッドセッション接尾辞(`:thread:`)が作成されることがあります。 - `channels.slack.thread.historyScope` のデフォルトは `thread`、`thread.inheritParent` のデフォルトは `false` です。 - `channels.slack.thread.initialHistoryLimit` は、新しいスレッドセッション開始時に取得する既存スレッドメッセージ数を制御します(デフォルト `20`。無効化するには `0` を設定)。 -- `channels.slack.thread.requireExplicitMention`(デフォルト `false`): `true` の場合、暗黙のスレッドメンションを抑制するため、ボットがすでにそのスレッドに参加していても、スレッド内での明示的な `@bot` メンションにのみ応答します。これがない場合、ボット参加済みスレッドでの返信は `requireMention` ゲートをバイパスします。 +- `channels.slack.thread.requireExplicitMention`(デフォルト `false`): `true` の場合、暗黙のスレッドメンションを抑制し、bot がすでにそのスレッドに参加していても、スレッド内で明示的な `@bot` メンションがある場合にのみ bot が応答します。これがない場合、bot が参加済みのスレッド内返信は `requireMention` ゲートをバイパスします。 -返信スレッディング制御: +返信スレッド制御: - `channels.slack.replyToMode`: `off|first|all|batched`(デフォルト `off`) - `channels.slack.replyToModeByChatType`: `direct|group|channel` ごと -- direct chat 用の旧式フォールバック: `channels.slack.dm.replyToMode` +- direct チャット向けの旧フォールバック: `channels.slack.dm.replyToMode` -手動の返信タグに対応しています: +手動返信タグがサポートされています: - `[[reply_to_current]]` - `[[reply_to:]]` -注: `replyToMode="off"` は、明示的な `[[reply_to_*]]` タグを含め、Slack の**すべて**の返信スレッディングを無効にします。これは、明示タグが `"off"` モードでも引き続き尊重される Telegram とは異なります。この違いは、プラットフォームごとのスレッディングモデルを反映しています。Slack スレッドではメッセージがチャンネルから隠れますが、Telegram の返信はメインチャットの流れの中で表示されたままです。 +注: `replyToMode="off"` は、明示的な `[[reply_to_*]]` タグを含む Slack の**すべての**返信スレッドを無効化します。これは、明示タグが `"off"` モードでも引き続き尊重される Telegram とは異なります。この違いはプラットフォームのスレッドモデルを反映しています。Slack のスレッドではメッセージがチャンネルから隠れますが、Telegram の返信はメインチャットの流れの中で見えたままです。 -## 確認用リアクション +## 確認リアクション -`ackReaction` は、OpenClaw が受信メッセージを処理中であることを示す確認絵文字を送信します。 +`ackReaction` は、OpenClaw が受信メッセージを処理している間、確認用絵文字を送信します。 解決順序: - `channels.slack.accounts..ackReaction` - `channels.slack.ackReaction` - `messages.ackReaction` -- エージェント ID の絵文字フォールバック(`agents.list[].identity.emoji`、それ以外は "👀") +- エージェント ID の絵文字フォールバック(`agents.list[].identity.emoji`、なければ `"👀"`) -注記: +注意: -- Slack では shortcode が必要です(例: `"eyes"`)。 -- Slack アカウント単位またはグローバルでリアクションを無効にするには `""` を使います。 +- Slack ではショートコードが必要です(例: `"eyes"`)。 +- Slack アカウント単位またはグローバルでリアクションを無効にするには `""` を使用します。 ## テキストストリーミング `channels.slack.streaming` はライブプレビュー動作を制御します: -- `off`: ライブプレビューのストリーミングを無効にします。 +- `off`: ライブプレビューストリーミングを無効にします。 - `partial`(デフォルト): プレビューテキストを最新の部分出力で置き換えます。 -- `block`: チャンク化されたプレビュー更新を追記します。 -- `progress`: 生成中は進捗ステータステキストを表示し、その後で最終テキストを送信します。 +- `block`: 分割されたプレビュー更新を追記します。 +- `progress`: 生成中は進行状況のステータステキストを表示し、その後に最終テキストを送信します。 +- `streaming.preview.toolProgress`: 下書きプレビューが有効なとき、ツール/進捗更新を同じ編集済みプレビューメッセージに流します(デフォルト: `true`)。別個のツール/進捗メッセージのままにするには `false` に設定します。 -`channels.slack.streaming.nativeTransport` は、`channels.slack.streaming.mode` が `partial` のときに Slack ネイティブのテキストストリーミングを制御します(デフォルト: `true`)。 +`channels.slack.streaming.nativeTransport` は、`channels.slack.streaming.mode` が `partial` のときの Slack ネイティブテキストストリーミングを制御します(デフォルト: `true`)。 - ネイティブテキストストリーミングと Slack assistant のスレッドステータスを表示するには、返信スレッドが利用可能である必要があります。スレッド選択は引き続き `replyToMode` に従います。 -- ネイティブストリーミングが利用できない場合でも、チャンネルとグループチャットのルートでは通常のドラフトプレビューを使えます。 -- トップレベルの Slack DM はデフォルトでスレッド外のままなので、スレッド形式のプレビューは表示されません。そこで進捗を見せたい場合は、スレッド返信または `typingReaction` を使ってください。 -- メディアや非テキストのペイロードは通常配信にフォールバックします。 -- 返信の途中でストリーミングに失敗した場合、OpenClaw は残りのペイロードについて通常配信にフォールバックします。 +- チャンネルとグループチャットのルートでは、ネイティブストリーミングが使えない場合でも通常の下書きプレビューを使えます。 +- トップレベルの Slack DM はデフォルトではスレッド外のままなので、スレッド形式のプレビューは表示されません。そこで進行状況を見せたい場合は、スレッド返信または `typingReaction` を使用してください。 +- メディアおよび非テキスト payload は通常配信にフォールバックします。 +- 返信途中でストリーミングに失敗した場合、OpenClaw は残りの payload を通常配信にフォールバックします。 -Slack ネイティブのテキストストリーミングの代わりにドラフトプレビューを使うには: +Slack ネイティブテキストストリーミングの代わりに下書きプレビューを使用する: ```json5 { @@ -760,57 +761,57 @@ Slack ネイティブのテキストストリーミングの代わりにドラ } ``` -旧式キー: +旧キー: -- `channels.slack.streamMode`(`replace | status_final | append`)は自動的に `channels.slack.streaming.mode` へ移行されます。 -- 真偽値の `channels.slack.streaming` は自動的に `channels.slack.streaming.mode` と `channels.slack.streaming.nativeTransport` へ移行されます。 -- 旧式の `channels.slack.nativeStreaming` は自動的に `channels.slack.streaming.nativeTransport` へ移行されます。 +- `channels.slack.streamMode`(`replace | status_final | append`)は `channels.slack.streaming.mode` に自動移行されます。 +- boolean の `channels.slack.streaming` は `channels.slack.streaming.mode` と `channels.slack.streaming.nativeTransport` に自動移行されます。 +- 旧 `channels.slack.nativeStreaming` は `channels.slack.streaming.nativeTransport` に自動移行されます。 -## Typing reaction フォールバック +## typing リアクションのフォールバック -`typingReaction` は、OpenClaw が返信を処理している間、受信した Slack メッセージに一時的なリアクションを追加し、実行終了時にそれを削除します。これは主に、デフォルトの「入力中...」ステータスインジケーターを使うスレッド返信の外で役立ちます。 +`typingReaction` は、OpenClaw が返信を処理している間、受信した Slack メッセージに一時的なリアクションを追加し、実行終了時にそれを削除します。これは、デフォルトの「is typing...」ステータス表示を使うスレッド返信の外側で特に有用です。 解決順序: - `channels.slack.accounts..typingReaction` - `channels.slack.typingReaction` -注記: +注意: -- Slack では shortcode が必要です(例: `"hourglass_flowing_sand"`)。 -- リアクションはベストエフォートであり、返信または失敗経路の完了後に自動クリーンアップが試行されます。 +- Slack ではショートコードが必要です(例: `"hourglass_flowing_sand"`)。 +- リアクションはベストエフォートです。返信または失敗パスの完了後に自動クリーンアップが試行されます。 ## メディア、チャンク化、配信 - Slack のファイル添付は、Slack がホストするプライベート URL からダウンロードされ(トークン認証付きリクエストフロー)、取得に成功しサイズ制限内であればメディアストアに書き込まれます。 + Slack のファイル添付は Slack ホストのプライベート URL からダウンロードされ(トークン認証付きリクエストフロー)、取得に成功しサイズ制限内であれば media store に書き込まれます。 - ランタイムの受信サイズ上限は、`channels.slack.mediaMaxMb` で上書きしない限りデフォルトで `20MB` です。 + ランタイムの受信サイズ上限は、`channels.slack.mediaMaxMb` で上書きしない限り、デフォルトで `20MB` です。 - - テキストチャンクには `channels.slack.textChunkLimit` を使います(デフォルト 4000) - - `channels.slack.chunkMode="newline"` で段落優先の分割を有効にします - - ファイル送信には Slack の upload API を使用し、スレッド返信(`thread_ts`)を含めることもできます - - 送信メディア上限は、`channels.slack.mediaMaxMb` が設定されていればそれに従います。未設定の場合、チャンネル送信は media pipeline の MIME 種別デフォルトに従います + - テキストチャンクは `channels.slack.textChunkLimit` を使います(デフォルト 4000) + - `channels.slack.chunkMode="newline"` で段落優先の分割が有効になります + - ファイル送信では Slack のアップロード API を使い、スレッド返信(`thread_ts`)を含められます + - 送信メディア上限は、設定されていれば `channels.slack.mediaMaxMb` に従います。未設定の場合、チャンネル送信は media pipeline の MIME kind デフォルトに従います - 推奨される明示的な宛先: + 推奨される明示ターゲット: - DM には `user:` - チャンネルには `channel:` - Slack DM は、ユーザー宛先に送信する際に Slack conversation API によって開かれます。 + Slack DM は、user ターゲットへ送信する際に Slack conversation API 経由で開かれます。 ## コマンドとスラッシュ動作 -スラッシュコマンドは、Slack では単一の設定済みコマンドとして、または複数のネイティブコマンドとして表示されます。コマンドデフォルトを変更するには `channels.slack.slashCommand` を設定します。 +スラッシュコマンドは Slack 上で、単一の設定済みコマンドまたは複数のネイティブコマンドとして表示されます。コマンドのデフォルトを変更するには `channels.slack.slashCommand` を設定します。 - `enabled: false` - `name: "openclaw"` @@ -821,7 +822,7 @@ Slack ネイティブのテキストストリーミングの代わりにドラ /openclaw /help ``` -ネイティブコマンドには、Slack アプリで[追加のマニフェスト設定](#additional-manifest-settings)が必要で、代わりに `channels.slack.commands.native: true` またはグローバル設定の `commands.native: true` で有効になります。 +ネイティブコマンドを使うには、Slack アプリに[追加のマニフェスト設定](#additional-manifest-settings)が必要で、さらに `channels.slack.commands.native: true` またはグローバル設定の `commands.native: true` で有効にします。 - Slack ではネイティブコマンドの自動モードは **off** なので、`commands.native: "auto"` では Slack ネイティブコマンドは有効になりません。 @@ -833,20 +834,20 @@ Slack ネイティブのテキストストリーミングの代わりにドラ - 最大 5 オプション: ボタンブロック - 6〜100 オプション: 静的セレクトメニュー -- 100 を超えるオプション: interactivity options handler が利用可能な場合は、非同期オプションフィルタリング付き external select -- Slack の上限超過時: エンコード済みオプション値はボタンにフォールバック +- 100 を超えるオプション: interactivity options handler が利用可能な場合、非同期オプションフィルタリング付き external select +- Slack 制限超過時: エンコード済みオプション値はボタンにフォールバック ```txt /think ``` -スラッシュセッションは `agent::slack:slash:` のような分離キーを使い、引き続き `CommandTargetSessionKey` を使ってコマンド実行を対象会話セッションへルーティングします。 +スラッシュセッションは `agent::slack:slash:` のような分離キーを使い、コマンド実行は引き続き `CommandTargetSessionKey` を使って対象の会話セッションへルーティングされます。 ## インタラクティブ返信 -Slack はエージェント作成のインタラクティブ返信コントロールを描画できますが、この機能はデフォルトで無効です。 +Slack はエージェント作成のインタラクティブ返信コントロールをレンダリングできますが、この機能はデフォルトでは無効です。 -グローバルに有効にするには: +グローバルに有効化する: ```json5 { @@ -860,7 +861,7 @@ Slack はエージェント作成のインタラクティブ返信コントロ } ``` -または、1 つの Slack アカウントだけで有効にするには: +または、1 つの Slack アカウントだけで有効化する: ```json5 { @@ -883,38 +884,37 @@ Slack はエージェント作成のインタラクティブ返信コントロ - `[[slack_buttons: Approve:approve, Reject:reject]]` - `[[slack_select: Choose a target | Canary:canary, Production:production]]` -これらのディレクティブは Slack Block Kit にコンパイルされ、クリックや選択は既存の Slack interaction event パスを通じて戻されます。 +これらのディレクティブは Slack Block Kit にコンパイルされ、クリックや選択を既存の Slack interaction event path 経由で戻します。 -注記: +注意: -- これは Slack 固有の UI です。他のチャンネルでは Slack Block Kit ディレクティブを各自のボタンシステムに変換しません。 -- インタラクティブなコールバック値は OpenClaw 生成の不透明トークンであり、生のエージェント作成値ではありません。 -- 生成されたインタラクティブブロックが Slack Block Kit の上限を超える場合、OpenClaw は無効な blocks ペイロードを送る代わりに元のテキスト返信へフォールバックします。 +- これは Slack 固有の UI です。他のチャンネルでは Slack Block Kit ディレクティブを独自のボタンシステムに変換しません。 +- インタラクティブコールバック値は OpenClaw 生成の opaque token であり、生のエージェント作成値ではありません。 +- 生成されたインタラクティブブロックが Slack Block Kit の制限を超える場合、OpenClaw は無効な blocks payload を送る代わりに元のテキスト返信へフォールバックします。 -## Slack の Exec approvals +## Slack での exec 承認 -Slack は、Web UI やターミナルにフォールバックする代わりに、インタラクティブボタンと interactions を備えたネイティブ承認クライアントとして動作できます。 +Slack は、Web UI や端末へフォールバックする代わりに、インタラクティブボタンと interaction を備えたネイティブ承認クライアントとして動作できます。 -- Exec approvals は、ネイティブな DM/チャンネルルーティングに `channels.slack.execApprovals.*` を使います。 -- Plugin approvals も、リクエストがすでに Slack に到達していて承認 ID 種別が `plugin:` の場合、同じ Slack ネイティブボタン UI で解決できます。 +- exec 承認では、ネイティブ DM/チャンネルルーティングに `channels.slack.execApprovals.*` を使います。 +- Plugin 承認は、リクエストがすでに Slack に到達しており、承認 ID 種別が `plugin:` であれば、同じ Slack ネイティブボタン UI 経由で引き続き解決できます。 - 承認者の認可は引き続き強制されます。承認者として識別されたユーザーだけが Slack 経由でリクエストを承認または拒否できます。 -これは他チャンネルと同じ共有承認ボタン UI を使用します。Slack アプリ設定で `interactivity` が有効な場合、承認プロンプトは会話内に直接 Block Kit ボタンとして描画されます。 -それらのボタンがある場合、それが主要な承認 UX です。OpenClaw -は、ツール結果がチャット承認を利用不可としている場合、または手動承認が唯一の経路である場合にのみ、手動の `/approve` コマンドを含めるべきです。 +これは他チャンネルと同じ共有承認ボタン UI を使います。Slack アプリ設定で `interactivity` が有効な場合、承認プロンプトは会話内に直接 Block Kit ボタンとして表示されます。 +それらのボタンが存在する場合、それが主要な承認 UX です。OpenClaw は、ツール結果がチャット承認を利用不可と示す場合、または手動承認が唯一の経路である場合にのみ、手動 `/approve` コマンドを含めるべきです。 -設定パス: +config パス: - `channels.slack.execApprovals.enabled` -- `channels.slack.execApprovals.approvers`(任意。可能な場合は `commands.ownerAllowFrom` にフォールバック) +- `channels.slack.execApprovals.approvers`(オプション。可能な場合は `commands.ownerAllowFrom` にフォールバック) - `channels.slack.execApprovals.target`(`dm` | `channel` | `both`、デフォルト: `dm`) - `agentFilter`, `sessionFilter` -Slack は、`enabled` が未設定または `"auto"` で、少なくとも 1 人の -承認者が解決されると、ネイティブ exec approvals を自動有効化します。Slack をネイティブ承認クライアントとして明示的に無効にするには `enabled: false` を設定します。 -承認者が解決されるときにネイティブ承認を強制的に有効にするには `enabled: true` を設定します。 +Slack は、`enabled` が未設定または `"auto"` で、かつ少なくとも 1 人の +承認者が解決されると、ネイティブ exec 承認を自動で有効にします。Slack をネイティブ承認クライアントとして明示的に無効にするには `enabled: false` を設定してください。 +承認者が解決されるときにネイティブ承認を強制的に有効にするには `enabled: true` を設定してください。 -明示的な Slack exec approval 設定がない場合のデフォルト動作: +明示的な Slack exec 承認 config がない場合のデフォルト動作: ```json5 { @@ -924,7 +924,7 @@ Slack は、`enabled` が未設定または `"auto"` で、少なくとも 1 人 } ``` -承認者を上書きしたい、フィルターを追加したい、または送信元チャットへの配信を有効にしたい場合にのみ、明示的な Slack ネイティブ設定が必要です。 +明示的な Slack ネイティブ config が必要なのは、承認者を上書きしたい場合、フィルターを追加したい場合、または origin-chat 配信を有効にしたい場合だけです。 ```json5 { @@ -940,42 +940,42 @@ Slack は、`enabled` が未設定または `"auto"` で、少なくとも 1 人 } ``` -共有の `approvals.exec` 転送は別です。exec 承認プロンプトも他チャットや明示的な帯域外宛先へルーティングする必要がある場合にのみ使ってください。共有の `approvals.plugin` 転送も別です。これらのリクエストがすでに Slack に到達している場合、Slack ネイティブボタンで plugin approvals を引き続き解決できます。 +共有の `approvals.exec` 転送は別機能です。exec 承認プロンプトを他のチャットや明示的な帯域外ターゲットにもルーティングする必要がある場合にのみ使用してください。共有の `approvals.plugin` 転送も別機能です。Slack ネイティブボタンは、それらのリクエストがすでに Slack に到達している場合、引き続き Plugin 承認を解決できます。 -同一チャットでの `/approve` も、すでにコマンドをサポートしている Slack チャンネルと DM で動作します。完全な承認転送モデルについては、[Exec approvals](/ja-JP/tools/exec-approvals) を参照してください。 +同一チャット内の `/approve` も、すでにコマンド対応している Slack チャンネルと DM で動作します。完全な承認転送モデルについては [Exec approvals](/ja-JP/tools/exec-approvals) を参照してください。 -## イベントと運用時の動作 +## イベントと運用動作 -- メッセージの編集/削除/スレッドブロードキャストは system event にマップされます。 -- リアクションの追加/削除イベントは system event にマップされます。 -- メンバーの参加/退出、チャンネルの作成/リネーム、ピンの追加/削除イベントは system event にマップされます。 -- `channel_id_changed` は、`configWrites` が有効な場合にチャンネル設定キーを移行できます。 -- チャンネルトピック/目的メタデータは信頼されないコンテキストとして扱われ、ルーティングコンテキストに注入されることがあります。 -- スレッド開始メッセージと初期スレッド履歴コンテキスト投入は、該当する場合、設定済みの送信者 allowlist によってフィルタリングされます。 -- ブロックアクションとモーダル interaction は、リッチなペイロードフィールドを持つ構造化された `Slack interaction: ...` system event を出力します: - - ブロックアクション: 選択値、ラベル、picker 値、`workflow_*` メタデータ - - モーダルの `view_submission` および `view_closed` イベント: ルーティングされたチャンネルメタデータとフォーム入力付き +- メッセージ編集/削除/スレッドブロードキャストは system event にマップされます。 +- リアクション追加/削除イベントは system event にマップされます。 +- メンバー参加/離脱、チャンネル作成/名前変更、ピン追加/削除イベントは system event にマップされます。 +- `channel_id_changed` は、`configWrites` が有効な場合にチャンネル config キーを移行できます。 +- チャンネル topic/purpose メタデータは信頼されないコンテキストとして扱われ、ルーティングコンテキストに注入されることがあります。 +- スレッド開始メッセージと初期スレッド履歴コンテキストのシーディングは、該当する場合は設定済み送信者 allowlist でフィルタリングされます。 +- Block action とモーダル interaction は、リッチな payload フィールドを持つ構造化 `Slack interaction: ...` system event を出力します。 + - block action: 選択値、ラベル、picker 値、`workflow_*` メタデータ + - モーダル `view_submission` および `view_closed` イベント。ルーティング済みチャンネルメタデータとフォーム入力を含みます -## 設定リファレンスへのポインタ +## 設定リファレンスの参照先 -主なリファレンス: +主要リファレンス: - [設定リファレンス - Slack](/ja-JP/gateway/configuration-reference#slack) 重要度の高い Slack フィールド: - - モード/認証: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` - - DM アクセス: `dm.enabled`, `dmPolicy`, `allowFrom`(旧式: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` - - 互換性トグル: `dangerouslyAllowNameMatching`(緊急用。必要ない限り無効のままにする) + - mode/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` + - DM アクセス: `dm.enabled`, `dmPolicy`, `allowFrom`(旧: `dm.policy`, `dm.allowFrom`)、`dm.groupEnabled`, `dm.groupChannels` + - 互換性トグル: `dangerouslyAllowNameMatching`(緊急用; 必要な場合を除き off のままにしてください) - チャンネルアクセス: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention` - - スレッディング/履歴: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` - - 配信: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport` + - スレッド/履歴: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` + - 配信: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress` - 運用/機能: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly` ## トラブルシューティング - 次の順に確認してください。 + 次の順で確認してください。 - `groupPolicy` - チャンネル allowlist(`channels.slack.channels`) @@ -993,11 +993,11 @@ openclaw doctor - 次を確認してください。 + 確認項目: - `channels.slack.dm.enabled` - - `channels.slack.dmPolicy`(または旧式の `channels.slack.dm.policy`) - - ペアリング承認 / allowlist エントリ + - `channels.slack.dmPolicy`(または旧 `channels.slack.dm.policy`) + - ペアリング承認 / allowlist エントリー ```bash openclaw pairing list slack @@ -1006,22 +1006,22 @@ openclaw pairing list slack - bot トークンと app トークン、および Slack アプリ設定での Socket Mode 有効化を検証してください。 + bot トークンと app トークン、および Slack アプリ設定での Socket Mode 有効化を確認してください。 `openclaw channels status --probe --json` で `botTokenStatus` または - `appTokenStatus: "configured_unavailable"` が表示される場合、Slack アカウントは + `appTokenStatus: "configured_unavailable"` が表示される場合、その Slack アカウントは 設定されていますが、現在のランタイムでは SecretRef ベースの 値を解決できませんでした。 - 次を検証してください。 + 次を確認してください。 - signing secret - webhook path - - Slack Request URLs(Events + Interactivity + Slash Commands) - - HTTP アカウントごとの一意の `webhookPath` + - Slack Request URL(Events + Interactivity + Slash Commands) + - HTTP アカウントごとに一意の `webhookPath` アカウントスナップショットに `signingSecretStatus: "configured_unavailable"` が 表示される場合、その HTTP アカウントは設定されていますが、現在のランタイムでは @@ -1029,18 +1029,18 @@ openclaw pairing list slack - + 意図したのがどちらかを確認してください。 - - Slack に一致するスラッシュコマンドが登録されたネイティブコマンドモード(`channels.slack.commands.native: true`) + - ネイティブコマンドモード(`channels.slack.commands.native: true`)で、Slack に対応するスラッシュコマンドが登録されている - または単一スラッシュコマンドモード(`channels.slack.slashCommand.enabled: true`) - また、`commands.useAccessGroups` とチャンネル/ユーザー allowlist も確認してください。 + 併せて `commands.useAccessGroups` とチャンネル/ユーザー allowlist も確認してください。 -## 関連項目 +## 関連 - [ペアリング](/ja-JP/channels/pairing) - [グループ](/ja-JP/channels/groups) diff --git a/docs/ja-JP/channels/telegram.md b/docs/ja-JP/channels/telegram.md index 44b04bba1..48d2877a8 100644 --- a/docs/ja-JP/channels/telegram.md +++ b/docs/ja-JP/channels/telegram.md @@ -1,29 +1,29 @@ --- read_when: - - Telegramの機能またはWebhookに取り組む -summary: Telegramボットのサポート状況、機能、および設定 + - Telegram の機能または Webhook に取り組む +summary: Telegram ボットのサポート状況、機能、設定 title: Telegram x-i18n: - generated_at: "2026-04-21T04:43:44Z" + generated_at: "2026-04-21T17:45:41Z" model: gpt-5.4 provider: openai - source_hash: b5c70775b55d4923a31ad8bae7f4c6e7cbae754c05c3a578180d63db2b59e39a + source_hash: 816238b53942b319a300843db62ec1d4bf8d84bc11094010926ac9ad457c6d3d source_path: channels/telegram.md workflow: 15 --- # Telegram(Bot API) -ステータス: grammY経由のボットDMおよびグループに対して本番運用対応。ロングポーリングがデフォルトモードで、Webhookモードは任意です。 +ステータス: grammY によるボット DM とグループ向けに本番利用可能です。デフォルトモードはロングポーリングで、Webhook モードは任意です。 - TelegramのデフォルトDMポリシーはペアリングです。 + Telegram のデフォルト DM ポリシーはペアリングです。 チャネル横断の診断と修復プレイブック。 - + 完全なチャネル設定パターンと例。 @@ -31,14 +31,14 @@ x-i18n: ## クイックセットアップ - - Telegramを開いて **@BotFather** とチャットします(ハンドルが正確に `@BotFather` であることを確認してください)。 + + Telegram を開いて **@BotFather** とチャットします(ハンドルが正確に `@BotFather` であることを確認してください)。 `/newbot` を実行し、案内に従って、トークンを保存します。 - + ```json5 { @@ -53,12 +53,12 @@ x-i18n: } ``` - 環境変数フォールバック: `TELEGRAM_BOT_TOKEN=...`(デフォルトアカウントのみ)。 - Telegramは `openclaw channels login telegram` を使用しません。config/envでトークンを設定してから、gatewayを起動してください。 + env のフォールバック: `TELEGRAM_BOT_TOKEN=...`(デフォルトアカウントのみ)。 + Telegram は `openclaw channels login telegram` を使用しません。config/env でトークンを設定してから、Gateway を起動してください。 - + ```bash openclaw gateway @@ -66,7 +66,7 @@ openclaw pairing list telegram openclaw pairing approve telegram ``` - ペアリングコードは1時間で期限切れになります。 + ペアリングコードは 1 時間で期限切れになります。 @@ -76,35 +76,35 @@ openclaw pairing approve telegram -トークン解決順序はアカウント対応です。実際には、config値が環境変数フォールバックより優先され、`TELEGRAM_BOT_TOKEN` はデフォルトアカウントにのみ適用されます。 +トークン解決順序はアカウント対応です。実際には config の値が env のフォールバックより優先され、`TELEGRAM_BOT_TOKEN` はデフォルトアカウントにのみ適用されます。 -## Telegram側の設定 +## Telegram 側の設定 - - Telegramボットはデフォルトで **Privacy Mode** になっており、受信できるグループメッセージが制限されます。 + + Telegram ボットはデフォルトで **Privacy Mode** になっており、受信できるグループメッセージが制限されます。 ボットがすべてのグループメッセージを見る必要がある場合は、次のいずれかを行います。 - - `/setprivacy` でプライバシーモードを無効化する + - `/setprivacy` でプライバシーモードを無効にする - ボットをグループ管理者にする - プライバシーモードを切り替えたときは、Telegramが変更を適用するよう、各グループでボットを削除して再追加してください。 + プライバシーモードを切り替えたら、Telegram が変更を適用するよう、各グループでボットを削除して再追加してください。 - 管理者ステータスはTelegramのグループ設定で制御されます。 + 管理者ステータスは Telegram のグループ設定で制御されます。 - 管理者ボットはすべてのグループメッセージを受信するため、常時有効なグループ動作に役立ちます。 + 管理者ボットはすべてのグループメッセージを受信するため、常時有効のグループ動作に役立ちます。 - + - グループ追加を許可/拒否する `/setjoingroups` - - グループ可視性の動作用の `/setprivacy` + - グループ可視性の動作を設定する `/setprivacy` @@ -112,35 +112,35 @@ openclaw pairing approve telegram ## アクセス制御と有効化 - - `channels.telegram.dmPolicy` はダイレクトメッセージアクセスを制御します。 + + `channels.telegram.dmPolicy` はダイレクトメッセージへのアクセスを制御します。 - `pairing`(デフォルト) - - `allowlist`(`allowFrom` に少なくとも1つの送信者IDが必要) + - `allowlist`(`allowFrom` に少なくとも 1 つの送信者 ID が必要) - `open`(`allowFrom` に `"*"` を含める必要あり) - `disabled` - `channels.telegram.allowFrom` は数値のTelegramユーザーIDを受け付けます。`telegram:` / `tg:` プレフィックスは受け付けられ、正規化されます。 - 空の `allowFrom` での `dmPolicy: "allowlist"` はすべてのDMをブロックし、config検証で拒否されます。 - セットアップでは数値ユーザーIDのみを求めます。 - アップグレード後にconfigに `@username` の許可リスト項目が含まれている場合は、それらを解決するために `openclaw doctor --fix` を実行してください(ベストエフォートで、Telegramボットトークンが必要です)。 - 以前にペアリングストアの許可リストファイルに依存していた場合、`openclaw doctor --fix` は allowlist フローにおいて項目を `channels.telegram.allowFrom` に復旧できます(たとえば `dmPolicy: "allowlist"` にまだ明示的なIDがない場合)。 + `channels.telegram.allowFrom` は数値の Telegram ユーザー ID を受け付けます。`telegram:` / `tg:` プレフィックスも受け付けられ、正規化されます。 + `allowFrom` が空の `dmPolicy: "allowlist"` はすべての DM をブロックし、config 検証で拒否されます。 + セットアップでは数値のユーザー ID のみを要求します。 + アップグレード済みで config に `@username` の allowlist エントリが含まれている場合は、それらを解決するために `openclaw doctor --fix` を実行してください(ベストエフォート。Telegram ボットトークンが必要です)。 + 以前にペアリングストアの allowlist ファイルに依存していた場合、allowlist フローで `openclaw doctor --fix` によりエントリを `channels.telegram.allowFrom` に復旧できます(たとえば `dmPolicy: "allowlist"` にまだ明示的な ID がない場合)。 - 単一オーナーのボットでは、以前のペアリング承認に依存するのではなく、アクセスポリシーをconfigで永続化するために、明示的な数値 `allowFrom` IDを持つ `dmPolicy: "allowlist"` を推奨します。 + 単一オーナーのボットでは、アクセスポリシーを以前のペアリング承認に依存させるのではなく、config に永続化するために、明示的な数値 `allowFrom` ID を使った `dmPolicy: "allowlist"` を推奨します。 - よくある混乱点: DMのペアリング承認は「この送信者がどこでも認可される」ことを意味しません。 - ペアリングが付与するのはDMアクセスのみです。グループ送信者の認可は、引き続き明示的なconfig許可リストから行われます。 - 「一度認可されれば、DMもグループコマンドも両方使える」ようにしたい場合は、数値のTelegramユーザーIDを `channels.telegram.allowFrom` に入れてください。 + よくある混乱点: DM のペアリング承認は「この送信者がどこでも認可される」ことを意味しません。 + ペアリングは DM アクセスのみを付与します。グループ送信者の認可は依然として明示的な config の allowlist によって行われます。 + 「一度認可されたら DM もグループコマンドも両方使える」ようにしたい場合は、自分の数値 Telegram ユーザー ID を `channels.telegram.allowFrom` に入れてください。 - ### TelegramユーザーIDを見つける + ### Telegram ユーザー ID を見つける より安全な方法(サードパーティボット不要): - 1. ボットにDMを送る。 + 1. 自分のボットに DM を送る。 2. `openclaw logs --follow` を実行する。 - 3. `from.id` を読む。 + 3. `from.id` を確認する。 - 公式Bot APIの方法: + 公式 Bot API の方法: ```bash curl "https://api.telegram.org/bot/getUpdates" @@ -150,31 +150,31 @@ curl "https://api.telegram.org/bot/getUpdates" - - 2つの制御が組み合わせて適用されます。 + + 2 つの制御が一緒に適用されます。 1. **どのグループが許可されるか**(`channels.telegram.groups`) - - `groups` configなし: - - `groupPolicy: "open"` の場合: どのグループでもグループIDチェックを通過できます + - `groups` config なし: + - `groupPolicy: "open"` の場合: 任意のグループがグループ ID チェックを通過できます - `groupPolicy: "allowlist"`(デフォルト)の場合: `groups` エントリ(または `"*"`)を追加するまでグループはブロックされます - - `groups` が設定されている場合: 許可リストとして機能します(明示的なIDまたは `"*"`) + - `groups` を設定した場合: allowlist として機能します(明示的な ID または `"*"`) 2. **グループ内でどの送信者が許可されるか**(`channels.telegram.groupPolicy`) - `open` - `allowlist`(デフォルト) - `disabled` - `groupAllowFrom` はグループ送信者フィルタリングに使用されます。設定されていない場合、Telegramは `allowFrom` にフォールバックします。 - `groupAllowFrom` の項目は数値のTelegramユーザーIDにする必要があります(`telegram:` / `tg:` プレフィックスは正規化されます)。 - TelegramのグループまたはスーパーグループのチャットIDを `groupAllowFrom` に入れないでください。負のチャットIDは `channels.telegram.groups` の下に置いてください。 - 数値でない項目は送信者認可で無視されます。 - セキュリティ境界(`2026.2.25+`): グループ送信者認証はDMのペアリングストア承認を継承しません。 - ペアリングは引き続きDM専用です。グループについては、`groupAllowFrom` またはグループごと/トピックごとの `allowFrom` を設定してください。 - `groupAllowFrom` が未設定の場合、Telegramはペアリングストアではなくconfigの `allowFrom` にフォールバックします。 - 単一オーナーのボット向けの実用的なパターン: ユーザーIDを `channels.telegram.allowFrom` に設定し、`groupAllowFrom` は未設定のままにして、対象グループを `channels.telegram.groups` で許可します。 - ランタイム注記: `channels.telegram` が完全に欠けている場合、`channels.defaults.groupPolicy` が明示的に設定されていない限り、ランタイムのデフォルトはフェイルクローズドの `groupPolicy="allowlist"` です。 + `groupAllowFrom` はグループ送信者のフィルタリングに使われます。設定されていない場合、Telegram は `allowFrom` にフォールバックします。 + `groupAllowFrom` のエントリは数値の Telegram ユーザー ID にしてください(`telegram:` / `tg:` プレフィックスは正規化されます)。 + Telegram のグループまたはスーパーグループのチャット ID を `groupAllowFrom` に入れないでください。負のチャット ID は `channels.telegram.groups` に属します。 + 数値でないエントリは送信者認可では無視されます。 + セキュリティ境界(`2026.2.25+`): グループ送信者認証は DM のペアリングストア承認を継承しません。 + ペアリングは DM 専用のままです。グループでは `groupAllowFrom` またはグループごと/トピックごとの `allowFrom` を設定してください。 + `groupAllowFrom` が未設定の場合、Telegram はペアリングストアではなく config の `allowFrom` にフォールバックします。 + 単一オーナーのボット向けの実用パターン: 自分のユーザー ID を `channels.telegram.allowFrom` に設定し、`groupAllowFrom` は未設定のままにし、対象グループを `channels.telegram.groups` で許可します。 + ランタイム上の注意: `channels.telegram` が完全に欠けている場合、`channels.defaults.groupPolicy` が明示的に設定されていない限り、ランタイムのデフォルトは fail-closed の `groupPolicy="allowlist"` です。 - 例: 特定の1つのグループで任意のメンバーを許可する + 例: 特定の 1 つのグループで任意のメンバーを許可する: ```json5 { @@ -191,7 +191,7 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - 例: 特定の1つのグループ内で特定のユーザーだけを許可する + 例: 特定の 1 つのグループ内で特定のユーザーのみを許可する: ```json5 { @@ -209,22 +209,22 @@ curl "https://api.telegram.org/bot/getUpdates" ``` - よくある間違い: `groupAllowFrom` はTelegramグループの許可リストではありません。 + よくある誤り: `groupAllowFrom` は Telegram グループの allowlist ではありません。 - - `-1001234567890` のような負のTelegramグループまたはスーパーグループのチャットIDは `channels.telegram.groups` の下に置いてください。 - - 許可済みグループ内でボットをトリガーできる人を制限したい場合は、`8734062810` のようなTelegramユーザーIDを `groupAllowFrom` の下に置いてください。 - - 許可済みグループの任意のメンバーがボットに話しかけられるようにしたい場合にのみ `groupAllowFrom: ["*"]` を使用してください。 + - `-1001234567890` のような負の Telegram グループまたはスーパーグループのチャット ID は `channels.telegram.groups` に入れてください。 + - 許可されたグループ内でどの人がボットをトリガーできるかを制限したい場合は、`8734062810` のような Telegram ユーザー ID を `groupAllowFrom` に入れてください。 + - 許可されたグループの任意のメンバーがボットに話しかけられるようにしたい場合にのみ、`groupAllowFrom: ["*"]` を使ってください。 - グループ返信はデフォルトでメンションが必要です。 + グループ返信ではデフォルトでメンションが必要です。 - メンションは次から行えます。 + メンションは次のいずれかで行えます。 - ネイティブの `@botusername` メンション - - 次にあるメンションパターン: + - 次のメンションパターン: - `agents.list[].groupChat.mentionPatterns` - `messages.groupChat.mentionPatterns` @@ -233,9 +233,9 @@ curl "https://api.telegram.org/bot/getUpdates" - `/activation always` - `/activation mention` - これらはセッション状態のみを更新します。永続化にはconfigを使用してください。 + これらはセッション状態のみを更新します。永続化するには config を使ってください。 - 永続configの例: + 永続 config の例: ```json5 { @@ -249,10 +249,10 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - グループチャットIDを取得する方法: + グループチャット ID を取得する方法: - グループメッセージを `@userinfobot` / `@getidsbot` に転送する - - または `openclaw logs --follow` から `chat.id` を読む + - または `openclaw logs --follow` の `chat.id` を確認する - または Bot API の `getUpdates` を確認する @@ -260,74 +260,75 @@ curl "https://api.telegram.org/bot/getUpdates" ## ランタイム動作 -- Telegramはgatewayプロセスによって所有されます。 -- ルーティングは決定的です: Telegramからの受信返信はTelegramへ返されます(モデルはチャネルを選択しません)。 -- 受信メッセージは、返信メタデータとメディアプレースホルダーを含む共有チャネルエンベロープへ正規化されます。 -- グループセッションはグループIDごとに分離されます。フォーラムトピックはトピックを分離するために `:topic:` を付加します。 -- DMメッセージは `message_thread_id` を持つことができます。OpenClawはそれらをスレッド対応のセッションキーでルーティングし、返信用にスレッドIDを保持します。 -- ロングポーリングはチャットごと/スレッドごとのシーケンシングを備えた grammY runner を使用します。runner sink 全体の並行性は `agents.defaults.maxConcurrent` を使用します。 -- ロングポーリングのウォッチドッグ再起動は、デフォルトで完了した `getUpdates` の生存確認が120秒ない場合にトリガーされます。長時間実行の処理中にもデプロイメントで誤ったポーリング停止再起動が発生する場合にのみ、`channels.telegram.pollingStallThresholdMs` を増やしてください。値の単位はミリ秒で、`30000` から `600000` まで許可されます。アカウントごとのオーバーライドにも対応しています。 -- Telegram Bot APIには既読通知サポートがありません(`sendReadReceipts` は適用されません)。 +- Telegram は Gateway プロセスによって所有されます。 +- ルーティングは決定的です。Telegram の受信返信は Telegram に返されます(モデルがチャネルを選ぶことはありません)。 +- 受信メッセージは、返信メタデータとメディアプレースホルダーを持つ共有チャネルエンベロープに正規化されます。 +- グループセッションはグループ ID ごとに分離されます。フォーラムトピックはトピックを分離するために `:topic:` を追加します。 +- DM メッセージは `message_thread_id` を持つことができ、OpenClaw はそれをスレッド対応のセッションキーでルーティングし、返信のために thread ID を保持します。 +- ロングポーリングは、チャットごと/スレッドごとのシーケンシング付きで grammY runner を使用します。ランナー sink 全体の並行性は `agents.defaults.maxConcurrent` を使用します。 +- ロングポーリングの watchdog 再起動は、デフォルトで `getUpdates` の完了した生存確認が 120 秒間ない場合にトリガーされます。長時間実行の作業中にデプロイ環境で誤った polling-stall 再起動がまだ発生する場合にのみ、`channels.telegram.pollingStallThresholdMs` を増やしてください。値はミリ秒で、`30000` から `600000` の範囲で許可されます。アカウントごとのオーバーライドもサポートされます。 +- Telegram Bot API には既読通知のサポートがありません(`sendReadReceipts` は適用されません)。 ## 機能リファレンス - OpenClawは部分返信をリアルタイムでストリーミングできます。 + OpenClaw は部分的な返信をリアルタイムでストリーミングできます。 - ダイレクトチャット: プレビューメッセージ + `editMessageText` - グループ/トピック: プレビューメッセージ + `editMessageText` 要件: - - `channels.telegram.streaming` は `off | partial | block | progress` です(デフォルト: `partial`) - - `progress` はTelegram上では `partial` にマッピングされます(チャネル横断の命名互換性のため) - - 旧来の `channels.telegram.streamMode` と真偽値の `streaming` は自動マッピングされます + - `channels.telegram.streaming` が `off | partial | block | progress` のいずれかであること(デフォルト: `partial`) + - `progress` は Telegram では `partial` にマッピングされます(チャネル横断の命名との互換性のため) + - `streaming.preview.toolProgress` は、ツール/進捗更新で同じ編集済みプレビューメッセージを再利用するかどうかを制御します(デフォルト: `true`)。別々のツール/進捗メッセージを保持するには `false` に設定してください。 + - 旧来の `channels.telegram.streamMode` とブール値の `streaming` は自動的にマッピングされます テキストのみの返信の場合: - - DM: OpenClawは同じプレビューメッセージを保持し、その場で最終編集を行います(2つ目のメッセージはありません) - - グループ/トピック: OpenClawは同じプレビューメッセージを保持し、その場で最終編集を行います(2つ目のメッセージはありません) + - DM: OpenClaw は同じプレビューメッセージを保持し、最終的な編集をその場で行います(2 つ目のメッセージはありません) + - グループ/トピック: OpenClaw は同じプレビューメッセージを保持し、最終的な編集をその場で行います(2 つ目のメッセージはありません) - 複雑な返信(たとえばメディアペイロード)の場合、OpenClawは通常の最終配信にフォールバックし、その後プレビューメッセージをクリーンアップします。 + 複雑な返信(たとえばメディアペイロード)の場合、OpenClaw は通常の最終配信にフォールバックし、その後プレビューメッセージをクリーンアップします。 - プレビュー配信はブロックストリーミングとは別です。Telegramでブロックストリーミングが明示的に有効な場合、OpenClawは二重ストリーミングを避けるためにプレビューストリームをスキップします。 + プレビューストリーミングは block ストリーミングとは別です。Telegram で block ストリーミングが明示的に有効になっている場合、OpenClaw は二重ストリーミングを避けるためにプレビューストリームをスキップします。 - ネイティブドラフト転送が利用できない/拒否された場合、OpenClawは自動的に `sendMessage` + `editMessageText` にフォールバックします。 + ネイティブのドラフト転送が利用できない/拒否された場合、OpenClaw は自動的に `sendMessage` + `editMessageText` にフォールバックします。 - Telegram専用のreasoningストリーム: + Telegram 専用の reasoning ストリーム: - - `/reasoning stream` は生成中のreasoningをライブプレビューに送信します - - 最終回答はreasoningテキストなしで送信されます + - `/reasoning stream` は生成中に reasoning をライブプレビューへ送信します + - 最終回答は reasoning テキストなしで送信されます - - 送信テキストはTelegramの `parse_mode: "HTML"` を使用します。 + + 送信テキストは Telegram の `parse_mode: "HTML"` を使用します。 - - Markdown風テキストはTelegram安全なHTMLにレンダリングされます。 - - 生のモデルHTMLは、Telegramのパース失敗を減らすためにエスケープされます。 - - Telegramがパース済みHTMLを拒否した場合、OpenClawはプレーンテキストとして再試行します。 + - Markdown 風テキストは Telegram 安全な HTML にレンダリングされます。 + - 生のモデル HTML は Telegram の解析失敗を減らすためにエスケープされます。 + - Telegram が解析済み HTML を拒否した場合、OpenClaw はプレーンテキストとして再試行します。 - リンクプレビューはデフォルトで有効で、`channels.telegram.linkPreview: false` で無効化できます。 + リンクプレビューはデフォルトで有効で、`channels.telegram.linkPreview: false` で無効にできます。 - Telegramコマンドメニュー登録は起動時に `setMyCommands` で処理されます。 + Telegram のコマンドメニュー登録は、起動時に `setMyCommands` で処理されます。 ネイティブコマンドのデフォルト: - - `commands.native: "auto"` はTelegramのネイティブコマンドを有効にします + - `commands.native: "auto"` は Telegram のネイティブコマンドを有効にします - カスタムコマンドメニュー項目を追加するには: + カスタムコマンドメニューエントリを追加する: ```json5 { channels: { telegram: { customCommands: [ - { command: "backup", description: "Gitバックアップ" }, + { command: "backup", description: "Git バックアップ" }, { command: "generate", description: "画像を作成" }, ], }, @@ -338,37 +339,37 @@ curl "https://api.telegram.org/bot/getUpdates" ルール: - 名前は正規化されます(先頭の `/` を除去し、小文字化) - - 有効なパターン: `a-z`, `0-9`, `_`, 長さ `1..32` + - 有効なパターン: `a-z`、`0-9`、`_`、長さ `1..32` - カスタムコマンドはネイティブコマンドを上書きできません - 競合/重複はスキップされ、ログに記録されます - 注記: + 注意: - カスタムコマンドはメニュー項目のみであり、動作は自動実装されません - - plugin/skill コマンドは、Telegramメニューに表示されていなくても、入力すれば動作することがあります + - plugin/skill コマンドは、Telegram メニューに表示されていなくても、入力すれば引き続き動作する場合があります - ネイティブコマンドが無効な場合、組み込みコマンドは削除されます。設定されていれば、カスタム/plugin コマンドは引き続き登録されることがあります。 + ネイティブコマンドが無効な場合、組み込みコマンドは削除されます。設定されていれば、カスタム/plugin コマンドは引き続き登録される場合があります。 よくあるセットアップ失敗: - - `BOT_COMMANDS_TOO_MUCH` を伴う `setMyCommands failed` は、トリミング後もTelegramメニューがまだ上限を超えていることを意味します。plugin/skill/custom コマンドを減らすか、`channels.telegram.commands.native` を無効にしてください。 - - ネットワーク/fetch エラーを伴う `setMyCommands failed` は、通常 `api.telegram.org` への外向きDNS/HTTPSがブロックされていることを意味します。 + - `setMyCommands failed` で `BOT_COMMANDS_TOO_MUCH` が出る場合、削減後でも Telegram メニューがまだ上限超過しています。plugin/skill/カスタムコマンドを減らすか、`channels.telegram.commands.native` を無効にしてください。 + - `setMyCommands failed` で network/fetch エラーが出る場合、通常は `api.telegram.org` への外向き DNS/HTTPS がブロックされています。 - ### デバイスのペアリングコマンド(`device-pair` plugin) + ### デバイスペアリングコマンド(`device-pair` plugin) `device-pair` plugin がインストールされている場合: 1. `/pair` でセットアップコードを生成します - 2. iOSアプリにコードを貼り付けます - 3. `/pair pending` で保留中のリクエスト一覧を表示します(role/scopes を含む) + 2. iOS アプリにコードを貼り付けます + 3. `/pair pending` で保留中のリクエストを一覧表示します(role/scopes を含む) 4. リクエストを承認します: - - 明示的に承認する場合は `/pair approve ` - - 保留中のリクエストが1つだけの場合は `/pair approve` - - 最新のものを承認する場合は `/pair approve latest` + - 明示的に承認するには `/pair approve ` + - 保留中のリクエストが 1 件だけの場合は `/pair approve` + - 最新のものには `/pair approve latest` - セットアップコードには短命のブートストラップトークンが含まれます。組み込みのブートストラップ引き継ぎでは、プライマリ Node トークンは `scopes: []` のまま維持されます。引き渡された operator トークンは、`operator.approvals`、`operator.read`、`operator.talk.secrets`、`operator.write` に制限されたままです。ブートストラップスコープチェックには role プレフィックスが付くため、この operator 許可リストは operator リクエストのみを満たします。operator 以外の role では、引き続きそれぞれの role プレフィックス配下の scopes が必要です。 + セットアップコードには短命の bootstrap トークンが含まれます。組み込みの bootstrap handoff では、プライマリ Node トークンは `scopes: []` のまま維持されます。引き渡された operator トークンは `operator.approvals`、`operator.read`、`operator.talk.secrets`、`operator.write` に限定されたままになります。Bootstrap スコープチェックには role プレフィックスが付くため、その operator allowlist は operator リクエストのみを満たします。operator 以外の role では、引き続き自身の role プレフィックス配下の scopes が必要です。 - デバイスが変更された認証詳細(たとえば role/scopes/public key)で再試行した場合、以前の保留中リクエストは置き換えられ、新しいリクエストは別の `requestId` を使用します。承認前に `/pair pending` を再実行してください。 + デバイスが変更された認証詳細(たとえば role/scopes/public key)で再試行した場合、以前の保留中リクエストは置き換えられ、新しいリクエストは異なる `requestId` を使います。承認前に `/pair pending` を再実行してください。 詳細: [ペアリング](/ja-JP/channels/pairing#pair-via-telegram-recommended-for-ios)。 @@ -415,7 +416,7 @@ curl "https://api.telegram.org/bot/getUpdates" - `all` - `allowlist`(デフォルト) - 従来の `capabilities: ["inlineButtons"]` は `inlineButtons: "all"` にマッピングされます。 + 旧来の `capabilities: ["inlineButtons"]` は `inlineButtons: "all"` にマッピングされます。 メッセージアクションの例: @@ -424,13 +425,13 @@ curl "https://api.telegram.org/bot/getUpdates" action: "send", channel: "telegram", to: "123456789", - message: "オプションを選択してください:", + message: "Choose an option:", buttons: [ [ - { text: "はい", callback_data: "yes" }, - { text: "いいえ", callback_data: "no" }, + { text: "Yes", callback_data: "yes" }, + { text: "No", callback_data: "no" }, ], - [{ text: "キャンセル", callback_data: "cancel" }], + [{ text: "Cancel", callback_data: "cancel" }], ], } ``` @@ -440,36 +441,36 @@ curl "https://api.telegram.org/bot/getUpdates" - - Telegramツールアクションには次が含まれます: + + Telegram ツールアクションには次が含まれます: - - `sendMessage`(`to`, `content`, オプションの `mediaUrl`, `replyToMessageId`, `messageThreadId`) - - `react`(`chatId`, `messageId`, `emoji`) - - `deleteMessage`(`chatId`, `messageId`) - - `editMessage`(`chatId`, `messageId`, `content`) - - `createForumTopic`(`chatId`, `name`, オプションの `iconColor`, `iconCustomEmojiId`) + - `sendMessage`(`to`、`content`、任意で `mediaUrl`、`replyToMessageId`、`messageThreadId`) + - `react`(`chatId`、`messageId`、`emoji`) + - `deleteMessage`(`chatId`、`messageId`) + - `editMessage`(`chatId`、`messageId`、`content`) + - `createForumTopic`(`chatId`、`name`、任意で `iconColor`、`iconCustomEmojiId`) - チャネルメッセージアクションは使いやすいエイリアスを公開します(`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`)。 + チャネルメッセージアクションは使いやすいエイリアスを提供します(`send`、`react`、`delete`、`edit`、`sticker`、`sticker-search`、`topic-create`)。 - ゲート制御: + ゲーティング制御: - `channels.telegram.actions.sendMessage` - `channels.telegram.actions.deleteMessage` - `channels.telegram.actions.reactions` - `channels.telegram.actions.sticker`(デフォルト: 無効) - 注記: `edit` と `topic-create` は現在デフォルトで有効で、個別の `channels.telegram.actions.*` トグルはありません。 - ランタイム送信はアクティブな config/secrets スナップショット(起動時/リロード時)を使用するため、アクション経路では送信ごとにその場で SecretRef を再解決しません。 + 注意: `edit` と `topic-create` は現在デフォルトで有効で、個別の `channels.telegram.actions.*` トグルはありません。 + ランタイム送信はアクティブな config/secrets スナップショット(起動時/再読み込み時)を使用するため、アクションパスでは送信ごとにその場で SecretRef を再解決しません。 - リアクション削除のセマンティクス: [/tools/reactions](/ja-JP/tools/reactions) + リアクション削除の意味論: [/tools/reactions](/ja-JP/tools/reactions) - - Telegramは生成出力内の明示的な返信スレッドタグをサポートします: + + Telegram は生成出力内の明示的な返信スレッディングタグをサポートします: - - `[[reply_to_current]]` はトリガーとなったメッセージに返信します - - `[[reply_to:]]` は特定のTelegramメッセージIDに返信します + - `[[reply_to_current]]` はトリガーしたメッセージに返信します + - `[[reply_to:]]` は特定の Telegram メッセージ ID に返信します `channels.telegram.replyToMode` が処理方法を制御します: @@ -477,27 +478,27 @@ curl "https://api.telegram.org/bot/getUpdates" - `first` - `all` - 注記: `off` は暗黙の返信スレッド化を無効にします。明示的な `[[reply_to_*]]` タグは引き続き尊重されます。 + 注意: `off` は暗黙の返信スレッディングを無効にします。明示的な `[[reply_to_*]]` タグは引き続き尊重されます。 フォーラムスーパーグループ: - - トピックのセッションキーには `:topic:` が追加されます - - 返信とタイピングはそのトピックスレッドを対象にします - - トピック設定パス: + - トピックセッションキーは `:topic:` を追加します + - 返信と入力中表示はそのトピックスレッドを対象にします + - トピック config パス: `channels.telegram.groups..topics.` 一般トピック(`threadId=1`)の特別扱い: - - メッセージ送信では `message_thread_id` を省略します(Telegramは `sendMessage(...thread_id=1)` を拒否します) - - タイピングアクションでは引き続き `message_thread_id` を含めます + - メッセージ送信では `message_thread_id` を省略します(Telegram は `sendMessage(...thread_id=1)` を拒否します) + - 入力中アクションには引き続き `message_thread_id` が含まれます - トピック継承: トピック項目は、上書きされない限りグループ設定を継承します(`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`)。 - `agentId` はトピック専用で、グループデフォルトからは継承されません。 + トピック継承: トピックエントリは、上書きされない限りグループ設定(`requireMention`、`allowFrom`、`skills`、`systemPrompt`、`enabled`、`groupPolicy`)を継承します。 + `agentId` はトピック専用で、グループのデフォルトからは継承されません。 - **トピックごとの agent ルーティング**: 各トピックは、トピック設定で `agentId` を設定することで別の agent にルーティングできます。これにより各トピックは独自に分離されたワークスペース、メモリ、セッションを持てます。例: + **トピックごとの agent ルーティング**: 各トピックは、トピック config に `agentId` を設定することで別の agent にルーティングできます。これにより、各トピックは独立した workspace、memory、session を持てます。例: ```json5 { @@ -517,11 +518,11 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - 各トピックはその後、それぞれ独自のセッションキーを持ちます: `agent:zu:telegram:group:-1001234567890:topic:3` + 各トピックはそれぞれ独自のセッションキーを持ちます: `agent:zu:telegram:group:-1001234567890:topic:3` - **永続的な ACP トピックバインディング**: フォーラムトピックは、トップレベルの型付きACPバインディングを通じてACPハーネスセッションを固定できます: + **永続 ACP トピックバインディング**: フォーラムトピックは、トップレベルの型付き ACP バインディングを通じて ACP harness セッションを固定できます: - - `bindings[]` で `type: "acp"` および `match.channel: "telegram"` を使用 + - `bindings[]` で `type: "acp"` かつ `match.channel: "telegram"` 例: @@ -572,11 +573,11 @@ curl "https://api.telegram.org/bot/getUpdates" これは現在、グループおよびスーパーグループ内のフォーラムトピックに限定されています。 - **チャットからのスレッドバインドACP起動**: + **チャットからのスレッドバインド ACP 起動**: - - `/acp spawn --thread here|auto` で、現在のTelegramトピックを新しいACPセッションにバインドできます。 - - 以後のトピックメッセージは、バインドされたACPセッションへ直接ルーティングされます(`/acp steer` は不要)。 - - OpenClawは、バインド成功後に起動確認メッセージをそのトピック内に固定します。 + - `/acp spawn --thread here|auto` で、現在の Telegram トピックを新しい ACP セッションにバインドできます。 + - 以後のトピックメッセージは、バインドされた ACP セッションへ直接ルーティングされます(`/acp steer` は不要)。 + - OpenClaw はバインド成功後、起動確認メッセージをそのトピック内に固定します。 - `channels.telegram.threadBindings.spawnAcpSessions=true` が必要です。 テンプレートコンテキストには次が含まれます: @@ -584,19 +585,19 @@ curl "https://api.telegram.org/bot/getUpdates" - `MessageThreadId` - `IsForum` - DMスレッド動作: + DM スレッド動作: - - `message_thread_id` を持つプライベートチャットはDMルーティングを維持しますが、スレッド対応のセッションキー/返信先を使用します。 + - `message_thread_id` を持つプライベートチャットは、DM ルーティングを維持しつつ、スレッド対応のセッションキー/返信先を使用します。 - + ### 音声メッセージ - Telegramはボイスノートと音声ファイルを区別します。 + Telegram はボイスノートと音声ファイルを区別します。 - - デフォルト: 音声ファイルとしての動作 - - agent の返信内でタグ `[[audio_as_voice]]` を使うと、ボイスノート送信を強制します + - デフォルト: 音声ファイル動作 + - agent の返信にタグ `[[audio_as_voice]]` を付けると、ボイスノート送信を強制します メッセージアクションの例: @@ -612,7 +613,7 @@ curl "https://api.telegram.org/bot/getUpdates" ### 動画メッセージ - Telegramは動画ファイルとビデオノートを区別します。 + Telegram は動画ファイルとビデオノートを区別します。 メッセージアクションの例: @@ -626,15 +627,15 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - ビデオノートはキャプションをサポートしていません。指定されたメッセージテキストは別送されます。 + ビデオノートはキャプションをサポートしません。指定されたメッセージテキストは別送されます。 ### ステッカー 受信ステッカーの処理: - - 静的WEBP: ダウンロードして処理(プレースホルダー ``) - - アニメーションTGS: スキップ - - 動画WEBM: スキップ + - 静的 WEBP: ダウンロードして処理されます(プレースホルダー ``) + - アニメーション TGS: スキップされます + - 動画 WEBM: スキップされます ステッカーのコンテキストフィールド: @@ -648,9 +649,9 @@ curl "https://api.telegram.org/bot/getUpdates" - `~/.openclaw/telegram/sticker-cache.json` - ステッカーは、繰り返しのvision呼び出しを減らすために、可能な場合は一度だけ説明されてキャッシュされます。 + ステッカーは、繰り返しの vision 呼び出しを減らすために、一度だけ説明されて(可能な場合)キャッシュされます。 - ステッカーアクションを有効にするには: + ステッカーアクションを有効にする: ```json5 { @@ -675,13 +676,13 @@ curl "https://api.telegram.org/bot/getUpdates" } ``` - キャッシュ済みステッカーを検索: + キャッシュ済みステッカーを検索する: ```json5 { action: "sticker-search", channel: "telegram", - query: "手を振る猫", + query: "cat waving", limit: 5, } ``` @@ -689,55 +690,55 @@ curl "https://api.telegram.org/bot/getUpdates" - Telegramのリアクションは `message_reaction` 更新として届きます(メッセージペイロードとは別です)。 + Telegram のリアクションは `message_reaction` 更新として届きます(メッセージペイロードとは別です)。 - 有効な場合、OpenClawは次のようなシステムイベントをキューに入れます: + 有効時、OpenClaw は次のようなシステムイベントをキューに入れます: - `Telegram reaction added: 👍 by Alice (@alice) on msg 42` - 設定: + config: - `channels.telegram.reactionNotifications`: `off | own | all`(デフォルト: `own`) - `channels.telegram.reactionLevel`: `off | ack | minimal | extensive`(デフォルト: `minimal`) - 注記: + 注意: - - `own` は、ボットが送信したメッセージに対するユーザーリアクションのみを意味します(送信メッセージキャッシュによるベストエフォート)。 - - リアクションイベントは引き続きTelegramのアクセス制御(`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`)に従います。未認可の送信者は破棄されます。 - - Telegramはリアクション更新にスレッドIDを提供しません。 - - フォーラムでないグループはグループチャットセッションにルーティングされます - - フォーラムグループは、その元の正確なトピックではなく、グループの一般トピックセッション(`:topic:1`)にルーティングされます + - `own` は、ボットが送信したメッセージに対するユーザーのリアクションのみを意味します(送信メッセージキャッシュによるベストエフォート)。 + - リアクションイベントは引き続き Telegram のアクセス制御(`dmPolicy`、`allowFrom`、`groupPolicy`、`groupAllowFrom`)に従います。未認可の送信者は破棄されます。 + - Telegram はリアクション更新にスレッド ID を提供しません。 + - 非フォーラムグループはグループチャットセッションにルーティングされます + - フォーラムグループは、正確な元トピックではなく、グループの一般トピックセッション(`:topic:1`)にルーティングされます - ポーリング/Webhook 用の `allowed_updates` には `message_reaction` が自動的に含まれます。 + ポーリング/Webhook の `allowed_updates` には `message_reaction` が自動的に含まれます。 - - `ackReaction` は、OpenClawが受信メッセージを処理している間、確認用の絵文字を送信します。 + + `ackReaction` は、OpenClaw が受信メッセージを処理している間、確認用の絵文字を送信します。 解決順序: - `channels.telegram.accounts..ackReaction` - `channels.telegram.ackReaction` - `messages.ackReaction` - - agent identity の絵文字フォールバック(`agents.list[].identity.emoji`、なければ `"👀"`) + - agent identity emoji へのフォールバック(`agents.list[].identity.emoji`、なければ "👀") - 注記: + 注意: - - TelegramはUnicode絵文字を想定しています(たとえば `"👀"`)。 - - チャネルまたはアカウントでリアクションを無効化するには `""` を使用してください。 + - Telegram は Unicode 絵文字を期待します(たとえば "👀")。 + - チャネルまたはアカウントでリアクションを無効にするには `""` を使用してください。 - - チャネルconfig書き込みはデフォルトで有効です(`configWrites !== false`)。 + + チャネル config の書き込みはデフォルトで有効です(`configWrites !== false`)。 - Telegramトリガーの書き込みには次が含まれます: + Telegram トリガーの書き込みには次が含まれます: - `channels.telegram.groups` を更新するためのグループ移行イベント(`migrate_to_chat_id`) - - `/config set` および `/config unset`(コマンド有効化が必要) + - `/config set` と `/config unset`(コマンド有効化が必要) - 無効化するには: + 無効化: ```json5 { @@ -751,46 +752,46 @@ curl "https://api.telegram.org/bot/getUpdates" - + デフォルト: ロングポーリング。 - Webhookモード: + Webhook モード: - `channels.telegram.webhookUrl` を設定 - - `channels.telegram.webhookSecret` を設定(Webhook URLが設定されている場合は必須) + - `channels.telegram.webhookSecret` を設定(Webhook URL 設定時は必須) - 任意の `channels.telegram.webhookPath`(デフォルト `/telegram-webhook`) - 任意の `channels.telegram.webhookHost`(デフォルト `127.0.0.1`) - 任意の `channels.telegram.webhookPort`(デフォルト `8787`) - Webhookモードのデフォルトのローカルリスナーは `127.0.0.1:8787` にバインドされます。 + Webhook モードのデフォルトのローカルリスナーは `127.0.0.1:8787` にバインドされます。 - 公開エンドポイントが異なる場合は、手前にリバースプロキシを置き、`webhookUrl` をその公開URLに向けてください。 - 意図的に外部からの流入が必要な場合は、`webhookHost`(たとえば `0.0.0.0`)を設定してください。 + 公開エンドポイントが異なる場合は、前段にリバースプロキシを配置し、公開 URL を `webhookUrl` に指定してください。 + 意図的に外部からの受信を必要とする場合は、`webhookHost`(たとえば `0.0.0.0`)を設定してください。 - + - `channels.telegram.textChunkLimit` のデフォルトは 4000 です。 - `channels.telegram.chunkMode="newline"` は、長さで分割する前に段落境界(空行)を優先します。 - - `channels.telegram.mediaMaxMb`(デフォルト 100)は、受信および送信のTelegramメディアサイズ上限を設定します。 - - `channels.telegram.timeoutSeconds` はTelegram APIクライアントのタイムアウトを上書きします(未設定の場合は grammY のデフォルトが適用されます)。 - - `channels.telegram.pollingStallThresholdMs` のデフォルトは `120000` です。誤検知のポーリング停止再起動に対してのみ、`30000` から `600000` の範囲で調整してください。 - - グループコンテキスト履歴は `channels.telegram.historyLimit` または `messages.groupChat.historyLimit` を使用します(デフォルト 50)。`0` で無効になります。 - - 返信/引用/転送の補足コンテキストは現在、受信したとおりに渡されます。 - - Telegramの許可リストは主に、誰が agent をトリガーできるかを制御するものであり、完全な補足コンテキストの秘匿境界ではありません。 - - DM履歴の制御: + - `channels.telegram.mediaMaxMb`(デフォルト 100)は、受信および送信の Telegram メディアサイズの上限です。 + - `channels.telegram.timeoutSeconds` は Telegram API クライアントのタイムアウトを上書きします(未設定時は grammY のデフォルトが適用されます)。 + - `channels.telegram.pollingStallThresholdMs` のデフォルトは `120000` です。誤検知の polling-stall 再起動に対してのみ、`30000` から `600000` の範囲で調整してください。 + - グループコンテキスト履歴は `channels.telegram.historyLimit` または `messages.groupChat.historyLimit` を使用します(デフォルト 50)。`0` で無効化されます。 + - reply/quote/forward の補足コンテキストは現在、受信したまま渡されます。 + - Telegram の allowlist は主に、誰が agent をトリガーできるかを制御するものであり、完全な補足コンテキストの秘匿境界ではありません。 + - DM 履歴の制御: - `channels.telegram.dmHistoryLimit` - `channels.telegram.dms[""].historyLimit` - - `channels.telegram.retry` 設定は、回復可能な送信APIエラーに対してTelegram送信ヘルパー(CLI/tools/actions)に適用されます。 + - `channels.telegram.retry` config は、回復可能な送信 API エラーに対する Telegram の送信ヘルパー(CLI/ツール/アクション)に適用されます。 - CLI送信ターゲットには数値チャットIDまたはユーザー名を使用できます: + CLI の送信ターゲットには、数値のチャット ID またはユーザー名を使えます: ```bash openclaw message send --channel telegram --target 123456789 --message "hi" openclaw message send --channel telegram --target @name --message "hi" ``` - Telegramの投票には `openclaw message poll` を使用し、フォーラムトピックもサポートしています: + Telegram の投票は `openclaw message poll` を使用し、フォーラムトピックもサポートします: ```bash openclaw message poll --channel telegram --target 123456789 \ @@ -800,78 +801,74 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \ --poll-duration-seconds 300 --poll-public ``` - Telegram専用の投票フラグ: + Telegram 専用の投票フラグ: - `--poll-duration-seconds`(5-600) - `--poll-anonymous` - `--poll-public` - フォーラムトピック用の `--thread-id`(または `:topic:` ターゲットを使用) - Telegram送信は次もサポートしています: + Telegram の送信は次もサポートします: - `channels.telegram.capabilities.inlineButtons` が許可している場合のインラインキーボード用 `--buttons` - - 送信画像とGIFを、圧縮された写真やアニメーションメディアのアップロードではなく、ドキュメントとして送るための `--force-document` + - 送信画像および GIF を、圧縮写真やアニメーションメディアアップロードではなくドキュメントとして送る `--force-document` - アクションゲート: + アクションのゲーティング: - - `channels.telegram.actions.sendMessage=false` は、投票を含む送信Telegramメッセージを無効にします - - `channels.telegram.actions.poll=false` は、通常の送信を有効なままにしてTelegram投票作成を無効にします + - `channels.telegram.actions.sendMessage=false` は、投票を含む送信 Telegram メッセージを無効にします + - `channels.telegram.actions.poll=false` は、通常の送信を有効のままにしつつ Telegram の投票作成を無効にします - - Telegramは承認者DMでのexec承認をサポートし、必要に応じて元のチャットやトピックにも承認プロンプトを投稿できます。 + + Telegram は承認者 DM での exec 承認をサポートし、必要に応じて元のチャットまたはトピックにも承認プロンプトを投稿できます。 - 設定パス: + config パス: - `channels.telegram.execApprovals.enabled` - - `channels.telegram.execApprovals.approvers`(任意。可能な場合は `allowFrom` とダイレクトメッセージの `defaultTo` から推測される数値オーナーIDにフォールバック) + - `channels.telegram.execApprovals.approvers`(任意。可能な場合は `allowFrom` と直接の `defaultTo` から推定された数値オーナー ID にフォールバックします) - `channels.telegram.execApprovals.target`(`dm` | `channel` | `both`、デフォルト: `dm`) - - `agentFilter`, `sessionFilter` + - `agentFilter`、`sessionFilter` - 承認者は数値のTelegramユーザーIDでなければなりません。Telegramは、`enabled` が未設定または `"auto"` で、`execApprovals.approvers` またはアカウントの数値オーナー設定(`allowFrom` およびダイレクトメッセージ `defaultTo`)から少なくとも1人の承認者を解決できる場合、自動的にネイティブexec承認を有効にします。ネイティブ承認クライアントとしてのTelegramを明示的に無効にするには `enabled: false` を設定してください。それ以外の場合、承認リクエストは他の設定済み承認経路またはexec承認フォールバックポリシーにフォールバックします。 + 承認者は数値の Telegram ユーザー ID である必要があります。`enabled` が未設定または `"auto"` で、`execApprovals.approvers` またはそのアカウントの数値オーナー config(`allowFrom` とダイレクトメッセージの `defaultTo`)から少なくとも 1 人の承認者を解決できる場合、Telegram はネイティブ exec 承認を自動有効化します。Telegram をネイティブ承認クライアントとして明示的に無効にするには `enabled: false` を設定してください。そうしない場合、承認リクエストは他の設定済み承認ルートまたは exec 承認フォールバックポリシーにフォールバックします。 - Telegramは他のチャットチャネルで使われる共有承認ボタンもレンダリングします。ネイティブTelegramアダプターは主に、承認者DMルーティング、チャネル/トピックへのファンアウト、および配信前のタイピングヒントを追加します。 - それらのボタンが存在する場合、それが主要な承認UXです。OpenClaw - は、ツール結果でチャット承認が利用できないと示された場合、または手動承認が唯一の経路である場合にのみ、手動 `/approve` コマンドを含めるべきです。 + Telegram は、他のチャットチャネルで使われる共有承認ボタンも描画します。ネイティブ Telegram アダプターは主に、承認者 DM ルーティング、チャネル/トピック fanout、および配信前の入力中ヒントを追加します。 + それらのボタンが存在する場合、それが主要な承認 UX です。OpenClaw は、ツール結果がチャット承認を利用不可としている場合、または手動承認のみが唯一の経路である場合にのみ、手動の `/approve` コマンドを含めるべきです。 配信ルール: - - `target: "dm"` は、解決済み承認者DMにのみ承認プロンプトを送信します - - `target: "channel"` は、元のTelegramチャット/トピックにプロンプトを送り返します - - `target: "both"` は、承認者DMと元のチャット/トピックの両方に送信します + - `target: "dm"` は、解決された承認者 DM にのみ承認プロンプトを送信します + - `target: "channel"` は、承認プロンプトを元の Telegram チャット/トピックへ返送します + - `target: "both"` は、承認者 DM と元のチャット/トピックの両方に送信します - 承認または拒否できるのは解決済み承認者のみです。非承認者は `/approve` を使えず、Telegram承認ボタンも使用できません。 + 承認または拒否できるのは、解決された承認者のみです。非承認者は `/approve` を使えず、Telegram の承認ボタンも使えません。 - 承認解決動作: + 承認解決の動作: - - `plugin:` プレフィックス付きIDは常に plugin 承認を通じて解決されます。 - - それ以外の承認IDは、まず `exec.approval.resolve` を試します。 - - Telegramにも plugin 承認の権限があり、gateway が - そのexec承認を不明/期限切れと返した場合、Telegramは - `plugin.approval.resolve` を通じて1回だけ再試行します。 - - 実際のexec承認拒否/エラーは、黙って plugin - 承認解決にフォールスルーしません。 + - `plugin:` プレフィックス付き ID は常に plugin 承認経由で解決されます。 + - その他の承認 ID は、まず `exec.approval.resolve` を試みます。 + - Telegram も plugin 承認に認可されており、かつ gateway がその exec 承認を不明/期限切れと返した場合、Telegram は `plugin.approval.resolve` 経由で 1 回だけ再試行します。 + - 実際の exec 承認の拒否/エラーは、黙って plugin 承認解決へフォールスルーしません。 - チャネル配信ではチャット内にコマンドテキストが表示されるため、`channel` または `both` は信頼できるグループ/トピックでのみ有効にしてください。プロンプトがフォーラムトピックに届いた場合、OpenClawは承認プロンプトと承認後フォローアップの両方でそのトピックを維持します。exec承認の有効期限はデフォルトで30分です。 + チャネル配信ではチャット内にコマンドテキストが表示されるため、`channel` または `both` は信頼できるグループ/トピックでのみ有効にしてください。プロンプトがフォーラムトピックに届いた場合、OpenClaw は承認プロンプトと承認後フォローアップの両方でそのトピックを保持します。exec 承認のデフォルト有効期限は 30 分です。 - インライン承認ボタンも、`channels.telegram.capabilities.inlineButtons` が対象サーフェス(`dm`、`group`、または `all`)を許可している必要があります。 + インライン承認ボタンは、`channels.telegram.capabilities.inlineButtons` が対象サーフェス(`dm`、`group`、または `all`)を許可していることにも依存します。 - 関連ドキュメント: [Exec承認](/ja-JP/tools/exec-approvals) + 関連ドキュメント: [exec 承認](/ja-JP/tools/exec-approvals) -## エラー返信制御 +## エラー返信の制御 -agent が配信またはプロバイダーエラーに遭遇したとき、Telegramはエラーテキストで返信することも、抑制することもできます。この動作は2つのconfigキーで制御されます。 +agent が配信エラーまたはプロバイダーエラーに遭遇した場合、Telegram はエラーテキストで返信することも、抑制することもできます。この動作は 2 つの config キーで制御されます。 -| Key | Values | Default | 説明 | -| ----------------------------------- | ----------------- | ------- | ---------------------------------------------------------------------------------------- | -| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` は親しみやすいエラーメッセージをチャットに送信します。`silent` はエラー返信を完全に抑制します。 | -| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | 同じチャットへのエラー返信の最小間隔。障害中のエラースパムを防ぎます。 | +| キー | 値 | デフォルト | 説明 | +| ----------------------------------- | ----------------- | ---------- | -------------------------------------------------------------------------------------- | +| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` はチャットにわかりやすいエラーメッセージを送信します。`silent` はエラー返信を完全に抑制します。 | +| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | 同じチャットへのエラー返信の最小間隔。障害時のエラースパムを防ぎます。 | -アカウントごと、グループごと、トピックごとのオーバーライドに対応しています(他のTelegram configキーと同じ継承)。 +アカウントごと、グループごと、トピックごとのオーバーライドがサポートされます(他の Telegram config キーと同じ継承)。 ```json5 { @@ -892,42 +889,42 @@ agent が配信またはプロバイダーエラーに遭遇したとき、Teleg ## トラブルシューティング - + - - `requireMention=false` の場合、Telegramのプライバシーモードで完全可視性が許可されている必要があります。 - - BotFather: `/setprivacy` -> Disable + - `requireMention=false` の場合、Telegram のプライバシーモードで完全な可視性が許可されている必要があります。 + - BotFather: `/setprivacy` -> 無効化 - その後、ボットをグループから削除して再追加 - - `openclaw channels status` は、configがメンションなしグループメッセージを想定している場合に警告します。 - - `openclaw channels status --probe` は明示的な数値グループIDを確認できます。ワイルドカード `"*"` はメンバーシップ検査できません。 - - クイックセッションテスト: `/activation always`。 + - `openclaw channels status` は、config がメンションなしのグループメッセージを期待している場合に警告します。 + - `openclaw channels status --probe` は明示的な数値グループ ID を確認できます。ワイルドカード `"*"` のメンバーシップは probe できません。 + - 手早いセッションテスト: `/activation always` - - `channels.telegram.groups` が存在する場合、グループが一覧に含まれている必要があります(または `"*"` を含める) - - グループ内のボット参加を確認する - - ログを確認: スキップ理由は `openclaw logs --follow` + - `channels.telegram.groups` が存在する場合、そのグループが一覧に含まれている必要があります(または `"*"` を含める) + - グループ内のボットの参加を確認する + - スキップ理由について `openclaw logs --follow` のログを確認する - + - - 送信者IDを認可する(ペアリングおよび/または数値 `allowFrom`) - - グループポリシーが `open` でもコマンド認可は引き続き適用されます - - `BOT_COMMANDS_TOO_MUCH` を伴う `setMyCommands failed` は、ネイティブメニューの項目数が多すぎることを意味します。plugin/skill/custom コマンドを減らすか、ネイティブメニューを無効にしてください - - ネットワーク/fetch エラーを伴う `setMyCommands failed` は、通常 `api.telegram.org` へのDNS/HTTPS到達性の問題を示します + - 送信者 ID を認可する(ペアリングおよび/または数値 `allowFrom`) + - グループポリシーが `open` であっても、コマンド認可は引き続き適用されます + - `setMyCommands failed` で `BOT_COMMANDS_TOO_MUCH` が出る場合、ネイティブメニューの項目数が多すぎます。plugin/skill/カスタムコマンドを減らすか、ネイティブメニューを無効にしてください + - `setMyCommands failed` で network/fetch エラーが出る場合、通常は `api.telegram.org` への DNS/HTTPS 到達性の問題を示します - + - - Node 22+ + カスタム fetch/proxy では、AbortSignal 型の不一致があると即時中断動作が発生することがあります。 - - 一部のホストは `api.telegram.org` をまずIPv6に解決します。壊れたIPv6送信経路は断続的なTelegram API障害を引き起こす可能性があります。 - - ログに `TypeError: fetch failed` または `Network request for 'getUpdates' failed!` が含まれる場合、OpenClawはこれらを回復可能なネットワークエラーとして再試行するようになりました。 - - ログに `Polling stall detected` が含まれる場合、OpenClawはデフォルトで、完了したロングポールの生存確認が120秒ないとポーリングを再起動し、Telegramトランスポートを再構築します。 - - 長時間の `getUpdates` 呼び出しが健全なのにホストで誤ったポーリング停止再起動が報告される場合にのみ、`channels.telegram.pollingStallThresholdMs` を増やしてください。継続的な停止は通常、ホストと `api.telegram.org` の間のproxy、DNS、IPv6、またはTLS送信経路の問題を示します。 - - 直接の送信経路/TLSが不安定なVPSホストでは、`channels.telegram.proxy` を通してTelegram API呼び出しをルーティングしてください: + - Node 22+ とカスタム fetch/proxy の組み合わせでは、AbortSignal の型不一致があると即時中断動作を引き起こす場合があります。 + - 一部のホストでは `api.telegram.org` がまず IPv6 に解決されます。IPv6 の外向き通信が壊れていると、Telegram API 失敗が断続的に発生することがあります。 + - ログに `TypeError: fetch failed` または `Network request for 'getUpdates' failed!` が含まれる場合、OpenClaw はこれらを回復可能なネットワークエラーとして再試行するようになりました。 + - ログに `Polling stall detected` が含まれる場合、OpenClaw はデフォルトで、完了したロングポーリングの生存確認が 120 秒間ないとポーリングを再起動し、Telegram トランスポートを再構築します。 + - 長時間実行の `getUpdates` 呼び出しが正常でも、ホストが依然として誤った polling-stall 再起動を報告する場合にのみ、`channels.telegram.pollingStallThresholdMs` を増やしてください。持続的な stall は通常、ホストと `api.telegram.org` 間の proxy、DNS、IPv6、または TLS 外向き通信の問題を示します。 + - VPS ホストで直接の外向き通信/TLS が不安定な場合は、`channels.telegram.proxy` 経由で Telegram API 呼び出しをルーティングしてください: ```yaml channels: @@ -935,8 +932,8 @@ channels: proxy: socks5://:@proxy-host:1080 ``` - - Node 22+ のデフォルトは `autoSelectFamily=true`(WSL2を除く)かつ `dnsResultOrder=ipv4first` です。 - - ホストがWSL2であるか、明示的にIPv4のみの動作の方がうまくいく場合は、ファミリー選択を強制してください: + - Node 22+ のデフォルトは `autoSelectFamily=true`(WSL2 を除く)かつ `dnsResultOrder=ipv4first` です。 + - ホストが WSL2 であるか、明示的に IPv4 のみの動作の方がうまくいく場合は、family 選択を強制してください: ```yaml channels: @@ -945,10 +942,7 @@ channels: autoSelectFamily: false ``` - - RFC 2544 ベンチマーク範囲の応答(`198.18.0.0/15`)は、Telegramメディアダウンロードに対してすでにデフォルトで許可されています。信頼できる fake-IP または - transparent proxy が、メディアダウンロード中に `api.telegram.org` を別の - private/internal/special-use アドレスに書き換える場合は、Telegram専用の - バイパスをオプトインできます: + - RFC 2544 のベンチマーク範囲応答(`198.18.0.0/15`)は、Telegram メディアダウンロードに対してすでにデフォルトで許可されています。信頼できる fake-IP や transparent proxy がメディアダウンロード中に `api.telegram.org` を別の private/internal/special-use アドレスへ書き換える場合は、Telegram 専用バイパスをオプトインできます: ```yaml channels: @@ -960,22 +954,18 @@ channels: - 同じオプトインはアカウントごとにも `channels.telegram.accounts..network.dangerouslyAllowPrivateNetwork` で利用できます。 - - proxy がTelegramメディアホストを `198.18.x.x` に解決する場合は、まず - dangerous フラグをオフのままにしてください。TelegramメディアはすでにRFC 2544 - ベンチマーク範囲をデフォルトで許可しています。 + - proxy が Telegram メディアホストを `198.18.x.x` に解決する場合は、まず dangerous フラグをオフのままにしてください。Telegram メディアはすでに RFC 2544 ベンチマーク範囲をデフォルトで許可しています。 - `channels.telegram.network.dangerouslyAllowPrivateNetwork` はTelegram - メディアのSSRF保護を弱めます。これは、Clash、Mihomo、Surge の fake-IP ルーティングのように、 - RFC 2544 ベンチマーク範囲外の private または special-use 応答を合成する、 - 信頼されたオペレーター管理下のproxy環境でのみ使用してください。通常の公開インターネット経由のTelegramアクセスでは無効のままにしてください。 + `channels.telegram.network.dangerouslyAllowPrivateNetwork` は Telegram + メディアの SSRF 保護を弱めます。これは、Clash、Mihomo、Surge の fake-IP ルーティングのように、RFC 2544 ベンチマーク範囲外の private または special-use 応答を合成する、信頼できるオペレーター管理の proxy 環境でのみ使ってください。通常のパブリックインターネット経由の Telegram アクセスではオフのままにしてください。 - - 環境変数オーバーライド(一時的): + - 環境変数による上書き(一時的): - `OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1` - `OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1` - `OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first` - - DNS応答を確認するには: + - DNS 応答を検証する: ```bash dig +short api.telegram.org A @@ -987,89 +977,90 @@ dig +short api.telegram.org AAAA 詳細: [チャネルのトラブルシューティング](/ja-JP/channels/troubleshooting)。 -## Telegram configリファレンスポインタ +## Telegram config リファレンスへのポインター 主要リファレンス: - `channels.telegram.enabled`: チャネル起動を有効/無効にします。 - `channels.telegram.botToken`: ボットトークン(BotFather)。 -- `channels.telegram.tokenFile`: 通常ファイルのパスからトークンを読み込みます。シンボリックリンクは拒否されます。 +- `channels.telegram.tokenFile`: 通常のファイルパスからトークンを読み込みます。シンボリックリンクは拒否されます。 - `channels.telegram.dmPolicy`: `pairing | allowlist | open | disabled`(デフォルト: pairing)。 -- `channels.telegram.allowFrom`: DM許可リスト(数値のTelegramユーザーID)。`allowlist` には少なくとも1つの送信者IDが必要です。`open` には `"*"` が必要です。`openclaw doctor --fix` は、従来の `@username` 項目をIDに解決でき、allowlist 移行フローではペアリングストアファイルから allowlist 項目を復旧することもできます。 -- `channels.telegram.actions.poll`: Telegram投票作成を有効または無効にします(デフォルト: 有効。引き続き `sendMessage` が必要です)。 -- `channels.telegram.defaultTo`: 明示的な `--reply-to` が指定されていないときに、CLI の `--deliver` で使用されるデフォルトのTelegramターゲット。 +- `channels.telegram.allowFrom`: DM の allowlist(数値の Telegram ユーザー ID)。`allowlist` では少なくとも 1 つの送信者 ID が必要です。`open` では `"*"` が必要です。`openclaw doctor --fix` は旧来の `@username` エントリを ID に解決でき、allowlist 移行フローではペアリングストアファイルから allowlist エントリを復旧することもできます。 +- `channels.telegram.actions.poll`: Telegram の投票作成を有効または無効にします(デフォルト: 有効。ただし引き続き `sendMessage` が必要です)。 +- `channels.telegram.defaultTo`: 明示的な `--reply-to` が指定されていない場合に、CLI の `--deliver` で使われるデフォルトの Telegram ターゲットです。 - `channels.telegram.groupPolicy`: `open | allowlist | disabled`(デフォルト: allowlist)。 -- `channels.telegram.groupAllowFrom`: グループ送信者許可リスト(数値のTelegramユーザーID)。`openclaw doctor --fix` は従来の `@username` 項目をIDに解決できます。数値でない項目は認証時に無視されます。グループ認証ではDMペアリングストアのフォールバックは使用しません(`2026.2.25+`)。 +- `channels.telegram.groupAllowFrom`: グループ送信者の allowlist(数値の Telegram ユーザー ID)。`openclaw doctor --fix` は旧来の `@username` エントリを ID に解決できます。数値でないエントリは認証時に無視されます。グループ認証では DM のペアリングストアフォールバックは使われません(`2026.2.25+`)。 - マルチアカウントの優先順位: - - 2つ以上のアカウントIDが設定されている場合、デフォルトルーティングを明示するために `channels.telegram.defaultAccount` を設定するか、`channels.telegram.accounts.default` を含めてください。 - - どちらも設定されていない場合、OpenClaw は正規化された最初のアカウントIDにフォールバックし、`openclaw doctor` が警告します。 + - 2 つ以上のアカウント ID が設定されている場合、デフォルトルーティングを明示するために `channels.telegram.defaultAccount` を設定するか(または `channels.telegram.accounts.default` を含めてください)。 + - どちらも設定されていない場合、OpenClaw は正規化された最初のアカウント ID にフォールバックし、`openclaw doctor` が警告します。 - `channels.telegram.accounts.default.allowFrom` と `channels.telegram.accounts.default.groupAllowFrom` は `default` アカウントにのみ適用されます。 - - 名前付きアカウントは、アカウントレベルの値が未設定の場合、`channels.telegram.allowFrom` と `channels.telegram.groupAllowFrom` を継承します。 + - 名前付きアカウントは、アカウントレベルの値が未設定のとき `channels.telegram.allowFrom` と `channels.telegram.groupAllowFrom` を継承します。 - 名前付きアカウントは `channels.telegram.accounts.default.allowFrom` / `groupAllowFrom` を継承しません。 -- `channels.telegram.groups`: グループごとのデフォルト + 許可リスト(グローバルデフォルトには `"*"` を使用)。 +- `channels.telegram.groups`: グループごとのデフォルト + allowlist(グローバルデフォルトには `"*"` を使用)。 - `channels.telegram.groups..groupPolicy`: groupPolicy のグループごとのオーバーライド(`open | allowlist | disabled`)。 - - `channels.telegram.groups..requireMention`: メンションゲートのデフォルト。 - - `channels.telegram.groups..skills`: skill フィルター(省略 = すべての Skills、空 = なし)。 - - `channels.telegram.groups..allowFrom`: グループごとの送信者許可リストオーバーライド。 - - `channels.telegram.groups..systemPrompt`: そのグループ向けの追加システムプロンプト。 - - `channels.telegram.groups..enabled`: `false` の場合はそのグループを無効化します。 + - `channels.telegram.groups..requireMention`: デフォルトのメンションゲーティング。 + - `channels.telegram.groups..skills`: Skills フィルター(省略 = すべての Skills、空 = なし)。 + - `channels.telegram.groups..allowFrom`: グループごとの送信者 allowlist オーバーライド。 + - `channels.telegram.groups..systemPrompt`: グループ用の追加 system prompt。 + - `channels.telegram.groups..enabled`: `false` の場合、そのグループを無効化します。 - `channels.telegram.groups..topics..*`: トピックごとのオーバーライド(グループフィールド + トピック専用の `agentId`)。 - `channels.telegram.groups..topics..agentId`: このトピックを特定の agent にルーティングします(グループレベルおよびバインディングルーティングを上書き)。 - `channels.telegram.groups..topics..groupPolicy`: groupPolicy のトピックごとのオーバーライド(`open | allowlist | disabled`)。 -- `channels.telegram.groups..topics..requireMention`: メンションゲートのトピックごとのオーバーライド。 -- `match.peer.id` に正規のトピックID `chatId:topic:topicId` を持つトップレベル `bindings[]` と `type: "acp"`: 永続的ACPトピックバインディングフィールド([ACP Agents](/ja-JP/tools/acp-agents#channel-specific-settings) を参照)。 -- `channels.telegram.direct..topics..agentId`: DMトピックを特定の agent にルーティングします(フォーラムトピックと同じ動作)。 -- `channels.telegram.execApprovals.enabled`: このアカウントでTelegramをチャットベースのexec承認クライアントとして有効にします。 -- `channels.telegram.execApprovals.approvers`: execリクエストの承認または拒否を許可されたTelegramユーザーID。`channels.telegram.allowFrom` またはダイレクトな `channels.telegram.defaultTo` がすでにオーナーを識別している場合は任意です。 -- `channels.telegram.execApprovals.target`: `dm | channel | both`(デフォルト: `dm`)。`channel` と `both` は、存在する場合、元のTelegramトピックを維持します。 +- `channels.telegram.groups..topics..requireMention`: メンションゲーティングのトピックごとのオーバーライド。 +- `match.peer.id` に正規のトピック ID `chatId:topic:topicId` を持つトップレベルの `bindings[]` と `type: "acp"`: 永続 ACP トピックバインディングフィールド([ACP Agents](/ja-JP/tools/acp-agents#channel-specific-settings) を参照)。 +- `channels.telegram.direct..topics..agentId`: DM トピックを特定の agent にルーティングします(フォーラムトピックと同じ動作)。 +- `channels.telegram.execApprovals.enabled`: このアカウントで Telegram をチャットベースの exec 承認クライアントとして有効にします。 +- `channels.telegram.execApprovals.approvers`: exec リクエストを承認または拒否できる Telegram ユーザー ID。`channels.telegram.allowFrom` または直接の `channels.telegram.defaultTo` がすでにオーナーを識別している場合は任意です。 +- `channels.telegram.execApprovals.target`: `dm | channel | both`(デフォルト: `dm`)。`channel` と `both` は、存在する場合に元の Telegram トピックを保持します。 - `channels.telegram.execApprovals.agentFilter`: 転送される承認プロンプト用の任意の agent ID フィルター。 -- `channels.telegram.execApprovals.sessionFilter`: 転送される承認プロンプト用の任意のセッションキーフィルター(部分文字列または正規表現)。 -- `channels.telegram.accounts..execApprovals`: Telegram exec承認ルーティングと承認者認可のアカウントごとのオーバーライド。 +- `channels.telegram.execApprovals.sessionFilter`: 転送される承認プロンプト用の任意のセッションキーフィルター(部分文字列または regex)。 +- `channels.telegram.accounts..execApprovals`: Telegram exec 承認ルーティングおよび承認者認可のアカウントごとのオーバーライド。 - `channels.telegram.capabilities.inlineButtons`: `off | dm | group | all | allowlist`(デフォルト: allowlist)。 - `channels.telegram.accounts..capabilities.inlineButtons`: アカウントごとのオーバーライド。 -- `channels.telegram.commands.nativeSkills`: Telegramネイティブ Skills コマンドを有効/無効にします。 +- `channels.telegram.commands.nativeSkills`: Telegram ネイティブ Skills コマンドを有効/無効にします。 - `channels.telegram.replyToMode`: `off | first | all`(デフォルト: `off`)。 - `channels.telegram.textChunkLimit`: 送信チャンクサイズ(文字数)。 -- `channels.telegram.chunkMode`: `length`(デフォルト)または `newline`。長さでチャンク化する前に空行(段落境界)で分割します。 +- `channels.telegram.chunkMode`: `length`(デフォルト)または `newline`。長さでのチャンク分割前に空行(段落境界)で分割します。 - `channels.telegram.linkPreview`: 送信メッセージのリンクプレビューを切り替えます(デフォルト: true)。 -- `channels.telegram.streaming`: `off | partial | block | progress`(ライブストリームプレビュー。デフォルト: `partial`。`progress` は `partial` にマップされます。`block` は従来のプレビューモード互換)。Telegramのプレビュー配信は、その場で編集される単一のプレビューメッセージを使用します。 -- `channels.telegram.mediaMaxMb`: 受信/送信Telegramメディア上限(MB、デフォルト: 100)。 -- `channels.telegram.retry`: 回復可能な送信APIエラーに対するTelegram送信ヘルパー(CLI/tools/actions)用の再試行ポリシー(attempts, minDelayMs, maxDelayMs, jitter)。 -- `channels.telegram.network.autoSelectFamily`: Node の autoSelectFamily を上書きします(true=有効、false=無効)。デフォルトではNode 22+で有効で、WSL2ではデフォルトで無効です。 -- `channels.telegram.network.dnsResultOrder`: DNS結果順序を上書きします(`ipv4first` または `verbatim`)。デフォルトではNode 22+で `ipv4first` です。 -- `channels.telegram.network.dangerouslyAllowPrivateNetwork`: 信頼できる fake-IP または transparent-proxy 環境向けの危険なオプトイン。これらの環境では、Telegramメディアダウンロード時に `api.telegram.org` がデフォルトのRFC 2544ベンチマーク範囲許可外の private/internal/special-use アドレスに解決されます。 -- `channels.telegram.proxy`: Bot API呼び出し用のproxy URL(SOCKS/HTTP)。 -- `channels.telegram.webhookUrl`: Webhookモードを有効にします(`channels.telegram.webhookSecret` が必要)。 -- `channels.telegram.webhookSecret`: Webhookシークレット(webhookUrl が設定されている場合は必須)。 -- `channels.telegram.webhookPath`: ローカルWebhookパス(デフォルト `/telegram-webhook`)。 -- `channels.telegram.webhookHost`: ローカルWebhookバインドホスト(デフォルト `127.0.0.1`)。 -- `channels.telegram.webhookPort`: ローカルWebhookバインドポート(デフォルト `8787`)。 -- `channels.telegram.actions.reactions`: Telegramツールリアクションをゲートします。 -- `channels.telegram.actions.sendMessage`: Telegramツールメッセージ送信をゲートします。 -- `channels.telegram.actions.deleteMessage`: Telegramツールメッセージ削除をゲートします。 -- `channels.telegram.actions.sticker`: Telegramステッカーアクション(送信と検索)をゲートします(デフォルト: false)。 +- `channels.telegram.streaming`: `off | partial | block | progress`(ライブストリームプレビュー。デフォルト: `partial`。`progress` は `partial` にマッピングされ、`block` は旧来のプレビューモード互換です)。Telegram のプレビューストリーミングでは、単一のプレビューメッセージをその場で編集します。 +- `channels.telegram.streaming.preview.toolProgress`: プレビューストリーミングが有効なときに、ツール/進捗更新でライブプレビューメッセージを再利用します(デフォルト: `true`)。別々のツール/進捗メッセージを保持するには `false` に設定してください。 +- `channels.telegram.mediaMaxMb`: 受信/送信 Telegram メディア上限(MB、デフォルト: 100)。 +- `channels.telegram.retry`: 回復可能な送信 API エラー時の Telegram 送信ヘルパー(CLI/ツール/アクション)用の再試行ポリシー(試行回数、minDelayMs、maxDelayMs、jitter)。 +- `channels.telegram.network.autoSelectFamily`: Node の autoSelectFamily を上書きします(true=有効、false=無効)。Node 22+ ではデフォルトで有効で、WSL2 ではデフォルトで無効です。 +- `channels.telegram.network.dnsResultOrder`: DNS 結果順序を上書きします(`ipv4first` または `verbatim`)。Node 22+ ではデフォルトで `ipv4first` です。 +- `channels.telegram.network.dangerouslyAllowPrivateNetwork`: Telegram メディアダウンロードで `api.telegram.org` がデフォルトの RFC 2544 ベンチマーク範囲許可外の private/internal/special-use アドレスに解決される、信頼できる fake-IP または transparent-proxy 環境向けの危険なオプトインです。 +- `channels.telegram.proxy`: Bot API 呼び出し用の proxy URL(SOCKS/HTTP)。 +- `channels.telegram.webhookUrl`: Webhook モードを有効にします(`channels.telegram.webhookSecret` が必要)。 +- `channels.telegram.webhookSecret`: Webhook シークレット(webhookUrl が設定されている場合は必須)。 +- `channels.telegram.webhookPath`: ローカル Webhook パス(デフォルト `/telegram-webhook`)。 +- `channels.telegram.webhookHost`: ローカル Webhook バインドホスト(デフォルト `127.0.0.1`)。 +- `channels.telegram.webhookPort`: ローカル Webhook バインドポート(デフォルト `8787`)。 +- `channels.telegram.actions.reactions`: Telegram ツールのリアクションをゲートします。 +- `channels.telegram.actions.sendMessage`: Telegram ツールのメッセージ送信をゲートします。 +- `channels.telegram.actions.deleteMessage`: Telegram ツールのメッセージ削除をゲートします。 +- `channels.telegram.actions.sticker`: Telegram ステッカーアクション(送信および検索)をゲートします(デフォルト: false)。 - `channels.telegram.reactionNotifications`: `off | own | all` — どのリアクションがシステムイベントをトリガーするかを制御します(未設定時のデフォルト: `own`)。 - `channels.telegram.reactionLevel`: `off | ack | minimal | extensive` — agent のリアクション機能を制御します(未設定時のデフォルト: `minimal`)。 -- `channels.telegram.errorPolicy`: `reply | silent` — エラー返信動作を制御します(デフォルト: `reply`)。アカウント/グループ/トピックごとのオーバーライドに対応。 -- `channels.telegram.errorCooldownMs`: 同じチャットへのエラー返信の最小ミリ秒間隔(デフォルト: `60000`)。障害中のエラースパムを防ぎます。 +- `channels.telegram.errorPolicy`: `reply | silent` — エラー返信の動作を制御します(デフォルト: `reply`)。アカウント/グループ/トピックごとのオーバーライドに対応。 +- `channels.telegram.errorCooldownMs`: 同じチャットへのエラー返信の最小間隔(ms)(デフォルト: `60000`)。障害時のエラースパムを防ぎます。 - [設定リファレンス - Telegram](/ja-JP/gateway/configuration-reference#telegram) -Telegram固有の高シグナルなフィールド: +Telegram 固有の重要フィールド: -- 起動/認証: `enabled`, `botToken`, `tokenFile`, `accounts.*`(`tokenFile` は通常ファイルを指している必要があります。シンボリックリンクは拒否されます) -- アクセス制御: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`, `groups.*.topics.*`, トップレベル `bindings[]`(`type: "acp"`) -- exec承認: `execApprovals`, `accounts.*.execApprovals` -- コマンド/メニュー: `commands.native`, `commands.nativeSkills`, `customCommands` -- スレッド/返信: `replyToMode` -- ストリーミング: `streaming`(プレビュー), `blockStreaming` -- 書式設定/配信: `textChunkLimit`, `chunkMode`, `linkPreview`, `responsePrefix` -- メディア/ネットワーク: `mediaMaxMb`, `timeoutSeconds`, `pollingStallThresholdMs`, `retry`, `network.autoSelectFamily`, `network.dangerouslyAllowPrivateNetwork`, `proxy` -- Webhook: `webhookUrl`, `webhookSecret`, `webhookPath`, `webhookHost` -- アクション/機能: `capabilities.inlineButtons`, `actions.sendMessage|editMessage|deleteMessage|reactions|sticker` -- リアクション: `reactionNotifications`, `reactionLevel` -- エラー: `errorPolicy`, `errorCooldownMs` -- 書き込み/履歴: `configWrites`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` +- 起動/認証: `enabled`、`botToken`、`tokenFile`、`accounts.*`(`tokenFile` は通常ファイルを指している必要があり、シンボリックリンクは拒否されます) +- アクセス制御: `dmPolicy`、`allowFrom`、`groupPolicy`、`groupAllowFrom`、`groups`、`groups.*.topics.*`、トップレベルの `bindings[]`(`type: "acp"`) +- exec 承認: `execApprovals`、`accounts.*.execApprovals` +- コマンド/メニュー: `commands.native`、`commands.nativeSkills`、`customCommands` +- スレッディング/返信: `replyToMode` +- ストリーミング: `streaming`(プレビュー)、`streaming.preview.toolProgress`、`blockStreaming` +- 書式設定/配信: `textChunkLimit`、`chunkMode`、`linkPreview`、`responsePrefix` +- メディア/ネットワーク: `mediaMaxMb`、`timeoutSeconds`、`pollingStallThresholdMs`、`retry`、`network.autoSelectFamily`、`network.dangerouslyAllowPrivateNetwork`、`proxy` +- Webhook: `webhookUrl`、`webhookSecret`、`webhookPath`、`webhookHost` +- アクション/機能: `capabilities.inlineButtons`、`actions.sendMessage|editMessage|deleteMessage|reactions|sticker` +- リアクション: `reactionNotifications`、`reactionLevel` +- エラー: `errorPolicy`、`errorCooldownMs` +- 書き込み/履歴: `configWrites`、`historyLimit`、`dmHistoryLimit`、`dms.*.historyLimit` ## 関連 @@ -1077,5 +1068,5 @@ Telegram固有の高シグナルなフィールド: - [グループ](/ja-JP/channels/groups) - [セキュリティ](/ja-JP/gateway/security) - [チャネルルーティング](/ja-JP/channels/channel-routing) -- [マルチagentルーティング](/ja-JP/concepts/multi-agent) +- [マルチエージェントルーティング](/ja-JP/concepts/multi-agent) - [トラブルシューティング](/ja-JP/channels/troubleshooting) diff --git a/docs/ja-JP/gateway/multiple-gateways.md b/docs/ja-JP/gateway/multiple-gateways.md index 79f1343ba..d78a4ed21 100644 --- a/docs/ja-JP/gateway/multiple-gateways.md +++ b/docs/ja-JP/gateway/multiple-gateways.md @@ -1,21 +1,21 @@ --- read_when: - - 同じマシン上で複数の Gateway を実行する - - Gateway ごとに分離された設定 / state / ポートが必要 -summary: 1 台のホストで複数の OpenClaw Gateway を実行する(分離、ポート、プロファイル) -title: 複数の Gateway + - 同じマシンで複数のGatewayを実行する + - Gatewayごとに分離された設定、状態、ポートが必要です +summary: 1台のホストで複数のOpenClaw Gatewayを実行する(分離、ポート、プロファイル) +title: 複数のGateway x-i18n: - generated_at: "2026-04-05T12:44:00Z" + generated_at: "2026-04-21T17:45:43Z" model: gpt-5.4 provider: openai - source_hash: 061f204bf56b28c6bd0e2c9aee6c561a8a162ca219060117fea4d3a007f01899 + source_hash: 8c3fcb921bc6596040e9249467964bd9dcd40ea7c16e958bb378247b0f994a7b source_path: gateway/multiple-gateways.md workflow: 15 --- -# 複数の Gateway(同一ホスト) +# 複数のGateway(同一ホスト) -ほとんどのセットアップでは 1 つの Gateway を使うべきです。単一の Gateway で複数のメッセージング接続とエージェントを扱えるためです。より強い分離や冗長性(たとえばレスキューボット)が必要な場合は、分離されたプロファイル / ポートで別々の Gateway を実行してください。 +ほとんどの構成では1つのGatewayを使用すべきです。1つのGatewayで複数のメッセージング接続とエージェントを処理できるためです。より強い分離や冗長性(例: レスキューボット)が必要な場合は、分離されたプロファイル/ポートで別々のGatewayを実行してください。 ## 分離チェックリスト(必須) @@ -23,86 +23,115 @@ x-i18n: - `OPENCLAW_STATE_DIR` — インスタンスごとのセッション、認証情報、キャッシュ - `agents.defaults.workspace` — インスタンスごとのワークスペースルート - `gateway.port`(または `--port`)— インスタンスごとに一意 -- 派生ポート(browser / canvas)は重複してはいけない +- 派生ポート(browser/canvas)は重複してはいけません -これらを共有すると、設定競合やポート競合が発生します。 +これらを共有すると、設定の競合やポートの衝突が発生します。 -## 推奨: プロファイル(`--profile`) +## 推奨: メインにはデフォルトプロファイルを使い、レスキューには名前付きプロファイルを使う -プロファイルは `OPENCLAW_STATE_DIR` と `OPENCLAW_CONFIG_PATH` を自動的にスコープ分けし、サービス名にサフィックスを付けます。 +プロファイルは `OPENCLAW_STATE_DIR` と `OPENCLAW_CONFIG_PATH` を自動的にスコープし、サービス名に接尾辞を付けます。ほとんどのレスキューボット構成では、メインボットはデフォルトプロファイルのままにし、レスキューボットにだけ `rescue` のような名前付きプロファイルを割り当ててください。 ```bash -# main -openclaw --profile main setup -openclaw --profile main gateway --port 18789 +# main (default profile) +openclaw setup +openclaw gateway --port 18789 # rescue openclaw --profile rescue setup openclaw --profile rescue gateway --port 19001 ``` -プロファイルごとのサービス: +サービス: ```bash -openclaw --profile main gateway install +openclaw gateway install openclaw --profile rescue gateway install ``` +両方のGatewayで名前付きプロファイルを使いたい場合でも動作しますが、必須ではありません。 + ## レスキューボットガイド -同じホスト上で 2 台目の Gateway を、以下をそれぞれ専用にして実行します。 +推奨構成: -- プロファイル / 設定 -- state dir -- ワークスペース -- ベースポート(および派生ポート) +- メインボットはデフォルトプロファイルのままにする +- レスキューボットは `--profile rescue` で実行する +- レスキューアカウントには完全に別のTelegramボットを使う +- レスキューボットは `19001` のような別のベースポートにする -これにより、メインボットが停止している場合でも、レスキューボットをメインボットから分離したまま、デバッグや設定変更の適用ができます。 +こうすることで、メインボットからレスキューボットを分離でき、プライマリボットが停止していても、デバッグや設定変更の適用ができます。派生する browser/canvas/CDP ポートが衝突しないよう、ベースポートの間は少なくとも20空けてください。 -ポート間隔: 派生する browser / canvas / CDP ポートが衝突しないよう、ベースポート間には少なくとも 20 ポート空けてください。 +### 推奨されるレスキューチャンネル/アカウント -### インストール方法(レスキューボット) +ほとんどの構成では、レスキュープロファイルには完全に別のTelegramボットを使ってください。 + +Telegramを使う理由: + +- オペレーター専用にしやすい +- ボットトークンとIDが分離される +- メインボットのチャンネル/アプリのインストールから独立している +- メインボットが壊れたときにDMベースの簡単な復旧経路になる + +重要なのは完全な独立性です。別のボットアカウント、別の認証情報、別のOpenClawプロファイル、別のワークスペース、別のポートが必要です。 + +### 推奨インストールフロー + +特別な理由がない限り、これをデフォルト構成として使ってください。 ```bash -# Main bot(既存または新規、--profile パラメーターなし) -# ポート 18789 + Chrome CDC/Canvas/... ポートで実行 +# Main bot (default profile, port 18789) openclaw onboard openclaw gateway install -# Rescue bot(分離されたプロファイル + ポート) +# Rescue bot (separate Telegram bot, separate profile, port 19001) openclaw --profile rescue onboard -# 注: -# - ワークスペース名はデフォルトで -rescue が後置されます -# - ポートは少なくとも 18789 + 20 ポート以上にしてください。 -# できれば 19789 のように、完全に異なるベースポートを選んでください。 -# - それ以外のオンボーディングは通常と同じです - -# サービスをインストールするには(セットアップ中に自動実行されなかった場合) openclaw --profile rescue gateway install ``` +`openclaw --profile rescue onboard` の実行中: + +- 別のTelegramボットトークンを使う +- `rescue` プロファイルを維持する +- メインボットより少なくとも20高いベースポートを使う +- すでに自分で管理している場合を除き、デフォルトのレスキューワークスペースを受け入れる + +オンボーディングですでにレスキューサービスがインストールされている場合、最後の `gateway install` は不要です。 + +### オンボーディングで変更される内容 + +`openclaw --profile rescue onboard` は通常のオンボーディングフローを使いますが、すべてを別のプロファイルに書き込みます。 + +実際には、レスキューボットは次の専用領域を持つことになります。 + +- 設定ファイル +- 状態ディレクトリ +- ワークスペース(デフォルトでは `~/.openclaw/workspace-rescue`) +- 管理サービス名 + +それ以外のプロンプトは通常のオンボーディングと同じです。 + ## ポートマッピング(派生) ベースポート = `gateway.port`(または `OPENCLAW_GATEWAY_PORT` / `--port`)。 -- browser control service のポート = ベース + 2(loopback のみ) -- canvas host は Gateway HTTP サーバー上で提供される(`gateway.port` と同じポート) -- Browser profile の CDP ポートは `browser.controlPort + 9 .. + 108` から自動割り当てされる +- browser control service port = ベース + 2(loopback のみ) +- canvas host はGateway HTTPサーバーで提供されます(`gateway.port` と同じポート) +- Browser profile CDP ports は `browser.controlPort + 9 .. + 108` から自動割り当てされます -設定または環境変数でこれらのいずれかを上書きする場合は、インスタンスごとに一意である必要があります。 +設定または環境変数でこれらを上書きする場合は、インスタンスごとに一意に保つ必要があります。 -## Browser / CDP に関する注意(よくある落とし穴) +## Browser/CDP の注意点(よくある落とし穴) -- 複数インスタンスで `browser.cdpUrl` を同じ値に固定してはいけません。 -- 各インスタンスには、専用の browser control port と CDP 範囲(gateway port から派生)が必要です。 -- 明示的な CDP ポートが必要な場合は、インスタンスごとに `browser.profiles..cdpPort` を設定してください。 -- リモート Chrome には `browser.profiles..cdpUrl` を使ってください(プロファイルごと、インスタンスごと)。 +- 複数のインスタンスで `browser.cdpUrl` を同じ値に固定**しないでください**。 +- 各インスタンスには、それぞれ専用の browser control port と CDP 範囲(gateway port から派生)が必要です。 +- 明示的なCDPポートが必要な場合は、インスタンスごとに `browser.profiles..cdpPort` を設定してください。 +- リモートChromeでは、`browser.profiles..cdpUrl` を使ってください(プロファイルごと、インスタンスごと)。 -## 手動 env の例 +## 手動 env 例 ```bash OPENCLAW_CONFIG_PATH=~/.openclaw/main.json \ -OPENCLAW_STATE_DIR=~/.openclaw-main \ +OPENCLAW_STATE_DIR=~/.openclaw \ openclaw gateway --port 18789 OPENCLAW_CONFIG_PATH=~/.openclaw/rescue.json \ @@ -113,15 +142,15 @@ openclaw gateway --port 19001 ## クイックチェック ```bash -openclaw --profile main gateway status --deep +openclaw gateway status --deep openclaw --profile rescue gateway status --deep openclaw --profile rescue gateway probe -openclaw --profile main status +openclaw status openclaw --profile rescue status openclaw --profile rescue browser status ``` 解釈: -- `gateway status --deep` は、古いインストールから残っている launchd / systemd / schtasks サービスを見つけるのに役立ちます。 -- `multiple reachable gateways detected` のような `gateway probe` の警告文は、意図的に複数の分離された Gateway を実行している場合にのみ想定されるものです。 +- `gateway status --deep` は、古いインストールから残っている古い launchd/systemd/schtasks サービスの検出に役立ちます。 +- `gateway probe` の `multiple reachable gateways detected` のような警告テキストは、意図的に複数の分離されたGatewayを実行している場合にのみ想定されるものです。 diff --git a/docs/ja-JP/tools/slash-commands.md b/docs/ja-JP/tools/slash-commands.md index 9828726c5..069821fca 100644 --- a/docs/ja-JP/tools/slash-commands.md +++ b/docs/ja-JP/tools/slash-commands.md @@ -2,35 +2,33 @@ read_when: - チャットコマンドの使用または設定 - コマンドのルーティングまたは権限のデバッグ -summary: 'スラッシュコマンド: テキストとネイティブ、設定、対応コマンド' +summary: 'スラッシュコマンド: テキストとネイティブ、設定、サポートされているコマンド' title: スラッシュコマンド x-i18n: - generated_at: "2026-04-21T13:39:11Z" + generated_at: "2026-04-21T17:45:41Z" model: gpt-5.4 provider: openai - source_hash: d90ddee54af7c05b7fdf486590561084581d750e42cd14674d43bbdc0984df5d + source_hash: 26923608329ba2aeece2d4bc8edfa40ae86e03719a9f590f26ff79f57d97521d source_path: tools/slash-commands.md workflow: 15 --- # スラッシュコマンド -コマンドは Gateway によって処理されます。ほとんどのコマンドは、`/` で始まる**単独の**メッセージとして送信する必要があります。 -ホスト専用の bash チャットコマンドは `! ` を使います(`/bash ` はその alias です)。 +コマンドはGatewayによって処理されます。ほとんどのコマンドは、`/` で始まる**単独の**メッセージとして送信する必要があります。 +ホスト限定の bash チャットコマンドは `! ` を使います(`/bash ` はエイリアスです)。 -関連する 2 つのシステムがあります。 +関連するシステムは2つあります。 - **コマンド**: 単独の `/...` メッセージ。 - **ディレクティブ**: `/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`。 - - ディレクティブは、モデルがメッセージを見る前に取り除かれます。 - - 通常のチャットメッセージ内では(ディレクティブのみではない場合)、これらは「インラインヒント」として扱われ、セッション設定は永続化されません。 - - ディレクティブのみのメッセージでは(メッセージがディレクティブだけを含む場合)、セッションに永続化され、確認応答が返されます。 - - ディレクティブは**認可された送信者**に対してのみ適用されます。`commands.allowFrom` が設定されている場合、それが唯一の - 使用される許可リストです。そうでない場合、認可はチャネルの許可リスト/ペアリングと `commands.useAccessGroups` から決まります。 - 認可されていない送信者には、ディレクティブは平文テキストとして扱われます。 + - ディレクティブは、モデルがメッセージを見る前にメッセージから取り除かれます。 + - 通常のチャットメッセージ内では(ディレクティブだけのメッセージではない場合)、これらは「インラインヒント」として扱われ、セッション設定は**永続化されません**。 + - ディレクティブだけのメッセージ内では(メッセージがディレクティブのみを含む場合)、これらはセッションに永続化され、確認応答が返されます。 + - ディレクティブは**認可された送信者**に対してのみ適用されます。`commands.allowFrom` が設定されている場合、それが使用される唯一の許可リストです。そうでない場合、認可はチャンネルの許可リスト/ペアリングと `commands.useAccessGroups` から決まります。認可されていない送信者では、ディレクティブは通常のテキストとして扱われます。 -さらに、いくつかの**インラインショートカット**もあります(許可リスト/認可済み送信者のみ): `/help`, `/commands`, `/status`, `/whoami`(`/id`)。 -これらは即座に実行され、モデルがメッセージを見る前に取り除かれ、残りのテキストは通常のフローを通過し続けます。 +さらに、いくつかの**インラインショートカット**もあります(許可リストに登録された/認可された送信者のみ): `/help`, `/commands`, `/status`, `/whoami` (`/id`)。 +これらは即座に実行され、モデルがメッセージを見る前に取り除かれ、残りのテキストは通常フローで処理され続けます。 ## 設定 @@ -59,107 +57,107 @@ x-i18n: } ``` -- `commands.text`(デフォルト `true`)は、チャットメッセージ内の `/...` の解析を有効にします。 - - ネイティブコマンドのない surface(WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams)では、これを `false` に設定してもテキストコマンドは引き続き動作します。 -- `commands.native`(デフォルト `"auto"`)は、ネイティブコマンドを登録します。 - - Auto: Discord/Telegram ではオン、Slack ではオフ(slash command を追加するまで)。ネイティブサポートのない provider では無視されます。 - - provider ごとに上書きするには `channels.discord.commands.native`、`channels.telegram.commands.native`、または `channels.slack.commands.native` を設定します(bool または `"auto"`)。 - - `false` は、起動時に Discord/Telegram で以前に登録されたコマンドを消去します。Slack コマンドは Slack アプリ内で管理され、自動では削除されません。 -- `commands.nativeSkills`(デフォルト `"auto"`)は、サポートされている場合に **skill** コマンドをネイティブ登録します。 - - Auto: Discord/Telegram ではオン、Slack ではオフ(Slack では skill ごとに slash command を作成する必要があります)。 - - provider ごとに上書きするには `channels.discord.commands.nativeSkills`、`channels.telegram.commands.nativeSkills`、または `channels.slack.commands.nativeSkills` を設定します(bool または `"auto"`)。 -- `commands.bash`(デフォルト `false`)は、`! ` によるホストシェルコマンド実行を有効にします(`/bash ` は alias。`tools.elevated` の許可リストが必要です)。 -- `commands.bashForegroundMs`(デフォルト `2000`)は、bash がバックグラウンドモードに切り替わる前に待機する時間を制御します(`0` は即座にバックグラウンド化)。 -- `commands.config`(デフォルト `false`)は `/config` を有効にします(`openclaw.json` の読み書き)。 -- `commands.mcp`(デフォルト `false`)は `/mcp` を有効にします(`mcp.servers` 配下の OpenClaw 管理 MCP config の読み書き)。 -- `commands.plugins`(デフォルト `false`)は `/plugins` を有効にします(Plugin の検出/状態確認、および install + enable/disable 制御)。 -- `commands.debug`(デフォルト `false`)は `/debug` を有効にします(ランタイム限定の上書き)。 -- `commands.restart`(デフォルト `true`)は `/restart` と Gateway 再起動ツールアクションを有効にします。 -- `commands.ownerAllowFrom`(任意)は、owner 専用コマンド/ツール surface 用の明示的な許可リストを設定します。これは `commands.allowFrom` とは別です。 -- `commands.ownerDisplay` は、システムプロンプト内で owner id をどう表示するかを制御します: `raw` または `hash`。 -- `commands.ownerDisplaySecret` は、`commands.ownerDisplay="hash"` のときに使う HMAC secret を任意で設定します。 -- `commands.allowFrom`(任意)は、コマンド認可のための provider ごとの許可リストを設定します。設定されている場合、これがコマンドとディレクティブの唯一の認可ソースになります(チャネルの許可リスト/ペアリングと `commands.useAccessGroups` - は無視されます)。グローバルデフォルトには `"*"` を使い、provider 固有キーがそれを上書きします。 -- `commands.useAccessGroups`(デフォルト `true`)は、`commands.allowFrom` が設定されていない場合に、コマンドに対して許可リスト/ポリシーを適用します。 +- `commands.text`(デフォルト: `true`)は、チャットメッセージ内での `/...` の解析を有効にします。 + - ネイティブコマンドのない画面では(WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams)、これを `false` に設定していてもテキストコマンドは引き続き動作します。 +- `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"`)は、サポートされている場合に**skill**コマンドをネイティブに登録します。 + - Auto: Discord/Telegram ではオン、Slack ではオフです(Slack では skill ごとにスラッシュコマンドを作成する必要があります)。 + - プロバイダーごとに上書きするには、`channels.discord.commands.nativeSkills`、`channels.telegram.commands.nativeSkills`、または `channels.slack.commands.nativeSkills` を設定します(bool または `"auto"`)。 +- `commands.bash`(デフォルト: `false`)は、`! ` によるホストシェルコマンドの実行を有効にします(`/bash ` はエイリアスです。`tools.elevated` の許可リストが必要です)。 +- `commands.bashForegroundMs`(デフォルト: `2000`)は、bash がバックグラウンドモードに切り替わるまで待機する時間を制御します(`0` は即座にバックグラウンド化します)。 +- `commands.config`(デフォルト: `false`)は `/config` を有効にします(`openclaw.json` の読み書き)。 +- `commands.mcp`(デフォルト: `false`)は `/mcp` を有効にします(`mcp.servers` 配下の OpenClaw 管理 MCP 設定の読み書き)。 +- `commands.plugins`(デフォルト: `false`)は `/plugins` を有効にします(plugin の検出/ステータス、およびインストール + 有効化/無効化の制御)。 +- `commands.debug`(デフォルト: `false`)は `/debug` を有効にします(ランタイム限定の上書き)。 +- `commands.restart`(デフォルト: `true`)は `/restart` と Gateway 再起動ツールアクションを有効にします。 +- `commands.ownerAllowFrom`(任意)は、owner 専用コマンド/ツール画面用の明示的な owner 許可リストを設定します。これは `commands.allowFrom` とは別です。 +- `commands.ownerDisplay` は、システムプロンプト内で owner id をどのように表示するかを制御します: `raw` または `hash`。 +- `commands.ownerDisplaySecret` は、`commands.ownerDisplay="hash"` の場合に使用する HMAC シークレットを任意で設定します。 +- `commands.allowFrom`(任意)は、コマンド認可用のプロバイダー別許可リストを設定します。設定されている場合、これがコマンドとディレクティブに対する唯一の認可ソースになります(チャンネルの許可リスト/ペアリングと `commands.useAccessGroups` は無視されます)。グローバルデフォルトには `"*"` を使います。プロバイダー固有のキーはそれを上書きします。 +- `commands.useAccessGroups`(デフォルト: `true`)は、`commands.allowFrom` が設定されていない場合に、コマンドに対して許可リスト/ポリシーを適用します。 ## コマンド一覧 -現在の source-of-truth: +現在の信頼できる情報源: -- core の組み込みは `src/auto-reply/commands-registry.shared.ts` から -- 生成された dock コマンドは `src/auto-reply/commands-registry.data.ts` から -- Plugin コマンドは Plugin の `registerCommand()` 呼び出しから -- 実際にあなたの Gateway で使えるかどうかは、依然として config フラグ、チャネル surface、インストール/有効化済み Plugin に依存します +- コア組み込みコマンドは `src/auto-reply/commands-registry.shared.ts` から取得されます +- 生成された dock コマンドは `src/auto-reply/commands-registry.data.ts` から取得されます +- plugin コマンドは plugin の `registerCommand()` 呼び出しから取得されます +- 実際にあなたの gateway で利用できるかどうかは、引き続き設定フラグ、チャンネル画面、インストール済み/有効化済み plugin に依存します -### core の組み込みコマンド +### コア組み込みコマンド 現在利用できる組み込みコマンド: -- `/new [model]` は新しいセッションを開始します。`/reset` は reset alias です。 -- `/compact [instructions]` はセッションコンテキストを Compaction します。[ /concepts/compaction ](/ja-JP/concepts/compaction) を参照してください。 +- `/new [model]` は新しいセッションを開始します。`/reset` はリセットのエイリアスです。 +- `/reset soft [message]` は現在の transcript を保持し、再利用される CLI バックエンドのセッション id を破棄し、起動/システムプロンプトの読み込みをその場で再実行します。 +- `/compact [instructions]` はセッションコンテキストを Compaction します。[/concepts/compaction](/ja-JP/concepts/compaction) を参照してください。 - `/stop` は現在の実行を中止します。 - `/session idle ` と `/session max-age ` は、スレッドバインディングの有効期限を管理します。 -- `/think ` は thinking レベルを設定します。選択肢はアクティブモデルの provider profile によって決まり、一般的なレベルは `off`、`minimal`、`low`、`medium`、`high` で、`xhigh`、`adaptive`、`max`、またはバイナリの `on` のようなカスタムレベルはサポートされる場合のみ使えます。alias: `/thinking`, `/t`。 -- `/verbose on|off|full` は verbose 出力を切り替えます。alias: `/v`。 -- `/trace on|off` は現在のセッションの Plugin trace 出力を切り替えます。 -- `/fast [status|on|off]` は fast mode の表示または設定を行います。 -- `/reasoning [on|off|stream]` は reasoning の可視性を切り替えます。alias: `/reason`。 -- `/elevated [on|off|ask|full]` は elevated mode を切り替えます。alias: `/elev`。 +- `/think ` は思考レベルを設定します。選択肢はアクティブモデルのプロバイダープロファイルから取得されます。一般的なレベルは `off`、`minimal`、`low`、`medium`、`high` で、`xhigh`、`adaptive`、`max`、または二値の `on` のようなカスタムレベルはサポートされている場合にのみ利用できます。エイリアス: `/thinking`, `/t`。 +- `/verbose on|off|full` は詳細出力を切り替えます。エイリアス: `/v`。 +- `/trace on|off` は現在のセッションの plugin トレース出力を切り替えます。 +- `/fast [status|on|off]` は高速モードの表示または設定を行います。 +- `/reasoning [on|off|stream]` は reasoning の表示を切り替えます。エイリアス: `/reason`。 +- `/elevated [on|off|ask|full]` は elevated モードを切り替えます。エイリアス: `/elev`。 - `/exec host= security= ask= node=` は exec のデフォルトを表示または設定します。 -- `/model [name|#|status]` はモデルを表示または設定します。 -- `/models [provider] [page] [limit=|size=|all]` は provider または provider のモデルを一覧表示します。 -- `/queue ` はキュー動作(`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`)と、`debounce:2s cap:25 drop:summarize` のようなオプションを管理します。 +- `/model [name|#|status]` はモデルの表示または設定を行います。 +- `/models [provider] [page] [limit=|size=|all]` は、プロバイダーまたはプロバイダーのモデルを一覧表示します。 +- `/queue ` はキュー動作を管理します(`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`)。`debounce:2s cap:25 drop:summarize` のようなオプションも使えます。 - `/help` は短いヘルプ概要を表示します。 - `/commands` は生成されたコマンドカタログを表示します。 - `/tools [compact|verbose]` は、現在のエージェントが今使えるものを表示します。 -- `/status` は、利用可能な場合は provider の使用量/クォータを含むランタイム状態を表示します。 +- `/status` は、利用可能な場合はプロバイダーの使用量/クォータを含むランタイムステータスを表示します。 - `/tasks` は、現在のセッションのアクティブ/最近のバックグラウンドタスクを一覧表示します。 -- `/context [list|detail|json]` は、コンテキストがどのように組み立てられているかを説明します。 -- `/export-session [path]` は、現在のセッションを HTML にエクスポートします。alias: `/export`。 -- `/whoami` はあなたの sender id を表示します。alias: `/id`。 -- `/skill [input]` は、名前で skill を実行します。 -- `/allowlist [list|add|remove] ...` は、許可リストエントリを管理します。テキスト専用。 -- `/approve ` は、exec の承認プロンプトを解決します。 -- `/btw ` は、今後のセッションコンテキストを変更せずに横道の質問をします。[ /tools/btw ](/ja-JP/tools/btw) を参照してください。 +- `/context [list|detail|json]` は、コンテキストがどのように組み立てられるかを説明します。 +- `/export-session [path]` は、現在のセッションを HTML にエクスポートします。エイリアス: `/export`。 +- `/whoami` はあなたの送信者 id を表示します。エイリアス: `/id`。 +- `/skill [input]` は名前で skill を実行します。 +- `/allowlist [list|add|remove] ...` は、許可リストのエントリーを管理します。テキスト専用です。 +- `/approve ` は、exec 承認プロンプトを解決します。 +- `/btw ` は、今後のセッションコンテキストを変更せずに脇道の質問をします。[/tools/btw](/ja-JP/tools/btw) を参照してください。 - `/subagents list|kill|log|info|send|steer|spawn` は、現在のセッションのサブエージェント実行を管理します。 - `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` は、ACP セッションとランタイムオプションを管理します。 -- `/focus ` は、現在の Discord スレッドまたは Telegram topic/conversation をセッションターゲットにバインドします。 +- `/focus ` は、現在の Discord スレッドまたは Telegram トピック/会話をセッションターゲットにバインドします。 - `/unfocus` は、現在のバインディングを解除します。 -- `/agents` は、現在のセッションにスレッドバインドされたエージェントを一覧表示します。 -- `/kill ` は、1 つまたはすべての実行中サブエージェントを中止します。 -- `/steer ` は、実行中のサブエージェントに steering を送信します。alias: `/tell`。 -- `/config show|get|set|unset` は `openclaw.json` を読み書きします。owner 専用。`commands.config: true` が必要です。 -- `/mcp show|get|set|unset` は、`mcp.servers` 配下の OpenClaw 管理 MCP server config を読み書きします。owner 専用。`commands.mcp: true` が必要です。 -- `/plugins list|inspect|show|get|install|enable|disable` は、Plugin の状態を確認または変更します。`/plugin` は alias です。書き込みは owner 専用。`commands.plugins: true` が必要です。 -- `/debug show|set|unset|reset` は、ランタイム限定 config 上書きを管理します。owner 専用。`commands.debug: true` が必要です。 -- `/usage off|tokens|full|cost` は、応答ごとの usage footer を制御するか、ローカルのコスト概要を表示します。 -- `/tts on|off|status|provider|limit|summary|audio|help` は TTS を制御します。[ /tools/tts ](/ja-JP/tools/tts) を参照してください。 -- `/restart` は、有効な場合に OpenClaw を再起動します。デフォルト: 有効。無効にするには `commands.restart: false` を設定します。 -- `/activation mention|always` は、グループの activation mode を設定します。 -- `/send on|off|inherit` は、送信ポリシーを設定します。owner 専用。 -- `/bash ` はホストシェルコマンドを実行します。テキスト専用。alias: `! `。`commands.bash: true` と `tools.elevated` の許可リストが必要です。 +- `/agents` は、現在のセッションのスレッドにバインドされたエージェントを一覧表示します。 +- `/kill ` は、実行中のサブエージェントを1つまたはすべて中止します。 +- `/steer ` は、実行中のサブエージェントにステアリングを送信します。エイリアス: `/tell`。 +- `/config show|get|set|unset` は、`openclaw.json` を読み書きします。owner 専用です。`commands.config: true` が必要です。 +- `/mcp show|get|set|unset` は、`mcp.servers` 配下の OpenClaw 管理 MCP サーバー設定を読み書きします。owner 専用です。`commands.mcp: true` が必要です。 +- `/plugins list|inspect|show|get|install|enable|disable` は、plugin の状態を調査または変更します。`/plugin` はエイリアスです。書き込みは owner 専用です。`commands.plugins: true` が必要です。 +- `/debug show|set|unset|reset` は、ランタイム限定の設定上書きを管理します。owner 専用です。`commands.debug: true` が必要です。 +- `/usage off|tokens|full|cost` は、レスポンスごとの使用量フッターを制御するか、ローカルのコスト概要を表示します。 +- `/tts on|off|status|provider|limit|summary|audio|help` は、TTS を制御します。[/tools/tts](/ja-JP/tools/tts) を参照してください。 +- `/restart` は、有効な場合に OpenClaw を再起動します。デフォルト: 有効。無効にするには `commands.restart: false` を設定してください。 +- `/activation mention|always` は、グループアクティベーションモードを設定します。 +- `/send on|off|inherit` は、送信ポリシーを設定します。owner 専用です。 +- `/bash ` は、ホストシェルコマンドを実行します。テキスト専用です。エイリアス: `! `。`commands.bash: true` に加えて `tools.elevated` の許可リストが必要です。 - `!poll [sessionId]` は、バックグラウンド bash ジョブを確認します。 - `!stop [sessionId]` は、バックグラウンド bash ジョブを停止します。 ### 生成された dock コマンド -Dock コマンドは、ネイティブコマンドサポートを持つチャネル Plugin から生成されます。現在のバンドルセット: +Dock コマンドは、ネイティブコマンド対応のチャンネル plugin から生成されます。現在バンドルされているセット: -- `/dock-discord`(alias: `/dock_discord`) -- `/dock-mattermost`(alias: `/dock_mattermost`) -- `/dock-slack`(alias: `/dock_slack`) -- `/dock-telegram`(alias: `/dock_telegram`) +- `/dock-discord`(エイリアス: `/dock_discord`) +- `/dock-mattermost`(エイリアス: `/dock_mattermost`) +- `/dock-slack`(エイリアス: `/dock_slack`) +- `/dock-telegram`(エイリアス: `/dock_telegram`) -### バンドル Plugin コマンド +### バンドルされた plugin コマンド -バンドル Plugin は、さらに多くのスラッシュコマンドを追加できます。このリポジトリにある現在のバンドルコマンド: +バンドルされた plugin は、さらにスラッシュコマンドを追加できます。このリポジトリで現在バンドルされているコマンド: -- `/dreaming [on|off|status|help]` はメモリ Dreaming を切り替えます。[Dreaming](/ja-JP/concepts/dreaming) を参照してください。 +- `/dreaming [on|off|status|help]` は、メモリ Dreaming を切り替えます。[Dreaming](/ja-JP/concepts/dreaming) を参照してください。 - `/pair [qr|status|pending|approve|cleanup|notify]` は、デバイスのペアリング/セットアップフローを管理します。[Pairing](/ja-JP/channels/pairing) を参照してください。 -- `/phone status|arm [duration]|disarm` は、高リスクの phone node コマンドを一時的に有効化します。 -- `/voice status|list [limit]|set ` は Talk voice config を管理します。Discord では、ネイティブコマンド名は `/talkvoice` です。 -- `/card ...` は LINE rich card プリセットを送信します。[LINE](/ja-JP/channels/line) を参照してください。 -- `/codex status|models|threads|resume|compact|review|account|mcp|skills` は、バンドルされた Codex app-server harness を確認および制御します。[Codex Harness](/ja-JP/plugins/codex-harness) を参照してください。 +- `/phone status|arm [duration]|disarm` は、高リスクの phone Node コマンドを一時的に有効化します。 +- `/voice status|list [limit]|set ` は、Talk 音声設定を管理します。Discord では、ネイティブコマンド名は `/talkvoice` です。 +- `/card ...` は、LINE リッチカードのプリセットを送信します。[LINE](/ja-JP/channels/line) を参照してください。 +- `/codex status|models|threads|resume|compact|review|account|mcp|skills` は、バンドルされた Codex app-server harness を調査および制御します。[Codex Harness](/ja-JP/plugins/codex-harness) を参照してください。 - QQBot 専用コマンド: - `/bot-ping` - `/bot-version` @@ -171,65 +169,65 @@ Dock コマンドは、ネイティブコマンドサポートを持つチャネ ユーザーが呼び出せる Skills もスラッシュコマンドとして公開されます。 -- `/skill [input]` は、汎用エントリポイントとして常に動作します。 -- skill/plugin が登録していれば、Skills は `/prose` のような直接コマンドとして表示されることもあります。 -- ネイティブ skill-command の登録は `commands.nativeSkills` と `channels..commands.nativeSkills` によって制御されます。 +- `/skill [input]` は、汎用エントリーポイントとして常に機能します。 +- skill/plugin が登録している場合、Skills は `/prose` のような直接コマンドとして表示されることもあります。 +- ネイティブ skill コマンド登録は、`commands.nativeSkills` と `channels..commands.nativeSkills` によって制御されます。 注意: -- コマンドでは、コマンドと引数の間に任意で `:` を入れられます(例: `/think: high`, `/send: on`, `/help:`)。 -- `/new ` はモデル alias、`provider/model`、または provider 名(あいまい一致)を受け付けます。一致しない場合、そのテキストはメッセージ本文として扱われます。 -- provider 使用量の完全な内訳を確認するには、`openclaw status --usage` を使用します。 -- `/allowlist add|remove` には `commands.config=true` が必要で、チャネルの `configWrites` を尊重します。 -- マルチアカウントチャネルでは、config 対象の `/allowlist --account ` と `/config set channels..accounts....` も、対象アカウントの `configWrites` を尊重します。 -- `/usage` は応答ごとの usage footer を制御します。`/usage cost` は OpenClaw セッションログからローカルのコスト概要を表示します。 -- `/restart` はデフォルトで有効です。無効にするには `commands.restart: false` を設定します。 -- `/plugins install ` は `openclaw plugins install` と同じ Plugin spec を受け付けます: ローカルパス/アーカイブ、npm パッケージ、または `clawhub:`。 -- `/plugins enable|disable` は Plugin config を更新し、再起動を促す場合があります。 -- 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 Agents](/ja-JP/tools/acp-agents)。 -- `/verbose` はデバッグと追加可視化のためのものです。通常使用では **off** のままにしてください。 -- `/trace` は `/verbose` よりも限定的です。Plugin 所有の trace/debug 行のみを表示し、通常の verbose なツール chatter は無効のままにします。 -- `/fast on|off` はセッション上書きを永続化します。Sessions UI の `inherit` オプションを使うと、それをクリアして config のデフォルトに戻せます。 -- `/fast` は provider 固有です。OpenAI/OpenAI Codex ではネイティブ Responses endpoint 上で `service_tier=priority` にマッピングされ、`api.anthropic.com` に送信される OAuth 認証トラフィックを含む直接の公開 Anthropic リクエストでは `service_tier=auto` または `standard_only` にマッピングされます。[OpenAI](/ja-JP/providers/openai) と [Anthropic](/ja-JP/providers/anthropic) を参照してください。 -- ツール失敗の要約は関連があれば引き続き表示されますが、詳細な失敗テキストが含まれるのは `/verbose` が `on` または `full` のときだけです。 -- `/reasoning`、`/verbose`、`/trace` はグループ設定ではリスクがあります。意図せず内部 reasoning、ツール出力、または Plugin diagnostics を公開してしまう可能性があります。特にグループチャットでは、オフのままにしておくことを推奨します。 +- コマンドは、コマンドと引数の間に任意で `:` を入れられます(例: `/think: high`, `/send: on`, `/help:`)。 +- `/new ` は、モデルエイリアス、`provider/model`、またはプロバイダー名(あいまい一致)を受け付けます。一致しない場合、そのテキストはメッセージ本文として扱われます。 +- プロバイダー使用量の完全な内訳を確認するには、`openclaw status --usage` を使ってください。 +- `/allowlist add|remove` には `commands.config=true` が必要で、チャンネルの `configWrites` に従います。 +- マルチアカウントチャンネルでは、設定対象の `/allowlist --account ` と `/config set channels..accounts....` も対象アカウントの `configWrites` に従います。 +- `/usage` はレスポンスごとの使用量フッターを制御します。`/usage cost` は OpenClaw のセッションログからローカルのコスト概要を表示します。 +- `/restart` はデフォルトで有効です。無効にするには `commands.restart: false` を設定してください。 +- `/plugins install ` は `openclaw plugins install` と同じ plugin spec を受け付けます: ローカルパス/アーカイブ、npm パッケージ、または `clawhub:`。 +- `/plugins enable|disable` は plugin 設定を更新し、再起動を求めることがあります。 +- 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 Agents](/ja-JP/tools/acp-agents)。 +- `/verbose` はデバッグと追加の可視化を目的としています。通常の使用では **off** のままにしてください。 +- `/trace` は `/verbose` より範囲が狭く、plugin が所有する trace/debug 行だけを表示し、通常の verbose なツールのおしゃべりはオフのままにします。 +- `/fast on|off` はセッション上書きを永続化します。これをクリアして設定デフォルトに戻すには、Sessions UI の `inherit` オプションを使ってください。 +- `/fast` はプロバイダー依存です: OpenAI/OpenAI Codex ではネイティブ Responses エンドポイントで `service_tier=priority` に対応し、`api.anthropic.com` に送られる OAuth 認証トラフィックを含む直接の公開 Anthropic リクエストでは `service_tier=auto` または `standard_only` に対応します。[OpenAI](/ja-JP/providers/openai) と [Anthropic](/ja-JP/providers/anthropic) を参照してください。 +- ツール失敗の概要は関連がある場合に引き続き表示されますが、詳細な失敗テキストが含まれるのは `/verbose` が `on` または `full` のときだけです。 +- `/reasoning`、`/verbose`、`/trace` はグループ設定では危険です: 意図せず内部の reasoning、ツール出力、または plugin 診断を公開してしまう可能性があります。特にグループチャットでは、これらをオフのままにしておくことを推奨します。 - `/model` は新しいセッションモデルを即座に永続化します。 - エージェントがアイドル状態なら、次の実行ですぐに使われます。 -- すでに実行がアクティブな場合、OpenClaw はライブ切り替えを pending としてマークし、クリーンな再試行ポイントでのみ新しいモデルに切り替えて再開します。 -- ツール動作または応答出力がすでに始まっている場合、その pending 切り替えは、後の再試行機会または次のユーザーターンまでキューに残ることがあります。 -- **Fast path:** 許可リスト入り送信者からのコマンドのみメッセージは即座に処理されます(キュー + モデルをバイパス)。 -- **グループ mention ゲーティング:** 許可リスト入り送信者からのコマンドのみメッセージは mention 要件をバイパスします。 -- **インラインショートカット(許可リスト入り送信者のみ):** 特定のコマンドは通常メッセージに埋め込まれていても動作し、残りのテキストがモデルに見える前に取り除かれます。 - - 例: `hey /status` は status 応答をトリガーし、残りのテキストは通常のフローを継続します。 -- 現在: `/help`, `/commands`, `/status`, `/whoami` (`/id`)。 -- 認可されていないコマンドのみメッセージは黙って無視され、インラインの `/...` トークンは平文テキストとして扱われます。 -- **skill コマンド:** `user-invocable` の Skills はスラッシュコマンドとして公開されます。名前は `a-z0-9_` にサニタイズされ(最大 32 文字)、衝突時には数字の接尾辞が付きます(例: `_2`)。 - - `/skill [input]` は名前で skill を実行します(ネイティブコマンドの制限により skill ごとのコマンドが使えないときに便利です)。 +- すでに実行がアクティブな場合、OpenClaw はライブ切り替えを保留としてマークし、クリーンな再試行ポイントでのみ新しいモデルに再起動します。 +- ツール活動または返信出力がすでに始まっている場合、その保留切り替えは後の再試行機会または次のユーザーターンまでキューに残ることがあります。 +- **高速パス:** 許可リスト登録済み送信者からのコマンドのみのメッセージは即座に処理されます(キューとモデルをバイパスします)。 +- **グループメンションゲーティング:** 許可リスト登録済み送信者からのコマンドのみのメッセージは、メンション要件をバイパスします。 +- **インラインショートカット(許可リスト登録済み送信者のみ):** 一部のコマンドは通常メッセージに埋め込まれていても動作し、残りのテキストをモデルが見る前に取り除かれます。 + - 例: `hey /status` はステータス返信をトリガーし、残りのテキストは通常フローで処理され続けます。 +- 現在の対象: `/help`, `/commands`, `/status`, `/whoami` (`/id`)。 +- 認可されていないコマンドのみのメッセージは黙って無視され、インラインの `/...` トークンは通常のテキストとして扱われます。 +- **skill コマンド:** `user-invocable` な Skills はスラッシュコマンドとして公開されます。名前は `a-z0-9_` に正規化され(最大 32 文字)、衝突した場合は数値サフィックスが付きます(例: `_2`)。 + - `/skill [input]` は名前で skill を実行します(ネイティブコマンドの制限により skill ごとのコマンドを作れない場合に便利です)。 - デフォルトでは、skill コマンドは通常のリクエストとしてモデルに転送されます。 - - Skills は、任意で `command-dispatch: tool` を宣言し、コマンドを直接ツールにルーティングできます(決定的で、モデルなし)。 - - 例: `/prose`(OpenProse Plugin)— [OpenProse](/ja-JP/prose) を参照してください。 -- **ネイティブコマンド引数:** Discord は動的オプションに autocomplete を使います(必須引数を省略した場合はボタンメニューも使います)。Telegram と Slack では、コマンドが選択肢をサポートしていて引数を省略するとボタンメニューが表示されます。 + - Skills は任意で `command-dispatch: tool` を宣言して、コマンドをツールへ直接ルーティングできます(決定的で、モデルは使いません)。 + - 例: `/prose`(OpenProse plugin)— [OpenProse](/ja-JP/prose) を参照してください。 +- **ネイティブコマンド引数:** Discord は動的オプションに autocomplete を使います(必須引数を省略したときはボタンメニューも使います)。Telegram と Slack は、コマンドが選択肢をサポートしていて引数を省略した場合、ボタンメニューを表示します。 ## `/tools` -`/tools` は設定上の質問ではなく、ランタイム上の質問に答えます: **この会話でこのエージェントが今使えるものは何か**。 +`/tools` が答えるのは設定上の問いではなく、ランタイム上の問いです: **この会話でこのエージェントが今すぐ使えるもの**。 -- デフォルトの `/tools` はコンパクトで、素早く確認できるよう最適化されています。 +- デフォルトの `/tools` は簡潔で、すばやく見渡せるよう最適化されています。 - `/tools verbose` は短い説明を追加します。 -- 引数をサポートするネイティブコマンド surface では、`compact|verbose` として同じモード切り替えが公開されます。 -- 結果はセッション単位です。そのため、エージェント、チャネル、スレッド、送信者認可、またはモデルを変えると、出力が変わることがあります。 -- `/tools` には、core ツール、接続された Plugin ツール、チャネル所有ツールを含め、ランタイムで実際に到達可能なツールが含まれます。 +- 引数をサポートするネイティブコマンド画面では、同じモード切り替え `compact|verbose` が公開されます。 +- 結果はセッションスコープなので、エージェント、チャンネル、スレッド、送信者認可、またはモデルを変えると出力も変わることがあります。 +- `/tools` には、コアツール、接続された plugin ツール、チャンネル所有ツールを含め、ランタイムで実際に到達可能なツールが含まれます。 -profile や override の編集には、`/tools` を静的カタログとして扱うのではなく、Control UI の Tools パネルまたは config/catalog surface を使用してください。 +プロファイルや上書きの編集には、`/tools` を静的カタログとして扱うのではなく、Control UI の Tools パネルまたは設定/カタログ画面を使ってください。 -## 使用量 surface(どこに何が表示されるか) +## 使用量の表示箇所(どこに何が表示されるか) -- **provider 使用量/クォータ**(例: 「Claude 80% left」)は、使用量追跡が有効な場合、現在のモデル provider に対して `/status` に表示されます。OpenClaw は provider ウィンドウを `% left` に正規化します。MiniMax では、残量のみの percent フィールドは表示前に反転され、`model_remains` 応答ではチャットモデルのエントリが優先され、モデルタグ付きの plan ラベルが付きます。 -- `/status` 内の **トークン/キャッシュ行** は、ライブセッションスナップショットが乏しい場合、最新の transcript usage エントリにフォールバックできます。既存のゼロ以外のライブ値は引き続き優先され、保存済み合計が欠けているか小さい場合には、transcript フォールバックによってアクティブなランタイムモデルラベルと、より大きなプロンプト指向の合計も復元できます。 -- **応答ごとのトークン/コスト** は `/usage off|tokens|full` で制御されます(通常の応答に追記されます)。 -- `/model status` は使用量ではなく、**モデル/認証/endpoint** に関するものです。 +- **プロバイダー使用量/クォータ**(例: 「Claude 80% left」)は、使用量トラッキングが有効なとき、現在のモデルプロバイダーについて `/status` に表示されます。OpenClaw はプロバイダーのウィンドウを `% left` に正規化します。MiniMax では残量のみの percent フィールドは表示前に反転され、`model_remains` レスポンスではチャットモデルのエントリーが優先され、モデルタグ付きプランラベルが使われます。 +- `/status` 内の **トークン/キャッシュ行** は、ライブセッションスナップショットの情報が少ない場合、最新の transcript 使用量エントリーにフォールバックできます。既存のゼロ以外のライブ値が引き続き優先され、transcript フォールバックは保存済み合計が欠けているか小さすぎる場合に、アクティブなランタイムモデルラベルや、より大きなプロンプト指向の合計値も復元できます。 +- **レスポンスごとのトークン/コスト** は `/usage off|tokens|full` で制御されます(通常の返信に追記されます)。 +- `/model status` は **モデル/認証/エンドポイント** に関するものであり、使用量に関するものではありません。 ## モデル選択(`/model`) @@ -248,14 +246,14 @@ profile や override の編集には、`/tools` を静的カタログとして 注意: -- `/model` と `/model list` は、コンパクトな番号付き picker(モデルファミリー + 利用可能な provider)を表示します。 -- Discord では、`/model` と `/models` は provider とモデルのドロップダウン、および Submit ステップを持つインタラクティブ picker を開きます。 -- `/model <#>` はその picker から選択します(可能なら現在の provider を優先します)。 -- `/model status` は詳細ビューを表示し、利用可能であれば設定済み provider endpoint(`baseUrl`)と API mode(`api`)も含みます。 +- `/model` と `/model list` は、コンパクトな番号付きピッカー(モデルファミリー + 利用可能なプロバイダー)を表示します。 +- Discord では、`/model` と `/models` はプロバイダーとモデルのドロップダウン、および Submit ステップを備えたインタラクティブピッカーを開きます。 +- `/model <#>` はそのピッカーから選択し、可能であれば現在のプロバイダーを優先します。 +- `/model status` は詳細ビューを表示し、利用可能な場合は設定済みプロバイダーエンドポイント(`baseUrl`)と API モード(`api`)も含まれます。 ## デバッグ上書き -`/debug` では、**ランタイムのみ**の config 上書き(ディスクではなくメモリ)を設定できます。owner 専用。デフォルトでは無効で、`commands.debug: true` で有効にします。 +`/debug` を使うと、**ランタイム限定**の設定上書き(メモリ上、ディスクではない)を設定できます。owner 専用です。デフォルトでは無効で、`commands.debug: true` で有効にします。 例: @@ -269,12 +267,12 @@ profile や override の編集には、`/tools` を静的カタログとして 注意: -- 上書きは新しい config 読み取りに即座に適用されますが、`openclaw.json` には書き込みません。 -- `/debug reset` を使うとすべての上書きをクリアし、ディスク上の config に戻れます。 +- 上書きは新しい設定読み取りにすぐ適用されますが、`openclaw.json` には書き込みません。 +- すべての上書きを消去してディスク上の設定に戻るには `/debug reset` を使ってください。 -## Plugin trace 出力 +## plugin トレース出力 -`/trace` を使うと、完全な verbose mode を有効にせずに、**セッション単位の Plugin trace/debug 行** を切り替えられます。 +`/trace` を使うと、完全な verbose モードを有効にせずに**セッションスコープの plugin trace/debug 行**を切り替えられます。 例: @@ -286,16 +284,16 @@ profile や override の編集には、`/tools` を静的カタログとして 注意: -- 引数なしの `/trace` は現在のセッション trace 状態を表示します。 -- `/trace on` は現在のセッションの Plugin trace 行を有効にします。 -- `/trace off` は再び無効にします。 -- Plugin trace 行は `/status` 内や、通常のアシスタント応答の後続の診断メッセージとして表示されることがあります。 -- `/trace` は `/debug` の代わりではありません。`/debug` は引き続きランタイムのみの config 上書きを管理します。 -- `/trace` は `/verbose` の代わりでもありません。通常の verbose なツール/status 出力は引き続き `/verbose` に属します。 +- 引数なしの `/trace` は、現在のセッショントレース状態を表示します。 +- `/trace on` は、現在のセッションの plugin トレース行を有効にします。 +- `/trace off` は、それらを再び無効にします。 +- plugin トレース行は `/status` に表示されたり、通常のアシスタント返信の後に続く診断メッセージとして表示されたりすることがあります。 +- `/trace` は `/debug` の代わりにはなりません。`/debug` は引き続きランタイム限定の設定上書きを管理します。 +- `/trace` は `/verbose` の代わりにもなりません。通常の verbose なツール/ステータス出力は引き続き `/verbose` の役割です。 -## Config の更新 +## 設定更新 -`/config` はディスク上の config(`openclaw.json`)に書き込みます。owner 専用。デフォルトでは無効で、`commands.config: true` で有効にします。 +`/config` はディスク上の設定(`openclaw.json`)に書き込みます。owner 専用です。デフォルトでは無効で、`commands.config: true` で有効にします。 例: @@ -309,12 +307,12 @@ profile や override の編集には、`/tools` を静的カタログとして 注意: -- config は書き込み前に検証され、無効な変更は拒否されます。 +- 設定は書き込み前に検証されます。無効な変更は拒否されます。 - `/config` の更新は再起動後も保持されます。 -## MCP の更新 +## MCP 更新 -`/mcp` は、`mcp.servers` 配下の OpenClaw 管理 MCP server 定義を書き込みます。owner 専用。デフォルトでは無効で、`commands.mcp: true` で有効にします。 +`/mcp` は `mcp.servers` 配下の OpenClaw 管理 MCP サーバー定義を書き込みます。owner 専用です。デフォルトでは無効で、`commands.mcp: true` で有効にします。 例: @@ -327,12 +325,12 @@ profile や override の編集には、`/tools` を静的カタログとして 注意: -- `/mcp` は config を OpenClaw config に保存し、Pi 所有の project settings には保存しません。 -- 実際にどの転送が実行可能かは、ランタイムアダプターが決定します。 +- `/mcp` は設定を OpenClaw 設定に保存し、Pi 所有のプロジェクト設定には保存しません。 +- どの transport が実際に実行可能かは、ランタイムアダプターが決定します。 -## Plugin の更新 +## plugin 更新 -`/plugins` では、オペレーターが検出された Plugin を確認し、config 内で有効化を切り替えられます。読み取り専用フローでは `/plugin` を alias として使えます。デフォルトでは無効で、`commands.plugins: true` で有効にします。 +`/plugins` を使うと、運用者は検出された plugin を調べ、設定内の有効化状態を切り替えられます。読み取り専用フローでは `/plugin` をエイリアスとして使えます。デフォルトでは無効で、`commands.plugins: true` で有効にします。 例: @@ -346,34 +344,34 @@ profile や override の編集には、`/tools` を静的カタログとして 注意: -- `/plugins list` と `/plugins show` は、現在のワークスペースとディスク上 config に対して実際の Plugin 検出を行います。 -- `/plugins enable|disable` は Plugin config のみを更新し、Plugin を install または uninstall しません。 -- enable/disable の変更後は、適用するために Gateway を再起動してください。 +- `/plugins list` と `/plugins show` は、現在のワークスペースとディスク上の設定に対して実際の plugin 検出を行います。 +- `/plugins enable|disable` は plugin 設定のみを更新し、plugin のインストールやアンインストールは行いません。 +- 有効化/無効化の変更後は、適用するために gateway を再起動してください。 -## surface に関する注意 +## 画面ごとの注意 -- **テキストコマンド** は通常のチャットセッションで実行されます(DM は `main` を共有し、グループは独自セッションを持ちます)。 +- **テキストコマンド** は通常のチャットセッションで実行されます(DM は `main` を共有し、グループは独自のセッションを持ちます)。 - **ネイティブコマンド** は分離されたセッションを使います: - Discord: `agent::discord:slash:` - Slack: `agent::slack:slash:`(プレフィックスは `channels.slack.slashCommand.sessionPrefix` で設定可能) - - Telegram: `telegram:slash:`(`CommandTargetSessionKey` を介してチャットセッションを対象にします) + - Telegram: `telegram:slash:`(`CommandTargetSessionKey` 経由でチャットセッションを対象にします) - **`/stop`** はアクティブなチャットセッションを対象にするため、現在の実行を中止できます。 -- **Slack:** `channels.slack.slashCommand` は、単一の `/openclaw` 形式コマンド用として引き続きサポートされています。`commands.native` を有効にする場合、組み込みコマンドごとに 1 つの Slack slash command を作成する必要があります(名前は `/help` と同じ)。Slack 用のコマンド引数メニューは、一時的な Block Kit ボタンとして配信されます。 - - Slack のネイティブ例外: Slack は `/status` を予約しているため、`/status` ではなく `/agentstatus` を登録してください。テキストの `/status` は Slack メッセージ内で引き続き動作します。 +- **Slack:** `channels.slack.slashCommand` は単一の `/openclaw` 形式コマンド用として引き続きサポートされています。`commands.native` を有効にする場合は、組み込みコマンドごとに1つの Slack スラッシュコマンドを作成する必要があります(名前は `/help` と同じです)。Slack のコマンド引数メニューは、一時的な Block Kit ボタンとして配信されます。 + - Slack のネイティブ例外: Slack は `/status` を予約しているため、`/status` ではなく `/agentstatus` を登録してください。テキストの `/status` は Slack メッセージでも引き続き動作します。 -## BTW 横道質問 +## BTW 脇道の質問 -`/btw` は、現在のセッションに対する素早い**横道質問**です。 +`/btw` は現在のセッションについての手軽な**脇道の質問**です。 -通常のチャットとは異なり、これは: +通常のチャットとは異なり、次の特徴があります。 -- 現在のセッションを背景コンテキストとして使い、 -- 別個の**ツールなし**ワンショット呼び出しとして実行され、 -- 今後のセッションコンテキストを変更せず、 -- transcript 履歴に書き込まれず、 -- 通常のアシスタントメッセージではなく、ライブの横道結果として配信されます。 +- 現在のセッションを背景コンテキストとして使う +- 別個の**ツールなし**ワンショット呼び出しとして実行される +- 今後のセッションコンテキストを変更しない +- transcript 履歴に書き込まれない +- 通常のアシスタントメッセージではなく、ライブのサイド結果として配信される -そのため、`/btw` はメインタスクを進めたまま一時的な確認をしたいときに便利です。 +そのため、メインタスクを進めたまま一時的な確認をしたいときに `/btw` は便利です。 例: @@ -381,4 +379,4 @@ profile や override の編集には、`/tools` を静的カタログとして /btw what are we doing right now? ``` -完全な動作とクライアント UX の詳細については、[BTW 横道質問](/ja-JP/tools/btw) を参照してください。 +完全な動作とクライアント UX の詳細については、[BTW Side Questions](/ja-JP/tools/btw) を参照してください。