본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 20. 02:35

xenodium/agent-shell

요약

agent-shell은 ACP(Agent Client Protocol)를 기반으로 LLM 에이전트와 상호작용할 수 있는 Emacs 전용 네이티브 셸 도구입니다. Gemini CLI, Claude Agent 등 다양한 ACP 기반 에이전트와 채팅이 가능하며, Emacs 생태계 내에서 에이전틱 개발 워크플로를 확장할 수 있는 다양한 부가 패키지를 제공합니다.

핵심 포인트

  • ACP(Agent Client Protocol)를 통해 다양한 LLM 에이전트와 통신 가능
  • Emacs 환경에 최적화된 네이티브 셸 인터페이스 제공
  • Docker 샌드박스 실행(agent-circus), 멀티 에이전트 조정(meta-agent-shell) 등 풍부한 확장 패키지 지원
  • Org-mode 및 org-roam 통합을 통한 대화 트랜스크립트 관리 기능

👉 @xenodium의 GitHub Sponsors를 통해 이 작업을 후원해 주세요 (제 블로그를 확인해 보세요)

유용한 LLM 토큰(tokens) 비용을 지불하고 계신 만큼, 이 프로젝트의 개발과 유지보수를 후원하는 것을 고려해 보세요. 여러분의 도움으로 저는 이 노력을 더욱 지속 가능하게 만들 수 있습니다.

감사합니다!

ACP (Agent Client Protocol)를 기반으로 LLM 에이전트(agents)와 상호작용하는 네이티브 Emacs 셸(shell)입니다.

agent-shell을 사용하면 Gemini CLI, Claude Agent, Auggie, Mistral Vibe 또는 기타 ACP 기반 에이전트와 채팅할 수 있습니다.

  • agent-shell 0.47 업데이트.
  • agent-shell 0.25 업데이트.
  • agent-shell 0.17 개선 사항 + MELPA.
  • agent-shell 0.5 개선 사항.
  • Emacs agent-shell 소개 (ACP 기반).
  • acp.el 소개.

agent-shell은 ACP (Agent Client Protocol)를 통해 에이전트와 통신하기 위해 acp.el에 의존합니다.

이제 agent-shell 경험을 확장하기 위한 몇 가지 추가 패키지를 제공합니다:

  • emacs-skills: Emacs를 위한 Claude Agent 기술(skills).
  • agent-shell-to-go: Slack을 통해 모바일 또는 다른 기기에서 agent-shell 세션과 상호작용.
  • agent-circus: 샌드박스화된 Docker 컨테이너에서 AI 코딩 에이전트 실행.
  • agent-shell-sidebar: agent-shell을 위한 사이드바(sidebar) 애드온.
  • agent-shell-bookmark: agent-shell 세션에 대한 북마크(bookmark) 지원.
  • agent-shell-workspace: 여러 agent-shell 세션을 관리하기 위한 전용 탭 바(tab-bar) 워크스페이스.
  • agent-shell-manager: agent-shell 버퍼(buffers)의 표 형식 보기 및 관리.
  • agent-review: agent-shell을 위한 코드 리뷰(code review) 인터페이스.
  • agent-shell-attention.el: agent-shell을 위한 모드라인(mode-line) 주의 추적기.
  • agent-shell-knockknock: knockknock.el을 통한 agent-shell 알림.
  • agent-shell-notifications: agent-shell 이벤트를 위한 데스크톱 알림.
  • meta-agent-shell: 에이전트 간 통신, 작업 추적 및 프로젝트 수준의 디스패칭(dispatching)을 포함한 agent-shell용 멀티 에이전트 조정 시스템.
  • agent-shell-macext: agent-shell을 위한 macOS 전용 개선 사항.
  • agent-shell-org-transcript: agent-shell을 위한 Org-mode 트랜스크립트(transcripts).

org-roam 통합 기능이 포함된 세션(sessions). - ob-agent-shell: agent-shell 소스 블록(source blocks)을 실행하기 위한 Org Babel 백엔드(backend). - agent-recall: agent-shell 대화 트랜스크립트(transcripts)를 검색, 브라우징 및 재개. - agent-shell-pet: agent-shell 세션 상태를 방송하는 Codex 스타일의 펫(pets).

  • 20Y: Emacs에서의 에이전틱(Agentic) 개발 워크플로(workflow).
  • Skye: Emacs를 통해 LLM을 사용하는 방법.
  • sincebyte: Agent Shell Cursor Agent CLI.
  • Naputo: Emacs에서 실행되는 agent-shell ACP 클라이언트를 시작할 때 세션을 선택하는 방법.
  • vandee: Emacs에서 OpenCode를 활용한 나의 에이전트 연습.
  • Fedora Project Wiki: AI/ML 특별 관심 그룹(Special Interest Group).

