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로 작성되었으며 윈도우 관리를 위해 Wails를 사용하여 Electron을 피함으로써 애플리케이션 크기를 작게 유지합니다(약 40 MB). 세션 문서는 CRDT(Conflict-free Replicated Data Type) 프레임워크인 Yjs를 사용하여 동기화되며, 이는 안정성과 협업 기능을 보장합니다.
사용자는 다음과 같은 여러 구성으로 Juggler를 실행할 수 있습니다:
- Native Desktop App: macOS, Windows, Linux용으로 번들링된 애플리케이션입니다.
- Headless Server: 코드가 위치한 원격 개발 환경이나 서버 팜에서 실행할 수 있는 커맨드 라인 서버로, 브라우저나 데스크톱 앱이 클라이언트 역할을 합니다.
- Multi-Client Access: 여러 클라이언트(브라우저 탭 또는 서로 다른 기기)가 동시에 동일한 서버 세션에 연결할 수 있습니다.
모델 지원 및 통합
Juggler는 Claude Code (CLI 또는 API를 통해), OpenAI, Gemini, Ollama, OpenRouter, Z.AI, 그리고 DeepSeek를 포함한 광범위한 LLM 제공업체와 연결됩니다.
커뮤니티 인사이트 및 기술적 논의
Hacker News의 커뮤니티 피드백은 에이전트의 UX 및 아키텍처에 대한 몇 가지 핵심 사항을 강조합니다:
"Opencode와 Pi 같은 오픈 에이전트 주변에 놀라운 커뮤니티가 형성되는 것을 보았습니다. 사람들은 확장성과 모델 독립성 때문에 그것들을 사용합니다. 그것들은 훌륭한 프로젝트이지만, 제가 아는 많은 사람들처럼, 저는 이 AI 도구를 사용하기 위해 터미널에 갇혀 있는 것을 정말 싫어합니다."
기술적 논의는 다음 사항에 집중되었습니다:
- UX 패러다임: 사용자들은 대화를