Skip to content
forked from tnm/zclaw

Your personal AI assistant at all-in 888KiB (~25KB in app code). Running on an ESP32. GPIO, cron, custom tools, memory, and more.

License

Notifications You must be signed in to change notification settings

Tomatio13/zclaw

 
 

Repository files navigation

zclaw

Lobster soldering a Seeed Studio XIAO ESP32-C3

ESP32向けの超小型AIパーソナルアシスタント

zclawはC言語で記述され、ESP32ボード上で動作します。デフォルトビルドでは888 KiB以下という厳しいファームウェアサイズ制約を目標に開発されています。スケジュールタスク、GPIO制御、永続メモリ、自然言語によるカスタムツール構成をサポートしています。

888 KiBの制限はアプリケーション��ードだけでなく、ファームウェア全体のサイズです。 zclawのロジックに加え、ESP-IDF/FreeRTOSランタイム、Wi-Fi/ネットワーク、TLS/暗号化、証明書バンドルのオーバーヘッドを含みます。

使うのも楽しい、ハックするのも楽しい。

完全なドキュメント

完全なガイドとリファレンスはドキュメントサイトを参照してください。

クイックスタート

ワンラインブートストラップ (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.hRATELIMIT_*)でコンパイル時制限を変更できます。
  • クイック検証パス: ./scripts/web-relay.shを実行し、テストメッセージを送信してデバイスが応答できることを確認します。
  • シリアルポートがビジーの場合は、./scripts/release-port.shを実行してから再試行してください。
  • シークレットを再入力せずにローカルで再プロビジョニングを繰り返すには、ローカルプロファイルファイル付きで./scripts/provision-dev.shを使用します(provision-dev.shprovision.sh --yesをラップしています)。

ハイライト

  • Discordまたはホスト型Webリレー経由でチャット
  • タイムゾーン対応スケジュール(dailyperiodic、ワンショットonce
  • 組み込み + ユーザー定義ツール
  • ガードレール付きGPIO読み書き制御(一括gpio_read_allを含む)
  • 再起動間で永続化されるメモリ
  • ペルソナオプション: neutralfriendlytechnicalwitty
  • Anthropic、OpenAI、OpenRouter、Ollama(カスタムエンドポイント)のプロバイダーサポート

ハードウェア

動作確認済みターゲット: ESP32-C3ESP32-S3ESP32-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.bin869952バイト(~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

About

Your personal AI assistant at all-in 888KiB (~25KB in app code). Running on an ESP32. GPIO, cron, custom tools, memory, and more.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C 43.7%
  • Shell 22.8%
  • Python 20.9%
  • HTML 9.0%
  • CSS 1.8%
  • JavaScript 1.6%
  • CMake 0.2%