멋진 아이콘을 제공해 준 Lobe Icons에 감사드립니다.

Anthropic의 Claude Agent(이전 명칭 Claude Code)의 경우, claude-agent-acp 지침을 따르십시오. 일반적으로 다음과 같습니다:

npm install -g @agentclientprotocol/claude-agent-acp

참고: 바이너리(binary)를 전역(globally)으로 설치하여 PATH에서 사용할 수 있도록 하려면 -g 플래그가 필요합니다. 설치 후, 터미널에서 which claude-agent-acp를 실행하여 사용 가능한지 확인하십시오.

선택 사항: Claude 구독을 사용하려는 경우 Claude Agent 자체가 필요할 수도 있습니다(최소 한 번은 Emacs 외부에서 CLI를 실행하여 구독에 로그인한 다음 Emacs에서 agent-shell을 사용하십시오). 설치를 위해 Claude Agent의 시작하기(get started) 가이드를 따르십시오.

OpenAI의 Codex의 경우, zed/codex-acp를 설치하고 codex-acp 실행 파일이 PATH에 있는지 확인하십시오.

Google의 Gemini CLI의 경우, --experimental-acp 플래그를 지원하는 최신 릴리스(release)를 반드시 확보하십시오.

Goose CLI의 경우, goose를 설치하고 goose 실행 파일이 PATH에 있는지 확인하십시오.

Cursor agent의 경우, 다음 명령어로 설치하십시오:

npm install -g @blowmage/cursor-agent-acp

자세한 내용은 https://github.com/blowmage/cursor-agent-acp-npm 을 참조하십시오.

Kimi Code CLI의 경우, 다음 명령어로 설치하십시오:

curl -L code.kimi.com/install.sh | bash

자세한 내용은 https://www.kimi.com/code 를 참조하십시오.

Kiro CLI의 경우, 다음 명령어로 설치하십시오:

curl -fsSL https://cli.kiro.dev/install | bash

자세한 내용은 https://kiro.dev/docs/cli/acp/ 를 참조하십시오.

Qwen Code의 경우, 다음 명령어로 설치하십시오:

npm install -g @qwen-code/qwen-code@latest

자세한 내용은 https://github.com/QwenLM/qwen-code 를 참조하십시오.

Auggie CLI의 경우, 다음 명령어로 설치하십시오:

npm install -g @augmentcode/auggie

자세한 내용은 https://docs.augmentcode.com/cli/overview 를 참조하십시오.

Mistral Vibe의 경우, 다음 명령어로 설치하십시오:

uv tool install mistral-vibe

자세한 내용은 https://github.com/mistralai/mistral-vibe 를 참조하십시오.

Factory Droid의 경우, Droid를 설치하십시오:

curl -fsSL https://app.factory.ai/cli | sh

자세한 내용은 https://factory.ai 를 참조하십시오.

Pi coding agent의 경우, pi-acp 어댑터를 설치하십시오:

npm install -g pi-acp

자세한 내용은 https://github.com/svkozak/pi-acp 를 참조하십시오.

agent-shell은 MELPA에서 사용 가능한 shell-maker를 통해 내장된 comint-shell로 구동됩니다.

agent-shell과 그 의존성인 acp.el은 현재 모두 MELPA에서 사용할 수 있습니다.

다음과 같이 설치할 수 있습니다:

