ESP32向けの超小型AIパーソナルアシスタント
zclawはC言語で記述され、ESP32ボード上で動作します。デフォルトビルドでは888 KiB以下という厳しいファームウェアサイズ制約を目標に開発されています。スケジュールタスク、GPIO制御、永続メモリ、自然言語によるカスタムツール構成をサポートしています。
888 KiBの制限はアプリケーション��ードだけでなく、ファームウェア全体のサイズです。
zclawのロジックに加え、ESP-IDF/FreeRTOSランタイム、Wi-Fi/ネットワーク、TLS/暗号化、証明書バンドルのオーバーヘッドを含みます。
使うのも楽しい、ハックするのも楽しい。
完全なガイドとリファレンスはドキュメントサイトを参照してください。
- 完全なドキュメント
- ユースケース: 実用的 + 楽しい
- 変更履歴 (web)
- 完全なREADME (原文)
- 再実装アーキテクチャ設計書(Git差分ベース)
- 信頼性設計書(Discord + LLM、日本語)
ワンラインブートストラップ (macOS/Linux):
bash <(curl -fsSL https://raw.githubusercontent.com/tnm/zclaw/main/scripts/bootstrap.sh)既にクローン済みの場合:
./install.sh非対話型インストール:
./install.sh -yセットアップ注意事項
bootstrap.shはリポジトリをクローン/更新してから./install.shを実行します。ブートストラップフローを事前に検査/検証できます(ZCLAW_BOOTSTRAP_SHA256整合性チェックを含む)。詳細はスタートガイドを参照してください。- フラッシュ内の認証情報を暗号化するには、セキュアモードを使用します(インストールフローで
--flash-mode secure、または直接./scripts/flash-secure.sh)。 - フラッシュ書き込み後、
./scripts/provision.shでWiFi + LLM認証情報をプロビジョニングします。 - 実行時認証情報(WiFi SSID/パスワード、LLMバックエンド/モデル/APIキー(またはOllama API URL)、Discordボットトークン/チャンネルID)を更新するには、いつでも
./scripts/provision.shまたは./scripts/provision-dev.shを再実行できます(再書き込み不要)。 - デフォルトのLLMレート制限は
100/時間と1000/日です。main/config.h(RATELIMIT_*)でコンパイル時制限を変更できます。 - クイック検証パス:
./scripts/web-relay.shを実行し、テストメッセージを送信してデバイスが応答できることを確認します。 - シリアルポートがビジーの場合は、
./scripts/release-port.shを実行してから再試行してください。 - シークレットを再入力せずにローカルで再プロビジョニングを繰り返すには、ローカルプロファイルファイル付きで
./scripts/provision-dev.shを使用します(provision-dev.shはprovision.sh --yesをラップしています)。
- Discordまたはホスト型Webリレー経由でチャット
- タイムゾーン対応スケジュール(
daily、periodic、ワンショットonce) - 組み込み + ユーザー定義ツール
- ガードレール付きGPIO読み書き制御(一括
gpio_read_allを含む) - 再起動間で永続化されるメモリ
- ペルソナオプション:
neutral、friendly、technical、witty - Anthropic、OpenAI、OpenRouter、Ollama(カスタムエンドポイント)のプロバイダーサポート
動作確認済みターゲット: ESP32-C3、ESP32-S3、ESP32-C6。 他のESP32 variantsも基本的に動作します(一部はESP-IDFターゲットの手動設定が必要な場合あり)。 テスト報告をぜひお寄せください!
推奨スターターボード: Seeed XIAO ESP32-C3
典型的な高速開発ループ:
./scripts/test.sh host
./scripts/build.sh
./scripts/flash.sh --kill-monitor /dev/cu.usbmodem1101
./scripts/provision-dev.sh --port /dev/cu.usbmodem1101
./scripts/monitor.sh /dev/cu.usbmodem1101プロファイルを一度セットアップしてから再利用:
./scripts/provision-dev.sh --write-template
# ~/.config/zclaw/dev.env を編集
./scripts/provision-dev.sh --show-config
./scripts/provision-dev.sh詳細はローカル開発 & ハッキングガイドを参照してください。
スクリプトを表示
./scripts/flash-secure.sh- 暗号化付きでフラッシュ書き込み./scripts/provision.sh- NVSに認証情報をプロビジョニング./scripts/provision-dev.sh- 繰り返しプロビジョニング用ローカルプロファイルラッパー./scripts/erase.sh- NVSのみ(--nvs)またはフルフラッシュ(--all)をガードレール付きで消去./scripts/monitor.sh- シリアルモニター./scripts/emulate.sh- QEMUプロファイルを実行./scripts/web-relay.sh- ホスト型リレー + モバイルチャットUI./scripts/benchmark.sh- リレー/シリアルレイテンシのベンチマーク./scripts/test.sh- ホスト/デバイステストフローを実行./scripts/test-api.sh- ライブプロバイダーAPIチェックを実行(手動/ローカル)
現在のデフォルトesp32s3の内訳(idf.py -B build size-componentsからのグループ化可能なイメージバイト数;行の合計は総イメージサイズ):
| セグメント | バイト数 | サイズ | シェア |
|---|---|---|---|
zclawアプリロジック (libmain.a) |
35742 |
~34.9 KiB | ~4.1% |
| Wi-Fi + ネットワークスタック | 397356 |
~388.0 KiB | ~45.7% |
| TLS/暗号化スタック | 112922 |
~110.3 KiB | ~13.0% |
| 証明書バンドル + アプリメタデータ | 99722 |
~97.4 KiB | ~11.5% |
| その他ESP-IDF/ランタイム/ドライバ/libc | 224096 |
~218.8 KiB | ~25.8% |
このビルドの総イメージサイズは869838バイト;パディングされたzclaw.binは869952バイト(~849.6 KiB)で、依然として制限未満です。
リレーパスベンチマーク(Webリレー処理 + デバイス往復を含む):
./scripts/benchmark.sh --mode relay --count 20 --message "ping"ダイレクトシリアルベンチマーク(ホスト往復 + 最初の応答時間)。ファームウェアがMETRIC request ...行をログ出力する場合、レポートにはデバイス側のタイミングも含まれます:
./scripts/benchmark.sh --mode serial --serial-port /dev/cu.usbmodem1101 --count 20 --message "ping"MIT
