renga: A Terminal Where Coding Agents Run Themselves
개요
renga는 코딩 에이전트가 스스로 실행될 수 있도록 지원하는 AI 네이티브 터미널 기반 구조로, 여러 Claude Code 및 Codex 에이전트를 단일 TUI 내에서 오케스트레이션하며, 혼합 클라이언트 간의 피어 메시징, Claude 중심의 UX, 단일 바이너리를 제공한다.
주요 내용
* AI 에이전트 중심의 터미널: renga는 각 창(pane)이 AI 에이전트임을 인지하고, 창 분할, 탭, 포커스 등 TUI 멀티플렉서의 일반적인 기능을 제공하면서도, 각 창을 에이전트 엔드포인트로 취급한다.
* 작업 공간 도구 제공: 기존 터미널 멀티플렉서와 달리, renga는 에이전트가 터미널 작업 공간(창, 생명주기, 프롬프트 상태, 피어 검색 등)을 도구처럼 호출할 수 있도록 MCP(Multi-Client Protocol) 서버를 내장하여 에이전트가 스스로 작업 환경을 조작하게 한다.
* 피어 메시징 및 창 오케스트레이션:
* 피어 메시징: 탭 범위 내에서 에이전트 간 메시지 교환을 지원하며, Claude는 채널 푸시로, Codex는 창에 메시지 알림을 보내는 방식으로 처리된다.
* 창 오케스트레이션: spawn_claude_pane, spawn_codex_pane, close_pane, inspect_pane(창 상태 확인), send_keys(창에 키 입력) 등의 도구를 통해 에이전트가 서로의 창을 관리하고 상호작용할 수 있다.
* 이전 시도 및 학습:
* MCP 메시징 레이어만으로는 에이전트가 작업 공간을 조작할 수 없어 인간이 병목 현상을 겪었으며, WezTerm 플러그인을 통한 창 제어 시도 역시 메시징, 창 제어, 프롬프트 처리 간의 분리로 인한 복잡성이 발생했다.
* 이러한 경험을 통해 메시징, 창 생명주기, 프롬프트 처리가 단일 인터페이스 뒤에 통합되어야 한다는 교훈을 얻었다.
* IME 입력 문제 해결: OS 수준의 IME(Input Method Editor) 입력 시 TUI의 빈번한 화면 갱신과 충돌하는 문제를 해결하기 위해, 입력 중에는 창 렌더링을 중지하고 별도의 입력 오버레이를 통해 일관된 입력 환경을 제공한다.
* 자체 조직화 메커니즘: renga는 미리 정의된 에이전트 조직을 제공하는 것이 아니라, 에이전트가 스스로 작업 흐름을 만들고, 다른 에이전트를 생성하거나, 대화하거나, 기다리는 등 스스로를 조직화할 수 있는 기반을 제공한다.
시사점
renga는 에이전트가 수동적인 작업자가 아닌 능동적인 행위자로 기능하도록 함으로써, 인간 작업자의 부담을 줄이고 AI 에이전트 협업의 효율성과 자율성을 극대화하는 새로운 패러다임을 제시한다.
댓글
GitHub Discussions