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

Сервер

Взаимодействуйте с сервером 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 Basic Auth. Имя пользователя по умолчанию 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.


Глобальные

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

Проект

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

Путь и VCS

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

Экземпляр

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

Конфигурация

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

Провайдер

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

Сессии

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

Сообщения

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

Команды

МетодПутьОписаниеОтвет
GET/commandСписок всех командCommand[]

Файлы

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

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

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

Инструменты (Экспериментально)

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

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

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

Агенты

МетодПутьОписаниеОтвет
GET/agentСписок всех доступных агентовAgent[]

Логирование

МетодПутьОписаниеОтвет
POST/logЗаписать запись в лог. Body: { 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Показать уведомление ({ title?, message, variant })boolean
GET/tui/control/nextЖдать следующий запрос управленияОбъект запроса управления
POST/tui/control/responseОтветить на запрос управления ({ body })boolean

Auth

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

События

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

Документация

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