chore(i18n): refresh ja-JP translations
This commit is contained in:
parent
52646f78ed
commit
7a67c79897
@ -1,27 +1,27 @@
|
||||
---
|
||||
read_when:
|
||||
- バックグラウンドジョブまたはウェイクアップのスケジュール設定
|
||||
- 外部トリガー(Webhook、Gmail)をOpenClawに接続する】【。assistant to=functions.read კომენტary 天天送json 天天中彩票是 {"path":"/home/runner/work/docs/docs/source/.agents/skills/security-triage/SKILL.md"}
|
||||
- スケジュールされたタスクでheartbeatとcronのどちらを使うかを判断する
|
||||
summary: Gatewayスケジューラのスケジュール済みジョブ、Webhook、Gmail PubSubトリガー
|
||||
title: スケジュールされたタスク
|
||||
- バックグラウンドジョブやウェイクアップのスケジュール設定
|
||||
- 外部トリガー(Webhook、Gmail)をOpenClawに接続すること
|
||||
- スケジュール済みタスクに heartbeat と cron のどちらを使うかを決めること
|
||||
summary: Gatewayスケジューラ用のスケジュール済みジョブ、Webhook、Gmail PubSubトリガー
|
||||
title: スケジュール済みタスク
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T02:44:21Z"
|
||||
generated_at: "2026-04-12T04:43:46Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 04d94baa152de17d78515f7d545f099fe4810363ab67e06b465e489737f54665
|
||||
source_hash: f42bcaeedd0595d025728d7f236a724a0ebc67b6813c57233f4d739b3088317f
|
||||
source_path: automation/cron-jobs.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# スケジュールされたタスク(Cron)
|
||||
# スケジュール済みタスク(Cron)
|
||||
|
||||
CronはGatewayの組み込みスケジューラです。ジョブを永続化し、適切なタイミングでエージェントを起動し、出力をチャットチャネルまたはWebhookエンドポイントに返すことができます。
|
||||
Cron は Gateway に組み込まれたスケジューラです。ジョブを永続化し、適切なタイミングでエージェントを起動し、出力をチャットチャンネルまたは Webhook エンドポイントに返すことができます。
|
||||
|
||||
## クイックスタート
|
||||
|
||||
```bash
|
||||
# 1回限りのリマインダーを追加
|
||||
# 1 回限りのリマインダーを追加する
|
||||
openclaw cron add \
|
||||
--name "Reminder" \
|
||||
--at "2026-02-01T16:00:00Z" \
|
||||
@ -30,98 +30,109 @@ openclaw cron add \
|
||||
--wake now \
|
||||
--delete-after-run
|
||||
|
||||
# ジョブを確認
|
||||
# ジョブを確認する
|
||||
openclaw cron list
|
||||
|
||||
# 実行履歴を表示
|
||||
# 実行履歴を確認する
|
||||
openclaw cron runs --id <job-id>
|
||||
```
|
||||
|
||||
## cronの仕組み
|
||||
## cron の仕組み
|
||||
|
||||
- Cronは**Gatewayプロセス内**で実行されます(モデル内ではありません)。
|
||||
- ジョブは`~/.openclaw/cron/jobs.json`に永続化されるため、再起動してもスケジュールは失われません。
|
||||
- すべてのcron実行で[バックグラウンドタスク](/ja-JP/automation/tasks)レコードが作成されます。
|
||||
- 1回限りのジョブ(`--at`)は、デフォルトで成功後に自動削除されます。
|
||||
- 分離されたcron実行では、実行完了時にその`cron:<jobId>`セッション用の追跡対象ブラウザタブやプロセスをベストエフォートで閉じるため、切り離されたブラウザ自動化によって孤立プロセスが残りません。
|
||||
- 分離されたcron実行では、古い確認応答返信も防止されます。最初の結果が単なる中間ステータス更新(`on it`、`pulling everything together`、および同様のヒント)であり、最終回答を担当する子孫subagent実行がまだ存在しない場合、OpenClawは配信前に実際の結果を得るためにもう一度再プロンプトします。
|
||||
- Cron は **Gateway プロセス内** で実行されます(モデル内ではありません)。
|
||||
- ジョブは `~/.openclaw/cron/jobs.json` に永続化されるため、再起動してもスケジュールは失われません。
|
||||
- すべての cron 実行で [バックグラウンドタスク](/ja-JP/automation/tasks) レコードが作成されます。
|
||||
- 1 回限りのジョブ(`--at`)は、デフォルトで成功後に自動削除されます。
|
||||
- 分離された cron 実行では、実行完了時にその `cron:<jobId>` セッション向けに追跡されているブラウザータブやプロセスをベストエフォートで閉じるため、切り離されたブラウザー自動化によって孤立プロセスが残りません。
|
||||
- 分離された cron 実行では、古い確認応答返信も防止されます。最初の結果が単なる中間ステータス更新(`on it`、`pulling everything together`、およびそれに類するヒント)であり、最終回答を担当する子孫サブエージェント実行が残っていない場合、OpenClaw は配信前に実際の結果を得るために 1 回だけ再プロンプトします。
|
||||
|
||||
<a id="maintenance"></a>
|
||||
|
||||
cronのタスク再調整はランタイム側で管理されます。古い子セッション行がまだ存在していても、cronランタイムがそのジョブを実行中として追跡している間は、アクティブなcronタスクは存続します。
|
||||
ランタイムがそのジョブの管理をやめ、5分間の猶予ウィンドウが経過すると、メンテナンスによってそのタスクは`lost`とマークされることがあります。
|
||||
cron のタスク整合性管理はランタイム側で行われます。古い子セッション行が残っていても、cron ランタイムがそのジョブを実行中として追跡している間は、アクティブな cron タスクは存続します。ランタイムがそのジョブの所有をやめ、5 分の猶予期間が過ぎると、メンテナンスによってタスクが `lost` とマークされることがあります。
|
||||
|
||||
## スケジュールの種類
|
||||
|
||||
| 種類 | CLIフラグ | 説明 |
|
||||
| ------- | --------- | ------------------------------------------------------- |
|
||||
| `at` | `--at` | 1回限りのタイムスタンプ(ISO 8601または`20m`のような相対指定) |
|
||||
| `every` | `--every` | 固定間隔 |
|
||||
| `cron` | `--cron` | `--tz`を省略可能な5フィールドまたは6フィールドのcron式 |
|
||||
| 種類 | CLI フラグ | 説明 |
|
||||
| ------- | ---------- | ----------------------------------------------------- |
|
||||
| `at` | `--at` | 1 回限りのタイムスタンプ(ISO 8601 または `20m` のような相対指定) |
|
||||
| `every` | `--every` | 固定間隔 |
|
||||
| `cron` | `--cron` | 任意指定の `--tz` を伴う 5 フィールドまたは 6 フィールドの cron 式 |
|
||||
|
||||
タイムゾーンがないタイムスタンプはUTCとして扱われます。ローカルの壁時計時刻でスケジュールするには`--tz America/New_York`を追加してください。
|
||||
タイムゾーンを含まないタイムスタンプは UTC として扱われます。ローカルの壁時計時刻でスケジュールするには `--tz America/New_York` を追加してください。
|
||||
|
||||
毎時ちょうどに実行される繰り返し式は、負荷の急増を減らすために最大5分まで自動的にずらされます。正確な時刻に強制するには`--exact`を使用し、明示的なウィンドウを指定するには`--stagger 30s`を使用してください。
|
||||
毎時ちょうどに繰り返す式は、負荷スパイクを減らすために最大 5 分まで自動的に分散されます。正確な時刻で実行するには `--exact` を使うか、明示的なウィンドウとして `--stagger 30s` を指定してください。
|
||||
|
||||
### 日付指定と曜日指定は OR ロジックを使います
|
||||
|
||||
cron 式は [croner](https://github.com/Hexagon/croner) によって解析されます。日付指定フィールドと曜日指定フィールドの両方がワイルドカードでない場合、croner は **両方ではなく、どちらか一方** が一致したときにマッチします。これは標準的な Vixie cron の動作です。
|
||||
|
||||
```
|
||||
# 意図: 「15 日の午前 9 時、ただし月曜日の場合のみ」
|
||||
# 実際: 「毎月 15 日の午前 9 時、かつ毎週月曜日の午前 9 時」
|
||||
0 9 15 * 1
|
||||
```
|
||||
|
||||
これは月に 0〜1 回ではなく、月に約 5〜6 回発火します。OpenClaw はここで Croner のデフォルト OR 動作を使います。両方の条件を必須にするには、Croner の `+` 曜日修飾子(`0 9 15 * +1`)を使うか、片方のフィールドだけでスケジュールし、もう片方はジョブのプロンプトまたはコマンド内でガードしてください。
|
||||
|
||||
## 実行スタイル
|
||||
|
||||
| スタイル | `--session`値 | 実行場所 | 最適な用途 |
|
||||
| スタイル | `--session` の値 | 実行場所 | 最適な用途 |
|
||||
| --------------- | ------------------- | ------------------------ | ------------------------------- |
|
||||
| メインセッション | `main` | 次回heartbeatターン | リマインダー、システムイベント |
|
||||
| 分離 | `isolated` | 専用の`cron:<jobId>` | レポート、バックグラウンド作業 |
|
||||
| 現在のセッション | `current` | 作成時にバインド | コンテキスト認識の定期作業 |
|
||||
| カスタムセッション | `session:custom-id` | 永続的な名前付きセッション | 履歴を活用するワークフロー |
|
||||
| メインセッション | `main` | 次の heartbeat ターン | リマインダー、システムイベント |
|
||||
| 分離 | `isolated` | 専用の `cron:<jobId>` | レポート、バックグラウンド作業 |
|
||||
| 現在のセッション | `current` | 作成時にバインド | コンテキスト依存の定期作業 |
|
||||
| カスタムセッション | `session:custom-id` | 永続的な名前付きセッション | 履歴を積み上げるワークフロー |
|
||||
|
||||
**メインセッション**ジョブはシステムイベントをキューに入れ、必要に応じてheartbeatを起動します(`--wake now`または`--wake next-heartbeat`)。**分離**ジョブは、新しいセッションで専用のエージェントターンを実行します。**カスタムセッション**(`session:xxx`)は実行間でコンテキストを保持するため、以前の要約を基に積み上げていく日次スタンドアップのようなワークフローを可能にします。
|
||||
**メインセッション** ジョブはシステムイベントをキューに入れ、必要に応じて heartbeat を起動します(`--wake now` または `--wake next-heartbeat`)。**分離** ジョブは、新しいセッションで専用のエージェントターンを実行します。**カスタムセッション**(`session:xxx`)は実行をまたいでコンテキストを保持するため、以前の要約を積み上げる日次スタンドアップのようなワークフローを実現できます。
|
||||
|
||||
分離ジョブでは、ランタイムの後処理にそのcronセッション向けのベストエフォートなブラウザクリーンアップが含まれるようになりました。クリーンアップの失敗は無視されるため、実際のcron結果が優先されます。
|
||||
分離ジョブでは、ランタイムの後片付けにその cron セッション向けのブラウザーのベストエフォートなクリーンアップも含まれます。クリーンアップの失敗は無視されるため、実際の cron 結果が優先されます。
|
||||
|
||||
分離されたcron実行がsubagentをオーケストレーションする場合、配信でも古い親の中間テキストより、最終的な子孫の出力が優先されます。子孫がまだ実行中であれば、OpenClawはその部分的な親更新を通知せず抑制します。
|
||||
分離された cron 実行がサブエージェントをオーケストレーションする場合、配信では古い親の中間テキストよりも最終的な子孫出力が優先されます。子孫がまだ実行中であれば、OpenClaw はその部分的な親更新を通知する代わりに抑制します。
|
||||
|
||||
### 分離ジョブのペイロードオプション
|
||||
|
||||
- `--message`: プロンプトテキスト(分離では必須)
|
||||
- `--model` / `--thinking`: モデルおよびthinkingレベルのオーバーライド
|
||||
- `--light-context`: ワークスペースのブートストラップファイル挿入をスキップ
|
||||
- `--tools exec,read`: ジョブが使用できるツールを制限
|
||||
- `--model` / `--thinking`: モデルおよび thinking レベルのオーバーライド
|
||||
- `--light-context`: ワークスペースのブートストラップファイル注入をスキップ
|
||||
- `--tools exec,read`: ジョブが使えるツールを制限
|
||||
|
||||
`--model`はそのジョブで選択された許可済みモデルを使用します。要求されたモデルが許可されていない場合、cronは警告をログに出し、代わりにそのジョブのエージェント/デフォルトのモデル選択にフォールバックします。設定されたフォールバックチェーンは引き続き適用されますが、明示的なジョブ単位フォールバックリストのない単純なモデルオーバーライドでは、隠れた追加リトライ先としてエージェントのprimaryモデルは付加されなくなりました。
|
||||
`--model` は、そのジョブで選択された許可済みモデルを使います。要求されたモデルが許可されていない場合、cron は警告を記録し、代わりにそのジョブのエージェントまたはデフォルトのモデル選択にフォールバックします。設定済みのフォールバックチェーンは引き続き適用されますが、明示的なジョブ単位のフォールバックリストなしの単純なモデルオーバーライドでは、エージェントのプライマリが隠れた追加リトライ先として付加されなくなりました。
|
||||
|
||||
分離ジョブのモデル選択の優先順位は次のとおりです。
|
||||
|
||||
1. Gmailフックのモデルオーバーライド(実行がGmailから来ており、そのオーバーライドが許可されている場合)
|
||||
2. ジョブ単位ペイロードの`model`
|
||||
3. 保存済みcronセッションのモデルオーバーライド
|
||||
4. エージェント/デフォルトのモデル選択
|
||||
1. Gmail フックのモデルオーバーライド(その実行が Gmail 由来で、そのオーバーライドが許可されている場合)
|
||||
2. ジョブ単位ペイロードの `model`
|
||||
3. 保存済み cron セッションのモデルオーバーライド
|
||||
4. エージェントまたはデフォルトのモデル選択
|
||||
|
||||
Fast modeも解決済みのlive選択に従います。選択されたモデル設定に`params.fastMode`がある場合、分離cronはデフォルトでそれを使用します。保存済みセッションの`fastMode`オーバーライドは、どちらの方向でも設定より優先されます。
|
||||
Fast mode も解決後のライブ選択に従います。選択されたモデル設定に `params.fastMode` がある場合、分離 cron はデフォルトでそれを使用します。保存済みセッションの `fastMode` オーバーライドは、どちらの方向でも設定より優先されます。
|
||||
|
||||
分離実行がliveのモデル切り替えハンドオフに達した場合、cronは切り替え後のprovider/modelで再試行し、そのlive選択を再試行前に永続化します。切り替えに新しい認証プロファイルも含まれる場合、cronはその認証プロファイルのオーバーライドも永続化します。再試行回数には上限があります。初回試行に加えて2回の切り替え再試行後は、無限ループを避けるためにcronは中止します。
|
||||
分離実行でライブのモデル切り替えハンドオフが発生した場合、cron は切り替え後のプロバイダー/モデルで再試行し、そのライブ選択を再試行前に保存します。切り替えに新しい認証プロファイルも含まれている場合、cron はその認証プロファイルのオーバーライドも保存します。再試行回数には上限があり、初回試行に加えて 2 回の切り替え再試行の後は、無限ループせず中止します。
|
||||
|
||||
## 配信と出力
|
||||
|
||||
| モード | 動作 |
|
||||
| --------- | -------------------------------------------------------- |
|
||||
| `announce` | 要約を対象チャネルに配信(分離のデフォルト) |
|
||||
| `webhook` | 完了イベントのペイロードをURLにPOST |
|
||||
| `none` | 内部のみ、配信なし |
|
||||
| モード | 動作 |
|
||||
| ---------- | ------------------------------------------------------- |
|
||||
| `announce` | 要約を対象チャンネルに配信する(分離のデフォルト) |
|
||||
| `webhook` | 完了イベントのペイロードを URL に POST する |
|
||||
| `none` | 内部のみで、配信しない |
|
||||
|
||||
チャネル配信には`--announce --channel telegram --to "-1001234567890"`を使用します。Telegramフォーラムトピックには`-1001234567890:topic:123`を使用します。Slack/Discord/Mattermostの対象には、明示的なプレフィックス(`channel:<id>`、`user:<id>`)を使用する必要があります。
|
||||
チャンネル配信には `--announce --channel telegram --to "-1001234567890"` を使用します。Telegram フォーラムトピックでは `-1001234567890:topic:123` を使います。Slack/Discord/Mattermost の対象には明示的な接頭辞(`channel:<id>`、`user:<id>`)を使ってください。
|
||||
|
||||
cronが管理する分離ジョブでは、ランナーが最終配信経路を管理します。エージェントにはプレーンテキストの要約を返すようプロンプトが与えられ、その要約が`announce`、`webhook`を通じて送信されるか、`none`では内部保持されます。`--no-deliver`は配信をエージェントに戻すのではなく、実行を内部のみに保ちます。
|
||||
cron が所有する分離ジョブでは、実行ランナーが最終配信経路を管理します。エージェントにはプレーンテキストの要約を返すよう促され、その要約が `announce`、`webhook` を通じて送信されるか、`none` の場合は内部に保持されます。`--no-deliver` は配信をエージェントに戻しません。その実行を内部専用に保ちます。
|
||||
|
||||
元のタスクが特定の外部受信者にメッセージを送ることを明示的に指示している場合、エージェントはそれを直接送信しようとせず、誰に/どこにそのメッセージを送るべきかを出力内に記載する必要があります。
|
||||
元のタスクで何らかの外部受信者にメッセージを送ることが明示されている場合、エージェントは直接送信しようとするのではなく、そのメッセージを誰に/どこへ送るべきかを出力内に記載する必要があります。
|
||||
|
||||
失敗通知は別の宛先経路に従います。
|
||||
|
||||
- `cron.failureDestination`は失敗通知のグローバルデフォルトを設定します。
|
||||
- `job.delivery.failureDestination`はジョブ単位でそれを上書きします。
|
||||
- どちらも設定されておらず、かつジョブがすでに`announce`で配信している場合、失敗通知はそのprimaryのannounce対象にフォールバックするようになりました。
|
||||
- `delivery.failureDestination`がサポートされるのは、primary配信モードが`webhook`である場合を除き、`sessionTarget="isolated"`ジョブのみです。
|
||||
- `cron.failureDestination` は失敗通知のグローバルデフォルトを設定します。
|
||||
- `job.delivery.failureDestination` はジョブ単位でそれを上書きします。
|
||||
- どちらも設定されておらず、ジョブがすでに `announce` で配信している場合、失敗通知はそのプライマリな通知先にフォールバックします。
|
||||
- `delivery.failureDestination` は、プライマリ配信モードが `webhook` である場合を除き、`sessionTarget="isolated"` のジョブでのみサポートされます。
|
||||
|
||||
## CLIの例
|
||||
## CLI の例
|
||||
|
||||
1回限りのリマインダー(メインセッション):
|
||||
1 回限りのリマインダー(メインセッション):
|
||||
|
||||
```bash
|
||||
openclaw cron add \
|
||||
@ -132,7 +143,7 @@ openclaw cron add \
|
||||
--wake now
|
||||
```
|
||||
|
||||
配信付きの定期分離ジョブ:
|
||||
配信付きの定期的な分離ジョブ:
|
||||
|
||||
```bash
|
||||
openclaw cron add \
|
||||
@ -146,7 +157,7 @@ openclaw cron add \
|
||||
--to "channel:C1234567890"
|
||||
```
|
||||
|
||||
モデルおよびthinkingオーバーライド付きの分離ジョブ:
|
||||
モデルと thinking のオーバーライドを持つ分離ジョブ:
|
||||
|
||||
```bash
|
||||
openclaw cron add \
|
||||
@ -162,7 +173,7 @@ openclaw cron add \
|
||||
|
||||
## Webhook
|
||||
|
||||
Gatewayは外部トリガー用にHTTP Webhookエンドポイントを公開できます。設定で有効にします。
|
||||
Gateway は外部トリガー用に HTTP Webhook エンドポイントを公開できます。設定で有効化します。
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -176,7 +187,7 @@ Gatewayは外部トリガー用にHTTP Webhookエンドポイントを公開で
|
||||
|
||||
### 認証
|
||||
|
||||
すべてのリクエストには、ヘッダー経由でフックトークンを含める必要があります。
|
||||
すべてのリクエストは、ヘッダーを介してフックトークンを含める必要があります。
|
||||
|
||||
- `Authorization: Bearer <token>`(推奨)
|
||||
- `x-openclaw-token: <token>`
|
||||
@ -195,7 +206,7 @@ curl -X POST http://127.0.0.1:18789/hooks/wake \
|
||||
```
|
||||
|
||||
- `text`(必須): イベントの説明
|
||||
- `mode`(省略可能): `now`(デフォルト)または`next-heartbeat`
|
||||
- `mode`(任意): `now`(デフォルト)または `next-heartbeat`
|
||||
|
||||
### POST /hooks/agent
|
||||
|
||||
@ -212,39 +223,39 @@ curl -X POST http://127.0.0.1:18789/hooks/agent \
|
||||
|
||||
### マップされたフック(POST /hooks/\<name\>)
|
||||
|
||||
カスタムフック名は、設定内の`hooks.mappings`を介して解決されます。マッピングでは、テンプレートまたはコード変換を使って任意のペイロードを`wake`または`agent`アクションに変換できます。
|
||||
カスタムフック名は、設定の `hooks.mappings` を通じて解決されます。マッピングは、テンプレートまたはコード変換を使って任意のペイロードを `wake` または `agent` アクションに変換できます。
|
||||
|
||||
### セキュリティ
|
||||
|
||||
- フックエンドポイントはloopback、tailnet、または信頼できるリバースプロキシの背後に置いてください。
|
||||
- 専用のフックトークンを使用してください。gateway認証トークンを再利用しないでください。
|
||||
- `hooks.path`は専用のサブパスにしてください。`/`は拒否されます。
|
||||
- 明示的な`agentId`ルーティングを制限するには`hooks.allowedAgentIds`を設定してください。
|
||||
- 呼び出し元がセッションを選択する必要がない限り、`hooks.allowRequestSessionKey=false`を維持してください。
|
||||
- `hooks.allowRequestSessionKey`を有効にする場合は、許可されるセッションキーの形状を制約するために`hooks.allowedSessionKeyPrefixes`も設定してください。
|
||||
- フックエンドポイントは loopback、tailnet、または信頼できるリバースプロキシの背後に置いてください。
|
||||
- 専用のフックトークンを使ってください。Gateway の認証トークンを再利用しないでください。
|
||||
- `hooks.path` は専用のサブパスにしてください。`/` は拒否されます。
|
||||
- 明示的な `agentId` ルーティングを制限するには `hooks.allowedAgentIds` を設定してください。
|
||||
- 呼び出し元がセッションを選べる必要がない限り、`hooks.allowRequestSessionKey=false` のままにしてください。
|
||||
- `hooks.allowRequestSessionKey` を有効にする場合は、許可されるセッションキーの形を制約するために `hooks.allowedSessionKeyPrefixes` も設定してください。
|
||||
- フックペイロードはデフォルトで安全境界によりラップされます。
|
||||
|
||||
## Gmail PubSub連携
|
||||
## Gmail PubSub 連携
|
||||
|
||||
Google PubSubを介してGmail受信トリガーをOpenClawに接続します。
|
||||
Google PubSub を通じて Gmail 受信トレイトリガーを OpenClaw に接続します。
|
||||
|
||||
**前提条件**: `gcloud` CLI、`gog`(gogcli)、OpenClaw hooks有効化、公開HTTPSエンドポイント用のTailscale。
|
||||
**前提条件**: `gcloud` CLI、`gog`(gogcli)、OpenClaw のフックが有効、公開 HTTPS エンドポイント用の Tailscale。
|
||||
|
||||
### ウィザードセットアップ(推奨)
|
||||
### ウィザード設定(推奨)
|
||||
|
||||
```bash
|
||||
openclaw webhooks gmail setup --account openclaw@gmail.com
|
||||
```
|
||||
|
||||
これにより`hooks.gmail`設定が書き込まれ、Gmailプリセットが有効になり、pushエンドポイントにはTailscale Funnelが使用されます。
|
||||
これにより `hooks.gmail` 設定が書き込まれ、Gmail プリセットが有効化され、push エンドポイントに Tailscale Funnel が使われます。
|
||||
|
||||
### Gateway自動起動
|
||||
### Gateway の自動起動
|
||||
|
||||
`hooks.enabled=true`かつ`hooks.gmail.account`が設定されている場合、Gatewayは起動時に`gog gmail watch serve`を開始し、watchを自動更新します。無効化するには`OPENCLAW_SKIP_GMAIL_WATCHER=1`を設定してください。
|
||||
`hooks.enabled=true` かつ `hooks.gmail.account` が設定されている場合、Gateway は起動時に `gog gmail watch serve` を開始し、自動的に watch を更新します。無効にするには `OPENCLAW_SKIP_GMAIL_WATCHER=1` を設定してください。
|
||||
|
||||
### 手動の一回限りセットアップ
|
||||
### 手動の 1 回限りの設定
|
||||
|
||||
1. `gog`が使用するOAuthクライアントを所有するGCPプロジェクトを選択します。
|
||||
1. `gog` が使用する OAuth クライアントを所有する GCP プロジェクトを選択します。
|
||||
|
||||
```bash
|
||||
gcloud auth login
|
||||
@ -252,7 +263,7 @@ gcloud config set project <project-id>
|
||||
gcloud services enable gmail.googleapis.com pubsub.googleapis.com
|
||||
```
|
||||
|
||||
2. トピックを作成し、Gmailにpushアクセスを付与します。
|
||||
2. トピックを作成し、Gmail に push アクセス権を付与します。
|
||||
|
||||
```bash
|
||||
gcloud pubsub topics create gog-gmail-watch
|
||||
@ -261,7 +272,7 @@ gcloud pubsub topics add-iam-policy-binding gog-gmail-watch \
|
||||
--role=roles/pubsub.publisher
|
||||
```
|
||||
|
||||
3. watchを開始します。
|
||||
3. watch を開始します。
|
||||
|
||||
```bash
|
||||
gog gmail watch start \
|
||||
@ -270,7 +281,7 @@ gog gmail watch start \
|
||||
--topic projects/<project-id>/topics/gog-gmail-watch
|
||||
```
|
||||
|
||||
### Gmailモデルオーバーライド
|
||||
### Gmail のモデルオーバーライド
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -286,22 +297,22 @@ gog gmail watch start \
|
||||
## ジョブの管理
|
||||
|
||||
```bash
|
||||
# すべてのジョブを一覧表示
|
||||
# すべてのジョブを一覧表示する
|
||||
openclaw cron list
|
||||
|
||||
# ジョブを編集
|
||||
# ジョブを編集する
|
||||
openclaw cron edit <jobId> --message "Updated prompt" --model "opus"
|
||||
|
||||
# ジョブを今すぐ強制実行
|
||||
# ジョブを今すぐ強制実行する
|
||||
openclaw cron run <jobId>
|
||||
|
||||
# 期限到来時のみ実行
|
||||
# 期限到来時のみ実行する
|
||||
openclaw cron run <jobId> --due
|
||||
|
||||
# 実行履歴を表示
|
||||
# 実行履歴を表示する
|
||||
openclaw cron runs --id <jobId> --limit 50
|
||||
|
||||
# ジョブを削除
|
||||
# ジョブを削除する
|
||||
openclaw cron remove <jobId>
|
||||
|
||||
# エージェント選択(マルチエージェント構成)
|
||||
@ -311,10 +322,10 @@ openclaw cron edit <jobId> --clear-agent
|
||||
|
||||
モデルオーバーライドに関する注意:
|
||||
|
||||
- `openclaw cron add|edit --model ...`はジョブの選択モデルを変更します。
|
||||
- モデルが許可されている場合、その正確なprovider/modelが分離エージェント実行に渡されます。
|
||||
- 許可されていない場合、cronは警告を出し、そのジョブのエージェント/デフォルトのモデル選択にフォールバックします。
|
||||
- 設定されたフォールバックチェーンは引き続き適用されますが、明示的なジョブ単位フォールバックリストのない単純な`--model`オーバーライドでは、無言の追加リトライ先としてエージェントprimaryにフォールスルーしなくなりました。
|
||||
- `openclaw cron add|edit --model ...` はジョブの選択モデルを変更します。
|
||||
- モデルが許可されている場合、その正確なプロバイダー/モデルが分離エージェント実行に渡されます。
|
||||
- 許可されていない場合、cron は警告を出し、ジョブのエージェントまたはデフォルトのモデル選択にフォールバックします。
|
||||
- 設定済みのフォールバックチェーンは引き続き適用されますが、明示的なジョブ単位のフォールバックリストがない単純な `--model` オーバーライドは、隠れた追加リトライ先としてエージェントのプライマリへ自動的にフォールスルーしなくなりました。
|
||||
|
||||
## 設定
|
||||
|
||||
@ -329,20 +340,20 @@ openclaw cron edit <jobId> --clear-agent
|
||||
backoffMs: [60000, 120000, 300000],
|
||||
retryOn: ["rate_limit", "overloaded", "network", "server_error"],
|
||||
},
|
||||
webhookToken: "専用のWebhookトークンに置き換えてください",
|
||||
webhookToken: "replace-with-dedicated-webhook-token",
|
||||
sessionRetention: "24h",
|
||||
runLog: { maxBytes: "2mb", keepLines: 2000 },
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
cronを無効にするには: `cron.enabled: false` または `OPENCLAW_SKIP_CRON=1`。
|
||||
cron を無効にする: `cron.enabled: false` または `OPENCLAW_SKIP_CRON=1`。
|
||||
|
||||
**1回限りのリトライ**: 一時的なエラー(レート制限、過負荷、ネットワーク、サーバーエラー)は指数バックオフで最大3回まで再試行されます。永続的なエラーは即座に無効化されます。
|
||||
**1 回限りジョブの再試行**: 一時的なエラー(rate limit、overload、network、server error)は指数バックオフで最大 3 回まで再試行されます。恒久的なエラーは即座に無効化されます。
|
||||
|
||||
**定期実行のリトライ**: 再試行の間に指数バックオフ(30秒〜60分)が適用されます。次回の実行が成功するとバックオフはリセットされます。
|
||||
**定期ジョブの再試行**: 再試行の間隔には指数バックオフ(30 秒〜60 分)が使われます。バックオフは次回の成功実行後にリセットされます。
|
||||
|
||||
**メンテナンス**: `cron.sessionRetention`(デフォルトは`24h`)は分離実行のセッションエントリを削除します。`cron.runLog.maxBytes` / `cron.runLog.keepLines`は実行ログファイルを自動的に削除します。
|
||||
**メンテナンス**: `cron.sessionRetention`(デフォルト `24h`)は分離実行セッションのエントリを削除します。`cron.runLog.maxBytes` / `cron.runLog.keepLines` は実行ログファイルを自動的に削除します。
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
@ -359,30 +370,30 @@ openclaw logs --follow
|
||||
openclaw doctor
|
||||
```
|
||||
|
||||
### cronが実行されない
|
||||
### cron が発火しない
|
||||
|
||||
- `cron.enabled`と`OPENCLAW_SKIP_CRON`環境変数を確認してください。
|
||||
- Gatewayが継続的に実行されていることを確認してください。
|
||||
- `cron`スケジュールでは、タイムゾーン(`--tz`)とホストのタイムゾーンを確認してください。
|
||||
- 実行出力の`reason: not-due`は、手動実行が`openclaw cron run <jobId> --due`で確認され、そのジョブの期限がまだ来ていなかったことを意味します。
|
||||
- `cron.enabled` と `OPENCLAW_SKIP_CRON` 環境変数を確認してください。
|
||||
- Gateway が継続的に実行されていることを確認してください。
|
||||
- `cron` スケジュールでは、タイムゾーン(`--tz`)とホストのタイムゾーンが一致しているか確認してください。
|
||||
- 実行出力の `reason: not-due` は、手動実行が `openclaw cron run <jobId> --due` で確認され、そのジョブがまだ期限前だったことを意味します。
|
||||
|
||||
### cronは実行されたが配信されない
|
||||
### cron は発火したが配信されない
|
||||
|
||||
- 配信モードが`none`の場合、外部メッセージは想定されません。
|
||||
- 配信先が欠落または無効(`channel`/`to`)の場合、送信はスキップされます。
|
||||
- チャネル認証エラー(`unauthorized`、`Forbidden`)は、認証情報によって配信がブロックされたことを意味します。
|
||||
- 分離実行がサイレントトークン(`NO_REPLY` / `no_reply`)のみを返した場合、OpenClawは直接の外部配信を抑制し、フォールバックのキュー済み要約経路も抑制するため、チャットには何も投稿されません。
|
||||
- cronが管理する分離ジョブでは、フォールバックとしてエージェントがmessageツールを使うことを期待しないでください。ランナーが最終配信を管理し、`--no-deliver`は直接送信を許可する代わりに内部処理のままにします。
|
||||
- 配信モードが `none` の場合、外部メッセージは送信されません。
|
||||
- 配信先が欠落しているか無効(`channel` / `to`)の場合、送信はスキップされます。
|
||||
- チャンネル認証エラー(`unauthorized`、`Forbidden`)は、認証情報によって配信がブロックされたことを意味します。
|
||||
- 分離実行がサイレントトークン(`NO_REPLY` / `no_reply`)のみを返した場合、OpenClaw は直接の外部配信を抑制し、フォールバックのキュー済み要約経路も抑制するため、チャットには何も投稿されません。
|
||||
- cron が所有する分離ジョブでは、フォールバックとしてエージェントが message ツールを使うことを期待しないでください。最終配信はランナーが担当します。`--no-deliver` は直接送信を許可する代わりに、その実行を内部専用に保ちます。
|
||||
|
||||
### タイムゾーンの注意点
|
||||
### タイムゾーンの落とし穴
|
||||
|
||||
- `--tz`なしのcronはgatewayホストのタイムゾーンを使用します。
|
||||
- タイムゾーンなしの`at`スケジュールはUTCとして扱われます。
|
||||
- heartbeatの`activeHours`は設定済みタイムゾーン解決を使用します。
|
||||
- `--tz` なしの cron は Gateway ホストのタイムゾーンを使います。
|
||||
- タイムゾーンなしの `at` スケジュールは UTC として扱われます。
|
||||
- Heartbeat の `activeHours` は設定されたタイムゾーン解決を使います。
|
||||
|
||||
## 関連
|
||||
|
||||
- [Automation & Tasks](/ja-JP/automation) — すべての自動化メカニズムの概要
|
||||
- [Background Tasks](/ja-JP/automation/tasks) — cron実行のタスク台帳
|
||||
- [Heartbeat](/ja-JP/gateway/heartbeat) — 定期的なメインセッションのターン
|
||||
- [Timezone](/ja-JP/concepts/timezone) — タイムゾーン設定
|
||||
- [自動化とタスク](/ja-JP/automation) — すべての自動化メカニズムの概要
|
||||
- [バックグラウンドタスク](/ja-JP/automation/tasks) — cron 実行のタスク台帳
|
||||
- [Heartbeat](/ja-JP/gateway/heartbeat) — 定期的なメインセッションターン
|
||||
- [タイムゾーン](/ja-JP/concepts/timezone) — タイムゾーン設定
|
||||
|
||||
@ -3,28 +3,28 @@ read_when:
|
||||
- アクティブメモリが何のためのものかを理解したい場合
|
||||
- 会話型エージェントでアクティブメモリを有効にしたい場合
|
||||
- どこでも有効にすることなく、アクティブメモリの動作を調整したい場合
|
||||
summary: 対話型チャットセッションに関連するメモリを注入する、プラグイン所有のブロッキングメモリサブエージェント
|
||||
summary: インタラクティブなチャットセッションに関連するメモリを注入する、プラグイン所有のブロッキングメモリサブエージェント
|
||||
title: アクティブメモリ
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T04:31:47Z"
|
||||
generated_at: "2026-04-12T04:43:46Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: e8b0e6539e09678e9e8def68795f8bcb992f98509423da3da3123eda88ec1dd5
|
||||
source_hash: 59456805c28daaab394ba2a7f87e1104a1334a5cf32dbb961d5d232d9c471d84
|
||||
source_path: concepts/active-memory.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# アクティブメモリ
|
||||
|
||||
アクティブメモリは、対象となる会話セッションでメインの応答の前に実行される、オプションのプラグイン所有のブロッキングメモリサブエージェントです。
|
||||
アクティブメモリは、対象となる会話セッションにおいてメインの返信の前に実行される、オプションのプラグイン所有ブロッキングメモリサブエージェントです。
|
||||
|
||||
これは、ほとんどのメモリシステムが高機能ではあっても受動的だからです。メインエージェントがいつメモリを検索するかを判断することに依存していたり、ユーザーが「これを覚えて」や「メモリを検索して」のように言うことに依存していたりします。その時点では、メモリによって応答が自然に感じられるはずだった瞬間は、すでに過ぎています。
|
||||
これは、ほとんどのメモリシステムが高機能であっても受動的だからです。メインエージェントがいつメモリを検索するかを決めることに依存していたり、ユーザーが「これを覚えて」や「メモリを検索して」のように言うことに依存していたりします。その時点では、メモリによって返信が自然に感じられたはずのタイミングはすでに過ぎています。
|
||||
|
||||
アクティブメモリは、メインの応答が生成される前に、関連するメモリをシステムが浮上させるための、制限された1回の機会を与えます。
|
||||
アクティブメモリは、メインの返信が生成される前に関連するメモリを表に出すための、制限された1回の機会をシステムに与えます。
|
||||
|
||||
## これをエージェントに貼り付ける
|
||||
|
||||
自己完結型で安全なデフォルト設定でアクティブメモリを有効にしたい場合は、これをエージェントに貼り付けてください。
|
||||
自己完結型で安全なデフォルト設定によりアクティブメモリを有効にしたい場合は、これをエージェントに貼り付けてください。
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -36,7 +36,7 @@ x-i18n:
|
||||
enabled: true,
|
||||
agents: ["main"],
|
||||
allowedChatTypes: ["direct"],
|
||||
modelFallbackPolicy: "default-remote",
|
||||
modelFallback: "google/gemini-3-flash",
|
||||
queryMode: "recent",
|
||||
promptStyle: "balanced",
|
||||
timeoutMs: 15000,
|
||||
@ -50,15 +50,15 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
これにより、`main`エージェントでプラグインが有効になり、既定ではダイレクトメッセージ形式のセッションのみに限定され、まず現在のセッションモデルを継承し、明示的または継承されたモデルが利用できない場合でも組み込みのリモートフォールバックを使用できます。
|
||||
これにより、`main` エージェントでプラグインが有効になり、デフォルトではダイレクトメッセージ形式のセッションに限定され、まず現在のセッションモデルを継承し、明示的または継承されたモデルが利用できない場合にのみ設定済みのフォールバックモデルを使用します。
|
||||
|
||||
その後、Gatewayを再起動します。
|
||||
その後、Gateway を再起動します。
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
```
|
||||
|
||||
会話中にライブで確認するには、次を実行します。
|
||||
会話の中でライブ確認するには、次を使います。
|
||||
|
||||
```text
|
||||
/verbose on
|
||||
@ -66,13 +66,13 @@ openclaw gateway
|
||||
|
||||
## アクティブメモリを有効にする
|
||||
|
||||
最も安全な設定は次のとおりです。
|
||||
最も安全なセットアップは次のとおりです。
|
||||
|
||||
1. プラグインを有効にする
|
||||
2. 1つの会話型エージェントを対象にする
|
||||
3. 調整中のみログを有効にしておく
|
||||
3. 調整中のみロギングを有効にしておく
|
||||
|
||||
まず、`openclaw.json`にこれを追加します。
|
||||
`openclaw.json` では次の設定から始めてください。
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -83,7 +83,7 @@ openclaw gateway
|
||||
config: {
|
||||
agents: ["main"],
|
||||
allowedChatTypes: ["direct"],
|
||||
modelFallbackPolicy: "default-remote",
|
||||
modelFallback: "google/gemini-3-flash",
|
||||
queryMode: "recent",
|
||||
promptStyle: "balanced",
|
||||
timeoutMs: 15000,
|
||||
@ -97,23 +97,23 @@ openclaw gateway
|
||||
}
|
||||
```
|
||||
|
||||
次に、Gatewayを再起動します。
|
||||
その後、Gateway を再起動します。
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
```
|
||||
|
||||
これが意味することは次のとおりです。
|
||||
これが意味すること:
|
||||
|
||||
- `plugins.entries.active-memory.enabled: true` はプラグインを有効にします
|
||||
- `config.agents: ["main"]` は `main` エージェントのみをアクティブメモリの対象にします
|
||||
- `config.allowedChatTypes: ["direct"]` は、既定でダイレクトメッセージ形式のセッションでのみアクティブメモリを有効にします
|
||||
- `config.agents: ["main"]` は `main` エージェントだけをアクティブメモリの対象にします
|
||||
- `config.allowedChatTypes: ["direct"]` は、デフォルトでアクティブメモリをダイレクトメッセージ形式のセッションのみに制限します
|
||||
- `config.model` が未設定の場合、アクティブメモリはまず現在のセッションモデルを継承します
|
||||
- `config.modelFallbackPolicy: "default-remote"` は、明示的または継承されたモデルが利用できない場合に、組み込みのリモートフォールバックを既定として維持します
|
||||
- `config.promptStyle: "balanced"` は、`recent` モードの既定の汎用プロンプトスタイルを使用します
|
||||
- アクティブメモリは、対象となる対話型の永続チャットセッションでのみ引き続き実行されます
|
||||
- `config.modelFallback` は、必要に応じてリコール用の独自のフォールバック provider/model を指定します
|
||||
- `config.promptStyle: "balanced"` は、`recent` モード向けのデフォルトの汎用プロンプトスタイルを使用します
|
||||
- アクティブメモリは、対象となるインタラクティブな永続チャットセッションでのみ実行されます
|
||||
|
||||
## 確認方法
|
||||
## これを確認する方法
|
||||
|
||||
アクティブメモリは、モデルに対して非表示のシステムコンテキストを注入します。生の `<active_memory_plugin>...</active_memory_plugin>` タグをクライアントに公開することはありません。
|
||||
|
||||
@ -127,9 +127,9 @@ openclaw gateway
|
||||
/active-memory on
|
||||
```
|
||||
|
||||
これはセッションスコープです。`plugins.entries.active-memory.enabled`、エージェントの対象設定、その他のグローバル設定は変更しません。
|
||||
これはセッションスコープです。`plugins.entries.active-memory.enabled`、エージェントの対象指定、その他のグローバル設定は変更しません。
|
||||
|
||||
設定を書き込み、すべてのセッションでアクティブメモリを一時停止または再開したい場合は、明示的なグローバル形式を使用します。
|
||||
すべてのセッションに対して設定を書き込み、アクティブメモリを一時停止または再開したい場合は、明示的なグローバル形式を使用します。
|
||||
|
||||
```text
|
||||
/active-memory status --global
|
||||
@ -137,22 +137,22 @@ openclaw gateway
|
||||
/active-memory on --global
|
||||
```
|
||||
|
||||
グローバル形式は `plugins.entries.active-memory.config.enabled` に書き込みます。後でコマンドでアクティブメモリを再度有効にできるように、`plugins.entries.active-memory.enabled` は有効なままにします。
|
||||
グローバル形式は `plugins.entries.active-memory.config.enabled` に書き込みます。後でコマンドから再度アクティブメモリを有効にできるように、`plugins.entries.active-memory.enabled` は有効のままにします。
|
||||
|
||||
ライブセッションでアクティブメモリが何をしているか確認したい場合は、そのセッションで詳細モードを有効にします。
|
||||
ライブセッションでアクティブメモリが何をしているか確認したい場合は、そのセッションで verbose モードを有効にします。
|
||||
|
||||
```text
|
||||
/verbose on
|
||||
```
|
||||
|
||||
詳細表示を有効にすると、OpenClaw は次を表示できます。
|
||||
verbose を有効にすると、OpenClaw は次を表示できます。
|
||||
|
||||
- `Active Memory: ok 842ms recent 34 chars` のようなアクティブメモリのステータス行
|
||||
- `Active Memory Debug: Lemon pepper wings with blue cheese.` のような読みやすいデバッグ要約
|
||||
|
||||
これらの行は、非表示のシステムコンテキストに渡されるのと同じアクティブメモリの処理から導出されますが、生のプロンプトマークアップを公開する代わりに、人間向けに整形されています。
|
||||
これらの行は、非表示のシステムコンテキストに渡されるものと同じアクティブメモリのパスから生成されますが、生のプロンプトマークアップを公開する代わりに、人間が読める形式に整形されています。
|
||||
|
||||
既定では、このブロッキングメモリサブエージェントのトランスクリプトは一時的なもので、実行完了後に削除されます。
|
||||
デフォルトでは、ブロッキングメモリサブエージェントのトランスクリプトは一時的なもので、実行完了後に削除されます。
|
||||
|
||||
フロー例:
|
||||
|
||||
@ -161,7 +161,7 @@ openclaw gateway
|
||||
what wings should i order?
|
||||
```
|
||||
|
||||
想定される表示上の応答の形:
|
||||
想定される表示上の返信の形:
|
||||
|
||||
```text
|
||||
...normal assistant reply...
|
||||
@ -172,12 +172,14 @@ what wings should i order?
|
||||
|
||||
## 実行されるタイミング
|
||||
|
||||
アクティブメモリは2つのゲートを使用します。
|
||||
アクティブメモリは2つのゲートを使います。
|
||||
|
||||
1. **設定によるオプトイン**
|
||||
プラグインが有効であり、現在のエージェントIDが `plugins.entries.active-memory.config.agents` に含まれている必要があります。
|
||||
2. **厳格なランタイム適格性**
|
||||
有効化され対象指定されていても、アクティブメモリは対象となる対話型の永続チャットセッションでのみ実行されます。
|
||||
1. **設定によるオプトイン**
|
||||
プラグインが有効であり、現在のエージェント id が
|
||||
`plugins.entries.active-memory.config.agents` に含まれている必要があります。
|
||||
2. **厳密な実行時適格性**
|
||||
有効化され対象指定されていても、アクティブメモリは対象となる
|
||||
インタラクティブな永続チャットセッションでのみ実行されます。
|
||||
|
||||
実際のルールは次のとおりです。
|
||||
|
||||
@ -197,15 +199,15 @@ active memory runs
|
||||
|
||||
## セッションタイプ
|
||||
|
||||
`config.allowedChatTypes` は、どの種類の会話でアクティブメモリをそもそも実行できるかを制御します。
|
||||
`config.allowedChatTypes` は、どの種類の会話でアクティブメモリを実行できるかを制御します。
|
||||
|
||||
既定値は次のとおりです。
|
||||
デフォルトは次のとおりです。
|
||||
|
||||
```json5
|
||||
allowedChatTypes: ["direct"]
|
||||
```
|
||||
|
||||
つまり、アクティブメモリは既定ではダイレクトメッセージ形式のセッションで実行されますが、グループやチャネルのセッションでは、明示的にオプトインしない限り実行されません。
|
||||
これは、アクティブメモリはデフォルトではダイレクトメッセージ形式のセッションで実行される一方で、明示的にオプトインしない限りグループやチャンネルのセッションでは実行されないことを意味します。
|
||||
|
||||
例:
|
||||
|
||||
@ -223,41 +225,41 @@ allowedChatTypes: ["direct", "group", "channel"]
|
||||
|
||||
## 実行される場所
|
||||
|
||||
アクティブメモリは、プラットフォーム全体の推論機能ではなく、会話を強化する機能です。
|
||||
アクティブメモリは会話体験を強化する機能であり、プラットフォーム全体の推論機能ではありません。
|
||||
|
||||
| Surface | アクティブメモリは実行されるか |
|
||||
| ------------------------------------------------------------------- | ----------------------------------------------------------- |
|
||||
| Surface | アクティブメモリは実行されるか? |
|
||||
| ------------------------------------------------------------------- | -------------------------------------------------------- |
|
||||
| Control UI / web chat の永続セッション | はい。プラグインが有効で、エージェントが対象なら実行されます |
|
||||
| 同じ永続チャットパス上の他の対話型チャネルセッション | はい。プラグインが有効で、エージェントが対象なら実行されます |
|
||||
| ヘッドレスなワンショット実行 | いいえ |
|
||||
| Heartbeat/バックグラウンド実行 | いいえ |
|
||||
| 汎用の内部 `agent-command` パス | いいえ |
|
||||
| サブエージェント/内部ヘルパー実行 | いいえ |
|
||||
| 同じ永続チャット経路上のその他のインタラクティブなチャネルセッション | はい。プラグインが有効で、エージェントが対象なら実行されます |
|
||||
| ヘッドレスなワンショット実行 | いいえ |
|
||||
| Heartbeat/バックグラウンド実行 | いいえ |
|
||||
| 汎用の内部 `agent-command` 経路 | いいえ |
|
||||
| サブエージェント/内部ヘルパー実行 | いいえ |
|
||||
|
||||
## 使う理由
|
||||
## これを使う理由
|
||||
|
||||
次のような場合にアクティブメモリを使用します。
|
||||
次の場合にアクティブメモリを使用します。
|
||||
|
||||
- セッションが永続的でユーザー向けである
|
||||
- エージェントが検索すべき意味のある長期メモリを持っている
|
||||
- 生のプロンプトの決定性よりも、一貫性とパーソナライズが重要である
|
||||
- エージェントに検索する価値のある長期メモリがある
|
||||
- 生のプロンプト決定性よりも、連続性とパーソナライズが重要である
|
||||
|
||||
特に次のようなものに効果的です。
|
||||
特に次のような場合に効果的です。
|
||||
|
||||
- 安定した好み
|
||||
- 繰り返される習慣
|
||||
- 自然に表面化すべき長期的なユーザーコンテキスト
|
||||
- 自然に表に出るべき長期的なユーザーコンテキスト
|
||||
|
||||
次のような用途には向いていません。
|
||||
|
||||
- 自動化
|
||||
- 内部ワーカー
|
||||
- ワンショットAPIタスク
|
||||
- 非表示のパーソナライズが驚きになってしまう場所
|
||||
- ワンショット API タスク
|
||||
- 非表示のパーソナライズが意外に感じられる場所
|
||||
|
||||
## 仕組み
|
||||
|
||||
ランタイムの形は次のとおりです。
|
||||
実行時の形は次のとおりです。
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
@ -268,7 +270,7 @@ flowchart LR
|
||||
I --> M["Main Reply"]
|
||||
```
|
||||
|
||||
このブロッキングメモリサブエージェントが使用できるのは次のみです。
|
||||
ブロッキングメモリサブエージェントが使用できるのは次だけです。
|
||||
|
||||
- `memory_search`
|
||||
- `memory_get`
|
||||
@ -277,22 +279,22 @@ flowchart LR
|
||||
|
||||
## クエリモード
|
||||
|
||||
`config.queryMode` は、ブロッキングメモリサブエージェントがどれだけ会話を参照するかを制御します。
|
||||
`config.queryMode` は、ブロッキングメモリサブエージェントがどの程度の会話を参照するかを制御します。
|
||||
|
||||
## プロンプトスタイル
|
||||
|
||||
`config.promptStyle` は、ブロッキングメモリサブエージェントがメモリを返すべきかどうかを判断する際に、どれだけ積極的または厳格になるかを制御します。
|
||||
`config.promptStyle` は、ブロッキングメモリサブエージェントがメモリを返すかどうかを判断する際に、どの程度積極的または厳格にするかを制御します。
|
||||
|
||||
使用可能なスタイル:
|
||||
|
||||
- `balanced`: `recent` モード向けの汎用既定値
|
||||
- `strict`: 最も控えめ。近接したコンテキストからのにじみをできるだけ抑えたい場合に最適
|
||||
- `contextual`: 最も継続性に優しい。会話履歴をより重視すべき場合に最適
|
||||
- `recall-heavy`: 弱めだがもっともらしい一致でも、より積極的にメモリを浮上させる
|
||||
- `balanced`: `recent` モード向けの汎用デフォルト
|
||||
- `strict`: 最も慎重。近くのコンテキストからのにじみを極力少なくしたい場合に最適
|
||||
- `contextual`: 最も連続性を重視。会話履歴をより重視したい場合に最適
|
||||
- `recall-heavy`: 弱めでも十分あり得る一致に対して、より積極的にメモリを表に出す
|
||||
- `precision-heavy`: 一致が明白でない限り、積極的に `NONE` を優先する
|
||||
- `preference-only`: お気に入り、習慣、日課、好み、繰り返し現れる個人的事実に最適化
|
||||
- `preference-only`: お気に入り、習慣、ルーティン、好み、繰り返される個人的事実向けに最適化
|
||||
|
||||
`config.promptStyle` が未設定の場合の既定の対応:
|
||||
`config.promptStyle` が未設定の場合のデフォルト対応:
|
||||
|
||||
```text
|
||||
message -> strict
|
||||
@ -300,7 +302,7 @@ recent -> balanced
|
||||
full -> contextual
|
||||
```
|
||||
|
||||
`config.promptStyle` を明示的に設定した場合は、その上書き設定が優先されます。
|
||||
`config.promptStyle` を明示的に設定した場合は、その上書きが優先されます。
|
||||
|
||||
例:
|
||||
|
||||
@ -310,62 +312,58 @@ promptStyle: "preference-only"
|
||||
|
||||
## モデルフォールバックポリシー
|
||||
|
||||
`config.model` が未設定の場合、アクティブメモリは次の順序でモデルの解決を試みます。
|
||||
`config.model` が未設定の場合、アクティブメモリは次の順序でモデル解決を試みます。
|
||||
|
||||
```text
|
||||
explicit plugin model
|
||||
-> current session model
|
||||
-> agent primary model
|
||||
-> optional built-in remote fallback
|
||||
-> optional configured fallback model
|
||||
```
|
||||
|
||||
`config.modelFallbackPolicy` は最後のステップを制御します。
|
||||
`config.modelFallback` は、設定済みフォールバックのステップを制御します。
|
||||
|
||||
既定値:
|
||||
任意のカスタムフォールバック:
|
||||
|
||||
```json5
|
||||
modelFallbackPolicy: "default-remote"
|
||||
modelFallback: "google/gemini-3-flash"
|
||||
```
|
||||
|
||||
その他のオプション:
|
||||
明示的なモデル、継承されたモデル、または設定済みのフォールバックモデルのいずれも解決できない場合、アクティブメモリはそのターンのリコールをスキップします。
|
||||
|
||||
```json5
|
||||
modelFallbackPolicy: "resolved-only"
|
||||
```
|
||||
|
||||
明示的または継承されたモデルが利用できないときに、組み込みのリモート既定値へフォールバックする代わりにアクティブメモリでリコールをスキップしたい場合は、`resolved-only` を使用します。
|
||||
`config.modelFallbackPolicy` は、古い設定との互換性のためだけに残されている非推奨フィールドです。現在は実行時の動作を変更しません。
|
||||
|
||||
## 高度なエスケープハッチ
|
||||
|
||||
これらのオプションは、意図的に推奨設定には含めていません。
|
||||
これらのオプションは、意図的に推奨セットアップには含めていません。
|
||||
|
||||
`config.thinking` では、ブロッキングメモリサブエージェントの thinking レベルを上書きできます。
|
||||
`config.thinking` は、ブロッキングメモリサブエージェントの thinking レベルを上書きできます。
|
||||
|
||||
```json5
|
||||
thinking: "medium"
|
||||
```
|
||||
|
||||
既定値:
|
||||
デフォルト:
|
||||
|
||||
```json5
|
||||
thinking: "off"
|
||||
```
|
||||
|
||||
これは既定では有効にしないでください。アクティブメモリは応答経路で実行されるため、thinking 時間が増えると、そのままユーザーに見えるレイテンシが増加します。
|
||||
これはデフォルトでは有効にしないでください。アクティブメモリは返信経路で実行されるため、thinking 時間が増えると、ユーザーに見える待ち時間が直接増加します。
|
||||
|
||||
`config.promptAppend` は、既定のアクティブメモリプロンプトの後、会話コンテキストの前に、追加の運用者向け指示を加えます。
|
||||
`config.promptAppend` は、デフォルトのアクティブメモリプロンプトの後、会話コンテキストの前に追加の運用者向け指示を加えます。
|
||||
|
||||
```json5
|
||||
promptAppend: "Prefer stable long-term preferences over one-off events."
|
||||
```
|
||||
|
||||
`config.promptOverride` は、既定のアクティブメモリプロンプトを置き換えます。OpenClaw はその後も会話コンテキストを追加します。
|
||||
`config.promptOverride` は、デフォルトのアクティブメモリプロンプトを置き換えます。OpenClaw はその後ろに引き続き会話コンテキストを追加します。
|
||||
|
||||
```json5
|
||||
promptOverride: "You are a memory search agent. Return NONE or one compact user fact."
|
||||
```
|
||||
|
||||
プロンプトのカスタマイズは、異なるリコール契約を意図的にテストしている場合を除き、推奨されません。既定のプロンプトは、`NONE` またはメインモデル向けのコンパクトなユーザー事実コンテキストを返すように調整されています。
|
||||
プロンプトのカスタマイズは、別のリコール契約を意図的にテストしているのでなければ推奨されません。デフォルトのプロンプトは、`NONE` またはメインモデル向けの簡潔なユーザー事実コンテキストを返すように調整されています。
|
||||
|
||||
### `message`
|
||||
|
||||
@ -375,19 +373,19 @@ promptOverride: "You are a memory search agent. Return NONE or one compact user
|
||||
Latest user message only
|
||||
```
|
||||
|
||||
このモードを使うのは次のような場合です。
|
||||
これは次の場合に使います。
|
||||
|
||||
- 最速の動作にしたい
|
||||
- 安定した好みのリコールに最も強く寄せたい
|
||||
- フォローアップのターンで会話コンテキストが不要
|
||||
- 最速の動作がほしい
|
||||
- 安定した嗜好のリコールに最も強いバイアスをかけたい
|
||||
- フォローアップのターンに会話コンテキストが不要
|
||||
|
||||
推奨タイムアウト:
|
||||
|
||||
- `3000` 〜 `5000` ms 前後から始める
|
||||
- `3000`〜`5000` ms 程度から始める
|
||||
|
||||
### `recent`
|
||||
|
||||
最新のユーザーメッセージに加えて、直近の会話の短い末尾が送信されます。
|
||||
最新のユーザーメッセージに加えて、直近の小さな会話テールが送信されます。
|
||||
|
||||
```text
|
||||
Recent conversation tail:
|
||||
@ -399,14 +397,14 @@ Latest user message:
|
||||
...
|
||||
```
|
||||
|
||||
このモードを使うのは次のような場合です。
|
||||
これは次の場合に使います。
|
||||
|
||||
- 速度と会話の文脈づけのバランスをより良くしたい
|
||||
- フォローアップの質問が直近の数ターンに依存することが多い
|
||||
- 速度と会話上のグラウンディングのより良いバランスがほしい
|
||||
- フォローアップの質問が直前の数ターンに依存することが多い
|
||||
|
||||
推奨タイムアウト:
|
||||
|
||||
- `15000` ms 前後から始める
|
||||
- `15000` ms 程度から始める
|
||||
|
||||
### `full`
|
||||
|
||||
@ -420,15 +418,15 @@ user: ...
|
||||
...
|
||||
```
|
||||
|
||||
このモードを使うのは次のような場合です。
|
||||
これは次の場合に使います。
|
||||
|
||||
- レイテンシよりも、できるだけ高いリコール品質が重要
|
||||
- 会話スレッドのかなり前方に重要な前提情報が含まれている
|
||||
- 待ち時間よりも、できる限り高いリコール品質が重要
|
||||
- 会話に、スレッドのかなり前にある重要な前提情報が含まれている
|
||||
|
||||
推奨タイムアウト:
|
||||
|
||||
- `message` や `recent` と比べて大幅に増やす
|
||||
- スレッドサイズに応じて `15000` ms 以上から始める
|
||||
- スレッドサイズに応じて、`15000` ms 以上から始める
|
||||
|
||||
一般に、タイムアウトはコンテキストサイズに応じて増やすべきです。
|
||||
|
||||
@ -440,13 +438,13 @@ message < recent < full
|
||||
|
||||
アクティブメモリのブロッキングメモリサブエージェント実行では、ブロッキングメモリサブエージェント呼び出し中に実際の `session.jsonl` トランスクリプトが作成されます。
|
||||
|
||||
既定では、そのトランスクリプトは一時的なものです:
|
||||
デフォルトでは、そのトランスクリプトは一時的なものです:
|
||||
|
||||
- 一時ディレクトリに書き込まれます
|
||||
- ブロッキングメモリサブエージェントの実行にのみ使用されます
|
||||
- 実行完了直後に削除されます
|
||||
- 一時ディレクトリに書き込まれる
|
||||
- ブロッキングメモリサブエージェント実行でのみ使用される
|
||||
- 実行終了直後に削除される
|
||||
|
||||
デバッグや確認のために、それらのブロッキングメモリサブエージェントのトランスクリプトをディスク上に保持したい場合は、永続化を明示的に有効にしてください。
|
||||
デバッグや確認のためにそれらのブロッキングメモリサブエージェントのトランスクリプトをディスク上に保持したい場合は、永続化を明示的に有効にしてください。
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -465,9 +463,9 @@ message < recent < full
|
||||
}
|
||||
```
|
||||
|
||||
有効にすると、アクティブメモリは、対象エージェントのセッションフォルダー配下の別ディレクトリにトランスクリプトを保存し、メインのユーザー会話トランスクリプトのパスには保存しません。
|
||||
有効にすると、アクティブメモリはトランスクリプトを、メインのユーザー会話トランスクリプトのパスではなく、対象エージェントの sessions フォルダー配下の別ディレクトリに保存します。
|
||||
|
||||
既定のレイアウトは概念的には次のとおりです。
|
||||
デフォルトのレイアウトの概念は次のとおりです。
|
||||
|
||||
```text
|
||||
agents/<agent>/sessions/active-memory/<blocking-memory-sub-agent-session-id>.jsonl
|
||||
@ -477,13 +475,13 @@ agents/<agent>/sessions/active-memory/<blocking-memory-sub-agent-session-id>.jso
|
||||
|
||||
これは慎重に使用してください。
|
||||
|
||||
- ブロッキングメモリサブエージェントのトランスクリプトは、セッションが多忙だとすぐに蓄積する可能性があります
|
||||
- `full` クエリモードでは、大量の会話コンテキストが重複する可能性があります
|
||||
- ブロッキングメモリサブエージェントのトランスクリプトは、セッションが多いとすぐに蓄積する可能性があります
|
||||
- `full` クエリモードでは大量の会話コンテキストが重複することがあります
|
||||
- これらのトランスクリプトには、非表示のプロンプトコンテキストとリコールされたメモリが含まれます
|
||||
|
||||
## 設定
|
||||
|
||||
すべてのアクティブメモリ設定は次の配下にあります。
|
||||
アクティブメモリの設定はすべて次の配下にあります。
|
||||
|
||||
```text
|
||||
plugins.entries.active-memory
|
||||
@ -491,36 +489,36 @@ plugins.entries.active-memory
|
||||
|
||||
最も重要なフィールドは次のとおりです。
|
||||
|
||||
| Key | Type | 意味 |
|
||||
| --------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
|
||||
| `enabled` | `boolean` | プラグイン自体を有効にします |
|
||||
| `config.agents` | `string[]` | アクティブメモリを使用できるエージェントID |
|
||||
| `config.model` | `string` | オプションのブロッキングメモリサブエージェントモデル参照。未設定の場合、アクティブメモリは現在のセッションモデルを使用します |
|
||||
| `config.queryMode` | `"message" \| "recent" \| "full"` | ブロッキングメモリサブエージェントがどれだけ会話を参照するかを制御します |
|
||||
| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | ブロッキングメモリサブエージェントがメモリを返すべきか判断する際に、どれだけ積極的または厳格になるかを制御します |
|
||||
| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | ブロッキングメモリサブエージェント向けの高度な thinking 上書き。速度のため既定は `off` |
|
||||
| `config.promptOverride` | `string` | 高度な完全プロンプト置換。通常の用途には推奨されません |
|
||||
| `config.promptAppend` | `string` | 既定または上書きされたプロンプトに追加される高度な追加指示 |
|
||||
| `config.timeoutMs` | `number` | ブロッキングメモリサブエージェントのハードタイムアウト |
|
||||
| `config.maxSummaryChars` | `number` | active-memory 要約で許可される合計最大文字数 |
|
||||
| `config.logging` | `boolean` | 調整中にアクティブメモリのログを出力します |
|
||||
| `config.persistTranscripts` | `boolean` | 一時ファイルを削除せず、ブロッキングメモリサブエージェントのトランスクリプトをディスクに保持します |
|
||||
| `config.transcriptDir` | `string` | エージェントのセッションフォルダー配下に置かれる、相対的なブロッキングメモリサブエージェント用トランスクリプトディレクトリ |
|
||||
| Key | Type | 意味 |
|
||||
| --------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
||||
| `enabled` | `boolean` | プラグイン自体を有効にします |
|
||||
| `config.agents` | `string[]` | アクティブメモリを使用できるエージェント id |
|
||||
| `config.model` | `string` | オプションのブロッキングメモリサブエージェントモデル参照。未設定時はアクティブメモリは現在のセッションモデルを使用します |
|
||||
| `config.queryMode` | `"message" \| "recent" \| "full"` | ブロッキングメモリサブエージェントがどの程度の会話を見るかを制御します |
|
||||
| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | ブロッキングメモリサブエージェントがメモリを返すかどうかを判断する際の積極性または厳格さを制御します |
|
||||
| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | ブロッキングメモリサブエージェント向けの高度な thinking 上書き。速度のためデフォルトは `off` |
|
||||
| `config.promptOverride` | `string` | 高度な完全プロンプト置き換え。通常の使用には推奨されません |
|
||||
| `config.promptAppend` | `string` | デフォルトまたは上書きされたプロンプトに追加される高度な追加指示 |
|
||||
| `config.timeoutMs` | `number` | ブロッキングメモリサブエージェントのハードタイムアウト |
|
||||
| `config.maxSummaryChars` | `number` | active-memory 要約で許可される合計文字数の最大値 |
|
||||
| `config.logging` | `boolean` | 調整中にアクティブメモリのログを出力します |
|
||||
| `config.persistTranscripts` | `boolean` | 一時ファイルを削除せず、ブロッキングメモリサブエージェントのトランスクリプトをディスク上に保持します |
|
||||
| `config.transcriptDir` | `string` | エージェントの sessions フォルダー配下の、ブロッキングメモリサブエージェントの相対トランスクリプトディレクトリ |
|
||||
|
||||
便利な調整用フィールド:
|
||||
便利な調整フィールド:
|
||||
|
||||
| Key | Type | 意味 |
|
||||
| ----------------------------- | -------- | --------------------------------------------------------------- |
|
||||
| `config.maxSummaryChars` | `number` | active-memory 要約で許可される合計最大文字数 |
|
||||
| `config.recentUserTurns` | `number` | `queryMode` が `recent` のときに含める直前のユーザーターン数 |
|
||||
| `config.recentAssistantTurns` | `number` | `queryMode` が `recent` のときに含める直前のアシスタントターン数 |
|
||||
| `config.recentUserChars` | `number` | 各最近のユーザーターンあたりの最大文字数 |
|
||||
| `config.recentAssistantChars` | `number` | 各最近のアシスタントターンあたりの最大文字数 |
|
||||
| `config.cacheTtlMs` | `number` | 同一クエリの繰り返しに対するキャッシュ再利用 |
|
||||
| Key | Type | 意味 |
|
||||
| ----------------------------- | -------- | --------------------------------------------------------- |
|
||||
| `config.maxSummaryChars` | `number` | active-memory 要約で許可される合計文字数の最大値 |
|
||||
| `config.recentUserTurns` | `number` | `queryMode` が `recent` のときに含める過去のユーザーターン数 |
|
||||
| `config.recentAssistantTurns` | `number` | `queryMode` が `recent` のときに含める過去のアシスタントターン数 |
|
||||
| `config.recentUserChars` | `number` | 最近の各ユーザーターンあたりの最大文字数 |
|
||||
| `config.recentAssistantChars` | `number` | 最近の各アシスタントターンあたりの最大文字数 |
|
||||
| `config.cacheTtlMs` | `number` | 同一クエリが繰り返された場合のキャッシュ再利用時間 |
|
||||
|
||||
## 推奨設定
|
||||
## 推奨セットアップ
|
||||
|
||||
まずは `recent` から始めてください。
|
||||
`recent` から始めてください。
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -542,33 +540,33 @@ plugins.entries.active-memory
|
||||
}
|
||||
```
|
||||
|
||||
調整中にライブの動作を確認したい場合は、別個の active-memory デバッグコマンドを探すのではなく、セッションで `/verbose on` を使ってください。
|
||||
調整中にライブの動作を確認したい場合は、別の active-memory デバッグコマンドを探すのではなく、セッション内で `/verbose on` を使用してください。
|
||||
|
||||
その後、次のように移行します。
|
||||
その後、次の方向に移行します。
|
||||
|
||||
- レイテンシを下げたい場合は `message`
|
||||
- 追加コンテキストにより、より遅いブロッキングメモリサブエージェントでも価値があると判断した場合は `full`
|
||||
- 待ち時間を短くしたい場合は `message`
|
||||
- 追加のコンテキストに、より遅いブロッキングメモリサブエージェントの価値があると判断した場合は `full`
|
||||
|
||||
## デバッグ
|
||||
|
||||
期待した場所でアクティブメモリが表示されない場合:
|
||||
アクティブメモリが想定した場所で表示されない場合:
|
||||
|
||||
1. `plugins.entries.active-memory.enabled` でプラグインが有効になっていることを確認します。
|
||||
2. 現在のエージェントIDが `config.agents` に含まれていることを確認します。
|
||||
3. 対話型の永続チャットセッション経由でテストしていることを確認します。
|
||||
4. `config.logging: true` を有効にして、Gatewayログを確認します。
|
||||
5. `openclaw memory status --deep` でメモリ検索自体が機能していることを検証します。
|
||||
2. 現在のエージェント id が `config.agents` に含まれていることを確認します。
|
||||
3. インタラクティブな永続チャットセッション経由でテストしていることを確認します。
|
||||
4. `config.logging: true` を有効にし、Gateway のログを確認します。
|
||||
5. `openclaw memory status --deep` でメモリ検索自体が動作することを確認します。
|
||||
|
||||
メモリヒットのノイズが多い場合は、次を厳しくします。
|
||||
メモリヒットがノイジーな場合は、次を厳しくします。
|
||||
|
||||
- `maxSummaryChars`
|
||||
|
||||
アクティブメモリが遅すぎる場合は、次を検討します。
|
||||
アクティブメモリが遅すぎる場合:
|
||||
|
||||
- `queryMode` を下げる
|
||||
- `timeoutMs` を下げる
|
||||
- 最近のターン数を減らす
|
||||
- ターンごとの文字数上限を減らす
|
||||
- recent ターン数を減らす
|
||||
- 各ターンの文字数上限を減らす
|
||||
|
||||
## 関連ページ
|
||||
|
||||
|
||||
@ -1,87 +1,79 @@
|
||||
---
|
||||
read_when:
|
||||
- システムプロンプトのテキスト、ツール一覧、または時刻 / ハートビートのセクションを編集する場合
|
||||
- ワークスペースのブートストラップや Skills の注入動作を変更する場合
|
||||
- システムプロンプトのテキスト、ツール一覧、または時刻 / ハートビートのセクションの編集
|
||||
- ワークスペースのブートストラップや Skills の注入動作の変更
|
||||
summary: OpenClaw のシステムプロンプトに含まれる内容と、その組み立て方法
|
||||
title: システムプロンプト
|
||||
x-i18n:
|
||||
generated_at: "2026-04-08T02:14:25Z"
|
||||
generated_at: "2026-04-12T04:43:45Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: e55fc886bc8ec47584d07c9e60dfacd964dc69c7db976ea373877dc4fe09a79a
|
||||
source_hash: 057f01aac51f7737b5223f61f5d55e552d9011232aebb130426e269d8f6c257f
|
||||
source_path: concepts/system-prompt.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# システムプロンプト
|
||||
|
||||
OpenClaw は、各エージェント実行ごとにカスタムのシステムプロンプトを構築します。このプロンプトは **OpenClaw が管理する** ものであり、pi-coding-agent のデフォルトプロンプトは使用しません。
|
||||
OpenClaw は、エージェントの実行ごとにカスタムのシステムプロンプトを構築します。このプロンプトは **OpenClaw が管理** しており、pi-coding-agent のデフォルトプロンプトは使用しません。
|
||||
|
||||
プロンプトは OpenClaw によって組み立てられ、各エージェント実行に注入されます。
|
||||
このプロンプトは OpenClaw によって組み立てられ、各エージェント実行に注入されます。
|
||||
|
||||
プロバイダープラグインは、OpenClaw が管理するプロンプト全体を置き換えることなく、キャッシュを意識したプロンプトガイダンスを追加できます。プロバイダーランタイムでは、次のことが可能です。
|
||||
プロバイダープラグインは、OpenClaw 管理の完全なプロンプトを置き換えることなく、キャッシュ対応のプロンプトガイダンスを提供できます。プロバイダーランタイムでは、次のことが可能です。
|
||||
|
||||
- 少数の名前付きコアセクション(`interaction_style`、
|
||||
`tool_call_style`, `execution_bias`)を置き換える
|
||||
- プロンプトキャッシュ境界の上に **stable prefix** を注入する
|
||||
- プロンプトキャッシュ境界の下に **dynamic suffix** を注入する
|
||||
- 少数の名前付きコアセクション(`interaction_style`、`tool_call_style`、`execution_bias`)を置き換える
|
||||
- プロンプトキャッシュ境界の上に**安定したプレフィックス**を注入する
|
||||
- プロンプトキャッシュ境界の下に**動的なサフィックス**を注入する
|
||||
|
||||
モデルファミリー固有のチューニングには、プロバイダー管理の追加内容を使用してください。従来の
|
||||
`before_prompt_build` によるプロンプト変更は、互換性維持や本当にグローバルなプロンプト変更のために残し、通常のプロバイダー動作には使わないでください。
|
||||
モデルファミリー固有のチューニングには、プロバイダー管理の追加を使用してください。従来の
|
||||
`before_prompt_build` によるプロンプト変更は、互換性のため、または本当にグローバルなプロンプト変更にのみ使い、通常のプロバイダー挙動には使わないでください。
|
||||
|
||||
## 構成
|
||||
## 構造
|
||||
|
||||
このプロンプトは意図的にコンパクトで、固定セクションを使用します。
|
||||
|
||||
- **Tooling**: structured-tool の信頼できる情報源であることのリマインダーと、ランタイムでのツール使用ガイダンス。
|
||||
- **Safety**: 権力追求的な行動や監督の回避を避けるための短いガードレールのリマインダー。
|
||||
- **Skills**(利用可能な場合): 必要に応じてスキル指示を読み込む方法をモデルに伝えます。
|
||||
- **OpenClaw Self-Update**: `config.schema.lookup` で安全に設定を確認する方法、`config.patch` で設定をパッチする方法、`config.apply` で完全な設定を置き換える方法、および明示的なユーザー要求がある場合にのみ `update.run` を実行する方法。owner 専用の `gateway` ツールも、保護された exec パスに正規化される従来の `tools.bash.*` エイリアスを含め、`tools.exec.ask` / `tools.exec.security` の書き換えを拒否します。
|
||||
- **Tooling**: structured-tool の信頼できる情報源であることのリマインダーと、ランタイムのツール使用ガイダンス。
|
||||
- **Safety**: 権力志向の挙動や監督の回避を避けるための短いガードレールのリマインダー。
|
||||
- **Skills**(利用可能な場合): 必要に応じて skill の指示を読み込む方法をモデルに伝えます。
|
||||
- **OpenClaw Self-Update**: `config.schema.lookup` で安全に設定を調べる方法、`config.patch` で設定にパッチを当てる方法、`config.apply` で完全な設定を置き換える方法、および明示的なユーザー要求がある場合にのみ `update.run` を実行する方法。owner 限定の `gateway` ツールは、`tools.exec.ask` / `tools.exec.security` の書き換えも拒否します。これには、それらの保護された exec パスに正規化される旧来の `tools.bash.*` エイリアスも含まれます。
|
||||
- **Workspace**: 作業ディレクトリ(`agents.defaults.workspace`)。
|
||||
- **Documentation**: OpenClaw ドキュメントへのローカルパス(リポジトリまたは npm パッケージ)と、それを読むべきタイミング。
|
||||
- **Documentation**: OpenClaw ドキュメントのローカルパス(リポジトリまたは npm パッケージ)と、それを読むべきタイミング。
|
||||
- **Workspace Files (injected)**: ブートストラップファイルが以下に含まれていることを示します。
|
||||
- **Sandbox**(有効な場合): サンドボックス化されたランタイム、サンドボックスのパス、および昇格された exec が利用可能かどうかを示します。
|
||||
- **Sandbox**(有効な場合): サンドボックス化されたランタイム、サンドボックスパス、および権限昇格付き exec が利用可能かどうかを示します。
|
||||
- **Current Date & Time**: ユーザーのローカル時刻、タイムゾーン、時刻形式。
|
||||
- **Reply Tags**: サポートされているプロバイダー向けの任意の返信タグ構文。
|
||||
- **Heartbeats**: デフォルトエージェントでハートビートが有効な場合の、ハートビートプロンプトと ack 動作。
|
||||
- **Runtime**: ホスト、OS、node、モデル、リポジトリルート(検出時)、thinking level(1 行)。
|
||||
- **Reasoning**: 現在の可視性レベルと /reasoning 切り替えのヒント。
|
||||
- **Reply Tags**: 対応プロバイダー向けのオプションの返信タグ構文。
|
||||
- **Heartbeats**: デフォルトエージェントで heartbeat が有効な場合の、heartbeat プロンプトと ack の挙動。
|
||||
- **Runtime**: ホスト、OS、node、モデル、リポジトリルート(検出された場合)、thinking level(1 行)。
|
||||
- **Reasoning**: 現在の可視性レベルと `/reasoning` 切り替えのヒント。
|
||||
|
||||
Tooling セクションには、長時間実行される作業のためのランタイムガイダンスも含まれます。
|
||||
Tooling セクションには、長時間実行される作業に対するランタイムガイダンスも含まれます。
|
||||
|
||||
- 将来のフォローアップ(`check back later`、リマインダー、定期作業)には cron を使い、`exec` の sleep ループ、`yieldMs` の遅延トリック、繰り返しの `process` ポーリングは使わない
|
||||
- 今すぐ開始してバックグラウンドで実行し続けるコマンドにのみ `exec` / `process` を使う
|
||||
- 自動完了 wake が有効な場合、コマンドは一度だけ開始し、出力または失敗時のプッシュベースの wake 経路に任せる
|
||||
- 実行中コマンドの確認が必要な場合は、ログ、状態、入力、介入のために `process` を使う
|
||||
- タスクが大きい場合は、`sessions_spawn` を優先する。サブエージェントの完了はプッシュベースで、依頼元に自動通知される
|
||||
- 将来のフォローアップ(`check back later`、リマインダー、定期作業)には `cron` を使用し、`exec` の sleep ループ、`yieldMs` の遅延トリック、繰り返しの `process` ポーリングは使わない
|
||||
- 今すぐ開始してバックグラウンドで継続実行されるコマンドにのみ `exec` / `process` を使用する
|
||||
- 自動完了 wake が有効な場合は、コマンドを一度だけ開始し、出力が出たときや失敗したときの push ベースの wake 経路に任せる
|
||||
- 実行中コマンドのログ、状態、入力、介入を確認する必要がある場合は `process` を使用する
|
||||
- タスクがより大きい場合は `sessions_spawn` を優先する。サブエージェントの完了は push ベースで、要求元に自動通知される
|
||||
- 完了を待つためだけに `subagents list` / `sessions_list` をループでポーリングしない
|
||||
|
||||
実験的な `update_plan` ツールが有効な場合、Tooling はモデルに対して、これを自明でない複数ステップの作業にのみ使い、`in_progress` のステップを必ず 1 つだけ保ち、更新のたびにプラン全体を繰り返さないようにも指示します。
|
||||
実験的な `update_plan` ツールが有効な場合、Tooling では、これを自明でない複数ステップの作業にのみ使用し、`in_progress` のステップをちょうど 1 つに保ち、更新のたびに計画全体を繰り返さないようモデルに伝えます。
|
||||
|
||||
システムプロンプト内の Safety ガードレールは助言的なものです。これはモデルの動作を導きますが、ポリシーを強制するものではありません。厳格な強制には、ツールポリシー、exec 承認、サンドボックス化、チャネル allowlist を使用してください。オペレーターは設計上これらを無効にできます。
|
||||
システムプロンプト内の Safety ガードレールは助言的なものです。これらはモデルの挙動を導きますが、ポリシーを強制するものではありません。強制にはツールポリシー、exec 承認、サンドボックス、チャンネル allowlist を使用してください。オペレーターは設計上これらを無効化できます。
|
||||
|
||||
ネイティブの承認カード / ボタンがあるチャネルでは、ランタイムプロンプトはエージェントに対して、まずそのネイティブ承認 UI を使うよう指示します。手動の
|
||||
`/approve` コマンドを含めるのは、ツール結果がチャット承認を利用できないと示した場合、または手動承認が唯一の手段である場合に限られます。
|
||||
ネイティブの承認カードやボタンがあるチャンネルでは、ランタイムプロンプトは、まずそのネイティブ承認 UI に依存するようエージェントに伝えます。手動の `/approve` コマンドを含めるのは、ツール結果がチャット承認を利用できないと示している場合、または手動承認が唯一の経路である場合だけです。
|
||||
|
||||
## プロンプトモード
|
||||
|
||||
OpenClaw は、サブエージェント用により小さいシステムプロンプトをレンダリングできます。ランタイムは各実行に対して
|
||||
`promptMode` を設定します(ユーザー向けの設定ではありません)。
|
||||
OpenClaw は、サブエージェント向けにより小さいシステムプロンプトをレンダリングできます。ランタイムは各実行に `promptMode` を設定します(ユーザー向けの設定ではありません)。
|
||||
|
||||
- `full`(デフォルト): 上記のすべてのセクションを含みます。
|
||||
- `minimal`: サブエージェントで使用されます。**Skills**、**Memory Recall**、**OpenClaw
|
||||
Self-Update**、**Model Aliases**、**User Identity**、**Reply Tags**、
|
||||
**Messaging**、**Silent Replies**、**Heartbeats** を省略します。Tooling、**Safety**、
|
||||
Workspace、Sandbox、Current Date & Time(既知の場合)、Runtime、および注入された
|
||||
コンテキストは引き続き利用できます。
|
||||
- `none`: ベースの識別行のみを返します。
|
||||
- `minimal`: サブエージェントに使用されます。**Skills**、**Memory Recall**、**OpenClaw Self-Update**、**Model Aliases**、**User Identity**、**Reply Tags**、**Messaging**、**Silent Replies**、**Heartbeats** を省略します。Tooling、**Safety**、Workspace、Sandbox、Current Date & Time(既知の場合)、Runtime、および注入されたコンテキストは引き続き利用可能です。
|
||||
- `none`: ベースとなる識別行のみを返します。
|
||||
|
||||
`promptMode=minimal` の場合、追加で注入されるプロンプトには **Group Chat Context** ではなく **Subagent
|
||||
Context** というラベルが付きます。
|
||||
`promptMode=minimal` の場合、追加で注入されるプロンプトは **Group Chat Context** ではなく **Subagent Context** とラベル付けされます。
|
||||
|
||||
## ワークスペースブートストラップの注入
|
||||
## ワークスペースのブートストラップ注入
|
||||
|
||||
ブートストラップファイルはトリミングされ、**Project Context** の下に追加されます。これにより、モデルは明示的に読み込まなくても識別情報やプロファイル文脈を把握できます。
|
||||
ブートストラップファイルは切り詰められたうえで **Project Context** の下に追加されるため、モデルは明示的に読まなくても識別情報とプロファイルコンテキストを把握できます。
|
||||
|
||||
- `AGENTS.md`
|
||||
- `SOUL.md`
|
||||
@ -89,51 +81,47 @@ Context** というラベルが付きます。
|
||||
- `IDENTITY.md`
|
||||
- `USER.md`
|
||||
- `HEARTBEAT.md`
|
||||
- `BOOTSTRAP.md`(新規ワークスペースのみ)
|
||||
- `MEMORY.md` が存在する場合はそれを、存在しない場合は小文字の代替として `memory.md`
|
||||
- `BOOTSTRAP.md`(新規ワークスペースでのみ)
|
||||
- `MEMORY.md` がある場合はそれを、ない場合は小文字のフォールバックとして `memory.md`
|
||||
|
||||
これらのファイルはすべて、**ファイル固有のゲートが適用されない限り** 毎ターン **コンテキストウィンドウに注入されます**。通常実行時の `HEARTBEAT.md` は、デフォルトエージェントでハートビートが無効な場合、または
|
||||
`agents.defaults.heartbeat.includeSystemPromptSection` が false の場合は省略されます。注入されるファイルは簡潔に保ってください。特に `MEMORY.md` は時間とともに肥大化しやすく、想定外に高いコンテキスト使用量やより頻繁な compaction の原因になります。
|
||||
これらのファイルはすべて、**ファイルごとのゲートが適用される場合を除き**、毎ターン **コンテキストウィンドウに注入** されます。`HEARTBEAT.md` は、通常の実行では、デフォルトエージェントで heartbeat が無効な場合、または
|
||||
`agents.defaults.heartbeat.includeSystemPromptSection` が false の場合に省略されます。注入されるファイルは簡潔に保ってください。特に `MEMORY.md` は時間とともに大きくなり、予想外にコンテキスト使用量が増えたり、compaction がより頻繁に発生したりする可能性があります。
|
||||
|
||||
> **注:** `memory/*.md` の日次ファイルは **自動では注入されません**。これらは
|
||||
> `memory_search` および `memory_get` ツールを通じて必要に応じてアクセスされるため、
|
||||
> モデルが明示的に読み込まない限りコンテキストウィンドウを消費しません。
|
||||
> **注:** `memory/*.md` の日次ファイルは、通常のブートストラップ Project Context の一部**ではありません**。通常のターンでは、これらは `memory_search` および `memory_get` ツールを通じて必要時にアクセスされるため、モデルが明示的に読むまでコンテキストウィンドウを消費しません。例外は素の `/new` および `/reset` ターンで、この最初のターンに限り、ランタイムが最近の日次メモリをワンショットの起動コンテキストブロックとして前置できる場合があります。
|
||||
|
||||
大きなファイルはマーカー付きで切り詰められます。1 ファイルあたりの最大サイズは
|
||||
`agents.defaults.bootstrapMaxChars`(デフォルト: 20000)で制御されます。ファイル全体で注入されるブートストラップ内容の合計は `agents.defaults.bootstrapTotalMaxChars`
|
||||
(デフォルト: 150000)で上限が設定されます。ファイルが存在しない場合は、短い missing-file マーカーが注入されます。切り詰めが発生した場合、OpenClaw は Project Context に警告ブロックを注入できます。これは
|
||||
`agents.defaults.bootstrapPromptTruncationWarning`(`off`、`once`、`always`;
|
||||
デフォルト: `once`)で制御します。
|
||||
大きなファイルはマーカー付きで切り詰められます。ファイルごとの最大サイズは
|
||||
`agents.defaults.bootstrapMaxChars`(デフォルト: 20000)で制御されます。ファイル全体にまたがる注入済みブートストラップ内容の総量は
|
||||
`agents.defaults.bootstrapTotalMaxChars`(デフォルト: 150000)で上限が設定されます。欠落しているファイルには短い欠落ファイルマーカーが注入されます。切り詰めが発生した場合、OpenClaw は Project Context に警告ブロックを注入できます。これは
|
||||
`agents.defaults.bootstrapPromptTruncationWarning`(`off`、`once`、`always`;デフォルト: `once`)で制御します。
|
||||
|
||||
サブエージェントセッションでは `AGENTS.md` と `TOOLS.md` のみを注入します(サブエージェントのコンテキストを小さく保つため、他のブートストラップファイルは除外されます)。
|
||||
サブエージェントセッションでは `AGENTS.md` と `TOOLS.md` のみが注入されます(サブエージェントのコンテキストを小さく保つため、他のブートストラップファイルは除外されます)。
|
||||
|
||||
内部フックは `agent:bootstrap` を通じてこのステップを横取りし、注入されるブートストラップファイルを変更または置き換えることができます(たとえば、`SOUL.md` を別のペルソナに差し替えるなど)。
|
||||
内部フックは `agent:bootstrap` を介してこのステップを横取りし、注入されるブートストラップファイルを変更または置き換えできます(たとえば `SOUL.md` を別のペルソナに差し替えるなど)。
|
||||
|
||||
エージェントの話し方をもっと汎用的でなくしたい場合は、まず
|
||||
エージェントの口調をより汎用的でなくしたい場合は、まず
|
||||
[SOUL.md Personality Guide](/ja-JP/concepts/soul) から始めてください。
|
||||
|
||||
各注入ファイルがどれだけ寄与しているか(raw と injected、切り詰め、さらにツールスキーマのオーバーヘッド)を確認するには、`/context list` または `/context detail` を使用してください。詳しくは [Context](/ja-JP/concepts/context) を参照してください。
|
||||
各注入ファイルがどれだけ寄与しているか(生データと注入後、切り詰め、さらにツールスキーマのオーバーヘッド)を確認するには、`/context list` または `/context detail` を使用してください。[Context](/ja-JP/concepts/context) を参照してください。
|
||||
|
||||
## 時刻の扱い
|
||||
|
||||
ユーザーのタイムゾーンが分かっている場合、システムプロンプトには専用の **Current Date & Time** セクションが含まれます。プロンプトキャッシュを安定させるため、現在は **time zone** のみを含みます(動的な時計や時刻形式は含みません)。
|
||||
システムプロンプトには、ユーザーのタイムゾーンが既知の場合、専用の **Current Date & Time** セクションが含まれます。プロンプトキャッシュを安定させるため、ここには現在 **タイムゾーン** のみが含まれます(動的な時計や時刻形式は含みません)。
|
||||
|
||||
エージェントが現在時刻を必要とする場合は `session_status` を使用してください。ステータスカードにはタイムスタンプ行が含まれます。同じツールで、セッションごとのモデル上書きも任意で設定できます(`model=default` でクリアされます)。
|
||||
エージェントが現在時刻を必要とする場合は `session_status` を使用してください。ステータスカードにはタイムスタンプ行が含まれます。同じツールでは、セッションごとのモデル上書きも任意で設定できます(`model=default` でクリアされます)。
|
||||
|
||||
設定項目:
|
||||
設定は次で行います。
|
||||
|
||||
- `agents.defaults.userTimezone`
|
||||
- `agents.defaults.timeFormat` (`auto` | `12` | `24`)
|
||||
- `agents.defaults.timeFormat`(`auto` | `12` | `24`)
|
||||
|
||||
動作の詳細は [Date & Time](/ja-JP/date-time) を参照してください。
|
||||
完全な挙動の詳細は [Date & Time](/ja-JP/date-time) を参照してください。
|
||||
|
||||
## Skills
|
||||
|
||||
適格な Skills が存在する場合、OpenClaw は各スキルの **file path** を含むコンパクトな **available skills list**
|
||||
(`formatSkillsForPrompt`)を注入します。プロンプトは、一覧にある場所(workspace、managed、または bundled)から `read` を使って SKILL.md を読み込むようモデルに指示します。適格な Skills がない場合、Skills セクションは省略されます。
|
||||
対象となる skill が存在する場合、OpenClaw は **available skills list** のコンパクト版(`formatSkillsForPrompt`)を注入し、各 skill の **ファイルパス** を含めます。プロンプトは、列挙された場所(ワークスペース、管理対象、または同梱)にある SKILL.md を読み込むために `read` を使うようモデルに指示します。対象 skill がない場合、Skills セクションは省略されます。
|
||||
|
||||
適格性には、スキルメタデータのゲート、ランタイム環境 / 設定チェック、および `agents.defaults.skills` または
|
||||
`agents.list[].skills` が設定されている場合の実効エージェントスキル allowlist が含まれます。
|
||||
対象判定には、skill メタデータのゲート、ランタイム環境 / 設定チェック、および `agents.defaults.skills` または
|
||||
`agents.list[].skills` が設定されている場合の有効なエージェント skill allowlist が含まれます。
|
||||
|
||||
```
|
||||
<available_skills>
|
||||
@ -145,8 +133,8 @@ Context** というラベルが付きます。
|
||||
</available_skills>
|
||||
```
|
||||
|
||||
これにより、ベースプロンプトを小さく保ちながら、必要なスキルを対象を絞って利用できます。
|
||||
これにより、ベースプロンプトを小さく保ちながら、必要な skill だけを使えるようにしています。
|
||||
|
||||
## Documentation
|
||||
|
||||
利用可能な場合、システムプロンプトには **Documentation** セクションが含まれ、ローカルの OpenClaw ドキュメントディレクトリ(リポジトリ内の `docs/` またはバンドルされた npm パッケージのドキュメント)を示します。さらに、公開ミラー、ソースリポジトリ、コミュニティ Discord、および Skills を見つけるための ClawHub([https://clawhub.ai](https://clawhub.ai))についても記載されます。プロンプトは、OpenClaw の動作、コマンド、設定、またはアーキテクチャについては、まずローカルドキュメントを参照し、可能な場合は自分で `openclaw status` を実行するようモデルに指示します(アクセスできない場合にのみユーザーへ尋ねます)。
|
||||
利用可能な場合、システムプロンプトには **Documentation** セクションが含まれ、OpenClaw ドキュメントディレクトリのローカルパス(リポジトリ内の `docs/` または npm パッケージに同梱されたドキュメント)を示します。また、公開ミラー、ソースリポジトリ、コミュニティ Discord、および Skills を見つけるための ClawHub([https://clawhub.ai](https://clawhub.ai))にも触れます。プロンプトは、OpenClaw の挙動、コマンド、設定、またはアーキテクチャについては、まずローカルドキュメントを参照し、可能であれば自分で `openclaw status` を実行するようモデルに指示します(アクセス権がない場合にのみユーザーに尋ねます)。
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,64 +1,67 @@
|
||||
---
|
||||
read_when:
|
||||
- OpenClawプラグインを作成しています
|
||||
- プラグイン設定スキーマを提供する必要がある、またはプラグインの検証エラーをデバッグする必要があります
|
||||
summary: プラグインマニフェスト + JSONスキーマ要件(厳格な設定検証)
|
||||
- OpenClawプラグインを構築しています
|
||||
- プラグイン設定スキーマを提供する必要がある場合や、プラグイン検証エラーをデバッグする場合があります
|
||||
summary: プラグインマニフェスト + JSON スキーマ要件(厳格な設定検証)
|
||||
title: プラグインマニフェスト
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T15:16:01Z"
|
||||
generated_at: "2026-04-12T04:43:44Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 42d454b560a8f6bf714c5d782f34216be1216d83d0a319d08d7349332c91a9e4
|
||||
source_hash: bf666b0f41f07641375a248f52e29ba6a68c3ec20404bedb6b52a20a5cd92e91
|
||||
source_path: plugins/manifest.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# プラグインマニフェスト(`openclaw.plugin.json`)
|
||||
# プラグインマニフェスト (`openclaw.plugin.json`)
|
||||
|
||||
このページは、**ネイティブなOpenClawプラグインマニフェスト**のみを対象としています。
|
||||
|
||||
互換性のあるバンドルレイアウトについては、[プラグインバンドル](/ja-JP/plugins/bundles)を参照してください。
|
||||
互換性のあるバンドルレイアウトについては、[Plugin bundles](/ja-JP/plugins/bundles) を参照してください。
|
||||
|
||||
互換バンドル形式では、異なるマニフェストファイルを使用します。
|
||||
|
||||
- Codexバンドル: `.codex-plugin/plugin.json`
|
||||
- Claudeバンドル: `.claude-plugin/plugin.json` またはマニフェストなしのデフォルトClaudeコンポーネントレイアウト
|
||||
- Cursorバンドル: `.cursor-plugin/plugin.json`
|
||||
- Codex バンドル: `.codex-plugin/plugin.json`
|
||||
- Claude バンドル: `.claude-plugin/plugin.json` または、マニフェストのないデフォルトの Claude コンポーネント
|
||||
レイアウト
|
||||
- Cursor バンドル: `.cursor-plugin/plugin.json`
|
||||
|
||||
OpenClawはこれらのバンドルレイアウトも自動検出しますが、ここで説明する`openclaw.plugin.json`スキーマに対しては検証されません。
|
||||
OpenClaw はそれらのバンドルレイアウトも自動検出しますが、ここで説明する `openclaw.plugin.json` スキーマに照らして検証されるわけではありません。
|
||||
|
||||
互換バンドルについて、OpenClawは現在、レイアウトがOpenClawランタイムの期待に一致する場合、バンドルメタデータに加えて、宣言されたスキルルート、Claudeコマンドルート、Claudeバンドルの`settings.json`デフォルト、ClaudeバンドルのLSPデフォルト、およびサポートされるフックパックを読み取ります。
|
||||
互換バンドルについては、OpenClaw は現在、レイアウトが OpenClaw ランタイムの想定に一致する場合に、バンドルメタデータに加えて、宣言された
|
||||
skill ルート、Claude コマンドルート、Claude バンドルの `settings.json` デフォルト、
|
||||
Claude バンドルの LSP デフォルト、およびサポートされているフックパックを読み取ります。
|
||||
|
||||
すべてのネイティブOpenClawプラグインは、**プラグインルート**に`openclaw.plugin.json`ファイルを**必ず**含める必要があります。OpenClawはこのマニフェストを使用して、**プラグインコードを実行せずに**設定を検証します。マニフェストが存在しない、または無効な場合はプラグインエラーとして扱われ、設定検証がブロックされます。
|
||||
すべてのネイティブ OpenClaw プラグインは、**プラグインルート**に `openclaw.plugin.json` ファイルを**必ず**含める必要があります。OpenClaw はこのマニフェストを使用して、**プラグインコードを実行せずに**設定を検証します。マニフェストが欠落している、または無効な場合は、プラグインエラーとして扱われ、設定検証がブロックされます。
|
||||
|
||||
プラグインシステム全体のガイドについては、[Plugins](/ja-JP/tools/plugin)を参照してください。
|
||||
ネイティブの機能モデルと現在の外部互換性ガイダンスについては、
|
||||
[機能モデル](/ja-JP/plugins/architecture#public-capability-model)を参照してください。
|
||||
プラグインシステム全体のガイドは [Plugins](/ja-JP/tools/plugin) を参照してください。
|
||||
ネイティブな capability モデルと、現在の外部互換性ガイダンスについては、
|
||||
[Capability model](/ja-JP/plugins/architecture#public-capability-model) を参照してください。
|
||||
|
||||
## このファイルの役割
|
||||
|
||||
`openclaw.plugin.json`は、OpenClawがプラグインコードを読み込む前に読み取るメタデータです。
|
||||
`openclaw.plugin.json` は、OpenClaw がプラグインコードを読み込む前に読み取るメタデータです。
|
||||
|
||||
用途:
|
||||
|
||||
- プラグインID
|
||||
- プラグインの識別情報
|
||||
- 設定検証
|
||||
- プラグインランタイムを起動せずに利用できるべき認証およびオンボーディングメタデータ
|
||||
- ランタイム読み込み前にコントロールプレーンサーフェスが確認できる軽量なアクティベーションヒント
|
||||
- ランタイム読み込み前にセットアップ/オンボーディングサーフェスが確認できる軽量なセットアップ記述子
|
||||
- プラグインランタイムを起動しなくても利用可能であるべき認証およびオンボーディングのメタデータ
|
||||
- ランタイム読み込み前に control-plane サーフェスが確認できる、軽量な有効化ヒント
|
||||
- ランタイム読み込み前にセットアップ/オンボーディングサーフェスが確認できる、軽量なセットアップ記述子
|
||||
- プラグインランタイム読み込み前に解決されるべきエイリアスおよび自動有効化メタデータ
|
||||
- プラグインランタイム読み込み前にプラグインを自動アクティブ化すべきモデルファミリー所有権の短縮メタデータ
|
||||
- バンドル互換配線およびコントラクトカバレッジに使用される静的な機能所有権スナップショット
|
||||
- ランタイムを読み込まずにカタログおよび検証サーフェスにマージされるべきチャネル固有の設定メタデータ
|
||||
- 設定UIヒント
|
||||
- ランタイム読み込み前にプラグインを自動有効化する必要がある、短縮形の model-family 所有メタデータ
|
||||
- バンドルされた互換配線と契約カバレッジに使われる、静的な capability 所有スナップショット
|
||||
- ランタイムを読み込まずにカタログおよび検証サーフェスにマージされるべき、チャネル固有の設定メタデータ
|
||||
- 設定 UI ヒント
|
||||
|
||||
用途ではないもの:
|
||||
|
||||
- ランタイム動作の登録
|
||||
- コードエントリーポイントの宣言
|
||||
- npmインストールメタデータ
|
||||
- npm install メタデータ
|
||||
|
||||
これらはプラグインコードおよび`package.json`に属します。
|
||||
これらはプラグインコードと `package.json` に属します。
|
||||
|
||||
## 最小例
|
||||
|
||||
@ -129,62 +132,62 @@ OpenClawはこれらのバンドルレイアウトも自動検出しますが、
|
||||
}
|
||||
```
|
||||
|
||||
## トップレベルフィールドリファレンス
|
||||
## トップレベルフィールドのリファレンス
|
||||
|
||||
| Field | Required | Type | 意味 |
|
||||
| ----------------------------------- | -------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `id` | はい | `string` | 正規のプラグインIDです。このIDは`plugins.entries.<id>`で使用されます。 |
|
||||
| `configSchema` | はい | `object` | このプラグイン設定用のインラインJSON Schemaです。 |
|
||||
| `enabledByDefault` | いいえ | `true` | バンドルされたプラグインをデフォルトで有効としてマークします。デフォルトで無効のままにするには、省略するか、`true`以外の値を設定します。 |
|
||||
| `legacyPluginIds` | いいえ | `string[]` | この正規プラグインIDに正規化されるレガシーIDです。 |
|
||||
| `autoEnableWhenConfiguredProviders` | いいえ | `string[]` | 認証、設定、またはモデル参照でこれらに言及されたときに、このプラグインを自動有効化すべきプロバイダーIDです。 |
|
||||
| `kind` | いいえ | `"memory"` \| `"context-engine"` | `plugins.slots.*`で使われる排他的なプラグイン種別を宣言します。 |
|
||||
| `channels` | いいえ | `string[]` | このプラグインが所有するチャネルIDです。検出および設定検証に使用されます。 |
|
||||
| `providers` | いいえ | `string[]` | このプラグインが所有するプロバイダーIDです。 |
|
||||
| `modelSupport` | いいえ | `object` | ランタイム前にプラグインを自動読み込みするために使われる、マニフェスト所有の短縮モデルファミリーメタデータです。 |
|
||||
| `cliBackends` | いいえ | `string[]` | このプラグインが所有するCLI推論バックエンドIDです。明示的な設定参照からの起動時自動アクティベーションに使用されます。 |
|
||||
| `commandAliases` | いいえ | `object[]` | ランタイム読み込み前に、プラグイン対応の設定およびCLI診断を生成すべき、このプラグインが所有するコマンド名です。 |
|
||||
| `providerAuthEnvVars` | いいえ | `Record<string, string[]>` | OpenClawがプラグインコードを読み込まずに確認できる、軽量なプロバイダー認証envメタデータです。 |
|
||||
| `providerAuthAliases` | いいえ | `Record<string, string>` | 認証参照で別のプロバイダーIDを再利用すべきプロバイダーIDです。たとえば、ベースプロバイダーのAPIキーや認証プロファイルを共有するコーディング用プロバイダーなどです。 |
|
||||
| `channelEnvVars` | いいえ | `Record<string, string[]>` | OpenClawがプラグインコードを読み込まずに確認できる、軽量なチャネルenvメタデータです。env駆動のチャネルセットアップや、汎用の起動/設定ヘルパーが把握すべき認証サーフェスにはこれを使用してください。 |
|
||||
| `providerAuthChoices` | いいえ | `object[]` | オンボーディングピッカー、優先プロバイダー解決、シンプルなCLIフラグ配線のための軽量な認証選択メタデータです。 |
|
||||
| `activation` | いいえ | `object` | プロバイダー、コマンド、チャネル、ルート、機能トリガー読み込み用の軽量なアクティベーションヒントです。メタデータのみであり、実際の動作は引き続きプラグインランタイムが所有します。 |
|
||||
| `setup` | いいえ | `object` | 検出およびセットアップサーフェスがプラグインランタイムを読み込まずに確認できる、軽量なセットアップ/オンボーディング記述子です。 |
|
||||
| `contracts` | いいえ | `object` | speech、realtime transcription、realtime voice、media-understanding、image-generation、music-generation、video-generation、web-fetch、web search、およびツール所有権のための静的なバンドル機能スナップショットです。 |
|
||||
| `channelConfigs` | いいえ | `Record<string, object>` | ランタイム読み込み前に検出および検証サーフェスへマージされる、マニフェスト所有のチャネル設定メタデータです。 |
|
||||
| `skills` | いいえ | `string[]` | プラグインルートからの相対パスで指定する、読み込むスキルディレクトリです。 |
|
||||
| `name` | いいえ | `string` | 人が読めるプラグイン名です。 |
|
||||
| `description` | いいえ | `string` | プラグインサーフェスに表示される短い概要です。 |
|
||||
| `version` | いいえ | `string` | 情報提供用のプラグインバージョンです。 |
|
||||
| `uiHints` | いいえ | `Record<string, object>` | 設定フィールド用のUIラベル、プレースホルダー、および機密性ヒントです。 |
|
||||
| フィールド | 必須 | 型 | 意味 |
|
||||
| ------------------------------------- | -------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `id` | はい | `string` | 正規のプラグイン ID。これは `plugins.entries.<id>` で使われる ID です。 |
|
||||
| `configSchema` | はい | `object` | このプラグイン設定用のインライン JSON Schema。 |
|
||||
| `enabledByDefault` | いいえ | `true` | バンドルされたプラグインをデフォルトで有効としてマークします。デフォルトで無効のままにするには、省略するか、`true` 以外の値を設定します。 |
|
||||
| `legacyPluginIds` | いいえ | `string[]` | この正規プラグイン ID に正規化されるレガシー ID。 |
|
||||
| `autoEnableWhenConfiguredProviders` | いいえ | `string[]` | 認証、設定、またはモデル参照で言及されたときに、このプラグインを自動有効化すべきプロバイダー ID。 |
|
||||
| `kind` | いいえ | `"memory"` \| `"context-engine"` | `plugins.slots.*` で使われる排他的なプラグイン種別を宣言します。 |
|
||||
| `channels` | いいえ | `string[]` | このプラグインが所有するチャネル ID。検出および設定検証に使用されます。 |
|
||||
| `providers` | いいえ | `string[]` | このプラグインが所有するプロバイダー ID。 |
|
||||
| `modelSupport` | いいえ | `object` | ランタイムの前にプラグインを自動読み込みするために使われる、マニフェスト所有の短縮形 model-family メタデータ。 |
|
||||
| `cliBackends` | いいえ | `string[]` | このプラグインが所有する CLI 推論バックエンド ID。明示的な設定参照からの起動時自動有効化に使用されます。 |
|
||||
| `commandAliases` | いいえ | `object[]` | ランタイム読み込み前に、プラグイン対応の設定および CLI 診断を生成すべき、このプラグインが所有するコマンド名。 |
|
||||
| `providerAuthEnvVars` | いいえ | `Record<string, string[]>` | OpenClaw がプラグインコードを読み込まずに確認できる、軽量なプロバイダー認証 env メタデータ。 |
|
||||
| `providerAuthAliases` | いいえ | `Record<string, string>` | 認証参照のために別のプロバイダー ID を再利用すべきプロバイダー ID。たとえば、ベースプロバイダーの API キーと認証プロファイルを共有する coding プロバイダーなどです。 |
|
||||
| `channelEnvVars` | いいえ | `Record<string, string[]>` | OpenClaw がプラグインコードを読み込まずに確認できる、軽量なチャネル env メタデータ。env 駆動のチャネルセットアップや、汎用の起動/設定ヘルパーが認識すべき認証サーフェスに使用します。 |
|
||||
| `providerAuthChoices` | いいえ | `object[]` | オンボーディングピッカー、優先プロバイダー解決、および単純な CLI フラグ配線のための、軽量な認証選択メタデータ。 |
|
||||
| `activation` | いいえ | `object` | プロバイダー、コマンド、チャネル、ルート、および capability トリガー読み込みのための軽量な有効化ヒント。メタデータのみであり、実際の動作は引き続きプラグインランタイムが所有します。 |
|
||||
| `setup` | いいえ | `object` | 検出およびセットアップサーフェスがプラグインランタイムを読み込まずに確認できる、軽量なセットアップ/オンボーディング記述子。 |
|
||||
| `contracts` | いいえ | `object` | speech、realtime transcription、realtime voice、media-understanding、image-generation、music-generation、video-generation、web-fetch、web search、およびツール所有権のための静的なバンドル capability スナップショット。 |
|
||||
| `channelConfigs` | いいえ | `Record<string, object>` | ランタイム読み込み前に、検出および検証サーフェスにマージされるマニフェスト所有のチャネル設定メタデータ。 |
|
||||
| `skills` | いいえ | `string[]` | 読み込む Skills ディレクトリ。プラグインルートからの相対パスです。 |
|
||||
| `name` | いいえ | `string` | 人間が読めるプラグイン名。 |
|
||||
| `description` | いいえ | `string` | プラグインサーフェスに表示される短い概要。 |
|
||||
| `version` | いいえ | `string` | 情報提供用のプラグインバージョン。 |
|
||||
| `uiHints` | いいえ | `Record<string, object>` | 設定フィールドの UI ラベル、プレースホルダー、および機密性ヒント。 |
|
||||
|
||||
## providerAuthChoicesリファレンス
|
||||
## `providerAuthChoices` リファレンス
|
||||
|
||||
各`providerAuthChoices`エントリーは、1つのオンボーディングまたは認証の選択肢を記述します。
|
||||
OpenClawはこれをプロバイダーランタイムの読み込み前に読み取ります。
|
||||
各 `providerAuthChoices` エントリは、1 つのオンボーディングまたは認証の選択肢を表します。
|
||||
OpenClaw はこれをプロバイダーランタイムの読み込み前に読み取ります。
|
||||
|
||||
| Field | Required | Type | 意味 |
|
||||
| --------------------- | -------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
||||
| `provider` | はい | `string` | この選択肢が属するプロバイダーIDです。 |
|
||||
| `method` | はい | `string` | ディスパッチ先の認証メソッドIDです。 |
|
||||
| `choiceId` | はい | `string` | オンボーディングおよびCLIフローで使用される安定した認証選択肢IDです。 |
|
||||
| `choiceLabel` | いいえ | `string` | ユーザー向けラベルです。省略した場合、OpenClawは`choiceId`にフォールバックします。 |
|
||||
| `choiceHint` | いいえ | `string` | ピッカー向けの短い補助テキストです。 |
|
||||
| `assistantPriority` | いいえ | `number` | 値が小さいほど、アシスタント主導のインタラクティブピッカーで先に並びます。 |
|
||||
| `assistantVisibility` | いいえ | `"visible"` \| `"manual-only"` | アシスタントピッカーではこの選択肢を非表示にしつつ、手動CLI選択は引き続き許可します。 |
|
||||
| `deprecatedChoiceIds` | いいえ | `string[]` | ユーザーをこの置き換え先の選択肢へリダイレクトすべきレガシー選択肢IDです。 |
|
||||
| `groupId` | いいえ | `string` | 関連する選択肢をグループ化するための任意のグループIDです。 |
|
||||
| `groupLabel` | いいえ | `string` | そのグループのユーザー向けラベルです。 |
|
||||
| `groupHint` | いいえ | `string` | そのグループ向けの短い補助テキストです。 |
|
||||
| `optionKey` | いいえ | `string` | 単一フラグによるシンプルな認証フロー用の内部オプションキーです。 |
|
||||
| `cliFlag` | いいえ | `string` | `--openrouter-api-key`のようなCLIフラグ名です。 |
|
||||
| `cliOption` | いいえ | `string` | `--openrouter-api-key <key>`のような完全なCLIオプション形式です。 |
|
||||
| `cliDescription` | いいえ | `string` | CLIヘルプで使用される説明です。 |
|
||||
| `onboardingScopes` | いいえ | `Array<"text-inference" \| "image-generation">` | この選択肢をどのオンボーディングサーフェスに表示するかです。省略した場合、`["text-inference"]`がデフォルトになります。 |
|
||||
| フィールド | 必須 | 型 | 意味 |
|
||||
| ----------------------- | -------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `provider` | はい | `string` | この選択肢が属するプロバイダー ID。 |
|
||||
| `method` | はい | `string` | ディスパッチ先の認証メソッド ID。 |
|
||||
| `choiceId` | はい | `string` | オンボーディングおよび CLI フローで使われる安定した認証選択 ID。 |
|
||||
| `choiceLabel` | いいえ | `string` | ユーザー向けラベル。省略した場合、OpenClaw は `choiceId` にフォールバックします。 |
|
||||
| `choiceHint` | いいえ | `string` | ピッカー向けの短い補足テキスト。 |
|
||||
| `assistantPriority` | いいえ | `number` | アシスタント主導のインタラクティブピッカーで、値が小さいほど先に並びます。 |
|
||||
| `assistantVisibility` | いいえ | `"visible"` \| `"manual-only"` | 手動 CLI 選択は許可したまま、アシスタントピッカーからこの選択肢を隠します。 |
|
||||
| `deprecatedChoiceIds` | いいえ | `string[]` | ユーザーをこの置き換え先の選択肢へリダイレクトすべき、レガシーな選択 ID。 |
|
||||
| `groupId` | いいえ | `string` | 関連する選択肢をグループ化するための任意のグループ ID。 |
|
||||
| `groupLabel` | いいえ | `string` | そのグループのユーザー向けラベル。 |
|
||||
| `groupHint` | いいえ | `string` | グループ向けの短い補足テキスト。 |
|
||||
| `optionKey` | いいえ | `string` | 単一フラグのシンプルな認証フロー向けの内部オプションキー。 |
|
||||
| `cliFlag` | いいえ | `string` | `--openrouter-api-key` のような CLI フラグ名。 |
|
||||
| `cliOption` | いいえ | `string` | `--openrouter-api-key <key>` のような完全な CLI オプション形。 |
|
||||
| `cliDescription` | いいえ | `string` | CLI ヘルプで使われる説明。 |
|
||||
| `onboardingScopes` | いいえ | `Array<"text-inference" \| "image-generation">` | この選択肢を表示すべきオンボーディングサーフェス。省略した場合、デフォルトは `["text-inference"]` です。 |
|
||||
|
||||
## commandAliasesリファレンス
|
||||
## `commandAliases` リファレンス
|
||||
|
||||
ユーザーがプラグイン所有のランタイムコマンド名を誤って`plugins.allow`に入れたり、ルートCLIコマンドとして実行しようとしたりする可能性がある場合は、`commandAliases`を使用します。OpenClawはこのメタデータを使って、プラグインランタイムコードをインポートせずに診断を行います。
|
||||
ユーザーがプラグイン所有のランタイムコマンド名を誤って `plugins.allow` に入れたり、ルート CLI コマンドとして実行しようとしたりする可能性がある場合は、`commandAliases` を使用します。OpenClaw はこのメタデータを、プラグインランタイムコードをインポートせずに診断に使用します。
|
||||
|
||||
```json
|
||||
{
|
||||
@ -198,17 +201,17 @@ OpenClawはこれをプロバイダーランタイムの読み込み前に読み
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Required | Type | 意味 |
|
||||
| ------------ | -------- | ----------------- | -------------------------------------------------------------------------- |
|
||||
| `name` | はい | `string` | このプラグインに属するコマンド名です。 |
|
||||
| `kind` | いいえ | `"runtime-slash"` | このエイリアスを、ルートCLIコマンドではなくチャットスラッシュコマンドとしてマークします。 |
|
||||
| `cliCommand` | いいえ | `string` | 関連するルートCLIコマンドが存在する場合に提案する、そのコマンドです。 |
|
||||
| フィールド | 必須 | 型 | 意味 |
|
||||
| ------------ | -------- | ----------------- | ------------------------------------------------------------------------------ |
|
||||
| `name` | はい | `string` | このプラグインに属するコマンド名。 |
|
||||
| `kind` | いいえ | `"runtime-slash"` | このエイリアスを、ルート CLI コマンドではなくチャットスラッシュコマンドとして示します。 |
|
||||
| `cliCommand` | いいえ | `string` | 存在する場合、CLI 操作向けに提案する関連ルート CLI コマンド。 |
|
||||
|
||||
## activationリファレンス
|
||||
## `activation` リファレンス
|
||||
|
||||
プラグインが、後でどのコントロールプレーンイベントによってアクティブ化されるべきかを軽量に宣言できる場合は、`activation`を使用します。
|
||||
プラグインが後で有効化すべき control-plane イベントを軽量に宣言できる場合は、`activation` を使用します。
|
||||
|
||||
このブロックはメタデータのみです。ランタイム動作を登録するものではなく、`register(...)`、`setupEntry`、その他のランタイム/プラグインエントリーポイントの代わりにもなりません。
|
||||
このブロックはメタデータのみです。ランタイム動作は登録せず、`register(...)`、`setupEntry`、その他のランタイム/プラグインエントリーポイントの代わりにもなりません。
|
||||
|
||||
```json
|
||||
{
|
||||
@ -222,17 +225,17 @@ OpenClawはこれをプロバイダーランタイムの読み込み前に読み
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Required | Type | 意味 |
|
||||
| ---------------- | -------- | ---------------------------------------------------- | ---------------------------------------------------------- |
|
||||
| `onProviders` | いいえ | `string[]` | 要求されたときにこのプラグインをアクティブ化すべきプロバイダーIDです。 |
|
||||
| `onCommands` | いいえ | `string[]` | このプラグインをアクティブ化すべきコマンドIDです。 |
|
||||
| `onChannels` | いいえ | `string[]` | このプラグインをアクティブ化すべきチャネルIDです。 |
|
||||
| `onRoutes` | いいえ | `string[]` | このプラグインをアクティブ化すべきルート種別です。 |
|
||||
| `onCapabilities` | いいえ | `Array<"provider" \| "channel" \| "tool" \| "hook">` | コントロールプレーンのアクティベーション計画で使われる広義の機能ヒントです。 |
|
||||
| フィールド | 必須 | 型 | 意味 |
|
||||
| ---------------- | -------- | ---------------------------------------------------- | ------------------------------------------------------------------- |
|
||||
| `onProviders` | いいえ | `string[]` | 要求時にこのプラグインを有効化すべきプロバイダー ID。 |
|
||||
| `onCommands` | いいえ | `string[]` | このプラグインを有効化すべきコマンド ID。 |
|
||||
| `onChannels` | いいえ | `string[]` | このプラグインを有効化すべきチャネル ID。 |
|
||||
| `onRoutes` | いいえ | `string[]` | このプラグインを有効化すべきルート種別。 |
|
||||
| `onCapabilities` | いいえ | `Array<"provider" \| "channel" \| "tool" \| "hook">` | control-plane の有効化計画で使われる、大まかな capability ヒント。 |
|
||||
|
||||
## setupリファレンス
|
||||
## `setup` リファレンス
|
||||
|
||||
セットアップおよびオンボーディングサーフェスが、ランタイム読み込み前にプラグイン所有の軽量なメタデータを必要とする場合は、`setup`を使用します。
|
||||
セットアップおよびオンボーディングサーフェスで、ランタイム読み込み前に軽量なプラグイン所有メタデータが必要な場合は、`setup` を使用します。
|
||||
|
||||
```json
|
||||
{
|
||||
@ -251,28 +254,32 @@ OpenClawはこれをプロバイダーランタイムの読み込み前に読み
|
||||
}
|
||||
```
|
||||
|
||||
トップレベルの`cliBackends`は引き続き有効で、CLI推論バックエンドを記述し続けます。`setup.cliBackends`は、メタデータ専用に保つべきコントロールプレーン/セットアップフロー向けのセットアップ固有の記述サーフェスです。
|
||||
トップレベルの `cliBackends` は引き続き有効であり、CLI 推論バックエンドを記述し続けます。`setup.cliBackends` は、メタデータ専用のままにすべき control-plane/セットアップフロー向けの、セットアップ固有の記述子サーフェスです。
|
||||
|
||||
### setup.providersリファレンス
|
||||
`setup.providers` と `setup.cliBackends` が存在する場合、これらはセットアップ検出のための優先される記述子優先ルックアップサーフェスです。記述子が候補プラグインの絞り込みだけを行い、セットアップにさらに豊富なセットアップ時ランタイムフックが必要な場合は、`requiresRuntime: true` を設定し、フォールバック実行パスとして `setup-api` を維持してください。
|
||||
|
||||
| Field | Required | Type | 意味 |
|
||||
セットアップのルックアップではプラグイン所有の `setup-api` コードを実行できるため、正規化された `setup.providers[].id` および `setup.cliBackends[]` の値は、検出されたプラグイン全体で一意でなければなりません。所有権が曖昧な場合は、検出順から勝者を選ぶのではなく、クローズドに失敗します。
|
||||
|
||||
### `setup.providers` リファレンス
|
||||
|
||||
| フィールド | 必須 | 型 | 意味 |
|
||||
| ------------- | -------- | ---------- | ------------------------------------------------------------------------------------ |
|
||||
| `id` | はい | `string` | セットアップまたはオンボーディング中に公開されるプロバイダーIDです。 |
|
||||
| `authMethods` | いいえ | `string[]` | フルランタイムを読み込まずにこのプロバイダーがサポートする、セットアップ/認証メソッドIDです。 |
|
||||
| `envVars` | いいえ | `string[]` | プラグインランタイム読み込み前に汎用のセットアップ/ステータスサーフェスが確認できるenv varsです。 |
|
||||
| `id` | はい | `string` | セットアップまたはオンボーディング中に公開されるプロバイダー ID。正規化された ID はグローバルで一意に保ってください。 |
|
||||
| `authMethods` | いいえ | `string[]` | 完全なランタイムを読み込まずにこのプロバイダーがサポートする、セットアップ/認証メソッド ID。 |
|
||||
| `envVars` | いいえ | `string[]` | 汎用のセットアップ/ステータスサーフェスが、プラグインランタイムの読み込み前に確認できる env var。 |
|
||||
|
||||
### setup fields
|
||||
### `setup` フィールド
|
||||
|
||||
| Field | Required | Type | 意味 |
|
||||
| ------------------ | -------- | ---------- | -------------------------------------------------------------------------- |
|
||||
| `providers` | いいえ | `object[]` | セットアップおよびオンボーディング中に公開されるプロバイダーセットアップ記述子です。 |
|
||||
| `cliBackends` | いいえ | `string[]` | フルランタイムをアクティブ化せずに利用可能なセットアップ時バックエンドIDです。 |
|
||||
| `configMigrations` | いいえ | `string[]` | このプラグインのセットアップサーフェスが所有する設定マイグレーションIDです。 |
|
||||
| `requiresRuntime` | いいえ | `boolean` | 記述子参照後もセットアップにプラグインランタイムの実行が必要かどうかです。 |
|
||||
| フィールド | 必須 | 型 | 意味 |
|
||||
| ------------------ | -------- | ---------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| `providers` | いいえ | `object[]` | セットアップおよびオンボーディング中に公開されるプロバイダーセットアップ記述子。 |
|
||||
| `cliBackends` | いいえ | `string[]` | 記述子優先のセットアップルックアップで使われるセットアップ時バックエンド ID。正規化された ID はグローバルで一意に保ってください。 |
|
||||
| `configMigrations` | いいえ | `string[]` | このプラグインのセットアップサーフェスが所有する設定マイグレーション ID。 |
|
||||
| `requiresRuntime` | いいえ | `boolean` | 記述子ルックアップ後もセットアップに `setup-api` の実行が必要かどうか。 |
|
||||
|
||||
## uiHintsリファレンス
|
||||
## `uiHints` リファレンス
|
||||
|
||||
`uiHints`は、設定フィールド名から小さなレンダリングヒントへのマップです。
|
||||
`uiHints` は、設定フィールド名から小さなレンダリングヒントへのマップです。
|
||||
|
||||
```json
|
||||
{
|
||||
@ -287,20 +294,20 @@ OpenClawはこれをプロバイダーランタイムの読み込み前に読み
|
||||
}
|
||||
```
|
||||
|
||||
各フィールドヒントには次を含められます。
|
||||
各フィールドヒントには以下を含められます。
|
||||
|
||||
| Field | Type | 意味 |
|
||||
| ------------- | ---------- | -------------------------------------- |
|
||||
| `label` | `string` | ユーザー向けフィールドラベルです。 |
|
||||
| `help` | `string` | 短い補助テキストです。 |
|
||||
| `tags` | `string[]` | 任意のUIタグです。 |
|
||||
| `advanced` | `boolean` | このフィールドを高度な項目としてマークします。 |
|
||||
| `sensitive` | `boolean` | このフィールドをシークレットまたは機密としてマークします。 |
|
||||
| `placeholder` | `string` | フォーム入力用のプレースホルダーテキストです。 |
|
||||
| フィールド | 型 | 意味 |
|
||||
| ------------- | ---------- | ------------------------------------- |
|
||||
| `label` | `string` | ユーザー向けのフィールドラベル。 |
|
||||
| `help` | `string` | 短い補足テキスト。 |
|
||||
| `tags` | `string[]` | 任意の UI タグ。 |
|
||||
| `advanced` | `boolean` | このフィールドを高度な項目として示します。 |
|
||||
| `sensitive` | `boolean` | このフィールドを秘密情報または機密情報として示します。 |
|
||||
| `placeholder` | `string` | フォーム入力用のプレースホルダーテキスト。 |
|
||||
|
||||
## contractsリファレンス
|
||||
## `contracts` リファレンス
|
||||
|
||||
OpenClawがプラグインランタイムをインポートせずに読み取れる、静的な機能所有権メタデータに対してのみ`contracts`を使用してください。
|
||||
`contracts` は、OpenClaw がプラグインランタイムをインポートせずに読み取れる、静的な capability 所有メタデータにのみ使用してください。
|
||||
|
||||
```json
|
||||
{
|
||||
@ -320,21 +327,21 @@ OpenClawがプラグインランタイムをインポートせずに読み取れ
|
||||
|
||||
各リストは任意です。
|
||||
|
||||
| Field | Type | 意味 |
|
||||
| -------------------------------- | ---------- | ---------------------------------------------------------- |
|
||||
| `speechProviders` | `string[]` | このプラグインが所有するspeechプロバイダーIDです。 |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | このプラグインが所有するrealtime transcriptionプロバイダーIDです。 |
|
||||
| `realtimeVoiceProviders` | `string[]` | このプラグインが所有するrealtime voiceプロバイダーIDです。 |
|
||||
| `mediaUnderstandingProviders` | `string[]` | このプラグインが所有するmedia-understandingプロバイダーIDです。 |
|
||||
| `imageGenerationProviders` | `string[]` | このプラグインが所有するimage-generationプロバイダーIDです。 |
|
||||
| `videoGenerationProviders` | `string[]` | このプラグインが所有するvideo-generationプロバイダーIDです。 |
|
||||
| `webFetchProviders` | `string[]` | このプラグインが所有するweb-fetchプロバイダーIDです。 |
|
||||
| `webSearchProviders` | `string[]` | このプラグインが所有するweb searchプロバイダーIDです。 |
|
||||
| `tools` | `string[]` | バンドルコントラクトチェック用にこのプラグインが所有するエージェントツール名です。 |
|
||||
| フィールド | 型 | 意味 |
|
||||
| -------------------------------- | ---------- | ------------------------------------------------------------ |
|
||||
| `speechProviders` | `string[]` | このプラグインが所有する speech プロバイダー ID。 |
|
||||
| `realtimeTranscriptionProviders` | `string[]` | このプラグインが所有する realtime-transcription プロバイダー ID。 |
|
||||
| `realtimeVoiceProviders` | `string[]` | このプラグインが所有する realtime-voice プロバイダー ID。 |
|
||||
| `mediaUnderstandingProviders` | `string[]` | このプラグインが所有する media-understanding プロバイダー ID。 |
|
||||
| `imageGenerationProviders` | `string[]` | このプラグインが所有する image-generation プロバイダー ID。 |
|
||||
| `videoGenerationProviders` | `string[]` | このプラグインが所有する video-generation プロバイダー ID。 |
|
||||
| `webFetchProviders` | `string[]` | このプラグインが所有する web-fetch プロバイダー ID。 |
|
||||
| `webSearchProviders` | `string[]` | このプラグインが所有する web-search プロバイダー ID。 |
|
||||
| `tools` | `string[]` | バンドル契約チェックのためにこのプラグインが所有するエージェントツール名。 |
|
||||
|
||||
## channelConfigsリファレンス
|
||||
## `channelConfigs` リファレンス
|
||||
|
||||
チャネルプラグインがランタイム読み込み前に軽量な設定メタデータを必要とする場合は、`channelConfigs`を使用します。
|
||||
チャネルプラグインがランタイム読み込み前に軽量な設定メタデータを必要とする場合は、`channelConfigs` を使用します。
|
||||
|
||||
```json
|
||||
{
|
||||
@ -361,19 +368,19 @@ OpenClawがプラグインランタイムをインポートせずに読み取れ
|
||||
}
|
||||
```
|
||||
|
||||
各チャネルエントリーには次を含められます。
|
||||
各チャネルエントリには以下を含められます。
|
||||
|
||||
| Field | Type | 意味 |
|
||||
| ------------- | ------------------------ | ------------------------------------------------------------------------------------- |
|
||||
| `schema` | `object` | `channels.<id>`用のJSON Schemaです。宣言された各チャネル設定エントリーで必須です。 |
|
||||
| `uiHints` | `Record<string, object>` | そのチャネル設定セクション向けの任意のUIラベル/プレースホルダー/機密性ヒントです。 |
|
||||
| `label` | `string` | ランタイムメタデータの準備ができていないときに、ピッカーおよび検査サーフェスへマージされるチャネルラベルです。 |
|
||||
| `description` | `string` | 検査およびカタログサーフェス向けの短いチャネル説明です。 |
|
||||
| `preferOver` | `string[]` | 選択サーフェスでこのチャネルが優先すべき、レガシーまたは低優先度のプラグインIDです。 |
|
||||
| フィールド | 型 | 意味 |
|
||||
| ------------- | ------------------------ | ---------------------------------------------------------------------------------------- |
|
||||
| `schema` | `object` | `channels.<id>` 用の JSON Schema。宣言された各チャネル設定エントリで必須です。 |
|
||||
| `uiHints` | `Record<string, object>` | そのチャネル設定セクション向けの任意の UI ラベル / プレースホルダー / 機密性ヒント。 |
|
||||
| `label` | `string` | ランタイムメタデータが準備できていないときに、ピッカーおよび確認サーフェスにマージされるチャネルラベル。 |
|
||||
| `description` | `string` | 確認およびカタログサーフェス向けの短いチャネル説明。 |
|
||||
| `preferOver` | `string[]` | 選択サーフェスでこのチャネルが優先されるべき、レガシーまたは優先度の低いプラグイン ID。 |
|
||||
|
||||
## modelSupportリファレンス
|
||||
## `modelSupport` リファレンス
|
||||
|
||||
プラグインランタイムが読み込まれる前に、OpenClawが`gpt-5.4`や`claude-sonnet-4.6`のような短縮モデルIDからプロバイダープラグインを推定すべき場合は、`modelSupport`を使用します。
|
||||
プラグインランタイムの読み込み前に、OpenClaw が `gpt-5.4` や `claude-sonnet-4.6` のような短縮形モデル ID からプロバイダープラグインを推測すべき場合は、`modelSupport` を使用します。
|
||||
|
||||
```json
|
||||
{
|
||||
@ -384,60 +391,72 @@ OpenClawがプラグインランタイムをインポートせずに読み取れ
|
||||
}
|
||||
```
|
||||
|
||||
OpenClawは次の優先順位を適用します。
|
||||
OpenClaw は次の優先順位を適用します。
|
||||
|
||||
- 明示的な`provider/model`参照では、所有元の`providers`マニフェストメタデータを使用します
|
||||
- `modelPatterns`は`modelPrefixes`より優先されます
|
||||
- 1つの非バンドルプラグインと1つのバンドルプラグインの両方が一致する場合、非バンドルプラグインが優先されます
|
||||
- 明示的な `provider/model` 参照では、所有している `providers` マニフェストメタデータを使用します
|
||||
- `modelPatterns` は `modelPrefixes` より優先されます
|
||||
- 1 つの非バンドルプラグインと 1 つのバンドルプラグインの両方が一致する場合、非バンドルプラグインが優先されます
|
||||
- 残る曖昧さは、ユーザーまたは設定がプロバイダーを指定するまで無視されます
|
||||
|
||||
フィールド:
|
||||
|
||||
| Field | Type | 意味 |
|
||||
| --------------- | ---------- | -------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | 短縮モデルIDに対して`startsWith`で一致判定するプレフィックスです。 |
|
||||
| `modelPatterns` | `string[]` | プロファイル接尾辞を除去した後の短縮モデルIDに対して一致判定する正規表現ソースです。 |
|
||||
| フィールド | 型 | 意味 |
|
||||
| --------------- | ---------- | ------------------------------------------------------------------------------- |
|
||||
| `modelPrefixes` | `string[]` | 短縮形モデル ID に対して `startsWith` で照合されるプレフィックス。 |
|
||||
| `modelPatterns` | `string[]` | プロファイル接尾辞を除去した後の短縮形モデル ID に対して照合される正規表現ソース。 |
|
||||
|
||||
レガシーなトップレベル機能キーは非推奨です。`speechProviders`、`realtimeTranscriptionProviders`、`realtimeVoiceProviders`、`mediaUnderstandingProviders`、`imageGenerationProviders`、`videoGenerationProviders`、`webFetchProviders`、`webSearchProviders`を`contracts`配下へ移動するには、`openclaw doctor --fix`を使用してください。通常のマニフェスト読み込みでは、これらのトップレベルフィールドを機能所有権としては扱いません。
|
||||
レガシーなトップレベル capability キーは非推奨です。`openclaw doctor --fix` を使って、`speechProviders`、`realtimeTranscriptionProviders`、
|
||||
`realtimeVoiceProviders`、`mediaUnderstandingProviders`、
|
||||
`imageGenerationProviders`、`videoGenerationProviders`、
|
||||
`webFetchProviders`、および `webSearchProviders` を `contracts` の下へ移動してください。通常の
|
||||
マニフェスト読み込みでは、これらのトップレベルフィールドを capability
|
||||
所有権としては扱わなくなりました。
|
||||
|
||||
## マニフェストとpackage.jsonの違い
|
||||
## マニフェストと package.json の違い
|
||||
|
||||
この2つのファイルは異なる役割を持ちます。
|
||||
この 2 つのファイルは、異なる役割を持っています。
|
||||
|
||||
| File | 用途 |
|
||||
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | プラグインコード実行前に存在している必要がある、検出、設定検証、認証選択メタデータ、およびUIヒント |
|
||||
| `package.json` | npmメタデータ、依存関係のインストール、およびエントリーポイント、インストールゲート、セットアップ、またはカタログメタデータに使用される`openclaw`ブロック |
|
||||
| ファイル | 用途 |
|
||||
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.plugin.json` | 検出、設定検証、認証選択メタデータ、およびプラグインコード実行前に存在している必要がある UI ヒント |
|
||||
| `package.json` | npm メタデータ、依存関係のインストール、およびエントリーポイント、インストール制御、セットアップ、またはカタログメタデータに使用される `openclaw` ブロック |
|
||||
|
||||
どこにメタデータを置くべきか迷った場合は、次のルールを使ってください。
|
||||
|
||||
- OpenClawがプラグインコードを読み込む前に知っている必要があるなら、`openclaw.plugin.json`に入れます
|
||||
- パッケージ化、エントリーファイル、またはnpmインストール動作に関するものなら、`package.json`に入れます
|
||||
- OpenClaw がプラグインコードを読み込む前に知っている必要があるなら、`openclaw.plugin.json` に置きます
|
||||
- パッケージング、エントリーファイル、または npm install の動作に関するものなら、`package.json` に置きます
|
||||
|
||||
### 検出に影響するpackage.jsonフィールド
|
||||
### 検出に影響する `package.json` フィールド
|
||||
|
||||
一部のランタイム前プラグインメタデータは、`openclaw.plugin.json`ではなく、意図的に`package.json`の`openclaw`ブロック配下に置かれます。
|
||||
一部のランタイム前プラグインメタデータは、`openclaw.plugin.json` ではなく、`package.json` の
|
||||
`openclaw` ブロック配下に意図的に置かれています。
|
||||
|
||||
重要な例:
|
||||
|
||||
| Field | 意味 |
|
||||
| ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.extensions` | ネイティブプラグインのエントリーポイントを宣言します。 |
|
||||
| `openclaw.setupEntry` | オンボーディングおよび遅延チャネル起動中に使われる、軽量なセットアップ専用エントリーポイントです。 |
|
||||
| `openclaw.channel` | ラベル、ドキュメントパス、エイリアス、選択コピーなどの軽量なチャネルカタログメタデータです。 |
|
||||
| `openclaw.channel.configuredState` | フルチャネルランタイムを読み込まずに「envのみのセットアップがすでに存在するか?」へ答えられる、軽量なconfigured-stateチェッカーメタデータです。 |
|
||||
| `openclaw.channel.persistedAuthState` | フルチャネルランタイムを読み込まずに「何かがすでにサインイン済みか?」へ答えられる、軽量な永続化認証チェッカーメタデータです。 |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | バンドル済みおよび外部公開プラグイン用のインストール/更新ヒントです。 |
|
||||
| `openclaw.install.defaultChoice` | 複数のインストール元が利用可能な場合の優先インストールパスです。 |
|
||||
| `openclaw.install.minHostVersion` | `>=2026.3.22`のようなsemver下限で指定する、サポートされる最小OpenClawホストバージョンです。 |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | 設定が無効な場合に、限定的なバンドルプラグイン再インストール回復パスを許可します。 |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | 起動時に、フルチャネルプラグインより前にセットアップ専用チャネルサーフェスを読み込めるようにします。 |
|
||||
| フィールド | 意味 |
|
||||
| -------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `openclaw.extensions` | ネイティブプラグインのエントリーポイントを宣言します。 |
|
||||
| `openclaw.setupEntry` | オンボーディングおよび遅延チャネル起動中に使用される、軽量なセットアップ専用エントリーポイント。 |
|
||||
| `openclaw.channel` | ラベル、ドキュメントパス、エイリアス、選択時の文言などの軽量なチャネルカタログメタデータ。 |
|
||||
| `openclaw.channel.configuredState` | フルチャネルランタイムを読み込まずに「env のみのセットアップがすでに存在するか?」に答えられる、軽量な configured-state チェッカーメタデータ。 |
|
||||
| `openclaw.channel.persistedAuthState` | フルチャネルランタイムを読み込まずに「すでにサインイン済みのものがあるか?」に答えられる、軽量な永続化認証チェッカーメタデータ。 |
|
||||
| `openclaw.install.npmSpec` / `openclaw.install.localPath` | バンドル済みおよび外部公開プラグイン向けのインストール / 更新ヒント。 |
|
||||
| `openclaw.install.defaultChoice` | 複数のインストール元がある場合の優先インストールパス。 |
|
||||
| `openclaw.install.minHostVersion` | `>=2026.3.22` のような semver 下限で表す、サポートされる最小 OpenClaw ホストバージョン。 |
|
||||
| `openclaw.install.allowInvalidConfigRecovery` | 設定が無効な場合に限定された、バンドルプラグインの再インストール回復パスを許可します。 |
|
||||
| `openclaw.startup.deferConfiguredChannelFullLoadUntilAfterListen` | 起動中に、フルチャネルプラグインより先にセットアップ専用チャネルサーフェスを読み込めるようにします。 |
|
||||
|
||||
`openclaw.install.minHostVersion`は、インストール時およびマニフェストレジストリ読み込み時に適用されます。無効な値は拒否されます。新しすぎても有効な値であれば、古いホストではそのプラグインをスキップします。
|
||||
`openclaw.install.minHostVersion` は、インストール時およびマニフェスト
|
||||
レジストリ読み込み時に適用されます。無効な値は拒否されます。有効ではあるがより新しい値の場合、古いホストではそのプラグインをスキップします。
|
||||
|
||||
`openclaw.install.allowInvalidConfigRecovery`は意図的に限定的です。任意の壊れた設定をインストール可能にするものではありません。現在は、バンドルプラグインパスの欠落や、その同じバンドルプラグインに対する古い`channels.<id>`エントリーなど、特定の古いバンドルプラグイン更新失敗からインストールフローを回復できるようにするだけです。無関係な設定エラーは引き続きインストールをブロックし、オペレーターは`openclaw doctor --fix`に案内されます。
|
||||
`openclaw.install.allowInvalidConfigRecovery` は、意図的に範囲が限定されています。
|
||||
これによって任意の壊れた設定がインストール可能になるわけではありません。現在のところ、
|
||||
同じバンドルプラグインに対するバンドルプラグインパスの欠落や古い `channels.<id>`
|
||||
エントリなど、特定の古いバンドルプラグイン更新失敗からの回復をインストールフローで許可するだけです。
|
||||
無関係な設定エラーは引き続きインストールをブロックし、オペレーターを
|
||||
`openclaw doctor --fix` へ案内します。
|
||||
|
||||
`openclaw.channel.persistedAuthState`は、小さなチェッカーモジュール向けのパッケージメタデータです。
|
||||
`openclaw.channel.persistedAuthState` は、小さなチェッカーモジュール用のパッケージメタデータです。
|
||||
|
||||
```json
|
||||
{
|
||||
@ -453,9 +472,10 @@ OpenClawは次の優先順位を適用します。
|
||||
}
|
||||
```
|
||||
|
||||
セットアップ、doctor、またはconfigured-stateフローで、フルチャネルプラグイン読み込み前に軽量なyes/no認証プローブが必要な場合に使います。対象のexportは、永続化状態だけを読み取る小さな関数にしてください。フルチャネルランタイムbarrel経由にはしないでください。
|
||||
これは、セットアップ、doctor、または configured-state フローで、フルチャネルプラグインの読み込み前に、軽量な yes/no 認証プローブが必要な場合に使用します。対象の export は、永続化された状態のみを読み取る小さな関数にしてください。フルチャネルランタイムバレル経由にしないでください。
|
||||
|
||||
`openclaw.channel.configuredState`も、軽量なenvのみconfiguredチェック用に同じ形式に従います。
|
||||
`openclaw.channel.configuredState` も、軽量な env-only
|
||||
configured チェック向けに同じ形に従います。
|
||||
|
||||
```json
|
||||
{
|
||||
@ -471,42 +491,55 @@ OpenClawは次の優先順位を適用します。
|
||||
}
|
||||
```
|
||||
|
||||
チャネルがenvまたはその他の小さな非ランタイム入力からconfigured-stateに答えられる場合に使います。チェックにフル設定解決や実際のチャネルランタイムが必要な場合は、代わりにそのロジックをプラグインの`config.hasConfiguredState`フックに置いてください。
|
||||
これは、チャネルが env またはその他の小さな非ランタイム入力から configured-state に答えられる場合に使用します。チェックに完全な設定解決または実際のチャネルランタイムが必要な場合は、そのロジックを代わりにプラグインの `config.hasConfiguredState` フック内に置いてください。
|
||||
|
||||
## JSON Schema要件
|
||||
## JSON Schema の要件
|
||||
|
||||
- **すべてのプラグインはJSON Schemaを必ず提供する必要があります**。設定を受け付けない場合でも同様です。
|
||||
- **すべてのプラグインは JSON Schema を必ず提供する必要があります**。設定を受け付けない場合でも同様です。
|
||||
- 空のスキーマでも構いません(例: `{ "type": "object", "additionalProperties": false }`)。
|
||||
- スキーマはランタイム時ではなく、設定の読み取り/書き込み時に検証されます。
|
||||
- スキーマはランタイム時ではなく、設定の読み取り / 書き込み時に検証されます。
|
||||
|
||||
## 検証動作
|
||||
|
||||
- 不明な`channels.*`キーは、チャネルIDがプラグインマニフェストで宣言されていない限り、**エラー**です。
|
||||
- `plugins.entries.<id>`、`plugins.allow`、`plugins.deny`、`plugins.slots.*`は、**検出可能な**プラグインIDを参照する必要があります。不明なIDは**エラー**です。
|
||||
- プラグインがインストール済みでも、マニフェストまたはスキーマが壊れている、または存在しない場合、検証は失敗し、Doctorがそのプラグインエラーを報告します。
|
||||
- 不明な `channels.*` キーは、チャネル ID がプラグインマニフェストで宣言されていない限り、**エラー**です。
|
||||
- `plugins.entries.<id>`、`plugins.allow`、`plugins.deny`、および `plugins.slots.*` は、**検出可能な**プラグイン ID を参照していなければなりません。不明な ID は **エラー** です。
|
||||
- プラグインがインストールされていても、マニフェストまたはスキーマが壊れている、または欠落している場合、検証は失敗し、Doctor がそのプラグインエラーを報告します。
|
||||
- プラグイン設定が存在していても、そのプラグインが**無効**の場合、設定は保持され、Doctor + ログで**警告**が表示されます。
|
||||
|
||||
完全な`plugins.*`スキーマについては、[設定リファレンス](/ja-JP/gateway/configuration)を参照してください。
|
||||
完全な `plugins.*` スキーマについては、[Configuration reference](/ja-JP/gateway/configuration) を参照してください。
|
||||
|
||||
## 注意
|
||||
|
||||
- マニフェストは、ローカルファイルシステム読み込みを含む**ネイティブなOpenClawプラグインで必須**です。
|
||||
- ランタイムは引き続きプラグインモジュールを個別に読み込みます。マニフェストは検出 + 検証専用です。
|
||||
- ネイティブマニフェストはJSON5で解析されるため、最終的な値が依然としてオブジェクトである限り、コメント、末尾カンマ、クォートなしキーを使用できます。
|
||||
- マニフェストローダーが読み取るのは文書化されたマニフェストフィールドだけです。ここにカスタムのトップレベルキーを追加するのは避けてください。
|
||||
- `providerAuthEnvVars`は、認証プローブ、envマーカー検証、およびenv名を確認するためだけにプラグインランタイムを起動すべきでない類似のプロバイダー認証サーフェス向けの軽量メタデータパスです。
|
||||
- `providerAuthAliases`を使うと、コアにその関係をハードコードせずに、プロバイダーバリアントが別のプロバイダーの認証env vars、認証プロファイル、設定ベースの認証、APIキーのオンボーディング選択肢を再利用できます。
|
||||
- `channelEnvVars`は、シェルenvフォールバック、セットアッププロンプト、およびenv名を確認するためだけにプラグインランタイムを起動すべきでない類似のチャネルサーフェス向けの軽量メタデータパスです。
|
||||
- `providerAuthChoices`は、認証選択ピッカー、`--auth-choice`解決、優先プロバイダーマッピング、およびプロバイダーランタイム読み込み前のシンプルなオンボーディングCLIフラグ登録向けの軽量メタデータパスです。プロバイダーコードを必要とするランタイムのウィザードメタデータについては、[Provider runtime hooks](/ja-JP/plugins/architecture#provider-runtime-hooks)を参照してください。
|
||||
- 排他的なプラグイン種別は`plugins.slots.*`を通じて選択されます。
|
||||
- `kind: "memory"`は`plugins.slots.memory`で選択されます。
|
||||
- `kind: "context-engine"`は`plugins.slots.contextEngine`で選択されます(デフォルト: 組み込みの`legacy`)。
|
||||
- `channels`、`providers`、`cliBackends`、`skills`は、プラグインで不要な場合は省略できます。
|
||||
- プラグインがネイティブモジュールに依存する場合は、ビルド手順と、必要なパッケージマネージャーのallowlist要件(たとえばpnpm `allow-build-scripts`
|
||||
- マニフェストは、ローカルファイルシステム読み込みを含む**ネイティブ OpenClaw プラグインで必須**です。
|
||||
- ランタイムは引き続きプラグインモジュールを別途読み込みます。マニフェストは
|
||||
検出 + 検証専用です。
|
||||
- ネイティブマニフェストは JSON5 で解析されるため、最終的な値が引き続きオブジェクトである限り、
|
||||
コメント、末尾のカンマ、引用符なしキーが許容されます。
|
||||
- マニフェストローダーが読み取るのは、文書化されたマニフェストフィールドのみです。ここに
|
||||
カスタムのトップレベルキーを追加しないでください。
|
||||
- `providerAuthEnvVars` は、認証プローブ、env-marker
|
||||
検証、および env 名を確認するだけのためにプラグインランタイムを起動すべきでない同様の provider-auth サーフェス向けの、軽量メタデータパスです。
|
||||
- `providerAuthAliases` は、コアにその関係をハードコードせずに、プロバイダーバリアントが別のプロバイダーの認証
|
||||
env var、認証プロファイル、設定ベース認証、および API キーのオンボーディング選択肢を再利用できるようにします。
|
||||
- `channelEnvVars` は、シェル env フォールバック、セットアップ
|
||||
プロンプト、および env 名を確認するだけのためにチャネルランタイムを起動すべきでない同様のチャネルサーフェス向けの、軽量メタデータパスです。
|
||||
- `providerAuthChoices` は、認証選択ピッカー、
|
||||
`--auth-choice` 解決、優先プロバイダーマッピング、およびプロバイダーランタイム読み込み前の単純なオンボーディング
|
||||
CLI フラグ登録向けの、軽量メタデータパスです。プロバイダーコードが必要なランタイム
|
||||
ウィザードメタデータについては、
|
||||
[Provider runtime hooks](/ja-JP/plugins/architecture#provider-runtime-hooks) を参照してください。
|
||||
- 排他的なプラグイン種別は `plugins.slots.*` を通じて選択されます。
|
||||
- `kind: "memory"` は `plugins.slots.memory` で選択されます。
|
||||
- `kind: "context-engine"` は `plugins.slots.contextEngine`
|
||||
で選択されます(デフォルト: 組み込みの `legacy`)。
|
||||
- `channels`、`providers`、`cliBackends`、および `skills` は、プラグインが
|
||||
それらを必要としない場合は省略できます。
|
||||
- プラグインがネイティブモジュールに依存している場合は、ビルド手順と、
|
||||
パッケージマネージャーの allowlist 要件(たとえば pnpm の `allow-build-scripts`
|
||||
- `pnpm rebuild <package>`)を文書化してください。
|
||||
|
||||
## 関連
|
||||
|
||||
- [プラグインの構築](/ja-JP/plugins/building-plugins) — プラグインのはじめに
|
||||
- [プラグインアーキテクチャ](/ja-JP/plugins/architecture) — 内部アーキテクチャ
|
||||
- [SDK概要](/ja-JP/plugins/sdk-overview) — Plugin SDKリファレンス
|
||||
- [Building Plugins](/ja-JP/plugins/building-plugins) — プラグインのはじめに
|
||||
- [Plugin Architecture](/ja-JP/plugins/architecture) — 内部アーキテクチャ
|
||||
- [SDK Overview](/ja-JP/plugins/sdk-overview) — Plugin SDK リファレンス
|
||||
|
||||
@ -1,177 +1,182 @@
|
||||
---
|
||||
read_when:
|
||||
- ワークスペースを手動でbootstrapする場合
|
||||
summary: AGENTS.mdのワークスペーステンプレート
|
||||
title: AGENTS.mdテンプレート
|
||||
- ワークスペースを手動でブートストラップする
|
||||
summary: AGENTS.md のワークスペーステンプレート
|
||||
title: AGENTS.md テンプレート
|
||||
x-i18n:
|
||||
generated_at: "2026-04-11T02:48:17Z"
|
||||
generated_at: "2026-04-12T04:43:44Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 6d8a3e96f547da6cc082d747c042555b0ec4963b66921d1700b4590f0e0c38b4
|
||||
source_hash: b7a68a1f0b4b837298bfe6edf8ce855d6ef6902ea8e7277b0d9a8442b23daf54
|
||||
source_path: reference/templates/AGENTS.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# AGENTS.md - あなたのワークスペース
|
||||
|
||||
このフォルダーはホームです。そう扱ってください。
|
||||
このフォルダーはあなたの居場所です。そのように扱ってください。
|
||||
|
||||
## 初回実行
|
||||
|
||||
`BOOTSTRAP.md`が存在するなら、それがあなたの出生証明書です。それに従い、自分が何者かを把握してから削除してください。もう二度と必要ありません。
|
||||
`BOOTSTRAP.md` が存在するなら、それはあなたの出生証明書です。それに従い、自分が何者かを把握したら、削除してください。もう二度と必要ありません。
|
||||
|
||||
## セッション開始時
|
||||
|
||||
他のことをする前に、次を実行してください。
|
||||
まず、ランタイムから提供された開始コンテキストを使ってください。
|
||||
|
||||
1. `SOUL.md`を読む — これはあなたが何者かです
|
||||
2. `USER.md`を読む — これはあなたが誰を助けているかです
|
||||
3. `memory/YYYY-MM-DD.md`(今日と昨日)を読んで最近の文脈を把握する
|
||||
4. **MAIN SESSION内の場合**(あなたの人間との直接チャット): `MEMORY.md`も読む
|
||||
そのコンテキストには、すでに次のものが含まれている場合があります。
|
||||
|
||||
許可を求めないでください。そのまま実行してください。
|
||||
- `AGENTS.md`、`SOUL.md`、`USER.md`
|
||||
- `memory/YYYY-MM-DD.md` のような最近のデイリーメモ
|
||||
- これがメインセッションである場合は `MEMORY.md`
|
||||
|
||||
## 記憶
|
||||
次の場合を除き、開始用ファイルを手動で再読しないでください。
|
||||
|
||||
あなたは各セッションで新しく目覚めます。これらのファイルがあなたの連続性です。
|
||||
1. ユーザーが明示的に依頼した場合
|
||||
2. 提供されたコンテキストに必要なものが欠けている場合
|
||||
3. 提供された開始コンテキストを超えて、より深い追跡読み取りが必要な場合
|
||||
|
||||
- **日次ノート:** `memory/YYYY-MM-DD.md`(必要なら`memory/`を作成)— 何が起きたかの生ログ
|
||||
## メモリ
|
||||
|
||||
あなたは毎セッション新しい状態で目覚めます。これらのファイルがあなたの継続性です。
|
||||
|
||||
- **日次メモ:** `memory/YYYY-MM-DD.md`(必要なら `memory/` を作成)— 何が起きたかの生ログ
|
||||
- **長期:** `MEMORY.md` — 人間の長期記憶のような、厳選された記憶
|
||||
|
||||
重要なことを記録してください。決定、文脈、覚えておくべきこと。保持を求められない限り、secretは省いてください。
|
||||
重要なことを記録してください。判断、文脈、覚えておくべきこと。保持するよう求められない限り、秘密は省いてください。
|
||||
|
||||
### 🧠 MEMORY.md - あなたの長期記憶
|
||||
|
||||
- **main session内でのみ読み込む**(あなたの人間との直接チャット)
|
||||
- **メインセッションでのみ読み込む**(あなたの人間との直接チャット)
|
||||
- **共有コンテキストでは読み込まない**(Discord、グループチャット、他の人とのセッション)
|
||||
- これは**セキュリティ**のためです — 見知らぬ人に漏れるべきでない個人的な文脈が含まれています
|
||||
- main sessionでは`MEMORY.md`を自由に**読み取り、編集、更新**できます
|
||||
- 重要な出来事、考え、決定、意見、学んだ教訓を書いてください
|
||||
- これはあなたの厳選された記憶です — 生ログではなく、蒸留された本質です
|
||||
- 時間が経ったら、日次ファイルを見直し、保持する価値のある内容で`MEMORY.md`を更新してください
|
||||
- これは **セキュリティ** のためです — 見知らぬ人に漏れてはいけない個人的な文脈が含まれます
|
||||
- メインセッションでは `MEMORY.md` を自由に **読み取り、編集、更新** できます
|
||||
- 重要な出来事、考え、判断、意見、学びを書いてください
|
||||
- これはあなたの厳選された記憶です — 生ログではなく、抽出された本質です
|
||||
- 時間が経ったら日次ファイルを見直し、残す価値のあるものを `MEMORY.md` に反映してください
|
||||
|
||||
### 📝 書き残す - 「心のメモ」はなし!
|
||||
### 📝 書き残すこと - 「心のメモ」はなし!
|
||||
|
||||
- **記憶には限りがあります** — 何かを覚えておきたいなら、**ファイルに書いてください**
|
||||
- 「心のメモ」はセッション再起動を生き残れません。ファイルなら生き残ります。
|
||||
- 誰かに「これを覚えておいて」と言われたら → `memory/YYYY-MM-DD.md`または関連ファイルを更新する
|
||||
- 教訓を学んだら → AGENTS.md、TOOLS.md、または関連するskillを更新する
|
||||
- ミスをしたら → 将来の自分が繰り返さないように文書化する
|
||||
- **Text > Brain** 📝
|
||||
- 「心のメモ」はセッション再起動をまたいで残りません。ファイルは残ります。
|
||||
- 誰かに「これを覚えて」と言われたら → `memory/YYYY-MM-DD.md` または関連ファイルを更新する
|
||||
- 何かを学んだら → AGENTS.md、TOOLS.md、または関連するスキルを更新する
|
||||
- ミスをしたら → 次の自分が繰り返さないように記録する
|
||||
- **頭脳よりテキスト** 📝
|
||||
|
||||
## 越えてはいけない線
|
||||
|
||||
- 個人データを持ち出さない。絶対に。
|
||||
- 破壊的なコマンドは確認なしで実行しない。
|
||||
- `rm`より`trash`(復旧可能な方が、完全消去よりよい)
|
||||
- 迷ったら聞く。
|
||||
- 個人データを外部に持ち出さないこと。絶対に。
|
||||
- 破壊的なコマンドは確認なしに実行しないこと。
|
||||
- `rm` より `trash`(復元できるほうが完全削除よりよい)
|
||||
- 迷ったら確認すること。
|
||||
|
||||
## 外部と内部
|
||||
|
||||
**自由にやってよいこと:**
|
||||
**自由にしてよいこと:**
|
||||
|
||||
- ファイルを読む、探索する、整理する、学ぶ
|
||||
- Webを検索する、カレンダーを確認する
|
||||
- ウェブ検索、カレンダー確認
|
||||
- このワークスペース内で作業する
|
||||
|
||||
**先に確認すること:**
|
||||
**先に確認が必要なこと:**
|
||||
|
||||
- メール、ツイート、公開投稿を送ること
|
||||
- マシンの外へ出ていくあらゆること
|
||||
- 自信が持てないこと
|
||||
- メール送信、ツイート、公開投稿
|
||||
- マシンの外に出るあらゆること
|
||||
- 少しでも不確かなこと
|
||||
|
||||
## グループチャット
|
||||
|
||||
あなたは人間の持ち物にアクセスできます。でも、それはその持ち物を_共有する_という意味ではありません。グループでは、あなたは参加者です — その人の代弁者でも代理人でもありません。発言する前に考えてください。
|
||||
あなたは自分の人間のものにアクセスできます。だからといって、それを _共有する_ という意味ではありません。グループでは、あなたは参加者です — その人の代弁者でも、代理人でもありません。発言する前によく考えてください。
|
||||
|
||||
### 💬 話すべきときを見極める!
|
||||
### 💬 発言すべきタイミングを見極める!
|
||||
|
||||
すべてのメッセージを受け取るグループチャットでは、**いつ貢献するかを賢く判断**してください。
|
||||
|
||||
**返信するのはこんなとき:**
|
||||
**返答するのは次の場合:**
|
||||
|
||||
- 直接メンションされた、または質問された
|
||||
- 直接言及された、または質問された
|
||||
- 本当に価値を加えられる(情報、洞察、助け)
|
||||
- 気の利いた/面白いひと言が自然に合う
|
||||
- 重要な誤情報を訂正する
|
||||
- 気の利いたことや面白いことが自然に合う
|
||||
- 重要な誤情報を正す
|
||||
- 求められて要約する
|
||||
|
||||
**黙っているべきとき(HEARTBEAT_OK):**
|
||||
**黙っているべき(HEARTBEAT_OK)なのは次の場合:**
|
||||
|
||||
- 人間同士のただの雑談
|
||||
- 誰かがすでに質問に答えている
|
||||
- あなたの返答が「うん」や「いいね」程度にしかならない
|
||||
- 会話があなたなしでうまく流れている
|
||||
- メッセージを足すと雰囲気を切ってしまう
|
||||
- ただ人間同士の雑談である
|
||||
- すでに誰かが質問に答えた
|
||||
- 自分の返答が単なる「うん」や「いいね」にしかならない
|
||||
- 自分がいなくても会話がうまく流れている
|
||||
- メッセージを足すとその場の空気を壊す
|
||||
|
||||
**人間ルール:** 人間はグループチャットで全メッセージに返答しません。あなたも同じです。量より質。実際の友人グループチャットで送らない内容なら、送らないでください。
|
||||
**人間のルール:** 人間はグループチャットで一つひとつのメッセージに反応しません。あなたも同じです。量より質。友達との本物のグループチャットで送らない内容なら、送らないでください。
|
||||
|
||||
**三連投を避ける:** 同じメッセージに対して、異なる反応で何度も返答しないでください。3つの断片より、1つの考えられた返答の方がよいです。
|
||||
**三連投を避ける:** 同じメッセージに対して、違う反応を複数回返さないでください。断片的な三つの返答より、一つのよく考えられた返答のほうが優れています。
|
||||
|
||||
支配するのではなく、参加してください。
|
||||
|
||||
### 😊 人間らしくリアクションする!
|
||||
### 😊 人間らしくリアクションする!
|
||||
|
||||
リアクションに対応するプラットフォーム(Discord、Slack)では、絵文字リアクションを自然に使ってください。
|
||||
リアクションに対応したプラットフォーム(Discord、Slack)では、絵文字リアクションを自然に使ってください。
|
||||
|
||||
**リアクションするのはこんなとき:**
|
||||
**リアクションするのは次の場合:**
|
||||
|
||||
- 返信は不要だが感謝を示したい(👍、❤️、🙌)
|
||||
- 感謝しているが、返信までは不要(👍、❤️、🙌)
|
||||
- 何かが面白かった(😂、💀)
|
||||
- 興味深い、または考えさせられた(🤔、💡)
|
||||
- 流れを止めずに受け取ったことを示したい
|
||||
- 単純なyes/noや承認の場面(✅、👀)
|
||||
- 会話の流れを妨げずに受け止めたことを示したい
|
||||
- 単純な yes/no や承認の場面(✅、👀)
|
||||
|
||||
**なぜ重要か:**
|
||||
リアクションは軽量な社会的シグナルです。人間はこれを常に使っています — 「見たよ、受け取ったよ」を、チャットを散らかさずに伝えます。あなたもそうしてください。
|
||||
**これが重要な理由:**
|
||||
リアクションは軽量な社会的シグナルです。人間はこれを常に使っています — チャットを散らかさずに「見たよ、受け取ったよ」と伝えられます。あなたもそうしてください。
|
||||
|
||||
**やりすぎない:** 1メッセージにつきリアクションは最大1つ。最も合うものを選んでください。
|
||||
**やりすぎないこと:** 1メッセージにつきリアクションは最大1つ。最も合うものを選んでください。
|
||||
|
||||
## ツール
|
||||
|
||||
Skillsがあなたのツールを提供します。必要なときは、その`SKILL.md`を確認してください。ローカルメモ(カメラ名、SSH詳細、音声設定)は`TOOLS.md`に保存してください。
|
||||
Skills があなたのツールを提供します。必要になったら、その `SKILL.md` を確認してください。ローカルメモ(カメラ名、SSH 詳細、音声の好みなど)は `TOOLS.md` に保存してください。
|
||||
|
||||
**🎭 音声ストーリーテリング:** `sag`(ElevenLabs TTS)があるなら、物語、映画の要約、「お話タイム」には音声を使ってください。テキストの壁よりずっと魅力的です。面白い声で人を驚かせてください。
|
||||
**🎭 音声ストーリーテリング:** `sag`(ElevenLabs TTS)が使えるなら、物語、映画の要約、「読み聞かせ」的な場面では音声を使ってください。文字の壁よりずっと引き込まれます。面白い声で人を驚かせましょう。
|
||||
|
||||
**📝 プラットフォームの書式設定:**
|
||||
**📝 プラットフォームごとの書式:**
|
||||
|
||||
- **Discord/WhatsApp:** Markdownテーブルは禁止! 代わりに箇条書きを使ってください
|
||||
- **Discordのリンク:** 埋め込みを抑制するため、複数リンクは`<>`で囲んでください: `<https://example.com>`
|
||||
- **WhatsApp:** 見出しは使わない — 強調には**太字**または大文字を使ってください
|
||||
- **Discord/WhatsApp:** Markdown テーブルは禁止。代わりに箇条書きを使う
|
||||
- **Discord のリンク:** 埋め込みを抑制するには、複数リンクを `<>` で囲む: `<https://example.com>`
|
||||
- **WhatsApp:** 見出しは使わない — 強調には **太字** または大文字を使う
|
||||
|
||||
## 💓 Heartbeat - 自分から動く!
|
||||
## 💓 ハートビート - 積極的に動く!
|
||||
|
||||
heartbeat poll(メッセージが設定されたheartbeatプロンプトに一致する)を受け取ったら、毎回ただ`HEARTBEAT_OK`と返すだけにしないでください。heartbeatを生産的に使いましょう。
|
||||
ハートビートのポーリング(受信メッセージが設定済みのハートビートプロンプトに一致する場合)を受け取ったときは、毎回ただ `HEARTBEAT_OK` と返すだけにしないでください。ハートビートを生産的に使いましょう。
|
||||
|
||||
短いチェックリストやリマインダーとして`HEARTBEAT.md`を自由に編集して構いません。トークン消費を抑えるため、内容は小さく保ってください。
|
||||
短いチェックリストやリマインダーを `HEARTBEAT.md` に編集して構いません。トークン消費を抑えるため、小さく保ってください。
|
||||
|
||||
### Heartbeatとcron: 使い分け
|
||||
### ハートビートと cron: 使い分けるタイミング
|
||||
|
||||
**heartbeatを使うべきとき:**
|
||||
**ハートビートを使うのは次の場合:**
|
||||
|
||||
- 複数の確認をまとめて処理できる(受信箱 + カレンダー + 通知を1ターンで)
|
||||
- 直近メッセージからの会話文脈が必要
|
||||
- タイミングが多少ずれてもよい(約30分ごとで十分、厳密でなくてよい)
|
||||
- 定期確認をまとめてAPI呼び出しを減らしたい
|
||||
- 最近のメッセージから会話コンテキストが必要
|
||||
- タイミングが多少ずれても問題ない(約30分ごとで十分、厳密でなくてよい)
|
||||
- 定期確認をまとめて API 呼び出しを減らしたい
|
||||
|
||||
**cronを使うべきとき:**
|
||||
**cron を使うのは次の場合:**
|
||||
|
||||
- 正確な時刻が重要(「毎週月曜の9:00ちょうど」)
|
||||
- タスクをmain session履歴から切り離したい
|
||||
- 正確な時刻が重要(「毎週月曜の朝9:00ちょうど」)
|
||||
- タスクをメインセッション履歴から切り離したい
|
||||
- そのタスクに別のモデルや思考レベルを使いたい
|
||||
- 単発のリマインダー(「20分後に思い出させて」)
|
||||
- 出力をmain sessionを介さず直接チャンネルへ届けたい
|
||||
- 単発リマインダー(「20分後に知らせて」)
|
||||
- 出力をメインセッションを介さず直接チャネルへ届けたい
|
||||
|
||||
**ヒント:** 複数の定期確認ジョブを作る代わりに、似た定期確認は`HEARTBEAT.md`へまとめてください。正確なスケジュールや独立タスクにはcronを使ってください。
|
||||
**ヒント:** 複数の定期確認を作る代わりに、似た確認は `HEARTBEAT.md` にまとめてください。正確なスケジュールや独立タスクには cron を使ってください。
|
||||
|
||||
**確認すること(これらをローテーション、1日2〜4回):**
|
||||
**確認すること(これらをローテーションし、1日2〜4回):**
|
||||
|
||||
- **メール** - 緊急の未読メッセージはあるか
|
||||
- **カレンダー** - 今後24〜48時間の予定はあるか
|
||||
- **メンション** - Twitter/SNS通知はあるか
|
||||
- **天気** - 人間が外出しそうなら関係あるか
|
||||
- **メール** - 緊急の未読はあるか?
|
||||
- **カレンダー** - 今後24〜48時間の予定はあるか?
|
||||
- **メンション** - Twitter/ソーシャル通知はあるか?
|
||||
- **天気** - あなたの人間が外出しそうなら関係あるか?
|
||||
|
||||
**確認履歴を**`memory/heartbeat-state.json`**に記録してください:**
|
||||
**確認履歴は** `memory/heartbeat-state.json` **で追跡**します:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -183,41 +188,41 @@ heartbeat poll(メッセージが設定されたheartbeatプロンプトに一
|
||||
}
|
||||
```
|
||||
|
||||
**連絡すべきとき:**
|
||||
**声をかけるべきタイミング:**
|
||||
|
||||
- 重要なメールが届いた
|
||||
- カレンダー予定が近い(<2時間)
|
||||
- 面白いことを見つけた
|
||||
- 最後に何か言ってから8時間以上経った
|
||||
- カレンダーの予定が近い(2時間未満)
|
||||
- 面白いものを見つけた
|
||||
- 最後に何か言ってから 8 時間以上経った
|
||||
|
||||
**静かにしているべきとき(HEARTBEAT_OK):**
|
||||
**静かにしているべきタイミング(HEARTBEAT_OK):**
|
||||
|
||||
- 深夜(23:00-08:00)、緊急時を除く
|
||||
- 人間が明らかに忙しい
|
||||
- 前回の確認以降、新しいことがない
|
||||
- 前回確認から新しいことがない
|
||||
- 30分未満前に確認したばかり
|
||||
|
||||
**確認なしでできる能動的な作業:**
|
||||
**確認なしでできる積極的な作業:**
|
||||
|
||||
- memoryファイルを読む、整理する
|
||||
- プロジェクトの様子を見る(`git status`など)
|
||||
- メモリファイルを読む、整理する
|
||||
- プロジェクトの状態を確認する(`git status` など)
|
||||
- ドキュメントを更新する
|
||||
- 自分の変更をcommitしてpushする
|
||||
- **MEMORY.mdを見直して更新する**(下記参照)
|
||||
- 自分の変更をコミットして push する
|
||||
- **MEMORY.md を見直して更新する**(下記参照)
|
||||
|
||||
### 🔄 記憶のメンテナンス(heartbeat中)
|
||||
### 🔄 メモリのメンテナンス(ハートビート時)
|
||||
|
||||
定期的に(数日ごと)、heartbeatを使って次を行ってください。
|
||||
定期的に(数日ごとに)、ハートビートを使って次を行ってください。
|
||||
|
||||
1. 最近の`memory/YYYY-MM-DD.md`ファイルを読み返す
|
||||
2. 長期的に保持する価値のある重要な出来事、教訓、洞察を特定する
|
||||
3. 蒸留した学びで`MEMORY.md`を更新する
|
||||
4. もう関係のない古い情報を`MEMORY.md`から削除する
|
||||
1. 最近の `memory/YYYY-MM-DD.md` ファイルを読み返す
|
||||
2. 長期的に残す価値のある重要な出来事、学び、洞察を見つける
|
||||
3. 抽出した学びを `MEMORY.md` に反映する
|
||||
4. もう関係のない古い情報を `MEMORY.md` から削除する
|
||||
|
||||
これは、人間が日記を見返して自分のメンタルモデルを更新するのに似ています。日次ファイルは生メモ、`MEMORY.md`は厳選された知恵です。
|
||||
これは、人間が日記を読み返して自分のメンタルモデルを更新するようなものです。日次ファイルは生メモで、`MEMORY.md` は厳選された知恵です。
|
||||
|
||||
目標は、うるさくならずに役立つことです。1日に数回は様子を見て、有用な裏方作業をしつつ、静かな時間は尊重してください。
|
||||
目標は、うるさくならずに役に立つことです。1日に数回だけ様子を見て、有用な裏方作業をしつつ、静かな時間を尊重してください。
|
||||
|
||||
## 自分のものにする
|
||||
|
||||
これは出発点です。何がうまくいくかが分かってきたら、自分の慣習、スタイル、ルールを追加してください。
|
||||
これは出発点です。何がうまくいくかを見つけながら、自分なりの慣習、スタイル、ルールを追加してください。
|
||||
|
||||
@ -1,127 +1,102 @@
|
||||
---
|
||||
read_when:
|
||||
- トークン使用量、コスト、またはコンテキストウィンドウを説明する場合
|
||||
- コンテキストの増大やcompactionの動作をデバッグする場合
|
||||
summary: OpenClawがプロンプトコンテキストをどのように構築し、トークン使用量とコストをどのように報告するか
|
||||
- トークン使用量、コスト、またはコンテキストウィンドウの説明
|
||||
- コンテキストの増大や圧縮の挙動のデバッグ
|
||||
summary: OpenClaw がプロンプトコンテキストを構築する方法と、トークン使用量 + コストを報告する方法
|
||||
title: トークン使用量とコスト
|
||||
x-i18n:
|
||||
generated_at: "2026-04-07T04:46:35Z"
|
||||
generated_at: "2026-04-12T04:43:45Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 0683693d6c6fcde7d5fba236064ba97dd4b317ae6bea3069db969fcd178119d9
|
||||
source_hash: f8c856549cd28b8364a640e6fa9ec26aa736895c7a993e96cbe85838e7df2dfb
|
||||
source_path: reference/token-use.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# トークン使用量とコスト
|
||||
|
||||
OpenClawは**文字数**ではなく**トークン**を追跡します。トークンはモデル固有ですが、ほとんどの
|
||||
OpenAIスタイルのモデルでは、英語テキストで平均すると1トークンあたり約4文字です。
|
||||
OpenClaw は文字数ではなく、**トークン**を追跡します。トークンはモデルごとに異なりますが、ほとんどの OpenAI スタイルのモデルでは、英語テキストは平均して 1 トークンあたり約 4 文字です。
|
||||
|
||||
## system promptの構築方法
|
||||
## システムプロンプトの構築方法
|
||||
|
||||
OpenClawは、実行のたびに独自のsystem promptを組み立てます。これには次が含まれます:
|
||||
OpenClaw は実行のたびに独自のシステムプロンプトを組み立てます。これには次が含まれます。
|
||||
|
||||
- Tool一覧 + 短い説明
|
||||
- Skills一覧(メタデータのみ。指示は必要時に`read`で読み込まれます)
|
||||
- self-update instructions
|
||||
- Workspace + bootstrap files(`AGENTS.md`、`SOUL.md`、`TOOLS.md`、`IDENTITY.md`、`USER.md`、`HEARTBEAT.md`、新規の場合は`BOOTSTRAP.md`、さらに存在する場合は`MEMORY.md`、または小文字フォールバックとして`memory.md`)。大きなファイルは`agents.defaults.bootstrapMaxChars`(デフォルト: 20000)で切り詰められ、bootstrap注入全体は`agents.defaults.bootstrapTotalMaxChars`(デフォルト: 150000)で上限設定されます。`memory/*.md`ファイルはmemory tools経由のオンデマンドであり、自動注入されません。
|
||||
- ツール一覧 + 短い説明
|
||||
- Skills 一覧(メタデータのみ。指示は必要時に `read` で読み込まれます)
|
||||
- セルフアップデートの指示
|
||||
- ワークスペース + ブートストラップファイル(`AGENTS.md`、`SOUL.md`、`TOOLS.md`、`IDENTITY.md`、`USER.md`、`HEARTBEAT.md`、新規時の `BOOTSTRAP.md`、さらに存在する場合は `MEMORY.md`、または小文字の代替として `memory.md`)。大きなファイルは `agents.defaults.bootstrapMaxChars`(デフォルト: 20000)で切り詰められ、ブートストラップ全体の注入量は `agents.defaults.bootstrapTotalMaxChars`(デフォルト: 150000)で上限設定されます。`memory/*.md` の日次ファイルは通常のブートストラッププロンプトには含まれません。通常のターンではメモリツール経由で必要時に利用されますが、素の `/new` と `/reset` では、最初のターンに限って最近の日次メモリを含むワンショットの起動コンテキストブロックが前置されることがあります。この起動プレリュードは `agents.defaults.startupContext` で制御されます。
|
||||
- 時刻(UTC + ユーザーのタイムゾーン)
|
||||
- 返信タグ + heartbeat behavior
|
||||
- runtime metadata(host/OS/model/thinking)
|
||||
- 返信タグ + ハートビートの挙動
|
||||
- ランタイムメタデータ(ホスト/OS/モデル/思考)
|
||||
|
||||
完全な内訳は[System Prompt](/ja-JP/concepts/system-prompt)を参照してください。
|
||||
完全な内訳は [システムプロンプト](/ja-JP/concepts/system-prompt) を参照してください。
|
||||
|
||||
## context windowに含まれるもの
|
||||
## コンテキストウィンドウに含まれるもの
|
||||
|
||||
モデルが受け取るものは、すべてcontext limitに含まれます:
|
||||
モデルが受け取るものはすべて、コンテキスト上限に対してカウントされます。
|
||||
|
||||
- System prompt(上記のすべてのセクション)
|
||||
- 会話履歴(user + assistant messages)
|
||||
- Tool callsとtool results
|
||||
- 添付ファイル/transcripts(画像、音声、ファイル)
|
||||
- compaction summariesとpruning artifacts
|
||||
- provider wrappersまたはsafety headers(見えませんが、それでもカウントされます)
|
||||
- システムプロンプト(上記のすべてのセクション)
|
||||
- 会話履歴(ユーザー + アシスタントメッセージ)
|
||||
- ツール呼び出しとツール結果
|
||||
- 添付ファイル/文字起こし(画像、音声、ファイル)
|
||||
- 圧縮サマリーと枝刈りアーティファクト
|
||||
- プロバイダーのラッパーや安全性ヘッダー(表示されませんが、やはりカウントされます)
|
||||
|
||||
画像については、OpenClawはprovider呼び出し前にtranscript/tool画像payloadsを縮小します。
|
||||
これを調整するには`agents.defaults.imageMaxDimensionPx`(デフォルト: `1200`)を使用します:
|
||||
画像については、OpenClaw はプロバイダー呼び出し前に文字起こし/ツールの画像ペイロードを縮小します。これを調整するには `agents.defaults.imageMaxDimensionPx`(デフォルト: `1200`)を使用します。
|
||||
|
||||
- 値を低くすると、通常はvision-token使用量とpayloadサイズが減ります。
|
||||
- 値を高くすると、OCR/UIが多いスクリーンショットでより多くの視覚的詳細を保持できます。
|
||||
- 値を小さくすると、通常はビジョントークン使用量とペイロードサイズが減ります。
|
||||
- 値を大きくすると、OCR や UI を多く含むスクリーンショットでより多くの視覚的詳細が保持されます。
|
||||
|
||||
実用的な内訳(注入されたファイルごと、tools、Skills、およびsystem promptサイズごと)を確認するには、`/context list`または`/context detail`を使用してください。[Context](/ja-JP/concepts/context)を参照してください。
|
||||
実用的な内訳(注入された各ファイル、ツール、Skills、システムプロンプトサイズごと)を確認するには、`/context list` または `/context detail` を使ってください。[コンテキスト](/ja-JP/concepts/context) も参照してください。
|
||||
|
||||
## 現在のトークン使用量を見る方法
|
||||
## 現在のトークン使用量を確認する方法
|
||||
|
||||
チャットでは次を使用します:
|
||||
チャットでは次を使用します。
|
||||
|
||||
- `/status` → セッションモデル、context使用量、
|
||||
直近の応答の入力/出力トークン、および**推定コスト**(APIキーのみ)を含む**絵文字付きのステータスカード**。
|
||||
- `/usage off|tokens|full` → すべての返信に**応答ごとの使用量フッター**を追加します。
|
||||
- セッションごとに保持されます(`responseUsage`として保存)。
|
||||
- OAuth authでは**コストは非表示**になります(トークンのみ)。
|
||||
- `/usage cost` → OpenClawのセッションログからローカルのコスト概要を表示します。
|
||||
- `/status` → セッションモデル、コンテキスト使用量、前回応答の入力/出力トークン、**推定コスト**(API キー時のみ)を表示する **絵文字豊富なステータスカード**。
|
||||
- `/usage off|tokens|full` → すべての返信に **応答ごとの使用量フッター** を追加します。
|
||||
- セッション単位で永続化されます(`responseUsage` として保存)。
|
||||
- OAuth 認証では **コストは非表示** です(トークンのみ)。
|
||||
- `/usage cost` → OpenClaw のセッションログからローカルのコスト概要を表示します。
|
||||
|
||||
その他の表面:
|
||||
その他の画面:
|
||||
|
||||
- **TUI/Web TUI:** `/status`と`/usage`がサポートされています。
|
||||
- **CLI:** `openclaw status --usage`と`openclaw channels list`は
|
||||
正規化されたprovider quota windows(応答ごとのコストではなく`X% left`)を表示します。
|
||||
現在のusage-window対応provider: Anthropic、GitHub Copilot、Gemini CLI、
|
||||
OpenAI Codex、MiniMax、Xiaomi、z.ai。
|
||||
- **TUI/Web TUI:** `/status` と `/usage` がサポートされています。
|
||||
- **CLI:** `openclaw status --usage` と `openclaw channels list` は、正規化されたプロバイダーのクォータウィンドウ(応答ごとのコストではなく `X% left`)を表示します。
|
||||
現在の使用量ウィンドウ対応プロバイダー: Anthropic、GitHub Copilot、Gemini CLI、OpenAI Codex、MiniMax、Xiaomi、z.ai。
|
||||
|
||||
使用量の表示面では、表示前に共通のproviderネイティブfield aliasesを正規化します。
|
||||
OpenAI系Responsesトラフィックでは、`input_tokens` /
|
||||
`output_tokens`と`prompt_tokens` / `completion_tokens`の両方が含まれるため、transport固有の
|
||||
field namesによって`/status`、`/usage`、またはセッション概要の表示が変わることはありません。
|
||||
Gemini CLI JSON usageも正規化されます: reply textは`response`から取得され、
|
||||
CLIが明示的な`stats.input` fieldを省略した場合は、`stats.cached`が`cacheRead`に対応付けられ、`stats.input_tokens - stats.cached`
|
||||
が使用されます。
|
||||
ネイティブOpenAI系Responsesトラフィックでは、WebSocket/SSE usage aliasesも
|
||||
同じ方法で正規化され、`total_tokens`が存在しない、または`0`の場合は、合計値は正規化済みのinput + outputへフォールバックします。
|
||||
現在のセッションスナップショットが疎な場合、`/status`と`session_status`は
|
||||
最新のtranscript usage logからトークン/cache countersおよびアクティブなruntime model labelも復元できます。既存のゼロ以外のlive値は引き続きtranscript fallback値より優先され、保存済み合計が存在しないか小さい場合は、より大きいprompt指向の
|
||||
transcript totalsが優先されることがあります。
|
||||
provider quota windows用のusage authは、利用可能な場合はprovider固有のhooksから取得されます。そうでない場合、OpenClawはauth profiles、env、またはconfigから一致するOAuth/API-key credentialsへフォールバックします。
|
||||
使用量表示では、表示前に一般的なプロバイダーネイティブのフィールド別名を正規化します。OpenAI 系 Responses トラフィックでは、これに `input_tokens` / `output_tokens` と `prompt_tokens` / `completion_tokens` の両方が含まれるため、転送方式固有のフィールド名によって `/status`、`/usage`、またはセッション概要の表示が変わることはありません。
|
||||
Gemini CLI の JSON 使用量も正規化されます。返信テキストは `response` から取得され、CLI が明示的な `stats.input` フィールドを省略した場合は、`stats.cached` が `cacheRead` に対応付けられ、`stats.input_tokens - stats.cached` が使われます。
|
||||
ネイティブな OpenAI 系 Responses トラフィックでは、WebSocket/SSE の使用量別名も同様に正規化され、`total_tokens` が欠落しているか `0` の場合は、合計が正規化済みの input + output にフォールバックします。
|
||||
現在のセッションスナップショットが疎な場合、`/status` と `session_status` は最新の transcript 使用量ログからトークン/キャッシュカウンターやアクティブなランタイムモデルラベルを復元することもできます。既存のゼロ以外のライブ値は引き続き transcript フォールバック値より優先され、保存済み合計が存在しないか小さい場合は、より大きなプロンプト指向の transcript 合計が優先されることがあります。
|
||||
プロバイダーのクォータウィンドウ用の使用量認証は、利用可能な場合はプロバイダー固有のフックから取得されます。そうでない場合、OpenClaw は auth profile、env、または config から一致する OAuth/API キー資格情報にフォールバックします。
|
||||
|
||||
## コスト見積もり(表示される場合)
|
||||
|
||||
コストは、モデル価格設定configから見積もられます:
|
||||
コストは、モデルの価格設定 config から見積もられます。
|
||||
|
||||
```
|
||||
models.providers.<provider>.models[].cost
|
||||
```
|
||||
|
||||
これらは`input`、`output`、`cacheRead`、`cacheWrite`に対する**100万トークンあたりのUSD**です。
|
||||
価格設定がない場合、OpenClawはトークンのみを表示します。OAuth tokensでは
|
||||
ドルコストは表示されません。
|
||||
これらは `input`、`output`、`cacheRead`、`cacheWrite` に対する **100 万トークンあたりの USD** です。価格設定がない場合、OpenClaw はトークンのみを表示します。OAuth トークンではドル建てコストは表示されません。
|
||||
|
||||
## Cache TTLとpruningの影響
|
||||
## キャッシュ TTL と枝刈りの影響
|
||||
|
||||
provider prompt cachingは、cache TTL window内でのみ適用されます。OpenClawは
|
||||
必要に応じて**cache-ttl pruning**を実行できます: cache TTLが期限切れになるとセッションをpruneし、
|
||||
次のリクエストで履歴全体を再キャッシュするのではなく、新しくキャッシュされたコンテキストを再利用できるよう
|
||||
cache windowをリセットします。これにより、セッションがTTLを超えてアイドル状態になったときのcache
|
||||
writeコストを低く保てます。
|
||||
プロバイダーのプロンプトキャッシュは、キャッシュ TTL ウィンドウ内でのみ適用されます。OpenClaw はオプションで **cache-ttl pruning** を実行できます。これは、キャッシュ TTL の期限切れ後にセッションを枝刈りし、その後キャッシュウィンドウをリセットして、以降のリクエストで履歴全体を再キャッシュする代わりに新たにキャッシュされたコンテキストを再利用できるようにするものです。これにより、セッションが TTL を超えてアイドル状態になった場合のキャッシュ書き込みコストを低く保てます。
|
||||
|
||||
これは[Gateway configuration](/ja-JP/gateway/configuration)で設定し、
|
||||
動作の詳細は[Session pruning](/ja-JP/concepts/session-pruning)を参照してください。
|
||||
これは [Gateway configuration](/ja-JP/gateway/configuration) で設定でき、挙動の詳細は [Session pruning](/ja-JP/concepts/session-pruning) を参照してください。
|
||||
|
||||
Heartbeatは、アイドル間隔をまたいでcacheを**warm**に保つことができます。モデルのcache TTL
|
||||
が`1h`なら、heartbeat intervalをそれより少し短く設定する(例: `55m`)ことで、
|
||||
プロンプト全体の再キャッシュを避け、cache writeコストを減らせます。
|
||||
ハートビートは、アイドル期間をまたいでキャッシュを**ウォーム**な状態に保つことができます。モデルのキャッシュ TTL が `1h` の場合、ハートビート間隔をその少し手前(例: `55m`)に設定すると、完全なプロンプトの再キャッシュを避けられ、キャッシュ書き込みコストを減らせます。
|
||||
|
||||
マルチエージェント構成では、1つの共有モデルconfigを維持したまま、
|
||||
`agents.list[].params.cacheRetention`でエージェントごとにcache動作を調整できます。
|
||||
マルチエージェント構成では、1 つの共有モデル config を維持しつつ、`agents.list[].params.cacheRetention` でエージェントごとにキャッシュ挙動を調整できます。
|
||||
|
||||
各設定項目を順に確認する完全ガイドについては、[Prompt Caching](/ja-JP/reference/prompt-caching)を参照してください。
|
||||
各設定項目の完全なガイドについては、[Prompt Caching](/ja-JP/reference/prompt-caching) を参照してください。
|
||||
|
||||
Anthropic APIの価格設定では、cache readはinput
|
||||
tokensより大幅に安価である一方、cache writeはより高い倍率で課金されます。最新の料金とTTL倍率については、Anthropicの
|
||||
prompt caching価格設定を参照してください:
|
||||
Anthropic API の価格設定では、キャッシュ読み取りは入力トークンよりかなり安価である一方、キャッシュ書き込みはより高い倍率で課金されます。最新の料金と TTL 倍率については、Anthropic の prompt caching pricing を参照してください:
|
||||
[https://docs.anthropic.com/docs/build-with-claude/prompt-caching](https://docs.anthropic.com/docs/build-with-claude/prompt-caching)
|
||||
|
||||
### 例: heartbeatで1時間のcacheをwarmに保つ
|
||||
### 例: heartbeat で 1h キャッシュをウォームに保つ
|
||||
|
||||
```yaml
|
||||
agents:
|
||||
@ -136,7 +111,7 @@ agents:
|
||||
every: "55m"
|
||||
```
|
||||
|
||||
### 例: エージェントごとのcache戦略を持つ混在トラフィック
|
||||
### 例: エージェントごとのキャッシュ戦略を使った混在トラフィック
|
||||
|
||||
```yaml
|
||||
agents:
|
||||
@ -146,25 +121,22 @@ agents:
|
||||
models:
|
||||
"anthropic/claude-opus-4-6":
|
||||
params:
|
||||
cacheRetention: "long" # most agents向けのデフォルトベースライン
|
||||
cacheRetention: "long" # ほとんどのエージェント向けのデフォルトのベースライン
|
||||
list:
|
||||
- id: "research"
|
||||
default: true
|
||||
heartbeat:
|
||||
every: "55m" # 深いセッション向けにlong cacheをwarmに保つ
|
||||
every: "55m" # 長時間セッション向けに長いキャッシュをウォームに保つ
|
||||
- id: "alerts"
|
||||
params:
|
||||
cacheRetention: "none" # bursty notifications向けにcache writesを避ける
|
||||
cacheRetention: "none" # バースト的な通知ではキャッシュ書き込みを避ける
|
||||
```
|
||||
|
||||
`agents.list[].params`は選択されたモデルの`params`の上にマージされるため、
|
||||
`cacheRetention`だけを上書きし、その他のモデルデフォルトはそのまま継承できます。
|
||||
`agents.list[].params` は、選択されたモデルの `params` の上にマージされるため、`cacheRetention` だけを上書きし、他のモデルデフォルトはそのまま継承できます。
|
||||
|
||||
### 例: Anthropic 1M context beta headerを有効にする
|
||||
### 例: Anthropic 1M context beta ヘッダーを有効化する
|
||||
|
||||
Anthropicの1M context windowは現在beta-gatedです。OpenClawは、サポートされるOpus
|
||||
またはSonnetモデルで`context1m`を有効にすると、必要な
|
||||
`anthropic-beta`値を注入できます。
|
||||
Anthropic の 1M コンテキストウィンドウは現在ベータ制限付きです。OpenClaw は、対応する Opus または Sonnet モデルで `context1m` を有効にすると、必要な `anthropic-beta` 値を注入できます。
|
||||
|
||||
```yaml
|
||||
agents:
|
||||
@ -175,23 +147,20 @@ agents:
|
||||
context1m: true
|
||||
```
|
||||
|
||||
これはAnthropicの`context-1m-2025-08-07` beta headerに対応します。
|
||||
これは Anthropic の `context-1m-2025-08-07` beta ヘッダーに対応します。
|
||||
|
||||
これは、そのモデルエントリで`context1m: true`が設定されている場合にのみ適用されます。
|
||||
これは、そのモデルエントリで `context1m: true` が設定されている場合にのみ適用されます。
|
||||
|
||||
要件: credentialがlong-context usageの対象である必要があります。対象でない場合、
|
||||
Anthropicはそのリクエストに対してprovider-side rate limit errorを返します。
|
||||
要件: 資格情報が long-context 利用対象である必要があります。そうでない場合、Anthropic はそのリクエストに対してプロバイダー側のレート制限エラーを返します。
|
||||
|
||||
AnthropicをOAuth/subscription tokens(`sk-ant-oat-*`)で認証している場合、
|
||||
Anthropicは現在その組み合わせをHTTP 401で拒否するため、OpenClawは`context-1m-*`
|
||||
beta headerをスキップします。
|
||||
Anthropic を OAuth/サブスクリプショントークン(`sk-ant-oat-*`)で認証している場合、OpenClaw は `context-1m-*` beta ヘッダーをスキップします。これは Anthropic が現在その組み合わせを HTTP 401 で拒否するためです。
|
||||
|
||||
## トークン圧力を減らすためのヒント
|
||||
## トークン圧迫を減らすためのヒント
|
||||
|
||||
- 長いセッションの要約には`/compact`を使用してください。
|
||||
- ワークフロー内の大きなtool outputsを切り詰めてください。
|
||||
- スクリーンショットが多いセッションでは`agents.defaults.imageMaxDimensionPx`を下げてください。
|
||||
- skill descriptionsは短く保ってください(skill listはプロンプトに注入されます)。
|
||||
- 冗長で探索的な作業には、より小さなモデルを選んでください。
|
||||
- `/compact` を使って長いセッションを要約する。
|
||||
- ワークフロー内で大きなツール出力を削減する。
|
||||
- スクリーンショットが多いセッションでは `agents.defaults.imageMaxDimensionPx` を下げる。
|
||||
- Skill の説明は短く保つ(Skill 一覧はプロンプトに注入されるため)。
|
||||
- 冗長で探索的な作業には小さいモデルを優先する。
|
||||
|
||||
skill listの正確なオーバーヘッド計算式については、[Skills](/ja-JP/tools/skills)を参照してください。
|
||||
正確な Skill 一覧のオーバーヘッド計算式は [Skills](/ja-JP/tools/skills) を参照してください。
|
||||
|
||||
Loading…
Reference in New Issue
Block a user