Communityコーディング&開発github.com

openclaw-performance

OpenClawにおけるパフォーマンス作業:低速または高負荷なフロー(レイテンシ、CPU、メモリ、SQL、RPC、レンダリング)の計測、パフォーマンスPRの作成やレビュー、キャッシュの追加。作業を数え、まず無駄を削除し、キャッシュは最後の手段とする。

openclaw-performance とは?

OpenClawパフォーマンススキルは、レイテンシ、CPU、メモリ、SQL、RPC、レンダリングなどのパフォーマンス問題を体系的に特定・解決するためのガイドラインを提供します。このスキルは、無駄な作業の削除を最優先し、キャッシュは最後の手段とすることで、本質的な高速化を実現します。具体的な手順として、まず計測可能な許容基準をPRに事前に定義し、その後、リクエストにとって不要な処理(無駄)を特定・削除します。そして、削除→所有者への委譲→準備済みデータの引き継ぎ→バッチ化→キャッシュの順で修正を行います。各ステップで作業量を数値で追跡し、証拠をPRに残すことで、再現性のあるパフォーマンス改善を保証します。プラットフォームとしては主にCLI、Gateway、Control UI、SQLiteなどを対象とし、ベンチマークスクリプト一式が用意されています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/openclaw-performance

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

OpenClaw パフォーマンス

無駄とは、リクエストが本来必要としない処理のことです。大きな高速化は、同じ処理をより速く行うことからではなく、無駄を削除することから生まれます。キャッシュは最後の手段です。キャッシュは、そのキー、無効化、またはヒット率が破綻するまで無駄を隠蔽し、その後無駄が再発します。

1. 計測

最初の実行 前 に、PR内に合格基準を記述します。フロー、ワークロード、メトリクス、コールドかウォームか、サンプル数、そして勝利または後退とみなす変化を明記します。

フローコミットされたワークロード
CLI 起動pnpm test:startup:bench(:check が予算を保持)
Gateway 起動 / 再起動scripts/bench-gateway-startup.ts、scripts/bench-gateway-restart.ts、scripts/perf/post-restart-burst-measure.ts
Chat ターン、ターンあたりのフレーム数scripts/bench-channel-turn.mts、scripts/perf/transcript-broadcast-measure.ts
Control UI コールドロードscripts/bench-control-ui-cold-load.ts、pnpm ui:check-performance(:base が比較)
セッション一覧、マルチエージェント形状scripts/perf/team-shape-fixture.ts、src/gateway/session-list-viewers.perf.test.ts
並行性、SQLite 状態scripts/bench-gateway-concurrency.ts、pnpm test:sqlite:perf
  • まずカウントする: ウォールタイムの前に、アクションあたりの操作数(SQL文、RPCとフレーム数、ファイル読み取り、カタログまたはレジストリのロード数、スプローン数、レンダリング数)。カウントは負荷の高いホストでも安定します。ゼロであるべきカウントがある場合、それはバグです。
  • 実際のフロー: テスト対象のヘッド上の独立したGateway、実際のトランスポート、低速パスも含めて。モックのGateway、古いビルド、または開発サーバーは別のものを計測します。
  • サンプル: ベースラインと候補をインターリーブ(ABAB)、各最低5サンプル、コールドとウォームは分離。中央値と95パーセンタイルをばらつきとともに、直列に実行し、ホスト負荷を記録。
  • 再実行可能: コミットされたスクリプトのみがカウントされます。適切なスクリプトがない場合は、既存のものを拡張します。
  • プロファイル: ホットパス上で、スレッドごとに node --cpu-prof、またはブラウザのパフォーマンストレース。

コミットされたワークロード、ベースラインテーブル、および記述されたルールが揃った時点で完了です。

2. 無駄を見つける

