Русский
Документация
Сервер

Сервер

Взаимодействуйте с сервером opencode через HTTP.

Команда opencode serve запускает headless HTTP-сервер, который предоставляет конечную точку OpenAPI, доступную для использования клиентом opencode.


Использование

opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

Опции

ФлагОписаниеПо умолчанию
--portПорт для прослушивания4096
--hostnameИмя хоста для прослушивания127.0.0.1
--mdnsВключить обнаружение mDNSfalse
--mdns-domainПользовательское доменное имя для службы mDNSopencode.local
--corsДополнительные браузерные источники для разрешения[]

--cors можно передавать несколько раз:

opencode serve --cors http://localhost:5173 --cors https://app.example.com

Аутентификация

Задайте OPENCODE_SERVER_PASSWORD, чтобы защитить сервер базовой HTTP-аутентификацией. Имя пользователя по умолчанию opencode, либо задайте OPENCODE_SERVER_USERNAME, чтобы переопределить его. Это применяется как к opencode serve, так и к opencode web.

OPENCODE_SERVER_PASSWORD=your-password opencode serve

Как это работает

Когда вы запускаете opencode, он запускает TUI и сервер. При этом TUI является клиентом, который общается с сервером. Сервер предоставляет конечную точку спецификации OpenAPI 3.1. Эта конечная точка также используется для генерации SDK.

Совет: Используйте сервер opencode для программного взаимодействия с opencode.

Эта архитектура позволяет opencode поддерживать несколько клиентов и даёт вам возможность взаимодействовать с opencode программно.

Вы можете выполнить opencode serve, чтобы запустить автономный сервер. Если у вас запущен TUI opencode, opencode serve запустит новый сервер.


Подключение к существующему серверу

Когда вы запускаете TUI, он случайным образом назначает порт и имя хоста. Вместо этого вы можете передать флаги --hostname и --port. Затем используйте их для подключения к его серверу.

Конечную точку /tui можно использовать для управления TUI через сервер. Например, вы можете предзаполнить или запустить промпт. Эта настройка используется плагинами IDE OpenCode.


Спецификация

Сервер публикует спецификацию OpenAPI 3.1, которую можно посмотреть по адресу:

http://<hostname>:<port>/doc

Например, http://localhost:4096/doc. Используйте спецификацию для генерации клиентов или проверки типов запросов и ответов. Или просмотрите её в Swagger explorer.


API

Сервер opencode предоставляет следующие API.


Global

МетодПутьОписаниеОтвет
GET/global/healthПолучить состояние и версию сервера{ healthy: true, version: string }
GET/global/eventПолучить глобальные события (SSE-поток)Поток событий

Project

МетодПутьОписаниеОтвет
GET/projectСписок всех проектовProject[] (opens in a new tab)
GET/project/currentПолучить текущий проектProject (opens in a new tab)

Path & VCS

МетодПутьОписаниеОтвет
GET/pathПолучить текущий путьPath (opens in a new tab)
GET/vcsПолучить информацию о VCS для текущего проектаVcsInfo (opens in a new tab)

Instance

МетодПутьОписаниеОтвет
POST/instance/disposeОсвободить текущий экземплярboolean

Config

МетодПутьОписаниеОтвет
GET/configПолучить информацию о конфигурацииConfig (opens in a new tab)
PATCH/configОбновить конфигурациюConfig (opens in a new tab)
GET/config/providersСписок провайдеров и моделей по умолчанию{ providers: Provider[] (opens in a new tab), default: { [key: string]: string } }

Provider

МетодПутьОписаниеОтвет
GET/providerСписок всех провайдеров{ all: Provider[] (opens in a new tab), default: {...}, connected: string[] }
GET/provider/authПолучить методы аутентификации провайдера{ [providerID: string]: ProviderAuthMethod[] (opens in a new tab) }
POST/provider/{id}/oauth/authorizeАвторизовать провайдера с помощью OAuthProviderAuthAuthorization (opens in a new tab)
POST/provider/{id}/oauth/callbackОбработать OAuth-обратный вызов для провайдераboolean

Sessions

МетодПутьОписаниеПримечания
GET/sessionСписок всех сессийВозвращает Session[] (opens in a new tab)
POST/sessionСоздать новую сессиютело: { parentID?, title? }, возвращает Session (opens in a new tab)
GET/session/statusПолучить статус всех сессийВозвращает { [sessionID: string]: SessionStatus (opens in a new tab) }
GET/session/:idПолучить детали сессииВозвращает Session (opens in a new tab)
DELETE/session/:idУдалить сессию и все её данныеВозвращает boolean
PATCH/session/:idОбновить свойства сессиитело: { title? }, возвращает Session (opens in a new tab)
GET/session/:id/childrenПолучить дочерние сессии сессииВозвращает Session[] (opens in a new tab)
GET/session/:id/todoПолучить список задач для сессииВозвращает Todo[] (opens in a new tab)
POST/session/:id/initПроанализировать приложение и создать AGENTS.mdтело: { messageID, providerID, modelID }, возвращает boolean
POST/session/:id/forkОтветвить существующую сессию на сообщениитело: { messageID? }, возвращает Session (opens in a new tab)
POST/session/:id/abortПрервать выполняющуюся сессиюВозвращает boolean
POST/session/:id/shareПоделиться сессиейВозвращает Session (opens in a new tab)
DELETE/session/:id/shareОтменить публикацию сессииВозвращает Session (opens in a new tab)
GET/session/:id/diffПолучить diff для этой сессиизапрос: messageID?, возвращает FileDiff[] (opens in a new tab)
POST/session/:id/summarizeРезюмировать сессиютело: { providerID, modelID }, возвращает boolean
POST/session/:id/revertОткатить сообщениетело: { messageID, partID? }, возвращает boolean
POST/session/:id/unrevertВосстановить все откатанные сообщенияВозвращает boolean
POST/session/:id/permissions/:permissionIDОтветить на запрос разрешениятело: { response, remember? }, возвращает boolean

