Emacs agent-shell (ACP 기반)

3 weeks ago 12

  • agent-shell은 Emacs에서 AI 에이전트를 직접 제어할 수 있게 해주는 comint-mode 기반 네이티브 셸
  • ACP(Agent Client Protocol) 을 사용하여 특정 에이전트에 종속되지 않고 다양한 에이전트와 통신할 수 있는 유연함이 있음
  • 실시간 트래픽 분석 기능가짜(fak) 에이전트 리플레이 기능으로 테스트와 개발 효율 상승
  • 아직 프로토콜 전 기능 미탑재 상태이나, 빠르게 실사용 가능한 수준의 구현을 보여줌
  • agent-shellacp.el 모두 GitHub에서 공개되어 있으며, 추가 기능이나 버그에 대한 사용자 피드백을 환영함

소개

  • 최근 Emacs Lisp로 구현된 acp.el을 통해 Zed와 Google이 공동 개발한 Agent Client Protocol (ACP) 과의 연동이 가능해졌음
  • 기존에는 chatgpt-shell 등 LLM과의 기본 연동만 제공되었으나, AI 에이전트의 본격 활용은 느린 편이었음
  • ACP의 도입으로 Emacs 환경 내에서 에이전트 연동 요구가 커지면서 Emacs 네이티브 agent-shell 개발을 시작하게 됨

agent-shell 개요

  • agent-shell은 comint-mode를 기반으로 하여 Emacs의 익숙한 버퍼 시스템 내에서 동작함
  • 별도의 문자 및 라인 모드 변환 없이 일반 Emacs 셸과 동일하게 사용할 수 있는 환경 제공됨

Agent-agnostic (에이전트 비종속성)

  • ACP 덕분에 하나의 프로토콜로 다양한 에이전트와 통신할 수 있는 일관된 사용자 경험 구현 가능
  • 설정 예시를 통해 Gemini CLI, Claude Code 등의 다양한 에이전트를 간단한 코드 변경만으로 적용 가능함
    • 예시 코드: 각각의 에이전트를 위한 인증, 명령어, 환경 변수 설정 방식 설명
  • 타 에이전트도 같은 방식으로 쉽게 연동 가능

트래픽 보기 기능

  • ACP 프로토콜 사용에 익숙하지 않아, 통신 트래픽을 실시간 분석할 필요성이 있었음
  • agent-shell에서 별도의 트래픽 뷰어 버퍼를 제공하여, M-x agent-shell-view-traffic 명령으로 Json 기반 트래픽을 시각적으로 확인 가능

Fake agents (가짜 에이전트 및 리플레이)

  • 실제 유료 에이전트로 개발 시 비용과 시간적 비효율 문제로 인해 가짜 에이전트 리플레이 기능을 도입함
  • 트래픽 버퍼를 통해 저장한 통신 데이터를 재생(replay)해, 여러 번 빠른 테스트가 가능해짐
  • 일부 제약이나 한계는 있으나, 디버깅 및 개발 프로세스가 크게 효율화됨

향후 계획 및 현재 상태

  • Agent Client Protocol Schema의 일부만 구현된 상태로 미완성 부분이 남아있음
  • n/p 키 기반의 퀵(diff) 버퍼와 permission dialog 등 혁신적인 UX 실험 진행 중
  • 프로토콜 기능 전체 파악 및 추가 구현 예정

GitHub 공개 및 활용 안내

  • agent-shellacp.el은 모두 GitHub에서 공개되어 있음
    • agent-shell: 에이전트 사용자를 위한 패키지
    • acp.el: 에이전트 관련 연동 패키지를 만들고 싶은 개발자를 위한 라이브러리
  • 두 프로젝트 모두 매우 초기(beta) 단계로, 버그 및 기능 요청 제출을 권장함
  • 클라우드 LLM 서비스 사용 시 발생하는 추가 비용, 그리고 오픈소스 개발 자체에도 비용과 노력이 소요됨
  • 프로젝트가 유용하다면 서포트(후원) 참여를 독려함

Read Entire Article