(use-package agent-shell
:ensure t
:ensure-system-package
...

이렇게 하면 필요한 의존성(acp.elshell-maker)이 자동으로 설치됩니다.

Doom Emacs를 사용 중이며 package! 매크로를 사용하고 싶다면:

(package! shell-maker)
(package! acp)
(package! agent-shell)

doom sync를 실행한 후 재시작하십시오.

설정 전에 require를 포함하십시오:

(require 'acp)
(require 'agent-shell)
;; 나머지 설정...

사용하고자 하는 에이전트 제공자(agent providers)에 대한 인증을 설정하십시오.

agent-shell-make-environment-variables를 사용하여 agent-shell-*-environment 변수를 커스텀함으로써 생성된 에이전트 프로세스에 환경 변수(environment variables)를 전달할 수 있습니다. 이 헬퍼 함수는 키/값 쌍을 받아 에이전트가 시작될 때 이를 내보냅니다(export).

(setq agent-shell-anthropic-claude-environment
(agent-shell-make-environment-variables
"ANTHROPIC_API_KEY" (auth-source-pass-get 'secret "anthropic-api-key")
...

기본적으로 에이전트 프로세스는 최소한의 환경으로 시작됩니다. 부모 Emacs 프로세스로부터 환경 변수를 상속받으려면 agent-shell-make-environment-variables에서 :inherit-env t 파라미터를 사용하십시오:

(setenv "ANTHROPIC_API_KEY" (auth-source-pass-get 'secret "anthropic-api-key"))
(setq agent-shell-anthropic-claude-environment
(agent-shell-make-environment-variables :inherit-env t))

이를 통해 PATH, HOME 등과 같은 환경 변수 (environment variables)가 Emacs 세션으로부터 에이전트 프로세스 (agent process)에서 사용 가능하도록 보장하면서도, 동시에 특정 변수를 재정의(override)하거나 추가할 수 있습니다.

:load-env 파라미터를 사용하여 .env 파일로부터 환경 변수를 로드할 수 있습니다. 이는 단일 파일과 다중 파일을 모두 지원합니다:

;; 단일 .env 파일로부터 로드
(setq agent-shell-anthropic-claude-environment
(agent-shell-make-environment-variables
...

.env 파일은 한 줄에 하나의 변수가 있는 KEY=value 형식을 포함해야 합니다. 주석 (#으로 시작하는 줄)과 빈 줄은 무시됩니다.

로그인 기반 인증 (login-based authentication, 기본값):

(setq agent-shell-anthropic-authentication
(agent-shell-anthropic-make-authentication :login t))

API 키 인증 (API key authentication):

;; 문자열 사용
(setq agent-shell-anthropic-authentication
(agent-shell-anthropic-make-authentication :api-key "your-anthropic-api-key-here"))
...

OAuth 토큰 인증 (OAuth token authentication) (claude setup-token에서 얻는 CLAUDE_CODE_OAUTH_TOKEN):

;; 문자열 사용
(setq agent-shell-anthropic-authentication
(agent-shell-anthropic-make-authentication :oauth "your-oauth-token-here"))
...

Anthropic 호환 대체 API 엔드포인트 (API endpoints)의 경우, 환경 변수를 통해 설정하십시오:

(setq agent-shell-anthropic-claude-environment
(agent-shell-make-environment-variables
"ANTHROPIC_BASE_URL" "https://api.moonshot.cn/anthropic"
...

로그인 기반 인증 (login-based authentication, 기본값):

(setq agent-shell-google-authentication
(agent-shell-google-make-authentication :login t))

API 키 인증 (API key authentication):

;; 문자열 사용
(setq agent-shell-google-authentication
(agent-shell-google-make-authentication :api-key "your-google-api-key-here"))
...

Vertex AI 인증:

(setq agent-shell-google-authentication
(agent-shell-google-make-authentication :vertex-ai t))

로그인 기반 인증 (기본값):

(setq agent-shell-openai-authentication
(agent-shell-openai-make-authentication :login t))

API 키 인증:

;; 문자열 사용 시
(setq agent-shell-openai-authentication
(agent-shell-openai-make-authentication :api-key "your-openai-api-key-here"))
...

OpenAI API 키 인증:

;; 문자열 사용 시
(setq agent-shell-goose-authentication
(agent-shell-make-goose-authentication :openai-api-key "your-openai-api-key-here")
...

OAuth 로그인 기반 인증:

(setq agent-shell-qwen-authentication
(agent-shell-qwen-make-authentication :login t))

로그인 기반 인증 (기본값):

(setq agent-shell-auggie-authentication
(agent-shell-make-auggie-authentication :login t))

인증 없음 (대체 인증 방법을 사용할 때):

(setq agent-shell-auggie-authentication
(agent-shell-make-auggie-authentication :none t))

API 키 인증:

;; 문자열 사용 시
(setq agent-shell-mistral-authentication
(agent-shell-mistral-make-authentication :api-key "your-mistral-api-key-here")
...

기본적으로, agent-shell은 지원되는 모든 에이전트(Claude Agent, Gemini CLI, Codex, Goose, Qwen Code, 그리고 Auggie)에 대한 설정을 포함합니다. 사용 가능한 에이전트는 agent-shell-agent-configs 변수를 통해 사용자 지정할 수 있습니다.

M-x agent-shell

  • 알려진 모든 에이전트 중 하나를 시작하거나 재사용합니다.

agent-shell 대화형 명령을 통해 알려진 모든 에이전트 셸( agent-shell-agent-configs 참조)을 선택하고 시작할 수 있으며, 사용 가능한 경우 기존 셸을 재사용하도록 활성화합니다. 접두사 인자(C-u M-x agent-shell)를 사용하면 새 셸 세션을 강제로 시작하여 여러 에이전트 셸을 인스턴스화합니다.

특정 에이전트 셸 세션 직접 시작:

M-x agent-shell-anthropic-start-claude-code

  • Claude 에이전트 세션 시작: M-x agent-shell-auggie-start-agent
  • Auggie 에이전트 세션 시작: M-x agent-shell-openai-start-codex
  • Codex 에이전트 세션 시작: M-x agent-shell-google-start-gemini
  • Gemini 에이전트 세션 시작: M-x agent-shell-goose-start-agent
  • Goose 에이전트 세션 시작: M-x agent-shell-cursor-start-agent
  • Cursor 에이전트 세션 시작: M-x agent-shell-kiro-start-agent
  • Kiro CLI 에이전트 세션 시작: M-x agent-shell-mistral-start-vibe
  • Mistral Vibe 에이전트 세션 시작: M-x agent-shell-qwen-start
  • Qwen Code 에이전트 세션 시작: M-x agent-shell-droid-start-agent
  • Factory Droid 에이전트 세션 시작: M-x agent-shell-pi-start-agent
  • Pi 코딩 에이전트 세션 시작

모든 새로운 셸을 시작할 때 사용할 기본 에이전트를 설정할 수 있습니다. agent-shell을 통해 다음과 같이 설정합니다:

(setq agent-shell-preferred-agent-config (agent-shell-anthropic-make-claude-code-config))

또한, agent-shell을 통해 MCP 서버를 직접 구성할 수 있습니다. 이를 사용하면 사용하는 모든 에이전트에 걸쳐 설정을 반복할 필요가 없습니다.

(setq agent-shell-mcp-servers
'(((name . "notion")
(type . "http")
...

agent-shell은 컨테이너 내에서 에이전트 및 셸 명령을 실행하는 기본적인 지원 기능을 제공합니다.

에이전트를 시작하거나 실행해야 할 셸 명령 앞에 접두사를 붙이려면 agent-shell-command-prefix를 사용하십시오. 이렇게 하면 해당 명령이 컨테이너 내부에서 실행됩니다.

(setq agent-shell-command-prefix '("devcontainer" "exec" "--workspace-folder" "."))

에이전트별로 동적인 컨테이너가 필요한 경우, 현재 agent-shell 버퍼를 받아 명령 목록을 반환하는 함수를 제공하십시오:

(setq agent-shell-command-prefix
(lambda (buffer)
(let ((config (agent-shell-get-config buffer))) 
...

동일한 에이전트 유형이라도 다른 셸 세션에 대해 서로 다른 컨테이너를 사용할 수 있습니다:

(setq agent-shell-command-prefix
(lambda (buffer)
;; 프로젝트별로 다른 컨테이너 사용
...

acp-make-client에 전달했을 수 있는 모든 :environment-variables는 다음을 참고하십시오.

acp-make-client에 전달했을 수 있는 모든 :environment-variables는 다음을 참고하십시오.

컨테이너 내부에서 실행되는 에이전트 프로세스에는 적용되지 않습니다. 환경 변수는 devcontainer 설정 또는 Dockerfile을 통해 주입하는 것을 권장합니다.

다음으로, 컨테이너 경로를 로컬 작업 디렉토리로, 또는 그 반대로 변환하는 agent-shell-path-resolver-function을 설정하십시오.

Agent shell은 특히 devcontainer와 함께 사용할 수 있는 agent-shell-devcontainer-resolve-path 함수를 제공합니다. 이 함수는 .devcontainer/devcontainer.json에 지정된 workspaceFolder를 읽거나, 그렇지 않은 경우 /workspaces/<repository-name>이라는 기본값을 사용합니다.

(setq agent-shell-path-resolver-function #'agent-shell-devcontainer-resolve-path)

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0