Перейти к содержимому

Сервер

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

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


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

Окно терминала
aicippy-code serve [--port <number>] [--hostname <string>] [--cors <origin>]

Параметры

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

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

Окно терминала
aicippy-code serve --cors http://localhost:5173 --cors https://app.example.com

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

Установите AICIPPY_CODE_SERVER_PASSWORD, чтобы защитить сервер с помощью базовой аутентификации HTTP. Имя пользователя по умолчанию — aicippy-code или установите AICIPPY_CODE_SERVER_USERNAME, чтобы переопределить его. Это относится как к aicippy-code serve, так и к aicippy-code web.

Окно терминала
AICIPPY_CODE_SERVER_PASSWORD=your-password aicippy-code serve

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

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

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

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


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

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

Конечную точку /tui можно использовать для управления TUI через сервер. Например, вы можете предварительно заполнить или запустить подсказку. Эта настройка используется плагинами aicippy-code 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.


API

Сервер aicippy-code предоставляет следующие 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[]
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Выполнить слэш-команду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

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

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

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

Авторизация

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

События

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

Документы

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