>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
TypeScript

Jak zamienić konsolowe agenty AI w pikselowe biuro z The Office

Niedawno natknąłem się na repozytorium, obok którego trudno przejść, jeśli kiedykolwiek uruchamiałeś autonomiczne narzędzia konsolowe takie jak Claude Code i złapałeś się na tym, że zarządzanie dziesiątkami otwartych kart terminala jest niezwykle niewygodne. Projekt nazywa się Munder Difflin.

Munder Difflin Logo

Autorzy podeszli do orkiestracji agentów terminalowych z nieoczekiwanym humorem. Opakowali procesy konsolowe w aplikację desktopową zbudowaną z Electron i Pixi.js, gdzie każdy działający agent spaceruje po pikselowym biurze, nosi wirtualne koperty i komunikuje się ze współpracownikami przez lokalny system plików. Nad wszystkim czuwa twoja kopia o imieniu Michael, siedząca w osobnym biurze.

Brzmi jak żart, ale pod maską kryje się poważny szkielet do uruchamiania Claude Code, Antigravity, OpenAI Codex, Kimi, Qwen i modeli lokalnych równolegle przez Ollama.

Munder Difflin Overview

Co to w ogóle jest

Zamiast wymyślać niestandardowego klienta API dla każdego modelu, Munder Difflin wykorzystuje gotowe narzędzia CLI, które już uruchamiasz w terminalu. Aplikacja uruchamia prawdziwy pseudo-terminal dla każdego agenta przez node-pty i renderuje go w interfejsie za pomocą xterm.js.

W rezultacie agent pracuje w swoim natywnym środowisku. Zachowuje dostęp do lokalnych plików, uruchamia testy, wykonuje commity i czyta wyniki builda dokładnie tak, jakbyś uruchomił go ręcznie w zwykłej karcie iTerm lub Alacritty.

Główna różnica polega na tym, że procesy są zjednoczone we wspólną sieć. Zadasz wysokopoziomowe zadanie głównemu agentowi-orkiestratorowi (agent GOD), który rozdziela podzadania między wyspecjalizowanych agentów, monitoruje ich status i prosi o twoją zgodę tylko przed niebezpiecznymi operacjami.

Jak działa interakcja agentów

Cała architektura jest zbudowana na lokalnych plikach i protokole Git, bez zewnętrznych baz danych w chmurze.

Skrzynki pocztowe i pamięć współdzielona

Gdy agenci muszą przekazać kontekst lub wyniki pracy, nie wywołują skomplikowanych zdalnych RPC. System wykorzystuje architekturę skrzynek pocztowych bezpośrednio na dysku:

  1. Agent zapisuje wiadomość lub artefakt do swojego lokalnego katalogu outbox/.
  2. Wewnętrzny router przenosi plik do folderu odbiorcy inbox/.
  3. Odbiorca budzi się przez zdarzenie systemu plików, czyta wiadomość i odbiera zadanie.
  4. Długoterminowa pamięć jest przechowywana w zwykłym Markdown i indeksowana przez lokalne wyszukiwanie semantyczne dla szybkiego pobierania kontekstu między sesjami.

Aby zapobiec blokowaniu index.lock w repozytorium przez równoległe procesy, zapisy do historii commitów przechodzą przez pojedynczy proces committera.

Ochrona przed nieskończonymi pętlami i przekroczeniem budżetu

Jednym z głównych problemów autonomicznych agentów CLI jest ryzyko zapętlenia, gdy skrypt zaczyna wielokrotnie naprawiać ten sam test lub bombardować API setkami żądań.

Munder Difflin ma wbudowany mechanizm Circuit Breaker:

  • Każdy agent ma twardy limit tokenów i monitorowanie kosztów żądań w czasie rzeczywistym z logów.
  • System śledzi kaskadowe błędy i próby ponowień nieudanych poleceń.
  • Przy przekroczeniu budżetu lub nietypowym zachowaniu, agent najpierw otrzymuje ostrzeżenie i ograniczenie kontekstu, a jeśli błędy trwają, jest zatrzymywany siłą.
  • Działania destrukcyjne, zmiany zakresu i wydawanie pieniędzy wymagają potwierdzenia przez panel Approvals.

Co w środku: stos technologiczny

Architektonicznie aplikacja jest podzielona na dwie izolowane płaszczyzny, które zbiegają się w Electron:

┌───────────────────────────────────────────────────────────────┐
                     Electron Renderer (React)                 
   ┌──────────────────┐    ┌──────────────────────────────┐    
    Office Floor          Terminal + Command Bar           
    (Pixi.js)             Files + Git tabs (xterm.js)      
   └─────────▲────────┘    └────────────▲─────────────────┘    
              avatar state              pty bytes / fs / git 
└─────────────┼──────────────────────────┼──────────────────────┘
               IPC (contextBridge: window.cth)
       ┌──────┴──────────┐        ┌──────┴─────────────┐
         Event Plane              Terminal Plane    
         hooks / hive             node-pty PTYs     
         router + GOD             + fs + git        
       └────────▲────────┘        └──────▲─────────────┘
                 hook payloads           stdin / stdout
                └─────────┬──────────────┘
                   ┌──────┴──────────────┐
                    claude / agy / codex│
                   └─────────────────────┘

Główny proces Node.js zarządza cyklem życia terminala, routingiem plików i bazą danych SQLite dla trwałości historii sesji. Renderer w React i Pixi.js odbiera dane przez typizowany mostek IPC window.cth.

Oprócz wizualnego biura, klient desktopowy zawiera wbudowany edytor Monaco, tablicę kanban zadań z zależnościami, przeglądarkę diffów Git i integrację ze Slack webhook. Możesz wysłać zadanie na czat roboczy, Michael utworzy tymczasowego agenta w tle, rozwiąże problem i zwróci odpowiedź do wątku.

Jak wdrożyć i wypróbować

Aby uruchomić, potrzebujesz Node.js 18+, kompilatora C/C++ do budowania natywnego modułu node-pty (na macOS wystarczą Xcode Command Line Tools) oraz co najmniej jednego zainstalowanego agenta konsolowego.

Sklonuj repozytorium i uruchom projekt w trybie deweloperskim:

git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install
npm run dev

Przy pierwszym uruchomieniu otworzy się kreator konfiguracji. Możesz tam określić ścieżki do binarek claude, codex, copilot lub ustawić adresy dla lokalnych serwerów LM Studio / Ollama / vLLM.

Jeśli wymagana binarka nie znajduje się w systemie, aplikacja może przeprowadzić auto-instalację bezpośrednio w wbudowanym oknie terminala.

Komu przyda się ten projekt

Munder Difflin trudno nazwać lekkim narzędziem codziennego użytku — Electron i renderowanie sprite'ów przez Pixi.js przewidywalnie wymagają zasobów. Ale jeśli często eksperymentujesz z scenariuszami multi-agent, piszesz złożone refaktoryzacje wspierane przez wiele modeli, lub masz dość ręcznego kontrolowania równoległych uruchomień Claude Code w tmux, jest tu wiele do zaczerpnięcia.

Koncepcja zarządzania procesami przez pliki Markdown, izolacji przez git worktrees i przyjaznej wizualnej kontroli tego, co się dzieje, sprawia, że ten projekt jest jednym z najbardziej oryginalnych open-source'owych hacków wokół lokalnych agentów AI. Repozytorium jest aktywnie rozwijane, kod jest napisany w czystym TypeScript, więc zgłębianie wewnętrznych hooków i handlerów PTY zdecydowanie warto.

Powiązane projekty