К содержимому
Использование

Сервер

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


Терминал
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

Параметры

ФлагОписаниеПо умолчанию
--portПорт для прослушивания4096
--hostnameИмя хоста для прослушивания127.0.0.1
--mdnsВключить обнаружение mDNSfalse
--mdns-domainПользовательское доменное имя для mDNSopencode.local
--corsРазрешенные дополнительные источники (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 serve, чтобы запустить автономный сервер. Если у вас есть TUI с открытым кодом запущен, opencode serve запустит новый сервер.


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

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

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


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

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

For example, http://localhost:4096/doc. Use the spec to generate clients or inspect request and response types. Or view it in a Swagger explorer.


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


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

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

МетодПутьОписаниеОтвет
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Обработка callback OAuth для провайдера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[]
POST/session/:id/initАнализ приложения и создание AGENTS.mdbody: { messageID, providerID, modelID }, возвращает boolean
POST/session/:id/forkОтветвление сессии от сообщенияbody: { messageID? }, возвращает Session
POST/session/:id/abortПрервать запущенную сессиюВозвращает boolean
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Выполнить слэш-командуbody: { messageID?, agent?, model?, command, arguments }, возвращает { info: Message, parts: Part[]}
POST/session/:id/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Список всех идентификаторов инструментовToolIDs
GET/experimental/tool?provider=<p>&model=<m>Список инструментов со схемами JSON для моделиToolList

МетодПутьОписаниеОтвет
GET/lspПолучить статус сервера LSPLSPStatus[]
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

МетодПутьОписаниеОтвет
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

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

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

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