EnglishРусский Map

agent-shell

title
agent-shell
type
toolbox
summary
Нативный режим Emacs для кодинг-агентов по протоколу ACP с единым интерфейсом буфера
tags
emacs, agentic-coding, acp, elisp
language
Emacs Lisp
license
GPL-3.0
created
2026-07-29
updated
2026-07-29
lang
ru
translation_of
agent-shell
source_updated
2026-07-29
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

agent-shell - нативный режим Emacs для работы с кодинг-агентами по протоколу ACP (Agent Client Protocol). Поскольку абстракцию обеспечивает сам протокол, единый интерфейс буфера подходит для любого агента с его поддержкой, а добавление нового агента сводится к записи в конфиге, а не к созданию нового UI. Проект пишет и поддерживает один человек - xenodium.

Источником для этой страницы послужил пост с описанием релиза 0.63 от 22 июля 2026 года, поэтому список возможностей ниже отражает срез на тот момент: все упомянутые переменные и команды привязаны к конкретной версии, перед их использованием стоит свериться с репозиторием. Долгосрочно неизменными остаются база в виде ACP, нейтральность к вендорам и тот факт, что проект ведёт единственный мейнтейнер.

Что он делает

Агенты настраиваются по типам, у каждого своя команда запуска и параметры. К версии 0.63 в список вошли Oh My Pi (omp, см. oh-my-pi) и Grok Build от xAI, наряду с Claude, Cursor, Codex, Cline, Goose, Qwen и Copilot. Некоторые из этих пунктов изменились в том же релизе: Cursor перешёл на официальный Cursor CLI (agent acp, подкоманда появилась только в 2026 году, так что старый CLI работать не будет), Codex переведён на @agentclientprotocol/codex-acp, у Claude вернулось отображение рассуждений (thinking output) после того, как его ACP-сервер перестал отдавать их по умолчанию, у Cline появились defcustom-переменные для модели по умолчанию и режима сессии, Goose перестал требовать ключ OpenAI, а для Qwen добавили явную обработку OpenAI-совместимых ключей. Такая нестабильность - неизбежная плата за поддержку десятка сторонних ACP-серверов.

Запуск настраивается через agent-shell-preferred-agent-config: можно задать идентификатор вроде 'claude-code, чтобы сразу пропустить выбор, или '(preselect . claude-code), чтобы оставить меню выбора с этим агентом по умолчанию. Функция agent-shell-session-choices-function позволяет настроить список вариантов в приглашении нового shell-буфера.

Большая часть работы в 0.63 ушла на отрисовку. Вызовы инструментов и процесс рассуждений теперь свернуты в секцию "Activity", иначе сессию с активным использованием инструментов читать невозможно; agent-shell-activity-group-expand-by-default возвращает подробный вывод, а agent-shell-activity-group-header-label-function переключает формат заголовка: описательный, числовой или счетчик. Рендерер Markdown, появившийся в 0.55, стал расширяемым благодаря agent-shell-markdown-render-functions, поэтому сторонние пакеты могут брать на себя отдельные конструкции - первая интеграция рендерит математику LaTeX в SVG. Стили и темы вынесены в agent-shell-faces.el и agent-shell-markdown.el. Переданные агентом изображения встраиваются прямо в буфер, будь то base64, внешняя ссылка или блок контента resource_link/resource; для аудио и других бинарных файлов выводятся внешние ссылки. Блоки diff показывают количество добавленных и удаленных строк в заголовке, RET внутри diff перемещает курсор к месту в файле, куда применится изменение, также поддерживаются запросы подтверждения для нескольких diff сразу.

Мелкие доработки: к каждому типу агента можно подключить MCP-серверы через поле конфига :mcp-servers; уведомления, приходящие вне обычного цикла запрос-ответ, теперь отображаются, а не отбрасываются (с адаптерами под конкретных агентов для предобработки, первым стал Cursor); agent-shell-narrow-to-block сужает буфер до последних N блоков; три команды копирования извлекают из буфера markdown, блок исходного кода под курсором или URL ссылки; область просмотра можно скрывать при отправке, ставить запросы в очередь через C-u C-c C-c и сохранять незавершенный ввод при навигации по истории. Команда agent-shell-artist-insert-text-drawing позволяет набросать текстовый рисунок прямо в промпт.

Одно изменение касается не интерфейса, а системного взаимодействия: agent-shell теперь блокирует переход системы в спящий режим, пока выполняется ход агента, и снимает блокировку сразу по завершении, чтобы длительный ответ не прерывался из-за простоя. Экран при этом может гаснуть, закрытая крышка ноутбука по-прежнему отправляет машину в сон, для работы требуется библиотека system-sleep из Emacs 31.1, а отключается поведение через agent-shell-inhibit-system-sleep.

Состояние проекта

Мейнтейнер открыто делится статистикой бэклога: число открытых issue доходило до 75, а висящих PR - до 29 в середине мая, но к моменту публикации поста снизилось до 13 и 4 соответственно, при этом только в этот релиз вошло порядка сорока смерженных pull request'ов. Для проекта с единственным принимающим решения человеком это хороший темп внешних контрибьюторов, о чем прямо и говорится в посте: независимый проект конкурирует с финансируемыми командами, собирает донаты и напоминает, что Anthropic дает шесть месяцев Claude Max 20x проектам с открытым исходным кодом от 5000 звезд на GitHub, до которых этот пока не дорос.

Для этой базы знаний проект интересен тем же, чем cc-mirror и claude-code-router, только с обратной стороны: вместо модификации одного агента он сводит всех агентов под один интерфейс, делая переключение вопросом конфига. Поле :mcp-servers для отдельных агентов - это практическая реализация разделения доступа к сервисам из mcp-vs-skills, через которую доступны и claude-code, и pi-coding-agent.

Репозиторий: https://github.com/xenodium/agent-shell - 1658 звезд, GPL-3.0, активен с сентября 2025 года.