Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help


id: ADR-001 title: Rust は ZeroClaw の実装言語である date: 2026-07-04 status: accepted relates-to:

  • docs/book/src/foundations/fnd-001-intentional-architecture.md
  • docs/book/src/architecture/crates.md
  • Cargo.toml

ADR-001: Rust は ZeroClaw の実装言語

これは、正式なADRプロセスが導入される前に行われた決定を遡って記録したものです。この記録には元の決定が行われた正確な日付は含まれていません。上記の日付は、このADRがアーキテクチャドキュメントに追加された日付です。

本レコードは FND-002 §6.3 および現在のリポジトリ構造をもとに作成されました。古い ADR ファイルから復元されたものではありません。

コンテキスト

ZeroClaw は、ユーザーによって必須の言語ランタイムがインストールされていない状態で主要な配布物を実行する必要がある、ローカルファースト型のエージェントランタイムです。多くのオペレーティングシステムやネットワークの境界と統合され、セキュリティ、メモリ、プロセス、ロギング、および設定の動作に対する強力な制御を維持します。

このプロジェクトには、他の言語で実装された隣接するエージェントシステムの実験も含まれています。それらのプロジェクトは探索には役立ちますが、ランタイムでは ZeroClaw として出荷されるコード、すなわちプロバイダー、チャネル、ツール、メモリ、設定、ゲートウェイ、ハードウェアサポート、ユーザー向け CLI に対して、単一の実装言語が必要です。

Rustは、ランタイムを形作る要件に適合します:

  • 予測可能な単一バイナリ配布
  • IO およびセキュリティ境界における明示的な所有権とエラー処理。
  • 大規模なランタイム依存なしの非同期ネットワーキングとプロセス監視。
  • チャンネル、ハードウェア、ゲートウェイ、およびオプション機能向けのフィーチャーゲート付きビルド。
  • クレート、テスト、ドキュメント生成、リリースワークフローのための単一の Cargo ワークスペース。

決定

ZeroClawのランタイム、ファーストパーティのクレート、CLI、ゲートウェイ、ツールホスト、プロバイダー統合、チャネル統合、メモリバックエンド、設定スキーマ、およびハードウェアサポートは、Rustワークスペースのメンバーとして実装されています。

適切な境界である場合、エッジに Rust 以外のコードが存在してもよい: シェルスクリプト、リリースおよびパッケージング用ヘルパー、生成された Web アセット、外部 CLI、MCP サーバー、スキルスクリプト、およびプラグインゲスト。これらのサーフェスは ZeroClaw をサポート、パッケージ、駆動、または拡張してもよいが、新たに承認された ADR が本 ADR を置き換えない限り、コアランタイムの実装基盤にはならない。

結果

肯定的な結果:

  • 貢献者は、複数の言語ランタイムではなく、1つの型付きワークスペースを通じて実行時の振る舞いについて推論できます。
  • プライマリワークスペースのビルド、リント、テスト、ドキュメント生成、リリース、およびフィーチャーゲーティングはすべて Cargo 経由で行われます。
  • セキュリティに敏感なコードは、Rustの所有権モデルと明示的なエラー伝播の恩恵を受けます。
  • ファーストパーティのインテグレーションは、crate 境界、トレイト契約、およびロギング/設定の規約を共有します。

否定的な結果:

  • TypeScript、Python、Go、または shell しか知らないコントリビューターは、コアの動作を変更する前に Rust の学習曲線を越えなければなりません。
  • Web、UI、および外部サービスとの統合では、アプリケーションの状態をランタイムと自由に共有するのではなく、明示的な境界設計が必要です。
  • 生成されたドキュメント、ローカライゼーションカタログ、およびリリース成果物は、可視の出力が Markdown、Fluent、HTML、またはパッケージングメタデータであっても、しばしば Rust ツールに依存します。
  • 隣接プロジェクトでの実験は、ZeroClaw のランタイムの振る舞いになる前に、意図的に Rust へ移植されなければなりません。

フォローアップの決定:

  • ADR-002 は、Rust の拡張ポイントがワークスペース内でどのように公開されるかを記録しています。
  • ADR-003 はプラグインとコンポーネントの境界を記録しています。

参照