>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
TypeScript

コンソールAIエージェントを『アオフィス』風のピクセルオフィスに変身させる方法

最近、Claude Codeのような自律型コンソールユーティリティを実行したことがあり、何十もの開いたターミナルタブを管理するのが非常に不便だと感じたことがある人なら、見過ごせないリポジトリを見つけました。このプロジェクトはMunder Difflinと呼ばれています。

Munder Difflin Logo

作者たちはターミナルエージェントのオーケストレーションに予想外のユーモアでアプローチしました。コンソールプロセスをElectronとPixi.jsで構築されたデスクトップアプリケーションに巻き込み、各実行中のエージェントはピクセルオフィスの中を歩き回り、仮想封筒を持ち、ローカルファイルシステムを通じて同僚とコミュニケーションを取ります。すべてを見守るのはマイケルという名前のあなたのクローンで、別のオフィスに座っています。

ジョークトイのように聞こえますが、内部にはClaude Code、Antigravity、OpenAI Codex、Kimi、Qwen、Ollama経由のローカルモデルを並行して実行するための真剣なスキャフォールドがあります。

Munder Difflin Overview

そもそもこれ何

Munder Difflinは各モデルにカスタムAPIクライアントを発明する代わりに、既にターミナルで実行している готовые CLIツールをそのまま使用します。アプリケーションは各エージェントに対してxterm.js経由で реальный 疑似ターミナルを起動し、xterm.jsを使用してインターフェースにレンダリングします。

結果として、エージェントはネイティブ環境で動作します。ローカルファイルへのアクセス、テストの実行、コミット、ビルド出力の読み取りをすべて、iTermやAlacrittyタブで手動で起動した場合と全く同じに行えます。

主な違いは、プロセスが共有ネットワークに統合されていることです。メインオーケストレーターエージェント(GODエージェント)に高度なタスクを与えると、サブタスクを специализированные エージェントに分散させ、ステータスを監視し、危険な操作の前にのみ許可を求めます。

エージェントの相互作用の仕組み

アーキテクチャ全体はローカルファイルとGitプロトコルに基づいており、外部のクラウドデータベースはありません。

メールボックスと共有メモリ

エージェントがコンテキストや作業結果を渡す必要がある場合、複雑なリモートRPCを呼び出しません。システムではディスク上に直接メールボックスアーキテクチャを使用します:

  1. エージェントはローカルディレクトリにメッセージや成果物を書き込みます。
  2. 内部ルーターがファイルを受信者のフォルダに移動します。
  3. 受信者はファイルシステムイベント経由で起動され、メッセージを読み取り、タスクを受け取ります。
  4. 長期メモリはプレーンテキストMarkdownに保存され、ローカルセマンティック検索でインデックス化され、セッション間の迅速なコンテキスト取得を実現します。

並行プロセスがリポジトリのをブロックするのを防ぐため、コミット履歴への書き込みは単一のコミットプロセッサを経由します。

無限ループと予算超過からの保護

自律型CLIエージェントの主な問題の1つは、ループのリスクです。スクリプトが同じテストを繰り返し修正したり、何百ものリクエストをAPIに送信し始めたりします。

Munder Difflinには組み込みのサーキットブレーカーメカニズムがあります:

  • 各エージェントにはハードトークン制限と、ログからのリクエストのリアルタイムコスト監視があります。
  • システムはカスケードエラーと失敗したコマンドの再試行回数を追跡します。
  • 予算を超過하거나異常な動作を示した場合、エージェントは最初に警告とコンテキスト制限を受け、失敗が続く場合は強制的に停止されます。
  • 破壊的なアクション、スコープの変更、お金の使用には、承認パネルを通じて確認が必要です。

内部構成:技術スタック

アーキテクチャ的には、アプリケーションはElectronで合流する2つの分離されたプレーンに分かれています:

メインのNode.jsプロセスはターミナルライフサイクル、ファイルルーティング、セッション履歴永続化のためのSQLiteデータベースを管理します。ReactとPixi.js上のレンダラーは、型付きIPCブリッジ経由でデータを受信します。

ビジュアルオフィス此之外、デスクトップクライアントには組み込みのMonacoエディタ、依存関係付きのタスクかんばんボード、Git差分ビューア、Slackウェブフック統合が含まれています。タスクをワークチャットに送信でき、Michaelはバックグラウンドに一時的なエージェントを作成し、問題を解決してスレッドに回答を返します。

展開して試す方法

実行するには、Node.js 18+、ネイティブモジュールを構築するためのC/C++コンパイラ(macOSではXcode Command Line Toolsで十分)、および少なくとも1つのインストール済みコンソールエージェントが必要です。

リポジトリをクローンして開発モードでプロジェクトを実行します:

初回起動時にセットアップウィザードが開きます。そこではバイナリのパスを指定したり、ローカルLM Studio / Ollama / vLLMサーバーのアドレスを設定したりできます。

必要なバイナリがシステムにない場合、アプリケーションは組み込みターミナルウィンドウ内で自動インストールを実行できます。

このプロジェクト誰が得するか

Munder Difflinを軽量な日常ユーティリティと呼ぶのは難しいです—ElectronとPixi.jsによるスプライトレンダリングはリソースを消費します。しかし、マルチエージェントシナリオで頻繁に実験したり、複数のモデルを活用した複雑なリファクタリングを書いたり、tmuxで並行Claude Codeの起動を手動で制御するのに疲れているなら、ここには学ぶべきことが多くあります。

Markdownファイル経由でプロセスを管理するコンセプト、git worktreesによるブランチ分離、起きていることの人間に優しいビジュアルコントロールにより、このプロジェクトはローカルAIエージェントに関する最も独創的なオープンソースハックの1つです。リポジトリには積極的にコミットされており、コードはクリーンなTypeScriptで書かれているため、内部フックやPTYハンドラを掘り下げる価値は十分にあります。

関連プロジェクト