chore(docs): i18n sync (#15417)

This commit is contained in:
Adam
2026-02-28 15:27:11 -06:00
committed by GitHub
parent 971bd30516
commit e1e18c7abd
174 changed files with 6358 additions and 4392 deletions

View File

@@ -558,6 +558,7 @@ opencode можно настроить с помощью переменных с
| `OPENCODE_AUTO_SHARE` | логическое значение | Автоматически делиться сеансами |
| `OPENCODE_GIT_BASH_PATH` | строка | Путь к исполняемому файлу Git Bash в Windows |
| `OPENCODE_CONFIG` | строка | Путь к файлу конфигурации |
| `OPENCODE_TUI_CONFIG` | строка | Путь к файлу конфигурации TUI |
| `OPENCODE_CONFIG_DIR` | строка | Путь к каталогу конфигурации |
| `OPENCODE_CONFIG_CONTENT` | строка | Встроенное содержимое конфигурации json |
| `OPENCODE_DISABLE_AUTOUPDATE` | логическое значение | Отключить автоматическую проверку обновлений |

View File

@@ -97,6 +97,8 @@ opencode поддерживает форматы **JSON** и **JSONC** (JSON с
Поместите глобальную конфигурацию opencode в `~/.config/opencode/opencode.json`. Используйте глобальную конфигурацию для общепользовательских настроек, таких как темы, поставщики или привязки клавиш.
Для настроек, специфичных для TUI, используйте `~/.config/opencode/tui.json`.
Глобальная конфигурация переопределяет настройки по умолчанию для удаленной организации.
---
@@ -105,6 +107,8 @@ opencode поддерживает форматы **JSON** и **JSONC** (JSON с
Добавьте `opencode.json` в корень вашего проекта. Конфигурация проекта имеет наивысший приоритет среди стандартных файлов конфигурации — она переопределяет как глобальные, так и удаленные конфигурации.
Для настроек TUI, специфичных для проекта, добавьте `tui.json` рядом с ним.
:::tip
Поместите конфигурацию конкретного проекта в корень вашего проекта.
:::
@@ -145,34 +149,32 @@ opencode run "Hello world"
Файл конфигурации имеет схему, определенную в [**`opencode.ai/config.json`**](https://opencode.ai/config.json).
Конфигурация TUI использует [**`opencode.ai/tui.json`**](https://opencode.ai/tui.json).
Ваш редактор должен иметь возможность проверять и автозаполнять данные на основе схемы.
---
### TUI
Вы можете настроить параметры TUI с помощью опции `tui`.
Используйте специальный файл `tui.json` (или `tui.jsonc`) для настроек, специфичных для TUI.
```json title="opencode.json"
```json title="tui.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
"$schema": "https://opencode.ai/tui.json",
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
```
Доступные варианты:
Используйте `OPENCODE_TUI_CONFIG`, чтобы указать на пользовательский файл конфигурации TUI.
- `scroll_acceleration.enabled` — включить ускорение прокрутки в стиле MacOS. **Имеет приоритет над `scroll_speed`.**
- `scroll_speed` — пользовательский множитель скорости прокрутки (по умолчанию: `3`, минимум: `1`). Игнорируется, если `scroll_acceleration.enabled` равен `true`.
- `diff_style` — управление рендерингом различий. `"auto"` адаптируется к ширине terminal, `"stacked"` всегда отображает один столбец.
Устаревшие ключи `theme`, `keybinds` и `tui` в `opencode.json` устарели и автоматически переносятся, когда это возможно.
[Подробнее об использовании TUI можно узнать здесь](/docs/tui).
[Подробнее об использовании TUI можно узнать здесь](/docs/tui#configure).
---
@@ -298,12 +300,12 @@ Amazon Bedrock поддерживает конфигурацию, специфи
### theme
Вы можете настроить тему, которую хотите использовать, в конфигурации opencode с помощью опции `theme`.
Установите тему пользовательского интерфейса в `tui.json`.
```json title="opencode.json"
```json title="tui.json"
{
"$schema": "https://opencode.ai/config.json",
"theme": ""
"$schema": "https://opencode.ai/tui.json",
"theme": "tokyonight"
}
```
@@ -403,11 +405,11 @@ Amazon Bedrock поддерживает конфигурацию, специфи
### Сочетания клавиш
Вы можете настроить привязки клавиш с помощью опции `keybinds`.
Настройте привязки клавиш в `tui.json`.
```json title="opencode.json"
```json title="tui.json"
{
"$schema": "https://opencode.ai/config.json",
"$schema": "https://opencode.ai/tui.json",
"keybinds": {}
}
```
@@ -487,13 +489,15 @@ opencode автоматически загрузит все новые обно
"$schema": "https://opencode.ai/config.json",
"compaction": {
"auto": true,
"prune": true
"prune": true,
"reserved": 10000
}
}
```
- `auto` — автоматически сжимать сеанс при заполнении контекста (по умолчанию: `true`).
- `prune` — удалить старые выходные данные инструмента для сохранения токенов (по умолчанию: `true`).
- `reserved` — Буфер токенов для сжатия. Оставляет достаточное окно, чтобы избежать переполнения во время сжатия.
---

View File

@@ -3,11 +3,11 @@ title: Сочетания клавиш
description: Настройте свои сочетания клавиш.
---
opencode имеет список сочетаний клавиш, которые вы можете настроить через конфигурацию opencode.
opencode имеет список сочетаний клавиш, которые вы можете настроить через `tui.json`.
```json title="opencode.json"
```json title="tui.json"
{
"$schema": "https://opencode.ai/config.json",
"$schema": "https://opencode.ai/tui.json",
"keybinds": {
"leader": "ctrl+x",
"app_exit": "ctrl+c,ctrl+d,<leader>q",
@@ -117,11 +117,11 @@ opencode использует клавишу `leader` для большинст
## Отключение привязки клавиш
Вы можете отключить привязку клавиш, добавив ключ в свою конфигурацию со значением «none».
Вы можете отключить привязку клавиш, добавив ключ в `tui.json` со значением «none».
```json title="opencode.json"
```json title="tui.json"
{
"$schema": "https://opencode.ai/config.json",
"$schema": "https://opencode.ai/tui.json",
"keybinds": {
"session_compact": "none"
}

View File

@@ -57,7 +57,39 @@ OpenCode Zen — это список моделей, предоставленн
Если вы новичок, мы рекомендуем начать с OpenCode Zen.
:::
1. Запустите команду `/connect` в TUI, выберите opencode и перейдите по адресу [opencode.ai/auth](https://opencode.ai/auth).
1. Запустите команду `/connect` в TUI, выберите `OpenCode Zen` и перейдите по адресу [opencode.ai/auth](https://opencode.ai/zen).
```txt
/connect
```
2. Войдите в систему, добавьте свои платежные данные и скопируйте ключ API.
3. Вставьте свой ключ API.
```txt
┌ API key
└ enter
```
4. Запустите `/models` в TUI, чтобы просмотреть список рекомендуемых нами моделей.
```txt
/models
```
Он работает как любой другой поставщик в opencode и его использование совершенно необязательно.
---
## OpenCode Go
OpenCode Go — это недорогой план подписки, обеспечивающий надежный доступ к популярным открытым моделям кодирования, предоставляемым командой opencode, которые были
протестированы и проверены на хорошую работу с opencode.
1. Запустите команду `/connect` в TUI, выберите `OpenCode Go` и перейдите по адресу [opencode.ai/auth](https://opencode.ai/zen).
```txt
/connect
@@ -1479,6 +1511,39 @@ SAP AI Core предоставляет доступ к более чем 40 мо
---
### STACKIT
STACKIT AI Model Serving предоставляет полностью управляемую суверенную среду хостинга для моделей ИИ, ориентированную на LLM, таких как Llama, Mistral и Qwen, с максимальным суверенитетом данных в европейской инфраструктуре.
1. Перейдите на [портал STACKIT](https://portal.stackit.cloud), перейдите в **AI Model Serving** и создайте токен аутентификации для своего проекта.
:::tip
Вам необходима учетная запись клиента STACKIT, учетная запись пользователя и проект перед созданием токенов аутентификации.
:::
2. Запустите команду `/connect` и найдите **STACKIT**.
```txt
/connect
```
3. Введите свой токен аутентификации STACKIT AI Model Serving.
```txt
┌ API key
└ enter
```
4. Запустите команду `/models`, чтобы выбрать одну из доступных моделей, например _Qwen3-VL 235B_ или _Llama 3.3 70B_.
```txt
/models
```
---
### OVHcloud AI Endpoints
1. Перейдите к [OVHcloud Panel](https://ovh.com/manager). Перейдите в раздел `Public Cloud`, `AI & Machine Learning` > `AI Endpoints` и на вкладке `API Keys` нажмите **Создать новый ключ API**.

View File

@@ -117,6 +117,78 @@ try {
---
## Структурированный вывод
Вы можете запросить структурированный вывод JSON от модели, указав `format` со схемой JSON. Модель будет использовать инструмент `StructuredOutput` для возврата проверенного JSON, соответствующего вашей схеме.
### Основное использование
```typescript
const result = await client.session.prompt({
path: { id: sessionId },
body: {
parts: [{ type: "text", text: "Research Anthropic and provide company info" }],
format: {
type: "json_schema",
schema: {
type: "object",
properties: {
company: { type: "string", description: "Company name" },
founded: { type: "number", description: "Year founded" },
products: {
type: "array",
items: { type: "string" },
description: "Main products",
},
},
required: ["company", "founded"],
},
},
},
})
// Access the structured output
console.log(result.data.info.structured_output)
// { company: "Anthropic", founded: 2021, products: ["Claude", "Claude API"] }
```
### Типы форматов вывода
| Тип | Описание |
| ------------- | ------------------------------------------------------------------------- |
| `text` | По умолчанию. Стандартный текстовый ответ (без структурированного вывода) |
| `json_schema` | Возвращает проверенный JSON, соответствующий предоставленной схеме |
### Формат схемы JSON
При использовании `type: 'json_schema'`, укажите:
| Поле | Тип | Описание |
| ------------ | --------------- | ---------------------------------------------------------------------- |
| `type` | `'json_schema'` | Обязательно. Указывает режим схемы JSON |
| `schema` | `object` | Обязательно. Объект JSON Schema, определяющий структуру вывода |
| `retryCount` | `number` | Необязательно. Количество повторных попыток проверки (по умолчанию: 2) |
### Обработка ошибок
Если модель не может выдать действительный структурированный вывод после всех повторных попыток, ответ будет включать `StructuredOutputError`:
```typescript
if (result.data.info.error?.name === "StructuredOutputError") {
console.error("Failed to produce structured output:", result.data.info.error.message)
console.error("Attempts:", result.data.info.error.retries)
}
```
### Лучшие практики
1. **Предоставляйте четкие описания** в свойствах вашей схемы, чтобы помочь модели понять, какие данные извлекать
2. **Используйте `required`**, чтобы указать, какие поля должны присутствовать
3. **Делайте схемы сфокусированными** — сложные вложенные схемы могут быть труднее для правильного заполнения моделью
4. **Устанавливайте соответствующий `retryCount`** — увеличивайте для сложных схем, уменьшайте для простых
---
## API
SDK предоставляет все серверные API через типобезопасный клиент.
@@ -226,27 +298,27 @@ const { providers, default: defaults } = await client.config.providers()
### Сессии
| Метод | Описание | Примечания |
| ---------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `session.list()` | List sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
| `session.get({ path })` | Get session | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.children({ path })` | List child sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
| `session.create({ body })` | Create session | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.delete({ path })` | Delete session | Returns `boolean` |
| `session.update({ path, body })` | Update session properties | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.init({ path, body })` | Analyze app and create `AGENTS.md` | Returns `boolean` |
| `session.abort({ path })` | Abort a running session | Returns `boolean` |
| `session.share({ path })` | Share session | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.unshare({ path })` | Unshare session | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.summarize({ path, body })` | Summarize session | Returns `boolean` |
| `session.messages({ path })` | List messages in a session | Returns `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}[]` |
| `session.message({ path })` | Get message details | Returns `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.prompt({ path, body })` | Send prompt message | `body.noReply: true` returns UserMessage (context only). Default returns <a href={typesUrl}><code>AssistantMessage</code></a> with AI response |
| `session.command({ path, body })` | Send command to session | Returns `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.shell({ path, body })` | Run a shell command | Returns <a href={typesUrl}><code>AssistantMessage</code></a> |
| `session.revert({ path, body })` | Revert a message | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.unrevert({ path })` | Restore reverted messages | Returns <a href={typesUrl}><code>Session</code></a> |
| `postSessionByIdPermissionsByPermissionId({ path, body })` | Respond to a permission request | Returns `boolean` |
| Метод | Описание | Примечания |
| ---------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `session.list()` | List sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
| `session.get({ path })` | Get session | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.children({ path })` | List child sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
| `session.create({ body })` | Create session | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.delete({ path })` | Delete session | Returns `boolean` |
| `session.update({ path, body })` | Update session properties | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.init({ path, body })` | Analyze app and create `AGENTS.md` | Returns `boolean` |
| `session.abort({ path })` | Abort a running session | Returns `boolean` |
| `session.share({ path })` | Share session | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.unshare({ path })` | Unshare session | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.summarize({ path, body })` | Summarize session | Returns `boolean` |
| `session.messages({ path })` | List messages in a session | Returns `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}[]` |
| `session.message({ path })` | Get message details | Returns `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.prompt({ path, body })` | Send prompt message | `body.noReply: true` возвращает UserMessage (только контекст). По умолчанию возвращает <a href={typesUrl}><code>AssistantMessage</code></a> с ответом ИИ. Поддерживает `body.outputFormat` для [структурированного вывода](#структурированный-вывод) |
| `session.command({ path, body })` | Send command to session | Returns `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| `session.shell({ path, body })` | Run a shell command | Returns <a href={typesUrl}><code>AssistantMessage</code></a> |
| `session.revert({ path, body })` | Revert a message | Returns <a href={typesUrl}><code>Session</code></a> |
| `session.unrevert({ path })` | Restore reverted messages | Returns <a href={typesUrl}><code>Session</code></a> |
| `postSessionByIdPermissionsByPermissionId({ path, body })` | Respond to a permission request | Returns `boolean` |
---

View File

@@ -18,13 +18,13 @@ opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
#### Параметры
| Флаг | Описание | По умолчанию |
| --------------- | ----------------------------------- | ---------------- |
| `--port` | Port to listen on | `4096` |
| `--hostname` | Hostname to listen on | `127.0.0.1` |
| `--mdns` | Enable mDNS discovery | `false` |
| `--mdns-domain` | Custom domain name for mDNS service | `opencode.local` |
| `--cors` | Additional browser origins to allow | `[]` |
| Флаг | Описание | По умолчанию |
| --------------- | ------------------------------------------- | ---------------- |
| `--port` | Порт для прослушивания | `4096` |
| `--hostname` | Имя хоста для прослушивания | `127.0.0.1` |
| `--mdns` | Включить обнаружение mDNS | `false` |
| `--mdns-domain` | Пользовательское доменное имя для mDNS | `opencode.local` |
| `--cors` | Разрешенные дополнительные источники (CORS) | `[]` |
`--cors` можно передать несколько раз:
@@ -89,10 +89,10 @@ For example, `http://localhost:4096/doc`. Use the spec to generate clients or in
### Глобальный
| Метод | Путь | Описание | Ответ |
| ----- | ---------------- | ------------------------------ | ------------------------------------ |
| `GET` | `/global/health` | Get server health and version | `{ healthy: true, version: string }` |
| `GET` | `/global/event` | Get global events (SSE stream) | Event stream |
| Метод | Путь | Описание | Ответ |
| ----- | ---------------- | --------------------------------------- | ------------------------------------ |
| `GET` | `/global/health` | Получить состояние и версию сервера | `{ healthy: true, version: string }` |
| `GET` | `/global/event` | Получить глобальные события (поток SSE) | Поток событий |
---
@@ -100,105 +100,105 @@ For example, `http://localhost:4096/doc`. Use the spec to generate clients or in
| Метод | Путь | Описание | Ответ |
| ----- | ------------------ | ----------------------- | --------------------------------------------- |
| `GET` | `/project` | List all projects | <a href={typesUrl}><code>Project[]</code></a> |
| `GET` | `/project/current` | Get the current project | <a href={typesUrl}><code>Project</code></a> |
| `GET` | `/project` | Список всех проектов | <a href={typesUrl}><code>Project[]</code></a> |
| `GET` | `/project/current` | Получить текущий проект | <a href={typesUrl}><code>Project</code></a> |
---
### Путь и система контроля версий
| Метод | Путь | Описание | Ответ |
| ----- | ------- | ------------------------------------ | ------------------------------------------- |
| `GET` | `/path` | Get the current path | <a href={typesUrl}><code>Path</code></a> |
| `GET` | `/vcs` | Get VCS info for the current project | <a href={typesUrl}><code>VcsInfo</code></a> |
| Метод | Путь | Описание | Ответ |
| ----- | ------- | ---------------------------------------------- | ------------------------------------------- |
| `GET` | `/path` | Получить текущий путь | <a href={typesUrl}><code>Path</code></a> |
| `GET` | `/vcs` | Получить информацию о VCS для текущего проекта | <a href={typesUrl}><code>VcsInfo</code></a> |
---
### Экземпляр
| Метод | Путь | Описание | Ответ |
| ------ | ------------------- | ---------------------------- | --------- |
| `POST` | `/instance/dispose` | Dispose the current instance | `boolean` |
| Метод | Путь | Описание | Ответ |
| ------ | ------------------- | ------------------------- | --------- |
| `POST` | `/instance/dispose` | Удалить текущий экземпляр | `boolean` |
---
### Конфигурация
| Метод | Путь | Описание | Ответ |
| ------- | ------------------- | --------------------------------- | ---------------------------------------------------------------------------------------- |
| `GET` | `/config` | Get config info | <a href={typesUrl}><code>Config</code></a> |
| `PATCH` | `/config` | Update config | <a href={typesUrl}><code>Config</code></a> |
| `GET` | `/config/providers` | List providers and default models | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
| Метод | Путь | Описание | Ответ |
| ------- | ------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------- |
| `GET` | `/config` | Получить информацию о конфигурации | <a href={typesUrl}><code>Config</code></a> |
| `PATCH` | `/config` | Обновить конфигурацию | <a href={typesUrl}><code>Config</code></a> |
| `GET` | `/config/providers` | Список провайдеров и моделей по умолчанию | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
---
### Поставщик
| Метод | Путь | Описание | Ответ |
| ------ | -------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- |
| `GET` | `/provider` | List all providers | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
| `GET` | `/provider/auth` | Get provider authentication methods | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | Authorize a provider using OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` | Handle OAuth callback for a provider | `boolean` |
| Метод | Путь | Описание | Ответ |
| ------ | -------------------------------- | ----------------------------------------- | ----------------------------------------------------------------------------------- |
| `GET` | `/provider` | Список всех провайдеров | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
| `GET` | `/provider/auth` | Получить методы аутентификации провайдера | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | Авторизация провайдера через OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` | Обработка callback OAuth для провайдера | `boolean` |
---
### Сессии
| Метод | Путь | Описание | Примечания |
| -------- | ---------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- |
| `GET` | `/session` | List all sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
| `POST` | `/session` | Create a new session | body: `{ parentID?, title? }`, returns <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/status` | Get session status for all sessions | Returns `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
| `GET` | `/session/:id` | Get session details | Returns <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id` | Delete a session and all its data | Returns `boolean` |
| `PATCH` | `/session/:id` | Update session properties | body: `{ title? }`, returns <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/children` | Get a session's child sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
| `GET` | `/session/:id/todo` | Get the todo list for a session | Returns <a href={typesUrl}><code>Todo[]</code></a> |
| `POST` | `/session/:id/init` | Analyze app and create `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returns `boolean` |
| `POST` | `/session/:id/fork` | Fork an existing session at a message | body: `{ messageID? }`, returns <a href={typesUrl}><code>Session</code></a> |
| `POST` | `/session/:id/abort` | Abort a running session | Returns `boolean` |
| `POST` | `/session/:id/share` | Share a session | Returns <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id/share` | Unshare a session | Returns <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/diff` | Get the diff for this session | query: `messageID?`, returns <a href={typesUrl}><code>FileDiff[]</code></a> |
| `POST` | `/session/:id/summarize` | Summarize the session | body: `{ providerID, modelID }`, returns `boolean` |
| `POST` | `/session/:id/revert` | Revert a message | body: `{ messageID, partID? }`, returns `boolean` |
| `POST` | `/session/:id/unrevert` | Restore all reverted messages | Returns `boolean` |
| `POST` | `/session/:id/permissions/:permissionID` | Respond to a permission request | body: `{ response, remember? }`, returns `boolean` |
| Метод | Путь | Описание | Примечания |
| -------- | ---------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------- |
| `GET` | `/session` | Список всех сессий | Возвращает <a href={typesUrl}><code>Session[]</code></a> |
| `POST` | `/session` | Создать новую сессию | body: `{ parentID?, title? }`, возвращает <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/status` | Получить статус всех сессий | Возвращает `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
| `GET` | `/session/:id` | Получить детали сессии | Возвращает <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id` | Удалить сессию и все её данные | Возвращает `boolean` |
| `PATCH` | `/session/:id` | Обновить свойства сессии | body: `{ title? }`, возвращает <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/children` | Получить дочерние сессии | Возвращает <a href={typesUrl}><code>Session[]</code></a> |
| `GET` | `/session/:id/todo` | Получить список задач для сессии | Возвращает <a href={typesUrl}><code>Todo[]</code></a> |
| `POST` | `/session/:id/init` | Анализ приложения и создание `AGENTS.md` | body: `{ messageID, providerID, modelID }`, возвращает `boolean` |
| `POST` | `/session/:id/fork` | Ответвление сессии от сообщения | body: `{ messageID? }`, возвращает <a href={typesUrl}><code>Session</code></a> |
| `POST` | `/session/:id/abort` | Прервать запущенную сессию | Возвращает `boolean` |
| `POST` | `/session/:id/share` | Поделиться сессией | Возвращает <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id/share` | Отменить общий доступ к сессии | Возвращает <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/diff` | Получить diff для этой сессии | query: `messageID?`, возвращает <a href={typesUrl}><code>FileDiff[]</code></a> |
| `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` | List messages in a session | query: `limit?`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
| `POST` | `/session/:id/message` | Send a message and wait for response | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `GET` | `/session/:id/message/:messageID` | Get message details | Returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/prompt_async` | Send a message asynchronously (no wait) | body: same as `/session/:id/message`, returns `204 No Content` |
| `POST` | `/session/:id/command` | Execute a slash command | body: `{ messageID?, agent?, model?, command, arguments }`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/shell` | Run a shell command | body: `{ agent, model?, command }`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| Метод | Путь | Описание | Примечания |
| ------ | --------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `GET` | `/session/:id/message` | Список сообщений в сессии | query: `limit?`, возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
| `POST` | `/session/:id/message` | Отправить сообщение и ждать ответа | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `GET` | `/session/:id/message/:messageID` | Получить детали сообщения | Возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/prompt_async` | Отправить сообщение асинхронно (без ожидания) | body: как в `/session/:id/message`, возвращает `204 No Content` |
| `POST` | `/session/:id/command` | Выполнить слэш-команду | body: `{ messageID?, agent?, model?, command, arguments }`, возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/shell` | Запустить команду оболочки | body: `{ agent, model?, command }`, возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
---
### Команды
| Метод | Путь | Описание | Ответ |
| ----- | ---------- | ----------------- | --------------------------------------------- |
| `GET` | `/command` | List all commands | <a href={typesUrl}><code>Command[]</code></a> |
| Метод | Путь | Описание | Ответ |
| ----- | ---------- | ------------------ | --------------------------------------------- |
| `GET` | `/command` | Список всех команд | <a href={typesUrl}><code>Command[]</code></a> |
---
### Файлы
| Метод | Путь | Описание | Ответ |
| ----- | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------- |
| `GET` | `/find?pattern=<pat>` | Search for text in files | Array of match objects with `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
| `GET` | `/find/file?query=<q>` | Find files and directories by name | `string[]` (paths) |
| `GET` | `/find/symbol?query=<q>` | Find workspace symbols | <a href={typesUrl}><code>Symbol[]</code></a> |
| `GET` | `/file?path=<path>` | List files and directories | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` | Read a file | <a href={typesUrl}><code>FileContent</code></a> |
| `GET` | `/file/status` | Get status for tracked files | <a href={typesUrl}><code>File[]</code></a> |
| Метод | Путь | Описание | Ответ |
| ----- | ------------------------ | ------------------------------------ | -------------------------------------------------------------------------------------------- |
| `GET` | `/find?pattern=<pat>` | Поиск текста в файлах | Массив объектов совпадения с `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
| `GET` | `/find/file?query=<q>` | Поиск файлов и директорий по имени | `string[]` (пути) |
| `GET` | `/find/symbol?query=<q>` | Поиск символов рабочего пространства | <a href={typesUrl}><code>Symbol[]</code></a> |
| `GET` | `/file?path=<path>` | Список файлов и директорий | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` | Прочитать файл | <a href={typesUrl}><code>FileContent</code></a> |
| `GET` | `/file/status` | Получить статус отслеживаемых файлов | <a href={typesUrl}><code>File[]</code></a> |
#### `/find/file` параметры запроса
@@ -212,76 +212,76 @@ For example, `http://localhost:4096/doc`. Use the spec to generate clients or in
### Инструменты (Экспериментальные)
| Метод | Путь | Описание | Ответ |
| ----- | ------------------------------------------- | ---------------------------------------- | -------------------------------------------- |
| `GET` | `/experimental/tool/ids` | List all tool IDs | <a href={typesUrl}><code>ToolIDs</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | List tools with JSON schemas for a model | <a href={typesUrl}><code>ToolList</code></a> |
| Метод | Путь | Описание | Ответ |
| ----- | ------------------------------------------- | ---------------------------------------------- | -------------------------------------------- |
| `GET` | `/experimental/tool/ids` | Список всех идентификаторов инструментов | <a href={typesUrl}><code>ToolIDs</code></a> |
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | Список инструментов со схемами JSON для модели | <a href={typesUrl}><code>ToolList</code></a> |
---
### LSP, форматтеры и MCP
| Метод | Путь | Описание | Ответ |
| ------ | ------------ | -------------------------- | -------------------------------------------------------- |
| `GET` | `/lsp` | Get LSP server status | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| `GET` | `/formatter` | Get formatter status | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| `GET` | `/mcp` | Get MCP server status | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | Add MCP server dynamically | body: `{ name, config }`, returns MCP status object |
| Метод | Путь | Описание | Ответ |
| ------ | ------------ | ------------------------------- | -------------------------------------------------------- |
| `GET` | `/lsp` | Получить статус сервера LSP | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| `GET` | `/formatter` | Получить статус форматера | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| `GET` | `/mcp` | Получить статус сервера MCP | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | Добавить сервер MCP динамически | body: `{ name, config }`, возвращает статус объекта MCP |
---
### Агенты
| Метод | Путь | Описание | Ответ |
| ----- | -------- | ------------------------- | ------------------------------------------- |
| `GET` | `/agent` | List all available agents | <a href={typesUrl}><code>Agent[]</code></a> |
| Метод | Путь | Описание | Ответ |
| ----- | -------- | ----------------------------- | ------------------------------------------- |
| `GET` | `/agent` | Список всех доступных агентов | <a href={typesUrl}><code>Agent[]</code></a> |
---
### Ведение журнала
| Метод | Путь | Описание | Ответ |
| ------ | ------ | ------------------------------------------------------------ | --------- |
| `POST` | `/log` | Write log entry. Body: `{ service, level, message, extra? }` | `boolean` |
| Метод | Путь | Описание | Ответ |
| ------ | ------ | --------------------------------------------------------------------- | --------- |
| `POST` | `/log` | Записать запись в журнал. Body: `{ service, level, message, extra? }` | `boolean` |
---
### TUI
| Метод | Путь | Описание | Ответ |
| ------ | ----------------------- | ------------------------------------------- | ---------------------- |
| `POST` | `/tui/append-prompt` | Append text to the prompt | `boolean` |
| `POST` | `/tui/open-help` | Open the help dialog | `boolean` |
| `POST` | `/tui/open-sessions` | Open the session selector | `boolean` |
| `POST` | `/tui/open-themes` | Open the theme selector | `boolean` |
| `POST` | `/tui/open-models` | Open the model selector | `boolean` |
| `POST` | `/tui/submit-prompt` | Submit the current prompt | `boolean` |
| `POST` | `/tui/clear-prompt` | Clear the prompt | `boolean` |
| `POST` | `/tui/execute-command` | Execute a command (`{ command }`) | `boolean` |
| `POST` | `/tui/show-toast` | Show toast (`{ title?, message, variant }`) | `boolean` |
| `GET` | `/tui/control/next` | Wait for the next control request | Control request object |
| `POST` | `/tui/control/response` | Respond to a control request (`{ body }`) | `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` | Set authentication credentials. Body must match provider schema | `boolean` |
| Метод | Путь | Описание | Ответ |
| ----- | ----------- | -------------------------------------------------------------------------------------- | --------- |
| `PUT` | `/auth/:id` | Установить учетные данные аутентификации. Body должен соответствовать схеме провайдера | `boolean` |
---
### События
| Метод | Путь | Описание | Ответ |
| ----- | -------- | ----------------------------------------------------------------------------- | ------------------------- |
| `GET` | `/event` | Server-sent events stream. First event is `server.connected`, then bus events | Server-sent events stream |
| Метод | Путь | Описание | Ответ |
| ----- | -------- | --------------------------------------------------------------------------------------------- | ------------------------------------ |
| `GET` | `/event` | Поток событий, отправляемых сервером. Первое событие — `server.connected`, затем события шины | Поток событий, отправляемых сервером |
---
### Документы
| Метод | Путь | Описание | Ответ |
| ----- | ------ | ------------------------- | --------------------------- |
| `GET` | `/doc` | OpenAPI 3.1 specification | HTML page with OpenAPI spec |
| Метод | Путь | Описание | Ответ |
| ----- | ------ | ------------------------ | -------------------------------------- |
| `GET` | `/doc` | Спецификация OpenAPI 3.1 | HTML-страница со спецификацией OpenAPI |

View File

@@ -61,11 +61,11 @@ opencode поставляется с несколькими встроенным
## Использование темы
Вы можете выбрать тему, вызвав выбор темы с помощью команды `/theme`. Или вы можете указать это в файле [config](/docs/config).
Вы можете выбрать тему, вызвав выбор темы с помощью команды `/theme`. Или вы можете указать это в файле [tui.json](/docs/config#tui).
```json title="opencode.json" {3}
```json title="tui.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"$schema": "https://opencode.ai/tui.json",
"theme": "tokyonight"
}
```

View File

@@ -355,24 +355,34 @@ How is auth handled in @packages/functions/src/api/index.ts?
## Настройка
Вы можете настроить поведение TUI через файл конфигурации opencode.
Вы можете настроить поведение TUI через `tui.json` (или `tui.jsonc`).
```json title="opencode.json"
```json title="tui.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
}
}
"$schema": "https://opencode.ai/tui.json",
"theme": "opencode",
"keybinds": {
"leader": "ctrl+x"
},
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
```
Это отдельный файл от `opencode.json`, который настраивает поведение сервера/выполнения.
### Параметры
- `scroll_acceleration` — включите ускорение прокрутки в стиле macOS для плавной и естественной прокрутки. Если этот параметр включен, скорость прокрутки увеличивается при быстрой прокрутке и остается точной при более медленных движениях. **Этот параметр имеет приоритет над `scroll_speed` и переопределяет его, если он включен.**
- `scroll_speed` — контролирует скорость прокрутки TUI при использовании команд прокрутки (минимум: `1`). По умолчанию `3`. **Примечание. Это игнорируется, если для `scroll_acceleration.enabled` установлено значение `true`.**
- `theme` — Устанавливает тему пользовательского интерфейса. [Подробнее](/docs/themes).
- `keybinds` — Настраивает сочетания клавиш. [Подробнее](/docs/keybinds).
- `scroll_acceleration.enabled` — включите ускорение прокрутки в стиле macOS для плавной и естественной прокрутки. Если этот параметр включен, скорость прокрутки увеличивается при быстрой прокрутке и остается точной при более медленных движениях. **Этот параметр имеет приоритет над `scroll_speed` и переопределяет его, если он включен.**
- `scroll_speed` — контролирует скорость прокрутки TUI при использовании команд прокрутки (минимум: `0.001`, поддерживает десятичные значения). По умолчанию `3`. **Примечание. Это игнорируется, если для `scroll_acceleration.enabled` установлено значение `true`.**
- `diff_style` — Управляет отображением различий. `"auto"` адаптируется к ширине терминала, `"stacked"` всегда показывает одноколоночный макет.
Используйте `OPENCODE_TUI_CONFIG` для загрузки пользовательского пути конфигурации TUI.
---

View File

@@ -63,6 +63,7 @@ OpenCode Zen работает так же, как и любой другой п
| Модель | Идентификатор модели | Конечная точка | Пакет AI SDK |
| ------------------ | -------------------- | -------------------------------------------------- | --------------------------- |
| GPT 5.3 Codex | gpt-5.3-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.2 Codex | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
@@ -72,13 +73,15 @@ OpenCode Zen работает так же, как и любой другой п
| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Sonnet 4.6 | claude-sonnet-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Sonnet 4 | claude-sonnet-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Haiku 3.5 | claude-3-5-haiku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Gemini 3.1 Pro | gemini-3.1-pro | `https://opencode.ai/zen/v1/models/gemini-3.1-pro` | `@ai-sdk/google` |
| Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
| Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
| MiniMax M2.5 | minimax-m2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
@@ -86,10 +89,8 @@ OpenCode Zen работает так же, как и любой другой п
| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 5 | glm-5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.7 Free | glm-4.7-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2.5 Free | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2 Thinking | kimi-k2-thinking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Qwen3 Coder 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
@@ -123,27 +124,29 @@ https://opencode.ai/zen/v1/models
| MiniMax M2.1 | $0.30 | $1.20 | $0.10 | - |
| GLM 5 | $1.00 | $3.20 | $0.20 | - |
| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
| GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
| GLM 4.7 Free | Бесплатно | Бесплатно | Бесплатно | - |
| Kimi K2.5 Free | Бесплатно | Бесплатно | Бесплатно | - |
| Kimi K2.5 | $0.60 | $3.00 | $0.08 | - |
| Kimi K2 Thinking | $0.40 | $2.50 | - | - |
| Kimi K2 | $0.40 | $2.50 | - | - |
| Qwen3 Coder 480B | $0.45 | $1.50 | - | - |
| Claude Opus 4.6 (≤ 200 тыс. токенов) | $5.00 | $25.00 | $0.50 | $6.25 |
| Claude Opus 4.6 (> 200 тыс. токенов) | $10.00 | $37.50 | $1.00 | $12.50 |
| Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
| Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
| Claude Sonnet 4.6 (≤ 200 тыс. токенов) | $3.00 | $15.00 | $0.30 | $3.75 |
| Claude Sonnet 4.6 (> 200 тыс. токенов) | $6.00 | $22.50 | $0.60 | $7.50 |
| Claude Sonnet 4.5 (≤ 200 тыс. токенов) | $3.00 | $15.00 | $0.30 | $3.75 |
| Claude Sonnet 4.5 (> 200 тыс. токенов) | $6.00 | $22.50 | $0.60 | $7.50 |
| Claude Sonnet 4 (≤ 200 тыс. токенов) | $3.00 | $15.00 | $0.30 | $3.75 |
| Claude Sonnet 4 (> 200 тыс. токенов) | $6.00 | $22.50 | $0.60 | $7.50 |
| Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
| Claude Haiku 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
| Claude Opus 4.6 (≤ 200 тыс. токенов) | $5.00 | $25.00 | $0.50 | $6.25 |
| Claude Opus 4.6 (> 200 тыс. токенов) | $10.00 | $37.50 | $1.00 | $12.50 |
| Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
| Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
| Gemini 3.1 Pro (≤ 200 тыс. токенов) | $2.00 | $12.00 | $0.20 | - |
| Gemini 3.1 Pro (> 200 тыс. токенов) | $4.00 | $18.00 | $0.40 | - |
| Gemini 3 Pro (≤ 200 тыс. токенов) | $2.00 | $12.00 | $0.20 | - |
| Gemini 3 Pro (> 200 тыс. токенов) | $4.00 | $18.00 | $0.40 | - |
| Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - |
| GPT 5.3 Codex | $1.75 | $14.00 | $0.175 | - |
| GPT 5.2 | $1.75 | $14.00 | $0.175 | - |
| GPT 5.2 Codex | $1.75 | $14.00 | $0.175 | - |
| GPT 5.1 | $1.07 | $8.50 | $0.107 | - |
@@ -162,7 +165,6 @@ https://opencode.ai/zen/v1/models
Бесплатные модели:
- Kimi K2.5 Free доступен на OpenCode в течение ограниченного времени. Команда использует это время для сбора отзывов и улучшения модели.
- MiniMax M2.5 Free доступен на OpenCode в течение ограниченного времени. Команда использует это время для сбора отзывов и улучшения модели.
- Big Pickle — это стелс-модель, которая доступна бесплатно на OpenCode в течение ограниченного времени. Команда использует это время для сбора отзывов и улучшения модели.
@@ -194,7 +196,6 @@ https://opencode.ai/zen/v1/models
Все наши модели размещены в США. Наши поставщики придерживаются политики нулевого хранения и не используют ваши данные для обучения моделей, за следующими исключениями:
- Big Pickle: во время бесплатного периода собранные данные могут быть использованы для улучшения модели.
- Kimi K2.5 Free: в течение бесплатного периода собранные данные могут использоваться для улучшения модели.
- MiniMax M2.5 Free: в течение бесплатного периода собранные данные могут использоваться для улучшения модели.
- API OpenAI: запросы хранятся в течение 30 дней в соответствии с [Политикой данных OpenAI](https://platform.openai.com/docs/guides/your-data).
- API-интерфейсы Anthropic: запросы хранятся в течение 30 дней в соответствии с [Политикой данных Anthropic](https://docs.anthropic.com/en/docs/claude-code/data-usage).