Messages

МетодПутьОписаниеПримечания
GET/session/:id/messageСписок сообщений в сессиизапрос: limit?, возвращает { info: Message (opens in a new tab), parts: Part[] (opens in a new tab)}[]
POST/session/:id/messageОтправить сообщение и дождаться ответатело: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, возвращает { info: Message (opens in a new tab), parts: Part[] (opens in a new tab)}
GET/session/:id/message/:messageIDПолучить детали сообщенияВозвращает { info: Message (opens in a new tab), parts: Part[] (opens in a new tab)}
POST/session/:id/prompt_asyncОтправить сообщение асинхронно (без ожидания)тело: то же, что и /session/:id/message, возвращает 204 No Content
POST/session/:id/commandВыполнить slash-командутело: { messageID?, agent?, model?, command, arguments }, возвращает { info: Message (opens in a new tab), parts: Part[] (opens in a new tab)}
POST/session/:id/shellВыполнить команду оболочкитело: { agent, model?, command }, возвращает { info: Message (opens in a new tab), parts: Part[] (opens in a new tab)}

Commands

МетодПутьОписаниеОтвет
GET/commandСписок всех командCommand[] (opens in a new tab)

Files

МетодПутьОписаниеОтвет
GET/find?pattern=<pat>Поиск текста в файлахМассив объектов совпадений с path, lines, line_number, absolute_offset, submatches
GET/find/file?query=<q>Поиск файлов и каталогов по имениstring[] (пути)
GET/find/symbol?query=<q>Поиск символов рабочего пространстваSymbol[] (opens in a new tab)
GET/file?path=<path>Список файлов и каталоговFileNode[] (opens in a new tab)
GET/file/content?path=<p>Прочитать файлFileContent (opens in a new tab)
GET/file/statusПолучить статус отслеживаемых файловFile[] (opens in a new tab)

Параметры запроса /find/file

  • query (обязательный) — строка поиска (нечёткое совпадение)
  • type (необязательный) — ограничить результаты до "file" или "directory"
  • directory (необязательный) — переопределить корень проекта для поиска
  • limit (необязательный) — максимум результатов (1-200)
  • dirs (необязательный) — устаревший флаг ("false" возвращает только файлы)

Tools (экспериментально)

МетодПутьОписаниеОтвет
GET/experimental/tool/idsСписок всех ID инструментовToolIDs (opens in a new tab)
GET/experimental/tool?provider=<p>&model=<m>Список инструментов с JSON-схемами для моделиToolList (opens in a new tab)

LSP, форматтеры и MCP

МетодПутьОписаниеОтвет
GET/lspПолучить статус LSP-серверовLSPStatus[] (opens in a new tab)
GET/formatterПолучить статус форматтеровFormatterStatus[] (opens in a new tab)
GET/mcpПолучить статус MCP-серверов{ [name: string]: MCPStatus (opens in a new tab) }
POST/mcpДинамически добавить MCP-сервертело: { name, config }, возвращает объект статуса MCP

Agents

МетодПутьОписаниеОтвет
GET/agentСписок всех доступных агентовAgent[] (opens in a new tab)

Logging

МетодПутьОписаниеОтвет
POST/logЗаписать запись лога. Тело: { service, level, message, extra? }boolean

TUI

МетодПутьОписаниеОтвет
POST/tui/append-promptДобавить текст к промптуboolean
POST/tui/open-helpОткрыть диалог справкиboolean
POST/tui/open-sessionsОткрыть селектор сессийboolean
POST/tui/open-themesОткрыть селектор темboolean
POST/tui/open-modelsОткрыть селектор моделейboolean
POST/tui/submit-promptОтправить текущий промптboolean
POST/tui/clear-promptОчистить промптboolean
POST/tui/execute-commandВыполнить команду ({ command })boolean
POST/tui/show-toastПоказать toast ({ title?, message, variant })boolean
GET/tui/control/nextДождаться следующего управляющего запросаОбъект управляющего запроса
POST/tui/control/responseОтветить на управляющий запрос ({ body })boolean

Auth

МетодПутьОписаниеОтвет
PUT/auth/:idУстановить учётные данные аутентификации. Тело должно соответствовать схеме провайдераboolean

Events

МетодПутьОписаниеОтвет
GET/eventПоток server-sent events. Первое событие — server.connected, затем события шиныПоток server-sent events

Docs

МетодПутьОписаниеОтвет
GET/docСпецификация OpenAPI 3.1HTML-страница со спецификацией OpenAPI