1P by GN⁺ 17시간전 | ★ favorite | 댓글 1개
  • 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-shellcomint-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 서비스 사용 시 발생하는 추가 비용, 그리고 오픈소스 개발 자체에도 비용과 노력이 소요됨
  • 프로젝트가 유용하다면 서포트(후원) 참여를 독려함
Hacker News 의견
  • Xenodium이 emacs에서 멋진 일들을 하고 있음, emacs에 관심이 있다면 Xenodium 블로그를 꼭 확인해보길 추천함, 다른 emacs 사용자들의 추천으로 처음 구입한 iOS 앱이 Journelly임, 이 앱은 링크나 노트를 간편하게 저장하고 org 파일로 내보내기할 수 있는 포터블 공간임 (앞으로 markdown도 지원 예정이라 함), Xenodium과는 아무런 관계 없음, 올해 emacs를 파면서 그의 기여를 보는 것이 매우 즐거움
    • 정말 고마움, 이런 피드백이 하루를 행복하게 해줌, Journelly 팬이라는 것도 반가움, 구입해줘서 고마움, 니치 앱을 지속적으로 개발하는 것은 큰 도전임
  • agent-shell은 ACP (Agent Client Protocol)로 구동되는 다양한 AI 에이전트를 emacs에서 직접 사용할 수 있게 하는 네이티브 경험을 제공함, 현재 Claude Code, Gemini CLI, Codex, Goose와 연동이 가능하지만 기술적으로는 ACP 지원 에이전트라면 누구나 사용 가능함, 지속 가능한 개발을 위해 스폰서가 더 필요함 github sponsors에서 후원 가능함
    • 매우 흥미로움, claude-code-ide를 사용했었지만 comint-mode를 쓰지 않아서 불편함이 컸음, agent-shell을 꼭 써보고 싶음, 질문이 있는데 ACP 명세가 “ide” 관련 기능도 커버하는지 궁금함 (예: Claude code ide에서 지원하는 커서 위치, diff 연동 같은 것), 아니면 정말 기본적인 기능에만 초점을 맞추는지 궁금함
  • Agent shell은 내가 항상 원하던 것이었음, 다양한 Claude code 연동 패키지를 사용해봤지만 터미널 에뮬레이터에서 실행해야 하는 번거로움이 있었음, agent shell은 훨씬 더 자연스럽고 통합된 느낌임, 환경 설정을 파일에서 읽어오는 기능이 특히 기대됨, agent-shell-sidebar가 실제로 어떻게 동작하는지 볼 수 있게 스크린샷이 있었으면 함
  • Xenodium이 emacs 커뮤니티를 위해 멋진 작업을 해주고 있음, 현재 agent-shell을 사용 중인데 버퍼 상단에 추가되는 header가 마음에 들지 않음, 내가 원하는 정보는 이미 하단에 모두 있음, 하단 줄을 선택적으로 비활성화할 수 있도록 하면 미니멀리스트들에게 좋을 것 같음
  • agent-shell을 몇 번 사용해봤는데, 출시 초반 패키지임에도 불구하고 매우 부드러운 경험을 제공함
  • 처음으로 ACP에 대해 들었음, AG-UI와 비교해 어떻게 다른지 궁금함, 물론 ACP는 코딩 특화이고 AG-UI는 훨씬 더 범용적이라는 차이는 알겠지만 그 외에 다른 차이점에 대해 궁금함
    • LSP와 동일한 논리지만 AI 에이전트에 적용된 것임, claude, codex, gemini, aider 등 각 에디터에 대해 wrapper를 매번 새로 구현하는 것은 고통임, 그래서 zed 팀이 프로토콜 표준화를 시작함
  • ECA라는 프로젝트도 있음 ECA 깃허브, ECA는 여러 front-end와 editor를 위한 LSP 스타일의 코딩 에이전트 프로토콜임, 다양한 모델을 직접 지원함, 반면 agent protocol은 Gemini CLI, Claude Code 등 여러 에이전트를 각각의 프로토콜 지원 여부에 따라 다양한 front-end에서 사용할 수 있도록 해주는 것 같음, 다양한 코딩 에이전트도 ECA 프로토콜을 채택할 수도 있을 것 같음
    • 맞음, ECA 프로젝트는 emacs 패키지도 있음, 최근에 사용 중임, emacs 이슈를 디버깅하면서 ECA 프로토콜과 ACP 문서를 훑어봤는데 둘은 상당히 유사하고 모두 문서화가 잘 되어 있음, 의도하지 않은 중복 발명임
    • 두 가지 다 써봤고 위 설명이 맞음, MCPs를 다시 설정해야 하고 ECA는 자체 서버가 백그라운드에서 동작함, 그런 점 때문에 agent-shell이 더 마음에 들었음, 에이전트마다 config 포맷과 위치가 다르고 프로젝트와 사용자 수준의 config까지 차이가 있어서 agent-shell의 단순함이 큰 장점임, 나중에 config 표준도 생기면 정말 좋겠음
  • 왜 Claude Code만 직접 쓰지 않고 굳이 agent-shell을 써야 하는지 궁금함
    • 텍스트 에디터에 완전히 통합된 유니파이드 네이티브 UI 경험 때문임, Claude Code 뿐만 아니라 Gemini CLI, Codex, Goose 등 ACP를 지원하는 여러 에이전트를 같은 방식으로 쓸 수 있음
    • 이게 바로 emacs 스타일임, emacs는 세상을 집어삼키는 존재임
  • 누군가 이걸 Neovim용으로 만들어줬으면 기다리는 중임, 이름을 모르는 영웅이 어서 등장하길 바람, spec을 만들어준 Zed팀과 Google에도 감사함