Skip to content

アーキテクチャ概要

Project N.E.K.O. は、3つの主要サーバーがWebSocket、HTTP、ZeroMQメッセージングを通じて連携するマルチプロセスマイクロサービスシステムとして構築されています。

システム図

アーキテクチャ

3サーバー構成

サーバーポートエントリーポイント役割
メインサーバー48911main_server.pyWeb UI、REST API、WebSocketチャット、TTS
メモリサーバー48912memory_server.pyセマンティック検索、時間インデックス付き履歴、メモリ圧縮
エージェントサーバー48915agent_server.pyバックグラウンドタスク実行(MCP、Computer Use、Browser Use)

メインサーバーはユーザー向けのエントリーポイントです。Web UIの提供、すべてのREST APIリクエストの処理、リアルタイム音声/テキストチャットのためのWebSocket接続の維持を行います。メモリサーバーとエージェントサーバーは、メインサーバーが通信する内部サービスです。

通信パターン

┌──────────────────────────────────────────┐
│              Main Server (:48911)         │
│                                          │
│  FastAPI ─── REST Routers                │
│  WebSocket ─── LLMSessionManager         │
│  ZeroMQ PUB ───┐                         │
│  ZeroMQ PULL ──┼── AgentEventBridge      │
│  HTTP Client ──┤                         │
└────────────────┼─────────────────────────┘

        ┌────────┼────────┐
        │        │        │
        ▼        ▼        ▼
   Memory     Agent    Monitor
   Server     Server   Server
   (:48912)   (:48915) (:48913)
  • Main ↔ Memory: メモリの保存/クエリ用HTTPリクエスト
  • Main ↔ Agent: タスク委任と結果ストリーミング用ZeroMQ pub/sub
  • Main ↔ Monitor: リアルタイムステータス更新用WebSocket

主要なアーキテクチャパターン

ホットスワップセッション

LLMSessionManager は、現在のセッションがまだアクティブな間に、バックグラウンドで新しいLLMセッションを準備します。ユーザーが会話ターンを終了すると、ダウンタイムゼロで事前にウォームアップされたセッションにシームレスに切り替わります。移行中の音声はキャッシュされ、その後フラッシュされます。

キャラクターごとの分離

各キャラクター(lanlan_name で識別)は、それぞれ独自の以下を持ちます:

  • LLMSessionManager インスタンス
  • 同期コネクタースレッド
  • WebSocketロック
  • メッセージキュー
  • シャットダウンイベント

非同期/同期の境界

FastAPIハンドラーは非同期です。TTS合成はキューベースの通信を使用する専用スレッドで実行されます。音声処理はエグゼキュータースレッドプールを使用します。ZeroMQイベントブリッジはバックグラウンド受信スレッドを実行します。

次へ

MIT ライセンスの下で公開。