開発者の生産性を向上させるAIツールが急速に普及しています。その中でローカル環境で動作するAIコーディングアシスタントは、コード生成、バグ修正、プロジェクト管理などを効率化する強力なツールとなりそうです。本記事では、Anthropicが提供するClaude Codeに触発されて開発された3つの要注目のオープンソースプロジェクト「OLI」「Kwaak」「Goose」を比較分析します。
はじめに
プログラミングの世界では、AIアシスタントが開発者の強力な味方となっています。GitHub Copilotなどの商用ツールが人気を集める一方で、2025年2月にAnthropicからリリースされたClaude Codeは、ターミナル内で動作し自然言語でコーディング支援を行うエージェント型ツールとして大きな注目を集めています。この流れを受け、オープンソースコミュニティでも同様のコンセプトを持つAIコーディングアシスタントの開発が活発化しています。今回は3つのRustベースのオープンソースプロジェクトを紹介します。
OLI - Open Local Intelligent assistant
OLIは「Open Local Intelligent assistant」の略で、シンプルで高速なターミナルベースのAIコーディングアシスタントです。READMEにも明記されているように「Claude Codeのオープンソース代替」として開発され、Rustで構築されています。
主な特徴
- 柔軟なTUIインターフェース: コードと効率的に連携するためのターミナルユーザーインターフェースを提供
- 多様なLLMサポート: ローカルLLM(vLLMやllama_cpp経由)とクラウドAPI(Anthropic ClaudeやOpenAI GPT4oなど)をサポート
- エージェント機能: ファイル検索、編集、コマンド実行などの完全なエージェント機能を提供
- 軽量設計: シンプルかつ効率的な実装により高速な動作を実現
技術スタック
OLIはRustで構築されており、以下の主要なライブラリやツールを使用しています:
- ratatui: TUIインターフェース構築用
- llama_cpp: ローカルLLMとの連携(Metal高速化対応)
- openai: OpenAI APIとの連携
- crossterm: ターミナル操作用
- tokio: 非同期処理用
セールスポイント
- シンプルで高速な動作
- ローカルLLMとクラウドAPIの両方に対応
- macOS、Linux、Windowsのマルチプラットフォーム対応
- GPUアクセラレーション(Metal)のサポート
- Apache 2.0ライセンスで完全オープンソース
Kwaak - 並列AIエージェント
Kwaakは「Burn through tech debt with AI agents!」をモットーに、複数のAIエージェントを並列に実行できるターミナルベースのツールです。
主な特徴
- 並列エージェント実行: 複数のエージェントを同時に実行し、異なるタスクを並行して処理
- チャット形式のインターフェース: 直感的なコミュニケーションが可能なターミナルインターフェース
- 安全な実行環境: Dockerを利用した安全なコード実行サンドボックス
- 多様なLLMサポート: OpenAI、Ollama、Anthropic、Azure、OpenRouterなど多くのLLMに対応
- 多言語対応: Python、TypeScript/Javascript、Go、Java、Ruby、Solidity、C、C++、Rustなど
技術スタック
Kwaakは以下のテクノロジーを活用しています:
- swiftide: 基盤となるAIエージェントフレームワーク
- ratatui: TUIインターフェース構築用
- duckdb: データベース処理用
- redb: インデックスキャッシング用
- Docker: 安全なコード実行環境
- 様々なLLMプロバイダーAPI: OpenAI、Anthropic、Azureなど
セールスポイント
- 複数のAIエージェントを並列実行する独自機能
- プロジェクトのコードベースを理解し、質問への回答や例の検索が可能
- コードの変更管理やプルリクエスト作成の自動化
- Dockerによる安全なコード実行環境
- MITライセンスのオープンソース
Goose - 拡張可能なローカルAIエージェント
Gooseは「a local, extensible, open source AI agent that automates engineering tasks」をコンセプトに、エンジニアリングタスクを自動化するAIエージェントです。
主な特徴
- ローカル実行: マシン上で動作する自律型AIエージェント
- タスク自動化: 複雑な開発タスクを最初から最後まで自動化
- 拡張可能な設計: あらゆるLLMと連携可能な柔軟なアーキテクチャ
- MCP対応: Model Context Protocol対応APIとのシームレスな統合
- 多機能: コード生成だけでなく、プロジェクト構築、デバッグ、ワークフロー管理など
技術スタック
Gooseの技術スタックには以下が含まれます:
- MCP-client/MCP-core: Model Context Protocolの実装
- Rust ecosystem: 高性能かつ安全なコード実行
- Tokio: 非同期処理
- 様々なクラウドプロバイダAPI: AWS Bedrock、GCP Vertex AIなど
- 多様な認証システム: OAuth、JWTなど
セールスポイント
- コード提案を超えた完全な自律型エージェント
- あらゆるLLMとの連携可能性
- 拡張可能なアーキテクチャ
- ワークフローの自動化と外部APIとの連携
- Apache 2.0ライセンスのオープンソース
3つのプロジェクトの比較
これら3つのプロジェクトはそれぞれ異なるアプローチと強みを持っています。ここでは主要な観点から比較を行います。
公式説明から見る設計方針
プロジェクト | 設計方針 | 主な用途 |
---|---|---|
OLI | シンプルさと高速性を重視 | コード生成、編集、問い合わせの支援 |
Kwaak | 並列処理と自律性を重視 | 技術負債の解消、複数タスクの並列処理 |
Goose | 拡張性と多機能性を重視 | 複雑な開発タスクの自動化 |
技術比較
機能 | OLI | Kwaak | Goose |
---|---|---|---|
ローカルLLM対応 | ◯ | ◯ | ◯ |
クラウドLLM対応 | ◯ | ◯ | ◯ |
MCP対応 | × | × | ◯ |
コード変更管理 | △ | ◯ | ◯ |
基盤技術
-
OLI: 直接的なAPIインテグレーション(OpenAI API、llama_cpp)を採用し、Rustベースの軽量なアーキテクチャを特徴としています。
-
Kwaak: SwiftideというRustライブラリをベースに構築されています。Swiftideは「高速なデータの取り込み、変換、インデックス作成を可能にするフレームワーク」であり、RAG(検索拡張生成)機能を提供しています。
-
Goose: Model Context Protocol (MCP)に基づいて設計されています。
技術的な特徴
-
OLI: シンプルで軽量な設計を採用し、高速な動作を重視。基本的なエージェント機能を提供しながらも、使いやすさを最優先している。OpenAI APIとllama_cppインターフェースに直接対応しているが、MCP連携はサポートしていない。
-
Kwaak: 複数エージェントの並列実行と自律的なコード理解に焦点。Swiftideフレームワークを基盤としており、Swiftideはデータのインデックス作成、クエリ、エージェント機能を備えたRustライブラリ。MCPには現時点で対応していない。
-
Goose: Model Context Protocol (MCP)を中心に設計されている。リポジトリ内に
mcp-core
とmcp-client
という専用モジュールが存在し、MCPを活用した拡張性の高いアーキテクチャを採用している。
MCPについては下記もご覧ください
想定ユースケース
各プロジェクトが想定しているユースケースは以下の通りです:
- OLI: 公式リポジトリで「シンプルかつ高速なコーディングアシスタント」として紹介されており、特にローカルLLMと組み合わせた使用が例示されています。
- Kwaak: 「複数のAIエージェントを並列に実行し、技術的負債を解消する」ツールとして位置づけられています。
- Goose: 「複雑な開発タスクを自動化」し、「任意のLLMとMCP対応APIとのシームレスな統合」を実現するツールです。
まとめ
本記事では、Claude Codeの登場に触発されて開発された3つのRustベースのAIコーディングアシスタントを比較しました:
- OLI: シンプルさと高速性を重視したClaude Codeのオープンソース代替
- Kwaak: Swiftideフレームワークを基盤とした並列AIエージェントの実行環境
- Goose: MCPを中心に設計された拡張性の高いAIエージェント
これらのツールはいずれもRustで構築されており、高いパフォーマンスと安全性を提供しています。それぞれに特徴があり、必要に応じて選んでみてください