Перейти к содержимому
Обзор документации

Интеграция CLI, MCP и A2A

Подключение внешнего Agent к разрешённым локальным операциям и отслеживание задач.

Обновлено
На этой странице

Локальные агенты Codex и WorkBuddy используют OpenFiles через MCP или CLI + Skill. Эти интерфейсы разделяют файловые возможности и задачи с A2A. Для обычной работы достаточно установки CLI и команды setup. A2A предназначен для собственных клиентов: /a2a не является адресом MCP, а вызывающий процесс должен работать на том же компьютере, что и OpenFiles.

Установка CLI

Нужны Node.js 22 или новее и настольная сборка с resources/agent. CLI поставляется с приложением; установите его один раз из локального каталога. Для стандартной установки macOS:

npm install -g "/Applications/OpenFiles.app/Contents/Resources/agent"

В Windows используйте PowerShell и замените пример на каталог resources\agent вашей установки:

npm install -g "C:\path\to\OpenFiles\resources\agent"

При разработке из исходников выполните в репозитории npm run build, затем npm install -g ./dist/agent. После этого доступна команда openfiles без полного пути к скрипту.

Подключение Codex

Команда запускает OpenFiles или подключается к нему, регистрирует MCP через CLI Codex и устанавливает Skill в ~/.agents/skills/openfiles. Команда codex должна быть доступна. Затем перезапустите Codex для загрузки настроек.

openfiles setup codex

Подключение WorkBuddy

Команда запускает OpenFiles или подключается к нему и добавляет сервер в ~/.workbuddy/mcp.json, сохраняя другие серверы и резервную копию прежних настроек. Перезапустите WorkBuddy. Для CLI + Skill можно также импортировать указанный ZIP skillArchive через загрузку навыков. MCP уже готов к работе.

openfiles setup workbuddy

Первый setup создаёт и разрешает ~/OpenFilesAgent; результаты сохраняются в подпапке output. Поместите туда файлы и попросите агента, например, экспортировать CDR через OpenFiles в ZIP всех страниц SVG, дождаться завершения и сообщить путь. --workspace DIR выбирает существующий каталог, --output DIR — каталог результатов. --dry-run только показывает пути настройки.

Разрешения и путь приложения сохраняются в ~/.openfiles/agent/setup.json. Последующие вызовы CLI, MCP и установленного Skill запускают приложение с этими настройками и автоматически читают текущие адрес и token. Фиксированные порт и token в клиенте не нужны. Чтобы изменить разрешения работающего шлюза, завершите OpenFiles и повторите setup; задачи принудительно не прерываются.

Официальные руководства: Codex MCP · WorkBuddy MCP

Проверка подключения и устранение проблем

doctor проверяет связь без запуска приложения; capabilities запускает настроенное приложение. schema описывает аргументы офлайн. Индикатор MCP подтверждает лишь запуск адаптера: вызовите capabilities для проверки файловой службы.

openfiles doctor
openfiles capabilities
openfiles schema openfiles_convert

Если приложение не найдено, укажите исполняемый файл через setup codex --app /absolute/path/to/OpenFiles, заменив имя клиента для WorkBuddy. После перемещения Node.js или приложения переустановите CLI и повторите setup. При ошибках каталога проверьте readRoots / outputRoots. Перед повторной отправкой записи с неизвестным результатом используйте tasks.

Ручной запуск шлюза (необязательно)

Используйте сборку с resources/agent/openfiles.cjs (в macOS — внутри OpenFiles.app/Contents/Resources) и Node.js 22 или новее для клиента. Запустите OpenFiles с --agent-read-root=/absolute/input --agent-output-root=/absolute/output. Оба каталога должны существовать; для нескольких разрешений повторите флаги. По умолчанию шлюз выключен. Для изменения разрешений завершите приложение и запустите снова. В исходном репозитории доступны команды:

npm run build-electron
npm run agent -- capabilities
npm run agent -- mcp-config
npm run agent -- skill

Обнаружение и запуск операций

Сначала прочитайте capabilities: conversionFormats перечисляет пары преобразования, metadata.formats — редактируемые поля. openfiles_inspect возвращает варианты экспорта файла. HTML, Markdown и SVG преобразуются в PNG/PDF без скриптов и внешних ресурсов. CDR экспортируется в ZIP со всеми страницами SVG. openfiles_workflow запускает сохранённые .ofw; sourcePaths заменяет файловые входы, а пакетные папки и маски также требуют разрешения. PDF/OFD используют metadata.edit или metadata.remove. Узлам ИИ нужна установленная среда; они могут скачивать модели. Сохраните это как request.json, заменив пути:

JPEG и радиометрический JPEG имеют общие расширения. При contentDetectionRequired форматы являются кандидатами; содержимое проверяется при выполнении.

{"sourcePaths":["/input/design.cdr"],"outputDir":"/output","format":"zip"}
node dist/agent/openfiles.cjs call openfiles_convert --input request.json --wait

Отслеживание и восстановление задач

Запись сохраняет оригиналы и создаёт каталог openfiles-* внутри outputDir. Опрашивайте до completed, failed или canceled, затем проверяйте result.paths и ошибки файлов. --wait ждёт 300 секунд по умолчанию; срок меняется через --timeout. После тайм-аута задача продолжается. Перед повторной отправкой найдите ID через tasks. Список принимает --json или --input с state, contextId, pageSize, pageToken; результаты запрашиваются у отдельной задачи. Хранятся до 100 задач, одновременно выполняются восемь. Перезапуск удаляет историю; отмена сохраняет готовые результаты.

node dist/agent/openfiles.cjs tasks
node dist/agent/openfiles.cjs task TASK_ID --wait
node dist/agent/openfiles.cjs cancel TASK_ID

Подключение MCP и установка Skill

mcp-config только печатает конфигурацию. Добавьте команду и аргументы во внешний клиент. mcp использует построчный JSON-RPC через stdio; skill выводит встроенную инструкцию. Дескриптор: ~/.openfiles/agent/connection.json. Свой путь задаётся через --agent-connection=PATH в приложении и --connection PATH в клиенте. Не публикуйте bearer token. При необходимости замените dist/agent/openfiles.cjs на путь установленного клиента. Исходящие MCP-серверы чата настраиваются отдельно.

Вызов A2A

Возьмите loopback URL из дескриптора и запросите /.well-known/agent-card.json. securityRequirements объявляет bearer-аутентификацию. Отправьте JSON ниже методом POST в /a2a с Content-Type: application/json, A2A-Version: 1.0, Authorization: Bearer <token>. При повторной попытке передачи используйте тот же ID и сообщение. Вызывайте GetTask с { "id": "TASK_ID" } или CancelTask. ListTasks поддерживает contextId, status, statusTimestampAfter, страницы и includeArtifacts. Потоковая передача, push-уведомления и планирование на естественном языке недоступны. Пути относятся к этому компьютеру; редактирование снимков и установка плагинов остаются действиями интерфейса.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "SendMessage",
  "params": {
    "message": {
      "messageId": "unique-request-id",
      "role": "ROLE_USER",
      "parts": [{"data": {"name": "openfiles_capabilities", "arguments": {}}}]
    },
    "configuration": {"returnImmediately": true}
  }
}
Сообщить об ошибке в документации

Шаг непонятен или отличается от приложения? Сообщите нам.