forked from boos/BoosAPI
feat(desktop): embed BoosAPI Desktop client as a subproject
Vendor the rebranded BoosAPI Desktop client (Tauri + Vue) into metapi as a monorepo subdirectory under desktop/. Source only — node_modules, dist, Cargo target and the upstream .git history are excluded. desktop/ keeps its own independent Cargo workspace (desktop/src-tauri with crates/*); it is not part of the backend boosapi crate, so a `cargo check` at the metapi root still compiles only the backend. Build the desktop app from desktop/src-tauri per desktop/README.md. Note: app icons are still placeholder assets pending the final BoosAPI logo. The updater signing keys live outside the repo and are not included.
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
# API-шлюз
|
||||
|
||||
## Что такое API-шлюз?
|
||||
|
||||
BoosApi включает встроенный локальный API-сервер, который предоставляет настроенных провайдеров как **OpenAI-совместимые**, **нативные Claude** и **нативные Gemini** endpoints. Любой инструмент или клиент, использующий один из этих протоколов, может использовать BoosApi в качестве бэкенда — без отдельных ключей API или ретрансляционных сервисов.
|
||||
|
||||
Сценарии использования:
|
||||
|
||||
- Запускайте **Claude Code CLI**, **OpenAI Codex CLI**, **Gemini CLI** или **OpenCode** через BoosApi.
|
||||
- Подключайте расширения IDE к единому локально управляемому endpoint.
|
||||
- Делитесь набором ключей провайдера между множеством инструментов с ограничением частоты запросов на ключ.
|
||||
|
||||
---
|
||||
|
||||
## Начало работы
|
||||
|
||||
1. Откройте **Настройки → API-шлюз** (или нажмите <kbd>Cmd/Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>G</kbd>).
|
||||
2. Нажмите **Запустить** для запуска сервера шлюза.
|
||||
3. По умолчанию сервер слушает на `127.0.0.1:8080` (HTTP).
|
||||
|
||||
::: tip
|
||||
Включите **Автозапуск** в настройках шлюза, чтобы сервер запускался автоматически при старте BoosApi.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Управление ключами API
|
||||
|
||||
1. Перейдите на вкладку **Ключи API**.
|
||||
2. Нажмите **Создать новый ключ**.
|
||||
3. Опционально добавьте **описание** для идентификации каждого ключа.
|
||||
4. Скопируйте ключ — он отображается только один раз.
|
||||
|
||||
---
|
||||
|
||||
## Шаблоны конфигурации
|
||||
|
||||
### Claude Code CLI
|
||||
|
||||
```bash
|
||||
claude config set --global apiUrl http://127.0.0.1:8080
|
||||
claude config set --global apiKey boosapi-xxxx
|
||||
```
|
||||
|
||||
### OpenAI Codex CLI
|
||||
|
||||
```bash
|
||||
export OPENAI_BASE_URL=http://127.0.0.1:8080/v1
|
||||
export OPENAI_API_KEY=boosapi-xxxx
|
||||
codex
|
||||
```
|
||||
|
||||
### Gemini CLI
|
||||
|
||||
```bash
|
||||
export GEMINI_API_BASE=http://127.0.0.1:8080
|
||||
export GEMINI_API_KEY=boosapi-xxxx
|
||||
gemini
|
||||
```
|
||||
|
||||
### Пользовательский клиент
|
||||
|
||||
```
|
||||
Base URL: http://127.0.0.1:8080/v1
|
||||
Ключ API: boosapi-xxxx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Следующие шаги
|
||||
|
||||
- [Быстрый старт](./getting-started) — вернуться к руководству по быстрому старту
|
||||
- [Настройка провайдеров](./providers) — добавить upstream-провайдеров, к которым маршрутизирует шлюз
|
||||
- [MCP-серверы](./mcp) — подключить внешние инструменты для вызова ИИ-инструментов
|
||||
@@ -0,0 +1,128 @@
|
||||
# Быстрый старт
|
||||
|
||||
## Установка
|
||||
|
||||
Скачайте последний установщик со [страницы загрузки](/ru/download) или [GitHub Releases](https://github.com/BoosApi-Desktop/BoosApi/releases).
|
||||
|
||||
### macOS
|
||||
|
||||
| Чип | Файл |
|
||||
|-----|------|
|
||||
| Apple Silicon (M1 / M2 / M3 / M4) | `BoosApi_x.x.x_aarch64.dmg` |
|
||||
| Intel | `BoosApi_x.x.x_x64.dmg` |
|
||||
|
||||
1. Откройте `.dmg` и перетащите **BoosApi** в папку **«Программы»**.
|
||||
2. Запустите BoosApi. Если macOS блокирует приложение, перейдите в **Системные настройки → Конфиденциальность и безопасность** и нажмите **Всё равно открыть**.
|
||||
|
||||
::: warning macOS: «Приложение повреждено» или «Разработчик не верифицирован»
|
||||
Если вы видите одно из этих сообщений, откройте Терминал и выполните:
|
||||
|
||||
```bash
|
||||
xattr -c /Applications/BoosApi.app
|
||||
```
|
||||
|
||||
Затем снова запустите приложение. Это удаляет флаг карантина, который macOS применяет к неподписанным загрузкам.
|
||||
:::
|
||||
|
||||
### Windows
|
||||
|
||||
| Архитектура | Файл |
|
||||
|------------|------|
|
||||
| x64 (большинство ПК) | `BoosApi_x.x.x_x64-setup.exe` |
|
||||
| ARM64 | `BoosApi_x.x.x_arm64-setup.exe` |
|
||||
|
||||
Запустите установщик и следуйте мастеру. Запустите BoosApi из меню «Пуск» или ярлыка на рабочем столе.
|
||||
|
||||
### Linux
|
||||
|
||||
| Формат | Архитектура | Файл |
|
||||
|--------|------------|------|
|
||||
| Debian / Ubuntu | x64 | `BoosApi_x.x.x_amd64.deb` |
|
||||
| Debian / Ubuntu | ARM64 | `BoosApi_x.x.x_arm64.deb` |
|
||||
| Fedora / openSUSE | x64 | `BoosApi_x.x.x_x86_64.rpm` |
|
||||
| Fedora / openSUSE | ARM64 | `BoosApi_x.x.x_aarch64.rpm` |
|
||||
| Любой дистрибутив | x64 | `BoosApi_x.x.x_amd64.AppImage` |
|
||||
| Любой дистрибутив | ARM64 | `BoosApi_x.x.x_aarch64.AppImage` |
|
||||
|
||||
```bash
|
||||
# Debian / Ubuntu
|
||||
sudo dpkg -i BoosApi_x.x.x_amd64.deb
|
||||
|
||||
# Fedora / openSUSE
|
||||
sudo rpm -i BoosApi_x.x.x_x86_64.rpm
|
||||
|
||||
# AppImage (любой дистрибутив)
|
||||
chmod +x BoosApi_x.x.x_amd64.AppImage
|
||||
./BoosApi_x.x.x_amd64.AppImage
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Начальная настройка
|
||||
|
||||
### 1. Открыть настройки
|
||||
|
||||
Запустите BoosApi и нажмите на **значок шестерёнки** внизу боковой панели, или нажмите <kbd>Cmd/Ctrl</kbd>+<kbd>,</kbd>.
|
||||
|
||||
### 2. Добавить провайдера
|
||||
|
||||
Перейдите в **Настройки → Провайдеры** и нажмите кнопку **+**.
|
||||
|
||||
1. Введите отображаемое имя (например, *OpenAI*).
|
||||
2. Выберите тип провайдера (OpenAI, Anthropic, Google Gemini и т.д.).
|
||||
3. Вставьте ваш API-ключ.
|
||||
4. Подтвердите **Base URL** — официальный endpoint предзаполнен для встроенных типов.
|
||||
|
||||
::: tip
|
||||
Вы можете добавить столько провайдеров, сколько захотите. Каждый провайдер управляет своими ключами API и моделями независимо.
|
||||
:::
|
||||
|
||||
### 3. Получить модели
|
||||
|
||||
Нажмите **Получить модели**, чтобы загрузить список доступных моделей из API провайдера. Вы также можете добавлять ID моделей вручную при необходимости.
|
||||
|
||||
### 4. Установить модель по умолчанию
|
||||
|
||||
Перейдите в **Настройки → Модель по умолчанию** и выберите провайдера и модель, которые новые разговоры должны использовать по умолчанию.
|
||||
|
||||
---
|
||||
|
||||
## Ваш первый разговор
|
||||
|
||||
1. Нажмите **Новый чат** в боковой панели (или нажмите <kbd>Cmd/Ctrl</kbd>+<kbd>N</kbd>).
|
||||
2. Выберите модель из селектора моделей вверху чата.
|
||||
3. Введите сообщение и нажмите <kbd>Enter</kbd>.
|
||||
4. BoosApi транслирует ответ в реальном времени. Модели с поддержкой блоков размышлений (например, Claude, DeepSeek R1) отображают процесс рассуждений в сворачиваемом разделе.
|
||||
|
||||
---
|
||||
|
||||
## Горячие клавиши
|
||||
|
||||
| Сочетание | Действие |
|
||||
|-----------|---------|
|
||||
| <kbd>Cmd/Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>A</kbd> | Показать / скрыть текущее окно |
|
||||
| <kbd>Cmd/Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Alt</kbd>+<kbd>A</kbd> | Показать / скрыть все окна |
|
||||
| <kbd>Cmd/Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>W</kbd> | Закрыть окно |
|
||||
| <kbd>Cmd/Ctrl</kbd>+<kbd>N</kbd> | Новый разговор |
|
||||
| <kbd>Cmd/Ctrl</kbd>+<kbd>,</kbd> | Открыть настройки |
|
||||
| <kbd>Cmd/Ctrl</kbd>+<kbd>K</kbd> | Палитра команд |
|
||||
| <kbd>Cmd/Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>G</kbd> | Переключить API-шлюз |
|
||||
|
||||
---
|
||||
|
||||
## Данные и резервное копирование
|
||||
|
||||
### Каталоги данных
|
||||
|
||||
| Путь | Содержимое |
|
||||
|------|-----------|
|
||||
| `~/.boosapi/` | Состояние приложения — база данных, ключи шифрования, векторная БД, SSL-сертификаты |
|
||||
| `~/Documents/boosapi/` | Файлы пользователя — изображения, документы, резервные копии |
|
||||
|
||||
---
|
||||
|
||||
## Следующие шаги
|
||||
|
||||
- [Настройка провайдеров](./providers) — добавление и управление ИИ-провайдерами
|
||||
- [MCP-серверы](./mcp) — подключение внешних инструментов для расширения возможностей ИИ
|
||||
- [API-шлюз](./gateway) — предоставление провайдеров как локального API-сервера
|
||||
@@ -0,0 +1,64 @@
|
||||
# MCP-серверы
|
||||
|
||||
## Что такое MCP?
|
||||
|
||||
[Model Context Protocol (MCP)](https://modelcontextprotocol.io/) — открытый стандарт, позволяющий ИИ-моделям взаимодействовать с внешними инструментами и источниками данных. BoosApi выступает как MCP-клиент — вы добавляете MCP-серверы, и ИИ может вызывать предоставляемые ими инструменты во время разговора.
|
||||
|
||||
---
|
||||
|
||||
## Транспортные протоколы
|
||||
|
||||
BoosApi поддерживает три транспортных протокола для связи с MCP-серверами:
|
||||
|
||||
| Протокол | Соединение | Сценарий использования | Конфигурация |
|
||||
|---------|-----------|----------------------|-------------|
|
||||
| **Stdio** | Локальный процесс | Инструменты на вашей машине, запускаемые через `npx`, `uvx`, `python` и т.д. | `command` + `args` + опциональный `env` |
|
||||
| **SSE** | Удалённый сервер | Server-Sent Events endpoint на удалённой машине | `url` |
|
||||
| **StreamableHTTP** | Удалённый сервер | HTTP-потоковый endpoint, более новая альтернатива SSE | `url` |
|
||||
|
||||
---
|
||||
|
||||
## Добавление MCP-серверов
|
||||
|
||||
### Создание через форму
|
||||
|
||||
1. Перейдите в **Настройки → MCP-серверы**.
|
||||
2. Нажмите **Добавить MCP-сервер**.
|
||||
3. Введите имя и выберите транспортный протокол.
|
||||
4. Заполните поля для выбранного протокола.
|
||||
5. Нажмите **Сохранить**.
|
||||
|
||||
### Импорт JSON
|
||||
|
||||
Нажмите **Импорт JSON** и вставьте объект конфигурации:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"fetch": {
|
||||
"command": "uvx",
|
||||
"args": ["mcp-server-fetch"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Встроенные инструменты
|
||||
|
||||
| Инструмент | Описание |
|
||||
|-----------|---------|
|
||||
| **@boosapi/fetch** | Загрузка веб-страниц и HTTP-ресурсов |
|
||||
| **@boosapi/search-file** | Поиск файлов в локальной файловой системе |
|
||||
|
||||
---
|
||||
|
||||
## Лимит циклов инструментов
|
||||
|
||||
В Settings -> MCP можно настроить максимальное число последовательных tool-call iterations для MCP-enabled response. Уменьшайте лимит при тестировании неизвестных серверов или увеличивайте его для workflow, где несколько tools должны выполняться цепочкой.
|
||||
|
||||
## Следующие шаги
|
||||
|
||||
- [API-шлюз](./gateway) — предоставление провайдеров как локального API-сервера
|
||||
- [Быстрый старт](./getting-started) — вернуться к руководству по быстрому старту
|
||||
@@ -0,0 +1,145 @@
|
||||
# Настройка провайдеров
|
||||
|
||||
BoosApi одновременно подключается к любому количеству ИИ-провайдеров. У каждого провайдера есть собственные ключи API, список моделей и параметры по умолчанию.
|
||||
|
||||
## Поддерживаемые провайдеры
|
||||
|
||||
| Провайдер | Примеры моделей |
|
||||
|----------|----------------|
|
||||
| **OpenAI** | GPT-4o, GPT-4, o3, o4-mini |
|
||||
| **Anthropic** | Claude 4 Sonnet, Claude 4 Opus, Claude 3.5 Sonnet |
|
||||
| **Google** | Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.0 |
|
||||
| **DeepSeek** | DeepSeek V3, DeepSeek R1 |
|
||||
| **Alibaba Cloud** | Серия Qwen |
|
||||
| **Zhipu AI** | Серия GLM |
|
||||
| **xAI** | Серия Grok |
|
||||
| **OpenAI-совместимый API** | Ollama, vLLM, LiteLLM, сторонние ретрансляторы и т.д. |
|
||||
|
||||
---
|
||||
|
||||
## Добавление провайдера
|
||||
|
||||
1. Перейдите в **Настройки → Провайдеры**.
|
||||
2. Нажмите кнопку **+** в нижнем левом углу.
|
||||
3. Заполните данные провайдера:
|
||||
|
||||
| Поле | Описание |
|
||||
|------|---------|
|
||||
| **Имя** | Отображаемое имя для боковой панели (например, *OpenAI*) |
|
||||
| **Тип** | Тип провайдера — определяет Base URL по умолчанию |
|
||||
| **Иконка** | Опциональная иконка для визуальной идентификации |
|
||||
| **API-ключ** | Секретный ключ из панели вашего провайдера |
|
||||
| **Base URL** | API-endpoint (предзаполнен для встроенных типов) |
|
||||
| **Путь API** | Путь запроса — по умолчанию `/v1/chat/completions` |
|
||||
|
||||
---
|
||||
|
||||
## Импорт по ссылке с сайта
|
||||
|
||||
Сайты провайдеров, панели relay-сервисов, частные платформы моделей или локальные gateway-страницы могут предоставлять ссылку **Открыть в BoosApi**. После клика браузер запускает настольное приложение BoosApi, BoosApi переходит в **Настройки → Провайдеры**, показывает окно подтверждения и импортирует конфигурацию только после подтверждения пользователем.
|
||||
|
||||
### Сценарий пользователя
|
||||
|
||||
1. Установите и откройте версию BoosApi, которая поддерживает ссылки провайдеров.
|
||||
2. В браузере нажмите ссылку **Открыть в BoosApi** на странице провайдера.
|
||||
3. Проверьте в BoosApi имя провайдера, Base URL, тип провайдера и префикс API-ключа.
|
||||
4. BoosApi повторно использует существующего провайдера с тем же сочетанием **Base URL + тип**. Если такого провайдера нет, он будет создан, а API-ключ будет добавлен только если его еще нет.
|
||||
|
||||
BoosApi не проверяет ключ и не загружает модели автоматически. После импорта нажмите **Получить модели** или добавьте модели вручную.
|
||||
|
||||
### Формат ссылки
|
||||
|
||||
```text
|
||||
boosapi://providers?name=<name>&baseurl=<base-url>&apikey=<api-key>&type=<provider-type>
|
||||
```
|
||||
|
||||
Пример:
|
||||
|
||||
```text
|
||||
boosapi://providers?name=OpenAI&baseurl=https%3A%2F%2Fapi.openai.com&apikey=sk-xxx&type=openai
|
||||
```
|
||||
|
||||
### Параметры
|
||||
|
||||
| Параметр | Обязателен | Описание |
|
||||
|----------|------------|----------|
|
||||
| `name` | Да | Отображаемое имя в BoosApi, например `OpenAI` или `My Relay` |
|
||||
| `baseurl` | Да | URL-кодированный Base URL. Разрешены только `http` и `https`; query и hash отклоняются. |
|
||||
| `apikey` | Да | API-ключ для сохранения в BoosApi. В окне подтверждения BoosApi показывает только префикс. |
|
||||
| `type` | Да | Тип провайдера. Допустимые значения: `openai`, `openai_responses`, `anthropic`, `gemini`, `custom`. |
|
||||
|
||||
`baseurl` может использовать существующий force-суффикс BoosApi, например `https://example.com!`. При импорте по ссылке `api_path` не задается; BoosApi продолжает использовать путь по умолчанию для выбранного типа провайдера.
|
||||
|
||||
### Настройка сайта
|
||||
|
||||
Кодируйте все динамические значения с помощью `encodeURIComponent` или `URLSearchParams`:
|
||||
|
||||
```html
|
||||
<a id="open-boosapi" href="#">Открыть в BoosApi</a>
|
||||
|
||||
<script>
|
||||
const provider = {
|
||||
name: 'My Relay',
|
||||
baseurl: 'https://api.example.com',
|
||||
apikey: 'sk-user-key',
|
||||
type: 'openai',
|
||||
};
|
||||
|
||||
const params = new URLSearchParams({
|
||||
name: provider.name,
|
||||
baseurl: provider.baseurl,
|
||||
apikey: provider.apikey,
|
||||
type: provider.type,
|
||||
});
|
||||
|
||||
document.getElementById('open-boosapi').href = `boosapi://providers?${params.toString()}`;
|
||||
</script>
|
||||
```
|
||||
|
||||
Если ваш сервис позволяет создавать API-ключи онлайн, формируйте ссылку только после входа пользователя и явного выбора или создания ключа.
|
||||
|
||||
::: warning Безопасность
|
||||
API-ключ в URL может попасть в историю браузера, логи, расширения или аналитические инструменты. Не размещайте реальные ключи на публичных страницах, в статическом HTML или в редиректах третьих сторон. Лучше генерировать ссылку на приватной странице аккаунта после подтверждения пользователя.
|
||||
:::
|
||||
|
||||
::: tip Тестирование
|
||||
`boosapi://` — пользовательский протокол, который регистрируется установленным настольным приложением. Один только сайт или dev-сервер Vite не регистрирует этот протокол. Если ссылка не открывает BoosApi, сначала установите или пересоберите последнюю настольную версию BoosApi.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Импорт из CC Switch
|
||||
|
||||
BoosApi может сканировать конфигурации провайдеров CC Switch в Settings -> Providers. Проверьте кандидатов, выберите импортируемые строки и импортируйте providers, Base URLs, API keys и model lists. OAuth-only entries и записи без reusable keys пропускаются с видимой причиной.
|
||||
|
||||
## Расширенное тело запроса модели
|
||||
|
||||
Для каждой модели можно задать extra_body, JSON-объект, который добавляется в OpenAI-compatible Chat Completions request. Это удобно для provider-specific options вроде enable_thinking. BoosApi валидирует JSON и блокирует перезапись model, messages, stream, tools и базовых sampling fields.
|
||||
|
||||
## Ротация нескольких ключей
|
||||
|
||||
BoosApi поддерживает несколько ключей API на провайдера. Нажмите **Добавить ключ** в панели деталей провайдера.
|
||||
|
||||
---
|
||||
|
||||
## Управление моделями
|
||||
|
||||
Нажмите **Получить модели** для загрузки полного списка доступных моделей. Вы также можете вводить ID моделей вручную.
|
||||
|
||||
Каждая модель может иметь собственные параметры по умолчанию: температура, максимальное количество токенов, Top P, штраф за частоту, штраф за присутствие.
|
||||
|
||||
---
|
||||
|
||||
## Ollama (локальные модели)
|
||||
|
||||
1. Установите и запустите [Ollama](https://ollama.com/).
|
||||
2. В BoosApi создайте нового провайдера с типом **OpenAI**.
|
||||
3. Установите **Base URL** равным `http://localhost:11434`.
|
||||
4. Нажмите **Получить модели** для обнаружения локально загруженных моделей.
|
||||
|
||||
---
|
||||
|
||||
## Следующие шаги
|
||||
|
||||
- [MCP-серверы](./mcp) — подключение внешних инструментов для расширения возможностей ИИ
|
||||
- [API-шлюз](./gateway) — предоставление провайдеров как локального API-сервера
|
||||
Reference in New Issue
Block a user