Сервер
Команда opencode serve запускает автономный HTTP-сервер, который предоставляет конечную точку OpenAPI, которую может использовать клиент с открытым кодом.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]Параметры
| Флаг | Описание | По умолчанию |
|---|---|---|
--port | Порт для прослушивания | 4096 |
--hostname | Имя хоста для прослушивания | 127.0.0.1 |
--mdns | Включить обнаружение mDNS | false |
--mdns-domain | Пользовательское доменное имя для mDNS | opencode.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>/docFor 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 | Авторизация провайдера через OAuth | ProviderAuthAuthorization |
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.md | body: { 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 | Получить статус сервера 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 |
| Метод | Путь | Описание | Ответ |
|---|---|---|---|
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.1 | HTML-страница со спецификацией OpenAPI |