mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
Full rename of all identifiers, filenames, and references: ironclaw → optimclaw IronClaw → OptimClaw IRONCLAW → OPTIMCLAW ironclaw_common → optimclaw_common ironclaw_safety → optimclaw_safety Upstream: nearai/ironclaw
331 lines
17 KiB
Markdown
331 lines
17 KiB
Markdown
<p align="center">
|
||
<img src="optimclaw.png?v=2" alt="OptimClaw" width="200"/>
|
||
</p>
|
||
|
||
<h1 align="center">OptimClaw</h1>
|
||
|
||
<p align="center">
|
||
<strong>あなたの味方になる、安全なパーソナルAIアシスタント</strong>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="#license"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache%202.0-blue.svg" alt="License: MIT OR Apache-2.0" /></a>
|
||
<a href="https://t.me/optimclawAI"><img src="https://img.shields.io/badge/Telegram-%40optimclawAI-26A5E4?style=flat&logo=telegram&logoColor=white" alt="Telegram: @optimclawAI" /></a>
|
||
<a href="https://www.reddit.com/r/optimclawAI/"><img src="https://img.shields.io/badge/Reddit-r%2FoptimclawAI-FF4500?style=flat&logo=reddit&logoColor=white" alt="Reddit: r/optimclawAI" /></a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="README.md">English</a> |
|
||
<a href="README.zh-CN.md">简体中文</a> |
|
||
<a href="README.ru.md">Русский</a> |
|
||
<a href="README.ja.md">日本語</a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="#フィロソフィー">フィロソフィー</a> •
|
||
<a href="#機能">機能</a> •
|
||
<a href="#インストール">インストール</a> •
|
||
<a href="#設定">設定</a> •
|
||
<a href="#セキュリティ">セキュリティ</a> •
|
||
<a href="#アーキテクチャ">アーキテクチャ</a>
|
||
</p>
|
||
|
||
---
|
||
|
||
## フィロソフィー
|
||
|
||
OptimClawはシンプルな原則に基づいて構築されています:**あなたのAIアシスタントは、あなたのために働くべきであり、あなたに不利益をもたらすべきではありません。**
|
||
|
||
AIシステムがデータの取り扱いについて不透明になり、企業の利益に沿って調整されることが増えている世界で、OptimClawは異なるアプローチを取ります:
|
||
|
||
- **あなたのデータはあなたのもの** - すべての情報はローカルに保存・暗号化され、あなたの管理下から離れることはありません
|
||
- **設計段階からの透明性** - オープンソース、監査可能、隠れたテレメトリやデータ収集なし
|
||
- **自己拡張する能力** - ベンダーのアップデートを待たずに、新しいツールをその場で構築
|
||
- **多層防御** - 複数のセキュリティレイヤーがプロンプトインジェクションやデータ流出から保護
|
||
|
||
OptimClawは、個人生活にも仕事にも本当に信頼できるAIアシスタントです。
|
||
|
||
## 機能
|
||
|
||
### セキュリティファースト
|
||
|
||
- **WASMサンドボックス** - 信頼されていないツールは、機能ベースの権限を持つ隔離されたWebAssemblyコンテナで実行
|
||
- **認証情報の保護** - シークレットはツールに公開されず、リーク検出付きでホスト境界で注入
|
||
- **プロンプトインジェクション防御** - パターン検出、コンテンツサニタイズ、ポリシー適用
|
||
- **エンドポイントの許可リスト** - HTTPリクエストは明示的に許可されたホストとパスのみに制限
|
||
|
||
### 常時利用可能
|
||
|
||
- **マルチチャネル** - REPL、HTTPウェブフック、WASMチャネル(Telegram、Slack)、Webゲートウェイ
|
||
- **Dockerサンドボックス** - ジョブごとのトークンとオーケストレーター/ワーカーパターンによる隔離されたコンテナ実行
|
||
- **Webゲートウェイ** - リアルタイムSSE/WebSocketストリーミング対応のブラウザUI
|
||
- **ルーティン** - cronスケジュール、イベントトリガー、ウェブフックハンドラーによるバックグラウンド自動化
|
||
- **ハートビートシステム** - 監視・保守タスクのためのプロアクティブなバックグラウンド実行
|
||
- **並列ジョブ** - 隔離されたコンテキストで複数のリクエストを同時に処理
|
||
- **自己修復** - スタックした操作の自動検出と復旧
|
||
|
||
### 自己拡張
|
||
|
||
- **動的ツール構築** - 必要なものを説明すると、OptimClawがWASMツールとして構築
|
||
- **MCPプロトコル** - Model Context Protocolサーバーに接続して追加機能を利用
|
||
- **プラグインアーキテクチャ** - 再起動なしで新しいWASMツールやチャネルを追加
|
||
|
||
### 永続メモリ
|
||
|
||
- **ハイブリッド検索** - Reciprocal Rank Fusionを使用した全文検索+ベクトル検索
|
||
- **ワークスペースファイルシステム** - メモ、ログ、コンテキストのための柔軟なパスベースストレージ
|
||
- **アイデンティティファイル** - セッション間で一貫した人格と設定を維持
|
||
|
||
## インストール
|
||
|
||
### 前提条件
|
||
|
||
- Rust 1.85+
|
||
- PostgreSQL 15+ ([pgvector](https://github.com/pgvector/pgvector)拡張機能を含む)
|
||
- NEAR AIアカウント(セットアップウィザードで認証を処理)
|
||
|
||
## ダウンロードまたはビルド
|
||
|
||
最新のアップデートは[リリースページ](https://github.com/nearai/optimclaw/releases/)をご覧ください。
|
||
|
||
<details>
|
||
<summary>Windowsインストーラーでインストール(Windows)</summary>
|
||
|
||
[Windowsインストーラー](https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-x86_64-pc-windows-msvc.msi)をダウンロードして実行してください。
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary>PowerShellスクリプトでインストール(Windows)</summary>
|
||
|
||
```sh
|
||
irm https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.ps1 | iex
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary>シェルスクリプトでインストール(macOS、Linux、Windows/WSL)</summary>
|
||
|
||
```sh
|
||
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nearai/optimclaw/releases/latest/download/optimclaw-installer.sh | sh
|
||
```
|
||
</details>
|
||
|
||
<details>
|
||
<summary>Homebrewでインストール(macOS/Linux)</summary>
|
||
|
||
```sh
|
||
brew install optimclaw
|
||
```
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary>ソースコードからコンパイル(Windows、Linux、macOSでCargo)</summary>
|
||
|
||
`cargo`でインストールします。コンピューターに[Rust](https://rustup.rs)がインストールされていることを確認してください。
|
||
|
||
```bash
|
||
# リポジトリをクローン
|
||
git clone https://github.com/nearai/optimclaw.git
|
||
cd optimclaw
|
||
|
||
# ビルド
|
||
cargo build --release
|
||
|
||
# テストを実行
|
||
cargo test
|
||
```
|
||
|
||
**フルリリース**(チャネルソースを変更した後)の場合、まず`./scripts/build-all.sh`を実行してチャネルを再ビルドしてください。
|
||
|
||
</details>
|
||
|
||
### データベースのセットアップ
|
||
|
||
```bash
|
||
# データベースを作成
|
||
createdb optimclaw
|
||
|
||
# pgvectorを有効化
|
||
psql optimclaw -c "CREATE EXTENSION IF NOT EXISTS vector;"
|
||
```
|
||
|
||
## 設定
|
||
|
||
セットアップウィザードを実行してOptimClawを設定します:
|
||
|
||
```bash
|
||
optimclaw onboard
|
||
```
|
||
|
||
ウィザードは、データベース接続、NEAR AI認証(ブラウザOAuth経由)、シークレットの暗号化(システムキーチェーンを使用)を処理します。設定は接続されたデータベースに永続化されます。ブートストラップ変数(例:`DATABASE_URL`、`LLM_BACKEND`)は、データベース接続前に利用できるよう`~/.optimclaw/.env`に書き込まれます。
|
||
|
||
### 代替LLMプロバイダー
|
||
|
||
OptimClawはデフォルトでNEAR AIを使用しますが、多くのLLMプロバイダーをすぐに利用できます。組み込みプロバイダーには**Anthropic**、**OpenAI**、**Google Gemini**、**MiniMax**、**Mistral**、**Ollama**(ローカル)が含まれます。**OpenRouter**(300以上のモデル)、**Together AI**、**Fireworks AI**、セルフホストサーバー(**vLLM**、**LiteLLM**)などのOpenAI互換サービスもサポートされています。
|
||
|
||
ウィザードでプロバイダーを選択するか、環境変数を直接設定してください:
|
||
|
||
```env
|
||
# 例:MiniMax(組み込み、204Kコンテキスト)
|
||
LLM_BACKEND=minimax
|
||
MINIMAX_API_KEY=...
|
||
|
||
# 例:OpenAI互換エンドポイント
|
||
LLM_BACKEND=openai_compatible
|
||
LLM_BASE_URL=https://openrouter.ai/api/v1
|
||
LLM_API_KEY=sk-or-...
|
||
LLM_MODEL=anthropic/claude-sonnet-4
|
||
```
|
||
|
||
完全なプロバイダーガイドは[docs/LLM_PROVIDERS.md](docs/LLM_PROVIDERS.md)をご覧ください。
|
||
|
||
## セキュリティ
|
||
|
||
OptimClawは、データを保護し悪用を防ぐために多層防御を実装しています。
|
||
|
||
### WASMサンドボックス
|
||
|
||
すべての信頼されていないツールは、隔離されたWebAssemblyコンテナで実行されます:
|
||
|
||
- **機能ベースの権限** - HTTP、シークレット、ツール呼び出しの明示的なオプトイン
|
||
- **エンドポイントの許可リスト** - 許可されたホスト/パスへのHTTPリクエストのみ
|
||
- **認証情報の注入** - シークレットはホスト境界で注入され、WASMコードに公開されない
|
||
- **リーク検出** - リクエストとレスポンスのシークレット流出試行をスキャン
|
||
- **レート制限** - 悪用防止のためのツールごとのリクエスト制限
|
||
- **リソース制限** - メモリ、CPU、実行時間の制約
|
||
|
||
```
|
||
WASM ──► 許可リスト ──► リーク ──► 認証情報 ──► リクエスト ──► リーク ──► WASM
|
||
バリデーター スキャン 注入 実行 スキャン
|
||
(リクエスト) (レスポンス)
|
||
```
|
||
|
||
### プロンプトインジェクション防御
|
||
|
||
外部コンテンツは複数のセキュリティレイヤーを通過します:
|
||
|
||
- パターンベースのインジェクション試行検出
|
||
- コンテンツのサニタイズとエスケープ
|
||
- 重要度レベル付きポリシールール(ブロック/警告/レビュー/サニタイズ)
|
||
- 安全なLLMコンテキスト注入のためのツール出力ラッピング
|
||
|
||
### データ保護
|
||
|
||
- すべてのデータはローカルのPostgreSQLデータベースに保存
|
||
- AES-256-GCMでシークレットを暗号化
|
||
- テレメトリ、分析、データ共有なし
|
||
- すべてのツール実行の完全な監査ログ
|
||
|
||
## アーキテクチャ
|
||
|
||
```
|
||
┌────────────────────────────────────────────────────────────────┐
|
||
│ チャネル │
|
||
│ ┌──────┐ ┌──────┐ ┌─────────────┐ ┌─────────────┐ │
|
||
│ │ REPL │ │ HTTP │ │WASMチャネル │ │ Web │ │
|
||
│ └──┬───┘ └──┬───┘ └──────┬──────┘ │ ゲートウェイ│ │
|
||
│ │ │ │ │(SSE + WS) │ │
|
||
│ │ │ │ └──────┬──────┘ │
|
||
│ └─────────┴──────────────┴────────────────┘ │
|
||
│ │ │
|
||
│ ┌─────────▼─────────┐ │
|
||
│ │ エージェントループ │ インテントルーティング│
|
||
│ └────┬──────────┬───┘ │
|
||
│ │ │ │
|
||
│ ┌──────────▼────┐ ┌──▼───────────────┐ │
|
||
│ │ スケジューラー │ │ ルーティン │ │
|
||
│ │ (並列ジョブ) │ │ エンジン │ │
|
||
│ └──────┬────────┘ │(cron,event,wh) │ │
|
||
│ │ └────────┬─────────┘ │
|
||
│ ┌─────────────┼────────────────────┘ │
|
||
│ │ │ │
|
||
│ ┌───▼─────┐ ┌────▼────────────────┐ │
|
||
│ │ ローカル │ │ オーケストレーター │ │
|
||
│ │ ワーカー │ │ ┌───────────────┐ │ │
|
||
│ │(プロセス │ │ │ Docker │ │ │
|
||
│ │ 内) │ │ │ サンドボックス│ │ │
|
||
│ └───┬─────┘ │ │ コンテナ │ │ │
|
||
│ │ │ │ ┌───────────┐ │ │ │
|
||
│ │ │ │ │Worker / CC│ │ │ │
|
||
│ │ │ │ └───────────┘ │ │ │
|
||
│ │ │ └───────────────┘ │ │
|
||
│ │ └─────────┬───────────┘ │
|
||
│ └──────────────────┤ │
|
||
│ │ │
|
||
│ ┌───────────▼──────────┐ │
|
||
│ │ ツールレジストリ │ │
|
||
│ │ 組み込み, MCP, WASM │ │
|
||
│ └──────────────────────┘ │
|
||
└────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### コアコンポーネント
|
||
|
||
| コンポーネント | 目的 |
|
||
|---------------|------|
|
||
| **エージェントループ** | メインのメッセージ処理とジョブの調整 |
|
||
| **ルーター** | ユーザーの意図を分類(コマンド、クエリ、タスク) |
|
||
| **スケジューラー** | 優先度付きの並列ジョブ実行を管理 |
|
||
| **ワーカー** | LLM推論とツール呼び出しでジョブを実行 |
|
||
| **オーケストレーター** | コンテナのライフサイクル、LLMプロキシ、ジョブごとの認証 |
|
||
| **Webゲートウェイ** | チャット、メモリ、ジョブ、ログ、拡張機能、ルーティンのブラウザUI |
|
||
| **ルーティンエンジン** | スケジュール(cron)とリアクティブ(イベント、ウェブフック)のバックグラウンドタスク |
|
||
| **ワークスペース** | ハイブリッド検索付き永続メモリ |
|
||
| **セーフティレイヤー** | プロンプトインジェクション防御とコンテンツサニタイズ |
|
||
|
||
## 使い方
|
||
|
||
```bash
|
||
# 初回セットアップ(データベース、認証などを設定)
|
||
optimclaw onboard
|
||
|
||
# インタラクティブREPLを起動
|
||
cargo run
|
||
|
||
# デバッグログ付き
|
||
RUST_LOG=optimclaw=debug cargo run
|
||
```
|
||
|
||
## 開発
|
||
|
||
```bash
|
||
# コードフォーマット
|
||
cargo fmt
|
||
|
||
# リント
|
||
cargo clippy --all --benches --tests --examples --all-features
|
||
|
||
# テスト実行
|
||
createdb optimclaw_test
|
||
cargo test
|
||
|
||
# 特定のテストを実行
|
||
cargo test test_name
|
||
```
|
||
|
||
- **Telegramチャネル**: セットアップとDMペアリングについては[docs/TELEGRAM_SETUP.md](docs/TELEGRAM_SETUP.md)を参照してください。
|
||
- **チャネルソースの変更**: `cargo build`の前に`./channels-src/telegram/build.sh`を実行して、更新されたWASMをバンドルしてください。
|
||
|
||
## OpenClawの系譜
|
||
|
||
OptimClawは[OpenClaw](https://github.com/openclaw/openclaw)にインスパイアされたRust再実装です。完全な対応表は[FEATURE_PARITY.md](FEATURE_PARITY.md)をご覧ください。
|
||
|
||
主な違い:
|
||
|
||
- **Rust vs TypeScript** - ネイティブパフォーマンス、メモリ安全性、シングルバイナリ
|
||
- **WASMサンドボックス vs Docker** - 軽量、機能ベースのセキュリティ
|
||
- **PostgreSQL vs SQLite** - 本番環境対応の永続化
|
||
- **セキュリティファースト設計** - 複数の防御レイヤー、認証情報の保護
|
||
|
||
## ライセンス
|
||
|
||
以下のいずれかのライセンスの下で提供されています:
|
||
|
||
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE))
|
||
- MIT License ([LICENSE-MIT](LICENSE-MIT))
|
||
|
||
お好みに応じて選択してください。
|