Juggler: オープンソースのGUIコーディングエージェント
Juggler: オープンソースのGUIコーディングエージェント
Jugglerは、LLMがコードベースとどのように対話するかをより直接的に制御したい開発者のために設計された、オープンソースのAIコーディングエージェントです。線形なチャット履歴に依存する従来のAIコーディングツールとは異なり、Jugglerはセッションを編集可能なツリーとして扱うビジュアル・ワークベンチを導入しており、開発者がブランチを作成したり、バックトラックしたり、ツール呼び出しをリアルタイムで検査したりすることを可能にします。
ビジュアル・ワークベンチとブランチ・セッション
Jugglerは、標準的なAIチャットインターフェースの「doom-scroll(絶え間ないスクロール)」を、ツリーベースのセッション構造に置き換えます。これにより、ユーザーはサブスレッドを作成し、特定のタスクを掘り下げ、元のコンテキストを失うことなく異なる実装パスを比較することができます。
ナビゲーションを容易にするため、UIはMiller columns(macOSのFinderの列表示に似たもの)を利用しています。ここでは、ルートセッションが左側にあり、選択されたアイテムが右側にプロパティや子要素として展開されます。この設計により、ツール呼び出し、承認、および生のコンテキストが、折りたたみ可能なチャットバブルの中に埋もれることなく、常に可視であり、アクセス可能になります。
プラグインベースのアーキテクチャ
Jugglerは、オーケストレーションのためのプラットフォームとして構築されており、ほぼすべてのコンポーネントがJavaScriptの拡張機能です。この拡張性は、開発者がエージェントの動作やUIをカスタマイズすることを可能にします。
- Context Items: すべてのアイテムタイプ(例:
read-file,replace-text,bash)は、LLMとの対話およびUIにおける視覚的表現の両方を定義します。 - Strategies:
planやresearchといった高レベルなLLMループは、プラグインとして実装されています。 - Commands: スラッシュコマンド(例:
/clear,/compact)は、セッション・ドキュメントを操作するプラグインです。
マルチクライアント・アーキテクチャとデプロイメント
Jugglerは、柔軟なデプロイメントを可能にするクライアント・サーバー・モデルを採用しています。バックエンドはGoで記述されており、アプリケーションのフットプリントを小さく保つ(約40 MB)ために、Electronを避け、Wailsを使用しています。セッション・ドキュメントは、CRDT(Conflict-free Replicated Data Type)フレームワークであるYjsを使用して同期されており、これにより安定性と共同作業機能が確保されています。
ユーザーは、いくつかの構成でJugglerを実行できます:
- Native Desktop App: macOS, Windows, Linux用のバンドルされたアプリケーション。
- Headless Server: コードが格納されているリモートの開発環境やサーバーファーム上で実行できるコマンドライン・サーバー。ブラウザやデスクトップアプリがクライアントとして機能します。
- Multi-Client Access: 複数のクライアント(ブラウザのタブや異なるマシン)が、同時に同じサーバー・セッションに接続できます。
モデル・サポートと統合
Jugglerは、Claude Code (via CLI or API), OpenAI, Gemini, Ollama, OpenRouter, Z.AI, および DeepSeek を含む、幅広いLLMプロバイダーに接続可能です。
コミュニティの洞察と技術的議論
Hacker Newsからのコミュニティのフィードバックは、UXとアーキテクチャに関するエージェントのアプローチについて、いくつかの重要なポイントを強調しています:
"I've watched amazing communities spring up around open agents like Opencode and Pi. People are getting into those because of their extensibility and being model-independant. They're great projects, but like many people I know, I really hate being stuck in the terminal for this AI tool."
技術的な議論は、以下の点に集中しました:
- UX Paradigm: ユーザーは「ネイティブにブランチ化された」会話の価値に注目し、それを線形なチャット・インターフェースからの必要な進化であると述べています。
- C++ vs. JS: 一部のユーザーは、UIにJavaScriptを使用することの選択について、パフォーマンスのためにネイティブのC++やSwiftUIを提案しましたが、他のユーザーは、Electron over Electron ではなく Wails の使用を称賛しました。
- Stability: セッション管理にCRDT (Yjs) を使用することは、安定性の秘訣であり、harness(フレームワーク)とUIを分離していると指摘されました。
- Current Limitations: 一部のユーザーは、DeepSeekの
reasoning_contentに関する問題を報告し、コードフェンス(code fences)のサポートを better support を求めています。
ライセンス
Jugglerのアプリケーション・コードは GNU Affero General Public License v3.0 (AGPLv3) の下でライセンスされていますが、拡張機能SDKとバンドルされた拡張機能は Apache-2.0 の下でライセンスされており、これにより、コピーレフト義務なしにクローズドソースの拡張機能を作成することが可能です。