カウントされたすべての操作について問いかけます:このリクエストはそれを必要としていますか? OpenClaw でよく見られる無駄:

  • クリティカルパス上の先取り処理: プラグインローダーをインポートしたレジストリルックアップ(#133518、47.07秒 → 10.36秒)。起動時にオプションのランタイムをロード(#119374)。
  • 行ごとまたは呼び出しごとの再計算: アーカイブ行ごとの同期読み取り(#156665、56,700 読み取り → 0)。フレームごとに解決されるログパターン(#150042、10,000 フレームあたり 539 → 17 ms)。
  • 承認済み状態の再チェック: ウォームハンドルでのスキーマ、承認、またはフレッシュネスチェック(#166102、#172676。SQLite 承認チェーン内の 14 PR)。
  • ストリームされたデルタごとの完全再スキャン: すべてのトークンで応答全体を再処理(#158526、256 KiB で 5,342 → 1 ms CPU)。
  • 自身の書き込みの再読み取り: ルックアップあたり 2 回のデータベースバックアップ(#161551、772.8 → 7.7 ms)。Doctor はチェックしたばかりのものを再スキャンしてバックアップした(#174665、約26 → 3.0 秒)。
  • 繰り返されるカタログまたはレジストリのビルド: 起動時のエージェントごとのカタログ再ビルド(#116261、24.9 → 5.0 秒)。ミスまたは TTL ごとの再ビルド(#127178、#167008)。
  • オプショナルデータの待機: Usage ページはプロバイダープランを待機し、無関係な読み取りをリトライした(#176358)。
  • 防御的コピーとラッピング: ターンごとの structuredClone(#172940、1.685 MiB → 0)。値ごとの境界ラッピング(#163818、11,571 → 500 ns/イベント)。
  • 呼び出しごとのスプローンまたはファンアウト: 解決ごとの子プロセス(#155779、100 → 0)。
  • レンダリングカスケードと完全ペイロード: 更新ごとのレンダリング(#159400、250 → 79)。1つのデルタのために完全な行を再送信(#165404、21.75 → 0.95 MB)。

支配的な各カウントが、それを発行するコードにトレース可能であり、「必要」かどうかの yes/no がついた時点で完了です。

3. この順序で修正する

  1. 削除 無駄を。削除はめったに元に戻りません。失敗した削除はガードを取り除いたことを意味するため、契約を保護するすべてのチェックを維持し、契約がまだ有効であることを証明してください。
  2. 所有者に一度:呼び出し元は、所有者が記録した事実を消費します。
  3. 準備済みの事実をホットパスに引き継ぐ。
  4. 独立した作業をバッチ化し、バッチがフレーム、レイテンシテール、コールドスタートを安定に保つことを証明します。結合処理は3回元に戻されました(#162560、#173901、#175092)。
  5. キャッシュ、手順1〜4が適用できない理由を記述して。ルート「キャッシュの同一性」に従い、所有者の書き込みから無効化し、サイズを制限し、インターリーブされた作業カウントテストを追加します。4つのキャッシュ再修正のうち3つはサイレントミスでした。読者が互いに追い出し合う(#115369 → #174741)、スラッシングする予算(#149773 → #149879)。

ワーカーの移動や遅延はコストを移動させます。メインスレッドと総作業の両方をカウントしてください。

カウントから無駄がなくなった時点、またはPRがどのステップで停止したかとその理由を述べている時点で完了です。

4. ランディング

  • ステップ1のワークロードをベースラインと候補で同じルールのもとで再実行します。
  • すべてのユーザー向けメトリクスが維持または改善すること:レイテンシ、p95/p99、フレーム数、コールドスタート、CPU、メモリ、カウント。悪化したメトリクスについては、PR内で所有者の明示的な承認が必要です。1つのセルで20%の変動は停止であり、「ばらつきの範囲内」ではありません。元に戻された6つのパフォーマンスPRのうち5つは、そのボディ内で後退を示していました。
  • 測定可能な利益のない変更は元に戻します。
  • 証拠はPR内にあり、新しいテストではありません。before/afterのカウントが証拠です。この無駄が以前に再発したことがある場合にのみ、フローの既存の作業カウントテストを拡張します。test-audit がテストの価値を管理します。
  • PRの証拠:ワークロードコマンド、合格基準、before/afterテーブル(カウントと時間、中央値とp95、サンプル数)、削除された無駄、そして悪い方向に動いたメトリクスがあればそれも。

テーブルがステップ1で記述されたルールを満たした時点で完了です。

関連

テストスイートの速度: openclaw-test-performance。テストのヒープ増加: openclaw-test-heap-leaks。CI容量: openclaw-ci-limits。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

関連スキル