wip(docs): i18n (#12681)

This commit is contained in:
Adam
2026-02-09 11:34:35 -06:00
committed by GitHub
parent f74c0339cc
commit dc53086c1e
642 changed files with 192745 additions and 509 deletions

View File

@@ -0,0 +1,67 @@
---
title: Миграция на 1.0
description: Что нового в OpenCode 1.0.
---
OpenCode 1.0 — это полная переработка TUI.
Мы перешли от TUI на основе go+bubbletea, у которого были проблемы с производительностью и возможностями, к собственной платформе (OpenTUI), написанной на zig+solidjs.
Новый TUI работает так же, как старый, поскольку подключается к тому же серверу открытого кода.
---
## Обновление
Вам не следует автоматически обновляться до версии 1.0, если вы в настоящее время используете предыдущую версию.
версия. Однако некоторые старые версии OpenCode всегда используют последние версии.
Чтобы обновить вручную, запустите
```bash
$ opencode upgrade 1.0.0
```
Чтобы вернуться к версии 0.x, запустите
```bash
$ opencode upgrade 0.15.31
```
---
## UX-изменения
История сеанса более сжата и показывает только полную информацию об инструментах редактирования и bash.
Мы добавили панель команд, через которую проходит почти все. Нажмите ctrl+p, чтобы вызвать его в любом контексте и увидеть все, что вы можете сделать.
Добавлена ​​боковая панель сеанса (можно переключать) с полезной информацией.
Мы удалили некоторые функции, которые, как мы не были уверены, кто-то действительно использовал. Если что-то важное отсутствует, пожалуйста, откройте проблему, и мы быстро добавим ее обратно.
---
## Критические изменения
### Сочетания клавиш переименованы
- messages_revert -> messages_undo
- переключатель_агент -> агент_цикл
- switch_agent_reverse -> Agent_cycle_reverse
- переключатель_режим -> агент_цикл
- switch_mode_reverse -> Agent_cycle_reverse
### Привязки клавиш удалены.
- messages_layout_toggle
- messages_next
- messages_previous
- file_diff_toggle
- file_search
- file_close
- список_файлов
- app_help
- project_init
- инструмент_детали
- думающие_блоки

View File

@@ -0,0 +1,156 @@
---
title: Поддержка АСР
description: Используйте OpenCode в любом ACP-совместимом редакторе.
---
OpenCode поддерживает [Протокол агента-клиента](https://agentclientprotocol.com) или (ACP), что позволяет использовать его непосредственно в совместимых редакторах и IDE.
:::кончик
Список редакторов и инструментов, поддерживающих ACP, можно найти в [отчете о ходе работы ACP](https://zed.dev/blog/acp-progress-report#available-now).
:::
ACP — это открытый протокол, который стандартизирует связь между редакторами кода и агентами кодирования ИИ.
---
## Настроить
Чтобы использовать OpenCode через ACP, настройте свой редактор для запуска команды `opencode acp`.
Команда запускает OpenCode как ACP-совместимый подпроцесс, который взаимодействует с вашим редактором через JSON-RPC через stdio.
Ниже приведены примеры популярных редакторов, поддерживающих ACP.
---
### Зед
Добавьте в конфигурацию [Zed](https://zed.dev) (`~/.config/zed/settings.json`):
```json title="~/.config/zed/settings.json"
{
"agent_servers": {
"OpenCode": {
"command": "opencode",
"args": ["acp"]
}
}
}
```
Чтобы открыть его, используйте действие `agent: new thread` в **Палитре команд**.
Вы также можете привязать сочетание клавиш, отредактировав свой `keymap.json`:
```json title="keymap.json"
[
{
"bindings": {
"cmd-alt-o": [
"agent::NewExternalAgentThread",
{
"agent": {
"custom": {
"name": "OpenCode",
"command": {
"command": "opencode",
"args": ["acp"]
}
}
}
}
]
}
}
]
```
---
### IDE JetBrains
Добавьте в свою [JetBrains IDE](https://www.jetbrains.com/) acp.json в соответствии с [документацией](https://www.jetbrains.com/help/ai-assistant/acp.html):
```json title="acp.json"
{
"agent_servers": {
"OpenCode": {
"command": "/absolute/path/bin/opencode",
"args": ["acp"]
}
}
}
```
Чтобы открыть его, используйте новый агент OpenCode в селекторе агентов AI Chat.
---
### Аванте.nvim
Добавьте в свою конфигурацию [Avante.nvim](https://github.com/yetone/avante.nvim):
```lua
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" }
}
}
}
```
Если вам нужно передать переменные среды:
```lua {6-8}
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" },
env = {
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
}
}
}
}
```
---
### КодКомпаньон.nvim
Чтобы использовать OpenCode в качестве агента ACP в [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim), добавьте в конфигурацию Neovim следующее:
```lua
require("codecompanion").setup({
interactions = {
chat = {
adapter = {
name = "opencode",
model = "claude-sonnet-4",
},
},
},
})
```
Эта конфигурация настраивает CodeCompanion для использования OpenCode в качестве агента ACP для чата.
Если вам нужно передать переменные среды (например, `OPENCODE_API_KEY`), обратитесь к разделу [Настройка адаптеров: переменные среды](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) в документации CodeCompanion.nvim для получения полной информации.
## Поддерживать
OpenCode через ACP работает так же, как и в терминале. Поддерживаются все функции:
:::примечание
Некоторые встроенные команды слэша, такие как `/undo` и `/redo`, в настоящее время не поддерживаются.
:::
- Встроенные инструменты (файловые операции, команды терминала и т. д.)
- Пользовательские инструменты и команды слэша
- Серверы MCP, настроенные в вашей конфигурации OpenCode
- Правила для конкретного проекта из `AGENTS.md`
- Пользовательские форматтеры и линтеры
- Агенты и система разрешений

View File

@@ -0,0 +1,747 @@
---
title: Агенты
description: Настройте и используйте специализированные агенты.
---
Агенты — это специализированные ИИ-помощники, которых можно настроить для конкретных задач и рабочих процессов. Они позволяют создавать специализированные инструменты с настраиваемыми подсказками, моделями и доступом к инструментам.
:::кончик
Используйте агент плана для анализа кода и просмотра предложений без внесения каких-либо изменений в код.
:::
Вы можете переключаться между агентами во время сеанса или вызывать их с помощью упоминания `@`.
---
## Типы
В OpenCode есть два типа агентов; Первичные агенты и субагенты.
---
### Первичные агенты
Первичные агенты — это основные помощники, с которыми вы взаимодействуете напрямую. Вы можете переключаться между ними, используя клавишу **Tab** или настроенную привязку клавиш `switch_agent`. Эти агенты ведут ваш основной разговор. Доступ к инструментам настраивается с помощью разрешений — например, при сборке все инструменты включены, а при планировании — ограничены.
:::кончик
Вы можете использовать клавишу **Tab** для переключения между основными агентами во время сеанса.
:::
OpenCode поставляется с двумя встроенными основными агентами: **Build** и **Plan**. Хорошо
посмотрите на это ниже.
---
### Субагенты
Субагенты — это специализированные помощники, которых основные агенты могут вызывать для выполнения определенных задач. Вы также можете вызвать их вручную, **@ упомянув** их в своих сообщениях.
OpenCode поставляется с двумя встроенными субагентами: **General** и **Explore**. Мы рассмотрим это ниже.
---
## Встроенный
OpenCode поставляется с двумя встроенными основными агентами и двумя встроенными субагентами.
---
### Используйте сборку
_Режим_: `primary`
Build — основной агент **по умолчанию** со всеми включенными инструментами. Это стандартный агент для разработки, где вам необходим полный доступ к файловым операциям и системным командам.
---
### Использовать план
_Режим_: `primary`
Агент с ограниченным доступом, предназначенный для планирования и анализа. Мы используем систему разрешений, чтобы предоставить вам больше контроля и предотвратить непреднамеренные изменения.
По умолчанию для всех следующих параметров установлено значение `ask`:
- `file edits`: Все записи, исправления и изменения.
- `bash`: все команды bash.
Этот агент полезен, если вы хотите, чтобы LLM анализировал код, предлагал изменения или создавал планы без внесения каких-либо фактических изменений в вашу кодовую базу.
---
### Используйте общие
_Режим_: `subagent`
Универсальный агент для исследования сложных вопросов и выполнения многоэтапных задач. Имеет полный доступ к инструментам (кроме задач), поэтому при необходимости может вносить изменения в файлы. Используйте это для параллельного выполнения нескольких единиц работы.
---
### Используйте исследование
_Режим_: `subagent`
Быстрый агент только для чтения для изучения кодовых баз. Невозможно изменить файлы. Используйте это, когда вам нужно быстро найти файлы по шаблонам, выполнить поиск кода по ключевым словам или ответить на вопросы о кодовой базе.
---
### Используйте уплотнение
_Режим_: `primary`
Скрытый системный агент, который сжимает длинный контекст в меньшее резюме. Он запускается автоматически при необходимости и не может быть выбран в пользовательском интерфейсе.
---
### Использовать заголовок
_Режим_: `primary`
Скрытый системный агент, генерирующий короткие заголовки сессий. Он запускается автоматически и не может быть выбран в пользовательском интерфейсе.
---
### Использовать сводку
_Режим_: `primary`
Скрытый системный агент, создающий сводки сеансов. Он запускается автоматически и не может быть выбран в пользовательском интерфейсе.
---
## Использование
1. Для основных агентов используйте клавишу **Tab** для переключения между ними во время сеанса. Вы также можете использовать настроенную привязку клавиш `switch_agent`.
2. Субагенты могут быть вызваны:
- **Автоматически** основными агентами для выполнения специализированных задач на основе их описаний.
- Вручную, **@ упомянув** субагента в своем сообщении. Например.
```txt frame="none"
@general help me search for this function
```
3. **Навигация между сеансами**. Когда субагенты создают свои собственные дочерние сеансы, вы можете перемещаться между родительским сеансом и всеми дочерними сеансами, используя:
- **\<Leader>+Right** (или настроенная вами комбинация клавиш `session_child_cycle`) для перехода вперед через родительский элемент → дочерний элемент1 → дочерний элемент2 → ... → родительский элемент.
- **\<Leader>+Left** (или настроенная вами комбинация клавиш `session_child_cycle_reverse`) для перехода назад по родительскому элементу ← дочерний элемент1 ← дочерний элемент2 ← ... ← родительский элемент
Это позволяет плавно переключаться между основным разговором и работой специализированного субагента.
---
## Настроить
Вы можете настроить встроенные агенты или создать свои собственные посредством настройки. Агенты можно настроить двумя способами:
---
### JSON
Настройте агентов в файле конфигурации `opencode.json`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"mode": "primary",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "{file:./prompts/build.txt}",
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"mode": "primary",
"model": "anthropic/claude-haiku-4-20250514",
"tools": {
"write": false,
"edit": false,
"bash": false
}
},
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"mode": "subagent",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
"write": false,
"edit": false
}
}
}
}
```
---
### Уценка
Вы также можете определить агентов, используя файлы уценки. Поместите их в:
- Глобальный: `~/.config/opencode/agents/`
- Для каждого проекта: `.opencode/agents/`
```markdown title="~/.config/opencode/agents/review.md"
---
description: Reviews code for quality and best practices
mode: subagent
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
write: false
edit: false
bash: false
---
You are in code review mode. Focus on:
- Code quality and best practices
- Potential bugs and edge cases
- Performance implications
- Security considerations
Provide constructive feedback without making direct changes.
```
Имя файла уценки становится именем агента. Например, `review.md` создает агент `review`.
---
## Параметры
Давайте рассмотрим эти параметры конфигурации подробно.
---
### Описание
Используйте опцию `description`, чтобы предоставить краткое описание того, что делает агент и когда его использовать.
```json title="opencode.json"
{
"agent": {
"review": {
"description": "Reviews code for best practices and potential issues"
}
}
}
```
Это **обязательный** параметр конфигурации.
---
### Температура
Контролируйте случайность и креативность ответов LLM с помощью конфигурации `temperature`.
Более низкие значения делают ответы более целенаправленными и детерминированными, а более высокие значения повышают креативность и вариативность.
```json title="opencode.json"
{
"agent": {
"plan": {
"temperature": 0.1
},
"creative": {
"temperature": 0.8
}
}
}
```
Значения температуры обычно находятся в диапазоне от 0,0 до 1,0:
- **0,00,2**: очень целенаправленные и детерминированные ответы, идеальные для анализа кода и планирования.
- **0,30,5**: сбалансированные ответы с некоторой креативностью, подходят для общих задач развития.
- **0,61,0**: более творческие и разнообразные ответы, полезные для мозгового штурма и исследования.
```json title="opencode.json"
{
"agent": {
"analyze": {
"temperature": 0.1,
"prompt": "{file:./prompts/analysis.txt}"
},
"build": {
"temperature": 0.3
},
"brainstorm": {
"temperature": 0.7,
"prompt": "{file:./prompts/creative.txt}"
}
}
}
```
Если температура не указана, OpenCode использует значения по умолчанию, специфичные для модели; обычно 0 для большинства моделей, 0,55 для моделей Qwen.
---
### Максимальное количество шагов
Управляйте максимальным количеством агентных итераций, которые агент может выполнить, прежде чем ему придется отвечать только текстом. Это позволяет пользователям, желающим контролировать расходы, устанавливать лимит на агентские действия.
Если этот параметр не установлен, агент будет продолжать выполнять итерацию до тех пор, пока модель не решит остановиться или пока пользователь не прервет сеанс.
```json title="opencode.json"
{
"agent": {
"quick-thinker": {
"description": "Fast reasoning with limited iterations",
"prompt": "You are a quick thinker. Solve problems with minimal steps.",
"steps": 5
}
}
}
```
При достижении лимита агент получает специальную системную подсказку с указанием в ответ краткой информации о своей работе и рекомендуемых оставшихся задачах.
:::осторожность
Устаревшее поле `maxSteps` устарело. Вместо этого используйте `steps`.
:::
---
### Запрещать
Установите `true`, чтобы отключить агент.
```json title="opencode.json"
{
"agent": {
"review": {
"disable": true
}
}
}
```
---
### Быстрый
Укажите собственный файл системных приглашений для этого агента с помощью конфигурации `prompt`. Файл подсказки должен содержать инструкции, специфичные для целей агента.
```json title="opencode.json"
{
"agent": {
"review": {
"prompt": "{file:./prompts/code-review.txt}"
}
}
}
```
Этот путь указан относительно того, где находится файл конфигурации. Таким образом, это работает как для глобальной конфигурации OpenCode, так и для конфигурации конкретного проекта.
---
### Модель
Используйте конфигурацию `model`, чтобы переопределить модель этого агента. Полезно для использования разных моделей, оптимизированных под разные задачи. Например, более быстрая модель планирования и более эффективная модель реализации.
:::кончик
Если вы не укажете модель, основные агенты будут использовать глобально настроенную модель](/docs/config#models), а субагенты будут использовать модель основного агента, вызвавшего субагент.
:::
```json title="opencode.json"
{
"agent": {
"plan": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
```
Идентификатор модели в вашей конфигурации OpenCode использует формат `provider/model-id`. Например, если вы используете [OpenCode Zen](/docs/zen), вы должны использовать `opencode/gpt-5.1-codex` для кодекса GPT 5.1.
---
### Инструменты
Контролируйте, какие инструменты доступны в этом агенте, с помощью конфигурации `tools`. Вы можете включить или отключить определенные инструменты, установив для них значение `true` или `false`.
```json title="opencode.json" {3-6,9-12}
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": true,
"bash": true
},
"agent": {
"plan": {
"tools": {
"write": false,
"bash": false
}
}
}
}
```
:::примечание
Конфигурация, специфичная для агента, переопределяет глобальную конфигурацию.
:::
Вы также можете использовать подстановочные знаки для одновременного управления несколькими инструментами. Например, чтобы отключить все инструменты с сервера MCP:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"readonly": {
"tools": {
"mymcp_*": false,
"write": false,
"edit": false
}
}
}
}
```
[Подробнее об инструментах](/docs/tools).
---
### Разрешения
Вы можете настроить разрешения, чтобы управлять действиями, которые может выполнять агент. В настоящее время разрешения для инструментов `edit`, `bash` и `webfetch` можно настроить на:
- `"ask"` — Запросить подтверждение перед запуском инструмента.
- `"allow"` — Разрешить все операции без одобрения.
- `"deny"` — отключить инструмент
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
}
}
```
Вы можете переопределить эти разрешения для каждого агента.
```json title="opencode.json" {3-5,8-10}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
},
"agent": {
"build": {
"permission": {
"edit": "ask"
}
}
}
}
```
Вы также можете установить разрешения в агентах Markdown.
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash:
"*": ask
"git diff": allow
"git log*": allow
"grep *": allow
webfetch: deny
---
Only analyze code and suggest changes.
```
Вы можете установить разрешения для определенных команд bash.
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git push": "ask",
"grep *": "allow"
}
}
}
}
}
```
Это может использовать шаблон глобуса.
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git *": "ask"
}
}
}
}
}
```
Вы также можете использовать подстановочный знак `*` для управления разрешениями для всех команд.
Поскольку последнее правило сопоставления имеет приоритет, сначала поместите подстановочный знак `*`, а затем конкретные правила.
```json title="opencode.json" {8}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git status *": "allow"
}
}
}
}
}
```
[Подробнее о разрешениях](/docs/permissions).
---
### Режим
Управляйте режимом агента с помощью конфигурации `mode`. Опция `mode` используется для определения того, как можно использовать агент.
```json title="opencode.json"
{
"agent": {
"review": {
"mode": "subagent"
}
}
}
```
Опция `mode` может быть установлена ​​на `primary`, `subagent` или `all`. Если `mode` не указан, по умолчанию используется `all`.
---
### Скрытый
Скройте субагент из меню автозаполнения `@` с помощью `hidden: true`. Полезно для внутренних субагентов, которые другие агенты должны вызывать только программно с помощью инструмента Task.
```json title="opencode.json"
{
"agent": {
"internal-helper": {
"mode": "subagent",
"hidden": true
}
}
}
```
Это влияет только на видимость пользователя в меню автозаполнения. Скрытые агенты по-прежнему могут быть вызваны моделью с помощью инструмента «Задачи», если разрешения позволяют.
:::примечание
Применяется только к агентам `mode: subagent`.
:::
---
### Разрешения задач
Управляйте тем, какие субагенты агент может вызывать с помощью инструмента задач с помощью `permission.task`. Использует шаблоны glob для гибкого сопоставления.
```json title="opencode.json"
{
"agent": {
"orchestrator": {
"mode": "primary",
"permission": {
"task": {
"*": "deny",
"orchestrator-*": "allow",
"code-reviewer": "ask"
}
}
}
}
}
```
Если установлено значение `deny`, субагент полностью удаляется из описания инструмента «Задача», поэтому модель не будет пытаться его вызвать.
:::кончик
Правила оцениваются по порядку, и **побеждает последнее подходящее правило**. В приведенном выше примере `orchestrator-planner` соответствует как `*` (запретить), так и `orchestrator-*` (разрешить), но поскольку `orchestrator-*` идет после `*`, результатом будет `allow`.
:::
:::кончик
Пользователи всегда могут вызвать любой субагент напрямую через меню автозаполнения `@`, даже если разрешения задач агента запрещают это.
:::
---
### Цвет
Настройте внешний вид агента в пользовательском интерфейсе с помощью параметра `color`. Это влияет на то, как агент будет отображаться в интерфейсе.
Используйте допустимый шестнадцатеричный цвет (например, `#FF5733`) или цвет темы: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
```json title="opencode.json"
{
"agent": {
"creative": {
"color": "#ff6b6b"
},
"code-reviewer": {
"color": "accent"
}
}
}
```
---
### Топ П
Управляйте разнообразием ответов с помощью опции `top_p`. Альтернатива температуре для контроля случайности.
```json title="opencode.json"
{
"agent": {
"brainstorm": {
"top_p": 0.9
}
}
}
```
Значения варьируются от 0,0 до 1,0. Низкие ценности более целенаправленны, высшие ценности более разнообразны.
---
### Дополнительный
Любые другие параметры, указанные вами в конфигурации вашего агента, будут **передаваться напрямую** поставщику в качестве параметров модели. Это позволяет использовать функции и параметры, специфичные для поставщика.
Например, с помощью моделей рассуждения OpenAI вы можете контролировать усилия по рассуждению:
```json title="opencode.json" {6,7}
{
"agent": {
"deep-thinker": {
"description": "Agent that uses high reasoning effort for complex problems",
"model": "openai/gpt-5",
"reasoningEffort": "high",
"textVerbosity": "low"
}
}
}
```
Эти дополнительные параметры зависят от модели и поставщика. Проверьте документацию вашего провайдера на наличие доступных параметров.
:::кончик
Запустите `opencode models`, чтобы просмотреть список доступных моделей.
:::
---
## Создание агентов
Вы можете создать новых агентов, используя следующую команду:
```bash
opencode agent create
```
Эта интерактивная команда:
1. Спросить, где сохранить агента; глобальный или специфичный для проекта.
2. Описание того, что должен делать агент.
3. Создайте соответствующее системное приглашение и идентификатор.
4. Позволяет вам выбрать, к каким инструментам может получить доступ агент.
5. Наконец, создайте файл уценки с конфигурацией агента.
---
## Варианты использования
Вот несколько распространенных случаев использования различных агентов.
- **Агент сборки**: полная работа по разработке со всеми включенными инструментами.
- **Агент планирования**: анализ и планирование без внесения изменений.
- **Агент проверки**: проверка кода с доступом только для чтения и инструментами документирования.
- **Агент отладки**: сосредоточен на исследовании с включенными инструментами bash и чтения.
- **Агент документов**: запись документации с помощью файловых операций, но без системных команд.
---
## Примеры
Вот несколько примеров агентов, которые могут оказаться вам полезными.
:::кончик
У вас есть агент, которым вы хотели бы поделиться? [Отправьте PR](https://github.com/anomalyco/opencode).
:::
---
### Агент документации
```markdown title="~/.config/opencode/agents/docs-writer.md"
---
description: Writes and maintains project documentation
mode: subagent
tools:
bash: false
---
You are a technical writer. Create clear, comprehensive documentation.
Focus on:
- Clear explanations
- Proper structure
- Code examples
- User-friendly language
```
---
### Аудитор безопасности
```markdown title="~/.config/opencode/agents/security-auditor.md"
---
description: Performs security audits and identifies vulnerabilities
mode: subagent
tools:
write: false
edit: false
---
You are a security expert. Focus on identifying potential security issues.
Look for:
- Input validation vulnerabilities
- Authentication and authorization flaws
- Data exposure risks
- Dependency vulnerabilities
- Configuration security issues
```

View File

@@ -0,0 +1,601 @@
---
title: интерфейс командной строки
description: Параметры и команда OpenCode CLI.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
Интерфейс командной строки OpenCode по умолчанию запускает [TUI](/docs/tui) при запуске без каких-либо аргументов.
```bash
opencode
```
Но он также принимает команды, описанные на этой странице. Это позволяет вам программно взаимодействовать с OpenCode.
```bash
opencode run "Explain how closures work in JavaScript"
```
---
### туй
Запустите пользовательский интерфейс терминала OpenCode.
```bash
opencode [project]
```
#### Флаги
| Флаг | Короткий | Описание |
| ------------ | ----- | ------------------------------------------ |
| `--continue` | `-c` | Продолжить последний сеанс |
| `--session` | `-s` | Идентификатор сеанса для продолжения |
| `--prompt` | | Подскажите использовать |
| `--model` | `-m` | Модель для использования в виде поставщика/модели. |
| `--agent` | | Агент для использования |
| `--port` | | Порт для прослушивания |
| `--hostname` | | Имя хоста для прослушивания |
---
## Команды
Интерфейс командной строки OpenCode также имеет следующие команды.
---
### агент
Управляйте агентами для OpenCode.
```bash
opencode agent [command]
```
---
### прикреплять
Подключите терминал к уже работающему внутреннему серверу OpenCode, запущенному с помощью команд `serve` или `web`.
```bash
opencode attach [url]
```
Это позволяет использовать TUI с удаленным сервером OpenCode. Например:
```bash
# Start the backend server for web/mobile access
opencode web --port 4096 --hostname 0.0.0.0
# In another terminal, attach the TUI to the running backend
opencode attach http://10.20.30.40:4096
```
#### Флаги
| Флаг | Короткий | Описание |
| ----------- | ----- | --------------------------------- |
| `--dir` | | Рабочий каталог для запуска TUI |
| `--session` | `-s` | Идентификатор сеанса для продолжения |
---
#### создавать
Создайте нового агента с пользовательской конфигурацией.
```bash
opencode agent create
```
Эта команда поможет вам создать новый агент с настраиваемой системной подсказкой и настройкой инструмента.
---
#### список
Перечислите всех доступных агентов.
```bash
opencode agent list
```
---
### авторизация
Команда для управления учетными данными и входом в систему для провайдеров.
```bash
opencode auth [command]
```
---
#### авторизоваться
OpenCode основан на списке поставщиков по адресу [Models.dev](https://models.dev)), поэтому вы можете использовать `opencode auth login` для настройки ключей API для любого поставщика, которого вы хотите использовать. Это хранится в `~/.local/share/opencode/auth.json`.
```bash
opencode auth login
```
Когда OpenCode запускается, он загружает поставщиков из файла учетных данных. И если в ваших средах определены какие-либо ключи или файл `.env` в вашем проекте.
---
#### список
Перечисляет всех проверенных поставщиков, которые хранятся в файле учетных данных.
```bash
opencode auth list
```
Или короткая версия.
```bash
opencode auth ls
```
---
#### выход из системы
Выключает вас из провайдера, удаляя его из файла учетных данных.
```bash
opencode auth logout
```
---
### github
Управляйте агентом GitHub для автоматизации репозитория.
```bash
opencode github [command]
```
---
#### установить
Установите агент GitHub в свой репозиторий.
```bash
opencode github install
```
Это настроит необходимый рабочий процесс GitHub Actions и проведет вас через процесс настройки. [Подробнее](/docs/github).
---
#### бегать
Запустите агент GitHub. Обычно это используется в действиях GitHub.
```bash
opencode github run
```
##### Флаги
| Флаг | Описание |
| --------- | -------------------------------------- |
| `--event` | Имитирующее событие GitHub для запуска агента |
| `--token` | Токен личного доступа GitHub |
---
### мкп
Управляйте серверами протокола контекста модели.
```bash
opencode mcp [command]
```
---
#### добавлять
Добавьте сервер MCP в свою конфигурацию.
```bash
opencode mcp add
```
Эта команда поможет вам добавить локальный или удаленный сервер MCP.
---
#### список
Перечислите все настроенные серверы MCP и состояние их подключения.
```bash
opencode mcp list
```
Или используйте короткую версию.
```bash
opencode mcp ls
```
---
#### авторизация
Аутентификация с помощью сервера MCP с поддержкой OAuth.
```bash
opencode mcp auth [name]
```
Если вы не укажете имя сервера, вам будет предложено выбрать один из доступных серверов с поддержкой OAuth.
Вы также можете перечислить серверы с поддержкой OAuth и их статус аутентификации.
```bash
opencode mcp auth list
```
Или используйте короткую версию.
```bash
opencode mcp auth ls
```
---
#### выход из системы
Удалите учетные данные OAuth для сервера MCP.
```bash
opencode mcp logout [name]
```
---
#### отлаживать
Отладка проблем с подключением OAuth для сервера MCP.
```bash
opencode mcp debug <name>
```
---
### модели
Перечислите все доступные модели от настроенных поставщиков.
```bash
opencode models [provider]
```
Эта команда отображает все модели, доступные у настроенных вами поставщиков, в формате `provider/model`.
Это полезно для определения точного названия модели, которое будет использоваться в [вашем config](/docs/config/).
При желании вы можете передать идентификатор поставщика, чтобы фильтровать модели по этому поставщику.
```bash
opencode models anthropic
```
#### Флаги
| Флаг | Описание |
| ----------- | ------------------------------------------------------------ |
| `--refresh` | Обновите кеш моделей на сайте models.dev. |
| `--verbose` | Используйте более подробный вывод модели (включая метаданные, такие как затраты). |
Используйте флаг `--refresh` для обновления списка кэшированных моделей. Это полезно, когда к поставщику добавлены новые модели и вы хотите увидеть их в OpenCode.
```bash
opencode models --refresh
```
---
### бегать
Запустите открытый код в неинтерактивном режиме, передав приглашение напрямую.
```bash
opencode run [message..]
```
Это полезно для создания сценариев, автоматизации или когда вам нужен быстрый ответ без запуска полного TUI. Например.
```bash "opencode run"
opencode run Explain the use of context in Go
```
Вы также можете подключиться к работающему экземпляру `opencode serve`, чтобы избежать холодной загрузки сервера MCP при каждом запуске:
```bash
# Start a headless server in one terminal
opencode serve
# In another terminal, run commands that attach to it
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
```
#### Флаги
| Флаг | Короткий | Описание |
| ------------ | ----- | ------------------------------------------------------------------ |
| `--command` | | Команда для запуска, используйте сообщение для аргументов |
| `--continue` | `-c` | Продолжить последний сеанс |
| `--session` | `-s` | Идентификатор сеанса для продолжения |
| `--share` | | Поделиться сеансом |
| `--model` | `-m` | Модель для использования в виде поставщика/модели. |
| `--agent` | | Агент для использования |
| `--file` | `-f` | Файл(ы) для прикрепления к сообщению |
| `--format` | | Формат: по умолчанию (отформатированный) или json (необработанные события JSON). |
| `--title` | | Название сеанса (использует усеченное приглашение, если значение не указано) |
| `--attach` | | Подключитесь к работающему серверу открытого кода (например, http://localhost:4096) |
| `--port` | | Порт локального сервера (по умолчанию случайный порт) |
---
### служить
Запустите автономный сервер OpenCode для доступа к API. Полный HTTP-интерфейс можно найти в [server docs](/docs/server).
```bash
opencode serve
```
При этом запускается HTTP-сервер, который обеспечивает доступ API к функциям открытого кода без интерфейса TUI. Установите `OPENCODE_SERVER_PASSWORD`, чтобы включить базовую аутентификацию HTTP (имя пользователя по умолчанию — `opencode`).
#### Флаги
| Флаг | Описание |
| ------------ | ------------------------------------------ |
| `--port` | Порт для прослушивания |
| `--hostname` | Имя хоста для прослушивания |
| `--mdns` | Включить обнаружение mDNS |
| `--cors` | Дополнительные источники браузера, позволяющие разрешить CORS |
---
### сессия
Управляйте сессиями OpenCode.
```bash
opencode session [command]
```
---
#### список
Перечислите все сеансы OpenCode.
```bash
opencode session list
```
##### Флаги
| Флаг | Короткий | Описание |
| ------------- | ----- | ------------------------------------ |
| `--max-count` | `-n` | Ограничить N последних сеансов. |
| `--format` | | Формат вывода: таблица или json (таблица) |
---
### статистика
Покажите статистику использования токенов и затрат для ваших сеансов OpenCode.
```bash
opencode stats
```
#### Флаги
| Флаг | Описание |
| ----------- | --------------------------------------------------------------------------- |
| `--days` | Показать статистику за последние N дней (все время) |
| `--tools` | Количество инструментов для отображения (все) |
| `--models` | Показать разбивку по использованию модели (по умолчанию скрыто). Передайте номер, чтобы показать верхнюю N |
| `--project` | Фильтровать по проекту (все проекты, пустая строка: текущий проект) |
---
### экспорт
Экспортируйте данные сеанса в формате JSON.
```bash
opencode export [sessionID]
```
Если вы не укажете идентификатор сеанса, вам будет предложено выбрать один из доступных сеансов.
---
### импортировать
Импортируйте данные сеанса из файла JSON или URL-адреса общего ресурса OpenCode.
```bash
opencode import <file>
```
Вы можете импортировать из локального файла или URL-адреса общего ресурса OpenCode.
```bash
opencode import session.json
opencode import https://opncd.ai/s/abc123
```
---
### сеть
Запустите автономный сервер OpenCode с веб-интерфейсом.
```bash
opencode web
```
При этом запускается HTTP-сервер и открывается веб-браузер для доступа к OpenCode через веб-интерфейс. Установите `OPENCODE_SERVER_PASSWORD`, чтобы включить базовую аутентификацию HTTP (имя пользователя по умолчанию — `opencode`).
#### Флаги
| Флаг | Описание |
| ------------ | ------------------------------------------ |
| `--port` | Порт для прослушивания |
| `--hostname` | Имя хоста для прослушивания |
| `--mdns` | Включить обнаружение mDNS |
| `--cors` | Дополнительные источники браузера, позволяющие разрешить CORS |
---
### акп
Запустите сервер ACP (агент-клиентский протокол).
```bash
opencode acp
```
Эта команда запускает сервер ACP, который обменивается данными через stdin/stdout с использованием nd-JSON.
#### Флаги
| Флаг | Описание |
| ------------ | --------------------- |
| `--cwd` | Рабочий каталог |
| `--port` | Порт для прослушивания |
| `--hostname` | Имя хоста для прослушивания |
---
### удалить
Удалите OpenCode и удалите все связанные файлы.
```bash
opencode uninstall
```
#### Флаги
| Флаг | Короткий | Описание |
| --------------- | ----- | ------------------------------------------- |
| `--keep-config` | `-c` | Сохраняйте файлы конфигурации |
| `--keep-data` | `-d` | Храните данные сеанса и снимки |
| `--dry-run` | | Покажите, что было бы удалено без удаления |
| `--force` | `-f` | Пропустить запросы подтверждения |
---
### обновление
Обновляет открытый код до последней версии или определенной версии.
```bash
opencode upgrade [target]
```
Чтобы обновиться до последней версии.
```bash
opencode upgrade
```
Для обновления до определенной версии.
```bash
opencode upgrade v0.1.48
```
#### Флаги
| Флаг | Короткий | Описание |
| ---------- | ----- | ----------------------------------------------------------------- |
| `--method` | `-m` | Используемый метод установки; локон, НПМ, ПНПМ, булочка, заваривание |
---
## Глобальные флаги
Интерфейс командной строки открытого кода принимает следующие глобальные флаги.
| Флаг | Короткий | Описание |
| -------------- | ----- | ------------------------------------ |
| `--help` | `-h` | Отобразить справку |
| `--version` | `-v` | Распечатать номер версии |
| `--print-logs` | | Печать журналов в stderr |
| `--log-level` | | Уровень журнала (ОТЛАДКА, ИНФОРМАЦИЯ, ПРЕДУПРЕЖДЕНИЕ, ОШИБКА) |
---
## Переменные среды
OpenCode можно настроить с помощью переменных среды.
| Переменная | Тип | Описание |
| ------------------------------------- | ------- | ------------------------------------------------- |
| `OPENCODE_AUTO_SHARE` | логическое значение | Автоматически делиться сеансами |
| `OPENCODE_GIT_BASH_PATH` | нить | Путь к исполняемому файлу Git Bash в Windows |
| `OPENCODE_CONFIG` | нить | Путь к файлу конфигурации |
| `OPENCODE_CONFIG_DIR` | нить | Путь к каталогу конфигурации |
| `OPENCODE_CONFIG_CONTENT` | нить | Встроенное содержимое конфигурации json |
| `OPENCODE_DISABLE_AUTOUPDATE` | логическое значение | Отключить автоматическую проверку обновлений |
| `OPENCODE_DISABLE_PRUNE` | логическое значение | Отключить удаление старых данных |
| `OPENCODE_DISABLE_TERMINAL_TITLE` | логическое значение | Отключить автоматическое обновление названия терминала |
| `OPENCODE_PERMISSION` | нить | Встроенная конфигурация разрешений json |
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | логическое значение | Отключить плагины по умолчанию |
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | логическое значение | Отключить автоматическую загрузку LSP-сервера |
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | логическое значение | Включить экспериментальные модели |
| `OPENCODE_DISABLE_AUTOCOMPACT` | логическое значение | Отключить автоматическое сжатие контекста |
| `OPENCODE_DISABLE_CLAUDE_CODE` | логическое значение | Отключить чтение из `.claude` (подсказка + навыки) |
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | логическое значение | Отключить чтение `~/.claude/CLAUDE.md` |
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | логическое значение | Отключить загрузку `.claude/skills` |
| `OPENCODE_DISABLE_MODELS_FETCH` | логическое значение | Отключить получение моделей из удаленных источников |
| `OPENCODE_FAKE_VCS` | нить | Поддельный поставщик VCS для целей тестирования |
| `OPENCODE_DISABLE_FILETIME_CHECK` | логическое значение | Отключить проверку времени файла для оптимизации |
| `OPENCODE_CLIENT` | нить | Идентификатор клиента (по умолчанию `cli`) |
| `OPENCODE_ENABLE_EXA` | логическое значение | Включить инструменты веб-поиска Exa |
| `OPENCODE_SERVER_PASSWORD` | нить | Включить базовую аутентификацию для `serve`/`web` |
| `OPENCODE_SERVER_USERNAME` | нить | Переопределить имя пользователя базовой аутентификации (по умолчанию `opencode`) |
| `OPENCODE_MODELS_URL` | нить | Пользовательский URL-адрес для получения конфигурации модели |
---
### Экспериментальный
Эти переменные среды позволяют использовать экспериментальные функции, которые могут быть изменены или удалены.
| Переменная | Тип | Описание |
| ----------------------------------------------- | ------- | --------------------------------------- |
| `OPENCODE_EXPERIMENTAL` | логическое значение | Включить все экспериментальные функции |
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | логическое значение | Включить обнаружение значков |
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | логическое значение | Отключить копирование при выборе в TUI |
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | число | Таймаут по умолчанию для команд bash в мс |
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | число | Максимальное количество токенов вывода для ответов LLM |
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | логическое значение | Включить просмотр файлов для всего каталога |
| `OPENCODE_EXPERIMENTAL_OXFMT` | логическое значение | Включить форматтер oxfmt |
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | логическое значение | Включить экспериментальный инструмент LSP |
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | логическое значение | Отключить просмотрщик файлов |
| `OPENCODE_EXPERIMENTAL_EXA` | логическое значение | Включить экспериментальные функции Exa |
| `OPENCODE_EXPERIMENTAL_LSP_TY` | логическое значение | Включить экспериментальную проверку типа LSP |
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | логическое значение | Включить экспериментальные функции уценки |
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | логическое значение | Включить режим плана |

View File

@@ -0,0 +1,323 @@
---
title: Команды
description: Создавайте собственные команды для повторяющихся задач.
---
Пользовательские команды позволяют указать подсказку, которую вы хотите запускать при выполнении этой команды в TUI.
```bash frame="none"
/my-command
```
Пользовательские команды дополняют встроенные команды, такие как `/init`, `/undo`, `/redo`, `/share`, `/help`. [Подробнее](/docs/tui#commands).
---
## Создание командных файлов
Создайте файлы уценки в каталоге `commands/` для определения пользовательских команд.
Создайте `.opencode/commands/test.md`:
```md title=".opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
Фронтальная часть определяет свойства команды. Содержимое становится шаблоном.
Используйте команду, набрав `/`, а затем имя команды.
```bash frame="none"
"/test"
```
---
## Настроить
Вы можете добавлять собственные команды через конфигурацию OpenCode или создав файлы уценки в каталоге `commands/`.
---
### JSON
Используйте опцию `command` в вашем OpenCode [config](/docs/config):
```json title="opencode.jsonc" {4-12}
{
"$schema": "https://opencode.ai/config.json",
"command": {
// This becomes the name of the command
"test": {
// This is the prompt that will be sent to the LLM
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
// This is shown as the description in the TUI
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
Теперь вы можете запустить эту команду в TUI:
```bash frame="none"
/test
```
---
### Уценка
Вы также можете определять команды, используя файлы уценки. Поместите их в:
- Глобальный: `~/.config/opencode/commands/`
- Для каждого проекта: `.opencode/commands/`
```markdown title="~/.config/opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
Имя файла уценки становится именем команды. Например, `test.md` позволяет
ты бежишь:
```bash frame="none"
/test
```
---
## Подскажите конфигурацию
Подсказки для пользовательских команд поддерживают несколько специальных заполнителей и синтаксиса.
---
### Аргументы
Передавайте аргументы командам, используя заполнитель `$ARGUMENTS`.
```md title=".opencode/commands/component.md"
---
description: Create a new component
---
Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.
```
Запустите команду с аргументами:
```bash frame="none"
/component Button
```
И `$ARGUMENTS` будет заменен на `Button`.
Вы также можете получить доступ к отдельным аргументам, используя позиционные параметры:
- `$1` — первый аргумент
- `$2` — Второй аргумент
- `$3` — Третий аргумент
- И так далее...
Например:
```md title=".opencode/commands/create-file.md"
---
description: Create a new file with content
---
Create a file named $1 in the directory $2
with the following content: $3
```
Запустите команду:
```bash frame="none"
/create-file config.json src "{ \"key\": \"value\" }"
```
Это заменяет:
- `$1` с `config.json`
- `$2` с `src`
- `$3` с `{ "key": "value" }`
---
### Вывод оболочки
Используйте _!`command`_, чтобы ввести вывод команды bash](/docs/tui#bash-commands) в приглашение.
Например, чтобы создать пользовательскую команду, которая анализирует тестовое покрытие:
```md title=".opencode/commands/analyze-coverage.md"
---
description: Analyze test coverage
---
Here are the current test results:
!`npm test`
Based on these results, suggest improvements to increase coverage.
```
Или просмотреть последние изменения:
```md title=".opencode/commands/review-changes.md"
---
description: Review recent changes
---
Recent git commits:
!`git log --oneline -10`
Review these changes and suggest any improvements.
```
Команды выполняются в корневом каталоге вашего проекта, и их вывод становится частью приглашения.
---
### Ссылки на файлы
Включите файлы в свою команду, используя `@`, за которым следует имя файла.
```md title=".opencode/commands/review-component.md"
---
description: Review component
---
Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.
```
Содержимое файла автоматически включается в приглашение.
---
## Параметры
Рассмотрим варианты конфигурации подробнее.
---
### Шаблон
Параметр `template` определяет приглашение, которое будет отправлено в LLM при выполнении команды.
```json title="opencode.json"
{
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
}
}
}
```
Это **обязательный** параметр конфигурации.
---
### Описание
Используйте опцию `description`, чтобы предоставить краткое описание того, что делает команда.
```json title="opencode.json"
{
"command": {
"test": {
"description": "Run tests with coverage"
}
}
}
```
Это отображается в виде описания в TUI при вводе команды.
---
### Агент
Используйте конфигурацию `agent`, чтобы дополнительно указать, какой [агент](/docs/agents) должен выполнить эту команду.
Если это [subagent](/docs/agents/#subagents), команда по умолчанию инициирует вызов субагента.
Чтобы отключить это поведение, установите для `subtask` значение `false`.
```json title="opencode.json"
{
"command": {
"review": {
"agent": "plan"
}
}
}
```
Это **необязательный** параметр конфигурации. Если не указано, по умолчанию используется текущий агент.
---
### Подзадача
Используйте логическое значение `subtask`, чтобы заставить команду инициировать вызов [subagent](/docs/agents/#subagents).
Это полезно, если вы хотите, чтобы команда не загрязняла ваш основной контекст и **заставляла** агента действовать как субагент.
даже если для `mode` установлено значение `primary` в конфигурации [agent](/docs/agents).
```json title="opencode.json"
{
"command": {
"analyze": {
"subtask": true
}
}
}
```
Это **необязательный** параметр конфигурации.
---
### Модель
Используйте конфигурацию `model`, чтобы переопределить модель по умолчанию для этой команды.
```json title="opencode.json"
{
"command": {
"analyze": {
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
Это **необязательный** параметр конфигурации.
---
## Встроенный
открытый код включает несколько встроенных команд, таких как `/init`, `/undo`, `/redo`, `/share`, `/help`; [подробнее](/docs/tui#commands).
:::примечание
Пользовательские команды могут переопределять встроенные команды.
:::
Если вы определите пользовательскую команду с тем же именем, она переопределит встроенную команду.

View File

@@ -0,0 +1,685 @@
---
title: Конфигурация
description: Использование конфигурации OpenCode JSON.
---
Вы можете настроить OpenCode, используя файл конфигурации JSON.
---
## Формат
OpenCode поддерживает форматы **JSON** и **JSONC** (JSON с комментариями).
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
// Theme configuration
"theme": "opencode",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
}
```
---
## Локации
Вы можете разместить свою конфигурацию в нескольких разных местах, и у них есть
разный порядок старшинства.
:::примечание
Файлы конфигурации **объединяются**, а не заменяются.
:::
Файлы конфигурации объединяются, а не заменяются. Настройки из следующих мест конфигурации объединяются. Более поздние конфигурации переопределяют предыдущие только в случае конфликта ключей. Неконфликтные настройки из всех конфигов сохраняются.
Например, если ваша глобальная конфигурация устанавливает `theme: "opencode"` и `autoupdate: true`, а конфигурация вашего проекта устанавливает `model: "anthropic/claude-sonnet-4-5"`, окончательная конфигурация будет включать все три параметра.
---
### Порядок приоритета
Источники конфигурации загружаются в следующем порядке (более поздние источники переопределяют более ранние):
1. **Удаленная конфигурация** (от `.well-known/opencode`) организационные настройки по умолчанию.
2. **Глобальная конфигурация** (`~/.config/opencode/opencode.json`) — настройки пользователя.
3. **Пользовательская конфигурация** (`OPENCODE_CONFIG` env var) пользовательские переопределения
4. **Конфигурация проекта** (`opencode.json` в проекте) — настройки, специфичные для проекта.
5. **Каталоги `.opencode`** — агенты, команды, плагины
6. **Встроенная конфигурация** (`OPENCODE_CONFIG_CONTENT` env var) переопределяет время выполнения
Это означает, что конфигурации проекта могут переопределять глобальные настройки по умолчанию, а глобальные конфигурации могут переопределять настройки по умолчанию для удаленной организации.
:::примечание
В каталогах `.opencode` и `~/.config/opencode` для подкаталогов используются **множественные имена**: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` и `themes/`. Единственные имена (например, `agent/`) также поддерживаются для обратной совместимости.
:::
---
### Удаленный
Организации могут предоставить конфигурацию по умолчанию через конечную точку `.well-known/opencode`. Он извлекается автоматически при аутентификации у провайдера, который его поддерживает.
Удаленная конфигурация загружается первой и служит базовым слоем. Все остальные источники конфигурации (глобальные, проектные) могут переопределить эти значения по умолчанию.
Например, если ваша организация предоставляет серверы MCP, которые по умолчанию отключены:
```json title="Remote config from .well-known/opencode"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
```
Вы можете включить определенные серверы в локальной конфигурации:
```json title="opencode.json"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
---
### Глобальный
Поместите глобальную конфигурацию OpenCode в `~/.config/opencode/opencode.json`. Используйте глобальную конфигурацию для общепользовательских настроек, таких как темы, поставщики или привязки клавиш.
Глобальная конфигурация переопределяет настройки по умолчанию для удаленной организации.
---
### За проект
Добавьте `opencode.json` в корень вашего проекта. Конфигурация проекта имеет наивысший приоритет среди стандартных файлов конфигурации — она переопределяет как глобальные, так и удаленные конфигурации.
:::кончик
Поместите конфигурацию конкретного проекта в корень вашего проекта.
:::
Когда OpenCode запускается, он ищет файл конфигурации в текущем каталоге или переходит к ближайшему каталогу Git.
Его также можно безопасно зарегистрировать в Git, и он использует ту же схему, что и глобальная.
---
### Пользовательский путь
Укажите собственный путь к файлу конфигурации, используя переменную среды `OPENCODE_CONFIG`.
```bash
export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"
```
Пользовательская конфигурация загружается между глобальными и проектными конфигурациями в порядке приоритета.
---
### Пользовательский каталог
Укажите пользовательский каталог конфигурации, используя `OPENCODE_CONFIG_DIR`.
переменная среды. В этом каталоге будет осуществляться поиск агентов, команд,
режимы и плагины, такие как стандартный каталог `.opencode`, и должны
следовать той же структуре.
```bash
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
opencode run "Hello world"
```
Пользовательский каталог загружается после каталогов global config и `.opencode`, поэтому он **может переопределить** их настройки.
---
## Схема
Файл конфигурации имеет схему, определенную в [**`opencode.ai/config.json`**](https://opencode.ai/config.json).
Ваш редактор должен иметь возможность проверять и автозаполнять данные на основе схемы.
---
### ТУИ
Вы можете настроить параметры TUI с помощью опции `tui`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
}
```
Доступные варианты:
- `scroll_acceleration.enabled` — включить ускорение прокрутки в стиле MacOS. **Имеет приоритет над `scroll_speed`.**
- `scroll_speed` — пользовательский множитель скорости прокрутки (по умолчанию: `3`, минимум: `1`). Игнорируется, если `scroll_acceleration.enabled` равен `true`.
- `diff_style` — управление рендерингом различий. `"auto"` адаптируется к ширине терминала, `"stacked"` всегда отображает один столбец.
[Подробнее об использовании TUI можно узнать здесь](/docs/tui).
---
### Сервер
Вы можете настроить параметры сервера для команд `opencode serve` и `opencode web` с помощью опции `server`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "myproject.local",
"cors": ["http://localhost:5173"]
}
}
```
Доступные варианты:
- `port` — порт для прослушивания.
- `hostname` — имя хоста для прослушивания. Если `mdns` включен и имя хоста не задано, по умолчанию используется `0.0.0.0`.
- `mdns` — включить обнаружение службы mDNS. Это позволит другим устройствам в сети обнаружить ваш сервер OpenCode.
- `mdnsDomain` — собственное доменное имя для службы mDNS. По умолчанию `opencode.local`. Полезно для запуска нескольких экземпляров в одной сети.
- `cors` — дополнительные источники, позволяющие использовать CORS при использовании HTTP-сервера из браузерного клиента. Значения должны быть полными источниками (схема + хост + дополнительный порт), например `https://app.example.com`.
[Подробнее о сервере можно узнать здесь](/docs/server).
---
### Инструменты
Вы можете управлять инструментами, которые LLM может использовать, с помощью опции `tools`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": false,
"bash": false
}
}
```
[Подробнее об инструментах можно узнать здесь](/docs/tools).
---
### Модели
Вы можете настроить поставщиков и модели, которые хотите использовать в своей конфигурации OpenCode, с помощью параметров `provider`, `model` и `small_model`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {},
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5"
}
```
Опция `small_model` настраивает отдельную модель для облегченных задач, таких как создание заголовков. По умолчанию OpenCode пытается использовать более дешевую модель, если она доступна у вашего провайдера, в противном случае он возвращается к вашей основной модели.
Опции провайдера могут включать `timeout` и `setCacheKey`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"options": {
"timeout": 600000,
"setCacheKey": true
}
}
}
}
```
- `timeout` — таймаут запроса в миллисекундах (по умолчанию: 300000). Установите `false` для отключения.
- `setCacheKey` — убедитесь, что ключ кэша всегда установлен для назначенного поставщика.
Вы также можете настроить [локальные модели](/docs/models#local). [Подробнее ](/docs/models).
---
#### Параметры, зависящие от поставщика
Некоторые поставщики поддерживают дополнительные параметры конфигурации помимо общих настроек `timeout` и `apiKey`.
##### Амазонка
Amazon Bedrock поддерживает конфигурацию, специфичную для AWS:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"amazon-bedrock": {
"options": {
"region": "us-east-1",
"profile": "my-aws-profile",
"endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
}
}
}
}
```
- `region` — регион AWS для Bedrock (по умолчанию переменная среды `AWS_REGION` или `us-east-1`)
- `profile` — именованный профиль AWS из `~/.aws/credentials` (по умолчанию переменная окружения `AWS_PROFILE`)
- `endpoint` — URL-адрес пользовательской конечной точки для конечных точек VPC. Это псевдоним общего параметра `baseURL`, использующий терминологию, специфичную для AWS. Если указаны оба параметра, `endpoint` имеет приоритет.
:::примечание
Токены носителя (`AWS_BEARER_TOKEN_BEDROCK` или `/connect`) имеют приоритет над аутентификацией на основе профиля. Подробности см. в [приоритет аутентификации](/docs/providers#authentication-precedence).
:::
[Подробнее о конфигурации Amazon Bedrock](/docs/providers#amazon-bedrock).
---
### Темы
Вы можете настроить тему, которую хотите использовать, в конфигурации OpenCode с помощью опции `theme`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"theme": ""
}
```
[Подробнее здесь](/docs/themes).
---
### Агенты
Вы можете настроить специализированные агенты для конкретных задач с помощью опции `agent`.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"model": "anthropic/claude-sonnet-4-5",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
// Disable file modification tools for review-only agent
"write": false,
"edit": false,
},
},
},
}
```
Вы также можете определить агентов, используя файлы уценки в `~/.config/opencode/agents/` или `.opencode/agents/`. [Подробнее здесь](/docs/agents).
---
### Агент по умолчанию
Вы можете установить агента по умолчанию, используя опцию `default_agent`. Это определяет, какой агент используется, если ни один из них не указан явно.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"default_agent": "plan"
}
```
Агент по умолчанию должен быть основным агентом (а не субагентом). Это может быть встроенный агент, например `"build"` или `"plan"`, или [пользовательский агент](/docs/agents), который вы определили. Если указанный агент не существует или является субагентом, OpenCode вернется к `"build"` с предупреждением.
Этот параметр применяется ко всем интерфейсам: TUI, CLI (`opencode run`), настольному приложению и действию GitHub.
---
### Совместное использование
Функцию [share](/docs/share) можно настроить с помощью опции `share`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "manual"
}
```
Это занимает:
- `"manual"` — разрешить общий доступ вручную с помощью команд (по умолчанию).
- `"auto"` — автоматически делиться новыми беседами.
- `"disabled"` — полностью отключить общий доступ
По умолчанию общий доступ установлен в ручной режим, в котором вам необходимо явно делиться разговорами с помощью команды `/share`.
---
### Команды
Вы можете настроить собственные команды для повторяющихся задач с помощью опции `command`.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-haiku-4-5",
},
"component": {
"template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
"description": "Create a new component",
},
},
}
```
Вы также можете определять команды, используя файлы уценки в `~/.config/opencode/commands/` или `.opencode/commands/`. [Подробнее здесь](/docs/commands).
---
### Сочетания клавиш
Вы можете настроить привязки клавиш с помощью опции `keybinds`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {}
}
```
[Подробнее здесь](/docs/keybinds).
---
### Автообновление
OpenCode автоматически загрузит все новые обновления при запуске. Вы можете отключить это с помощью опции `autoupdate`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"autoupdate": false
}
```
Если вы не хотите получать обновления, но хотите получать уведомления о появлении новой версии, установите для `autoupdate` значение `"notify"`.
Обратите внимание, что это работает только в том случае, если оно было установлено без использования менеджера пакетов, такого как Homebrew.
---
### Форматеры
Вы можете настроить форматировщики кода с помощью опции `formatter`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
},
"custom-prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
}
}
}
```
[Подробнее о форматтерах можно узнать здесь](/docs/formatters).
---
### Разрешения
По умолчанию открытый код **разрешает все операции**, не требуя явного разрешения. Вы можете изменить это, используя опцию `permission`.
Например, чтобы гарантировать, что инструменты `edit` и `bash` требуют одобрения пользователя:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
```
[Подробнее о разрешениях можно узнать здесь](/docs/permissions).
---
### Уплотнение
Вы можете управлять поведением сжатия контекста с помощью опции `compaction`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"compaction": {
"auto": true,
"prune": true
}
}
```
- `auto` — автоматически сжимать сеанс при заполнении контекста (по умолчанию: `true`).
- `prune` — удалить старые выходные данные инструмента для сохранения токенов (по умолчанию: `true`).
---
### наблюдатель
Вы можете настроить шаблоны игнорирования средства отслеживания файлов с помощью опции `watcher`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
```
Шаблоны соответствуют синтаксису glob. Используйте это, чтобы исключить зашумленные каталоги из просмотра файлов.
---
### MCP-серверы
Вы можете настроить серверы MCP, которые хотите использовать, с помощью опции `mcp`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {}
}
```
[Подробнее здесь](/docs/mcp-servers).
---
### Плагины
[Плагины](/docs/plugins) расширяют OpenCode с помощью пользовательских инструментов, перехватчиков и интеграций.
Поместите файлы плагина в `.opencode/plugins/` или `~/.config/opencode/plugins/`. Вы также можете загружать плагины из npm с помощью опции `plugin`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
}
```
[Подробнее здесь](/docs/plugins).
---
### Инструкции
Вы можете настроить инструкции для используемой вами модели с помощью опции `instructions`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
Для этого требуется массив путей и шаблонов glob для файлов инструкций. [Узнать больше
о правилах здесь ](/docs/rules).
---
### Отключенные провайдеры
Вы можете отключить поставщиков, которые загружаются автоматически, с помощью опции `disabled_providers`. Это полезно, если вы хотите запретить загрузку определенных поставщиков, даже если их учетные данные доступны.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"disabled_providers": ["openai", "gemini"]
}
```
:::примечание
`disabled_providers` имеет приоритет над `enabled_providers`.
:::
Опция `disabled_providers` принимает массив идентификаторов поставщиков. Когда провайдер отключен:
- Он не будет загружен, даже если установлены переменные среды.
- Он не будет загружен, даже если ключи API настроены с помощью команды `/connect`.
- Модели поставщика не появятся в списке выбора моделей.
---
### Включенные провайдеры
Вы можете указать белый список поставщиков с помощью опции `enabled_providers`. Если этот параметр установлен, будут включены только указанные поставщики, а все остальные будут игнорироваться.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"enabled_providers": ["anthropic", "openai"]
}
```
Это полезно, если вы хотите ограничить OpenCode использованием только определенных поставщиков, а не отключать их по одному.
:::примечание
`disabled_providers` имеет приоритет над `enabled_providers`.
:::
Если поставщик указан как в `enabled_providers`, так и в `disabled_providers`, `disabled_providers` имеет приоритет для обратной совместимости.
---
### Экспериментальный
Ключ `experimental` содержит параметры, находящиеся в активной разработке.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"experimental": {}
}
```
:::осторожность
Экспериментальные варианты не стабильны. Они могут быть изменены или удалены без предварительного уведомления.
:::
---
## Переменные
Вы можете использовать подстановку переменных в файлах конфигурации для ссылки на переменные среды и содержимое файлов.
---
### переменные окружения
Используйте `{env:VARIABLE_NAME}` для замены переменных среды:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "{env:OPENCODE_MODEL}",
"provider": {
"anthropic": {
"models": {},
"options": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
}
}
}
```
Если переменная среды не установлена, она будет заменена пустой строкой.
---
### Файлы
Используйте `{file:path/to/file}` для замены содержимого файла:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["./custom-instructions.md"],
"provider": {
"openai": {
"options": {
"apiKey": "{file:~/.secrets/openai-key}"
}
}
}
}
```
Пути к файлам могут быть:
- Относительно каталога файла конфигурации
- Или абсолютные пути, начинающиеся с `/` или `~`.
Они полезны для:
- Хранение конфиденциальных данных, таких как ключи API, в отдельных файлах.
- Включая большие файлы инструкций, не загромождая вашу конфигурацию.
- Совместное использование общих фрагментов конфигурации в нескольких файлах конфигурации.

View File

@@ -0,0 +1,170 @@
---
title: Пользовательские инструменты
description: Создавайте инструменты, которые LLM может вызывать в открытом коде.
---
Пользовательские инструменты — это создаваемые вами функции, которые LLM может вызывать во время разговоров. Они работают вместе со [встроенными инструментами ](/docs/tools) открытого кода, такими как `read`, `write` и `bash`.
---
## Создание инструмента
Инструменты определяются как файлы **TypeScript** или **JavaScript**. Однако определение инструмента может вызывать сценарии, написанные на **любом языке** — TypeScript или JavaScript используются только для самого определения инструмента.
---
### Расположение
Их можно определить:
- Локально, поместив их в каталог `.opencode/tools/` вашего проекта.
- Или глобально, поместив их в `~/.config/opencode/tools/`.
---
### Структура
Самый простой способ создания инструментов — использовать помощник `tool()`, который обеспечивает безопасность типов и проверку.
```ts title=".opencode/tools/database.ts" {1}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Query the project database",
args: {
query: tool.schema.string().describe("SQL query to execute"),
},
async execute(args) {
// Your database logic here
return `Executed query: ${args.query}`
},
})
```
**имя файла** становится **именем инструмента**. Вышеупомянутое создает инструмент `database`.
---
#### Несколько инструментов в файле
Вы также можете экспортировать несколько инструментов из одного файла. Каждый экспорт становится **отдельным инструментом** с именем **`<filename>_<exportname>`**:
```ts title=".opencode/tools/math.ts"
import { tool } from "@opencode-ai/plugin"
export const add = tool({
description: "Add two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a + args.b
},
})
export const multiply = tool({
description: "Multiply two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a * args.b
},
})
```
При этом создаются два инструмента: `math_add` и `math_multiply`.
---
### Аргументы
Вы можете использовать `tool.schema`, то есть просто [Zod](https://zod.dev), для определения типов аргументов.
```ts "tool.schema"
args: {
query: tool.schema.string().describe("SQL query to execute")
}
```
Вы также можете импортировать [Zod](https://zod.dev) напрямую и вернуть простой объект:
```ts {6}
import { z } from "zod"
export default {
description: "Tool description",
args: {
param: z.string().describe("Parameter description"),
},
async execute(args, context) {
// Tool implementation
return "result"
},
}
```
---
### Контекст
Инструменты получают контекст текущего сеанса:
```ts title=".opencode/tools/project.ts" {8}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Get project information",
args: {},
async execute(args, context) {
// Access context information
const { agent, sessionID, messageID, directory, worktree } = context
return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
},
})
```
Используйте `context.directory` для рабочего каталога сеанса.
Используйте `context.worktree` для корня рабочего дерева git.
---
## Примеры
### Напишите инструмент на Python
Вы можете писать свои инструменты на любом языке, который захотите. Вот пример сложения двух чисел с использованием Python.
Сначала создайте инструмент как скрипт Python:
```python title=".opencode/tools/add.py"
import sys
a = int(sys.argv[1])
b = int(sys.argv[2])
print(a + b)
```
Затем создайте определение инструмента, которое его вызывает:
```ts title=".opencode/tools/python-add.ts" {10}
import { tool } from "@opencode-ai/plugin"
import path from "path"
export default tool({
description: "Add two numbers using Python",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args, context) {
const script = path.join(context.worktree, ".opencode/tools/add.py")
const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
return result.trim()
},
})
```
Здесь мы используем утилиту [`Bun.$`](https://bun.com/docs/runtime/shell) для запуска скрипта Python.

View File

@@ -0,0 +1,76 @@
---
title: Экосистема
description: Проекты и интеграции, созданные с помощью OpenCode.
---
Коллекция проектов сообщества, построенных на OpenCode.
:::примечание
Хотите добавить свой проект, связанный с OpenCode, в этот список? Разместите пиар.
:::
Вы также можете посетить [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) и [opencode.cafe](https://opencode.cafe) — сообщество, объединяющее экосистему и сообщество.
---
## Плагины
| Имя | Описание |
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | Автоматически запускайте сеансы OpenCode в изолированных песочницах Daytona с синхронизацией git и предварительным просмотром в реальном времени. |
| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | Автоматически внедрять заголовки сеансов Helicone для группировки запросов. |
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | Автоматическое внедрение типов TypeScript/Svelte в файлы, считываемые с помощью инструментов поиска. |
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | Используйте подписку ChatGPT Plus/Pro вместо кредитов API. |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | Используйте существующий план Gemini вместо выставления счетов через API. |
| [opencode-антигравитация-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | Используйте бесплатные модели Антигравити вместо выставления счетов через API. |
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | Многоветвевая изоляция контейнеров разработки с мелкими клонами и автоматическим назначением портов. |
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Плагин Google Antigradity OAuth с поддержкой поиска Google и более надежной обработкой API. |
| [opencode-динамический-контекст-обрезка](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Оптимизируйте использование токенов за счет сокращения выходных данных устаревших инструментов. |
| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | Добавьте встроенную поддержку веб-поиска для поддерживаемых поставщиков в стиле Google. |
| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | Позволяет агентам ИИ запускать фоновые процессы в PTY и отправлять им интерактивные данные. |
| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | Инструкции для неинтерактивных команд оболочки — предотвращают зависания из-за операций, зависящих от TTY. |
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Отслеживайте использование OpenCode с помощью Wakatime |
| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | Очистка таблиц уценок, созданных LLM |
| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | Редактирование кода в 10 раз быстрее с помощью API Morph Fast Apply и маркеров отложенного редактирования. |
| [о-мой-opencode](https://github.com/code-yeongyu/oh-my-opencode) | Фоновые агенты, встроенные инструменты LSP/AST/MCP, курируемые агенты, совместимость с Claude Code |
| [уведомитель открытого кода](https://github.com/panta82/opencode-notificator) | Уведомления на рабочем столе и звуковые оповещения для сеансов OpenCode |
| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | Уведомления на рабочем столе и звуковые оповещения о разрешениях, завершении и событиях ошибок. |
| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | Автоматическое именование сеансов Zellij на основе искусственного интеллекта на основе контекста OpenCode. |
| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | Разрешить агентам OpenCode отложенную загрузку подсказок по требованию с обнаружением и внедрением навыков. |
| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | Постоянная память между сеансами с использованием Supermemory |
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | Интерактивный обзор плана с визуальными аннотациями и возможностью совместного использования в частном или автономном режиме. |
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | Расширьте открытый код/команды до мощной системы оркестровки с детальным управлением потоком данных. |
| [opencode-планировщик](https://github.com/different-ai/opencode-scheduler) | Планируйте повторяющиеся задания с помощью launchd (Mac) или systemd (Linux) с синтаксисом cron. |
| [микоде](https://github.com/vtemian/micode) | Структурированный мозговой штурм → План → Реализация рабочего процесса с непрерывностью сеанса |
| [октто](https://github.com/vtemian/octto) | Интерактивный пользовательский интерфейс браузера для мозгового штурма с помощью искусственного интеллекта с формами из нескольких вопросов |
| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | Фоновые агенты в стиле Claude Code с асинхронным делегированием и сохранением контекста. |
| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | Встроенные уведомления ОС для OpenCode — узнайте, когда задачи завершены |
| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | Комплексный пакет многоагентной оркестровки — 16 компонентов, одна установка |
| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | Рабочие деревья git с нулевым трением для OpenCode |
---
## Проекты
| Имя | Описание |
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
| [StreeX 1 | Discord-бот для управления сессиями OpenCode, построенный на SDK |
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | Плагин Neovim для подсказок с поддержкой редактора, созданный на основе API |
| [портал](https://github.com/hosenur/portal) | Мобильный веб-интерфейс для OpenCode через Tailscale/VPN |
| [шаблон плагина с открытым кодом](https://github.com/zenobi-us/opencode-plugin-template/) | Шаблон для создания плагинов OpenCode |
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Интерфейс Neovim для открытого кода — агент кодирования искусственного интеллекта на базе терминала |
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | Поставщик Vercel AI SDK для использования OpenCode через @opencode-ai/sdk |
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | Веб-приложение или настольное приложение и расширение VS Code для OpenCode |
| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | Плагин Obsidian, встраивающий OpenCode в пользовательский интерфейс Obsidian. |
| [OpenWork](https://github.com/different-ai/openwork) | Альтернатива Claude Cowork с открытым исходным кодом на базе OpenCode. |
| [ocx](https://github.com/kdcokenny/ocx) | Менеджер расширений OpenCode с переносимыми изолированными профилями. |
| [КодNomad](https://github.com/NeuralNomadsAI/CodeNomad) | Настольное, веб-, мобильное и удаленное клиентское приложение для OpenCode |
---
## Агенты
| Имя | Описание |
| ----------------------------------------------------------------- | ------------------------------------------------------------ |
| [Агентный](https://github.com/Cluster444/agentic) | Модульные ИИ-агенты и команды для структурированной разработки |
| [opencode-агенты](https://github.com/darrenhinde/opencode-agents) | Конфигурации, подсказки, агенты и плагины для улучшения рабочих процессов. |

View File

@@ -0,0 +1,170 @@
---
title: Предприятие
description: Безопасное использование OpenCode в вашей организации.
---
import config from "../../../../config.mjs"
export const email = `mailto:${config.email}`
OpenCode Enterprise предназначен для организаций, которые хотят быть уверены, что их код и данные никогда не покинут инфраструктуру. Это можно сделать с помощью централизованной конфигурации, которая интегрируется с вашим единым входом и внутренним шлюзом AI.
:::примечание
OpenCode не хранит ваш код или контекстные данные.
:::
Чтобы начать работу с OpenCode Enterprise:
1. Проведите испытание внутри своей команды.
2. **<a href={email}>Свяжитесь с нами</a>**, чтобы обсудить цены и варианты внедрения.
---
## Пробный
OpenCode имеет открытый исходный код и не хранит ваш код или контекстные данные, поэтому ваши разработчики могут просто [приступить к работе](/docs/) и провести пробную версию.
---
### Обработка данных
**OpenCode не хранит ваш код или контекстные данные.** Вся обработка происходит локально или посредством прямых вызовов API к вашему провайдеру ИИ.
Это означает, что пока вы используете поставщика, которому доверяете, или внутреннего
Шлюз AI позволяет безопасно использовать OpenCode.
Единственное предостережение — это дополнительная функция `/share`.
---
#### Обмен беседами
Если пользователь включает функцию `/share`, разговор и связанные с ним данные отправляются в службу, которую мы используем для размещения этих общих страниц на opencode.ai.
В настоящее время данные передаются через периферийную сеть нашей CDN и кэшируются на периферии рядом с вашими пользователями.
Мы рекомендуем вам отключить эту функцию для пробной версии.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled"
}
```
[Подробнее о совместном использовании](/docs/share).
---
### Владение кодом
**Вы являетесь владельцем всего кода, созданного OpenCode.** Никаких лицензионных ограничений или претензий на право собственности нет.
---
## Цены
Мы используем модель «на рабочее место» для OpenCode Enterprise. Если у вас есть собственный шлюз LLM, мы не взимаем плату за используемые токены. Для получения более подробной информации о ценах и вариантах реализации **<a href={email}>свяжитесь с нами</a>**.
---
## Развертывание
После завершения пробной версии и готовности использовать OpenCode на
вашей организации, вы можете **<a href={email}>связаться с нами</a>**, чтобы обсудить
цены и варианты реализации.
---
### Центральная конфигурация
Мы можем настроить OpenCode для использования единой центральной конфигурации для всей вашей организации.
Эта централизованная конфигурация может интегрироваться с вашим поставщиком единого входа и гарантирует всем пользователям доступ только к вашему внутреннему шлюзу AI.
---
### Интеграция единого входа
Через центральную конфигурацию OpenCode может интегрироваться с провайдером единого входа вашей организации для аутентификации.
Это позволяет OpenCode получать учетные данные для вашего внутреннего шлюза AI через существующую систему управления идентификацией.
---
### Внутренний шлюз AI
Благодаря центральной конфигурации OpenCode также можно настроить на использование только вашего внутреннего шлюза AI.
Вы также можете отключить всех других поставщиков ИИ, гарантируя, что все запросы будут проходить через утвержденную инфраструктуру вашей организации.
---
### Самостоятельный хостинг
Хотя мы рекомендуем отключить страницы общего доступа, чтобы гарантировать, что ваши данные никогда не исчезнут.
вашей организации, мы также можем помочь вам самостоятельно разместить их в вашей инфраструктуре.
В настоящее время это находится в нашей дорожной карте. Если вам интересно, **<a href={email}>дайте нам знать</a>**.
---
## Часто задаваемые вопросы
<details>
<summary>Что такое OpenCode Enterprise?</summary>
OpenCode Enterprise предназначен для организаций, которые хотят быть уверены, что их код и данные никогда не покинут инфраструктуру. Это можно сделать с помощью централизованной конфигурации, которая интегрируется с вашим единым входом и внутренним шлюзом AI.
</details>
<details>
<summary>Как начать работу с OpenCode Enterprise?</summary>
Просто начните с внутреннего испытания со своей командой. OpenCode по умолчанию не сохраняет ваш код или контекстные данные, что упрощает начало работы.
Затем **<a href={email}>свяжитесь с нами</a>**, чтобы обсудить цены и варианты внедрения.
</details>
<details>
<summary>Как работает корпоративное ценообразование?</summary>
Мы предлагаем корпоративные цены за рабочее место. Если у вас есть собственный шлюз LLM, мы не взимаем плату за используемые токены. Для получения более подробной информации **<a href={email}>свяжитесь с нами</a>**, чтобы получить индивидуальное предложение, соответствующее потребностям вашей организации.
</details>
<details>
<summary>Защищены ли мои данные с помощью OpenCode Enterprise?</summary>
Да. OpenCode не хранит ваш код или контекстные данные. Вся обработка происходит локально или посредством прямых вызовов API вашего провайдера ИИ. Благодаря централизованной настройке и интеграции единого входа ваши данные остаются в безопасности в инфраструктуре вашей организации.
</details>
<details>
<summary>Можем ли мы использовать собственный частный реестр NPM?</summary>
OpenCode поддерживает частные реестры npm посредством встроенной поддержки файлов `.npmrc` Bun. Если ваша организация использует частный реестр, такой как JFrog Artifactory, Nexus или аналогичный, убедитесь, что разработчики прошли аутентификацию перед запуском OpenCode.
Чтобы настроить аутентификацию с помощью вашего частного реестра:
```bash
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
```
При этом создается `~/.npmrc` с данными аутентификации. OpenCode автоматически
возьми это.
:::осторожность
Перед запуском OpenCode вы должны войти в частный реестр.
:::
Альтернативно вы можете вручную настроить файл `.npmrc`:
```bash title="~/.npmrc"
registry=https://your-company.jfrog.io/api/npm/npm-virtual/
//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
```
Разработчики должны войти в частный реестр перед запуском OpenCode, чтобы гарантировать возможность установки пакетов из корпоративного реестра.
</details>

View File

@@ -0,0 +1,130 @@
---
title: Форматеры
description: OpenCode использует средства форматирования, специфичные для языка.
---
OpenCode автоматически форматирует файлы после их записи или редактирования с использованием средств форматирования для конкретного языка. Это гарантирует, что создаваемый код будет соответствовать стилям кода вашего проекта.
---
## Встроенный
OpenCode поставляется с несколькими встроенными форматировщиками для популярных языков и платформ. Ниже приведен список форматтеров, поддерживаемых расширений файлов, а также необходимых команд или параметров конфигурации.
| форматтер | Расширения | Требования |
| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| правительство | .идти | Доступна команда `gofmt` |
| смешивание | .ex, .exs, .bias, .heex, .bend, .neex, .sface | Доступна команда `mix` |
| красивее | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и [подробнее](https://prettier.io/docs/en/index.html) | Зависимость `prettier` в `package.json` |
| биом | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и [подробнее](https://biomejs.dev/) | Конфигурационный файл `biome.json(c)` |
| зигзаг | .zig, .zon | Доступна команда `zig` |
| clang-формат | .c, .cpp, .h, .hpp, .ino и [подробнее](https://clang.llvm.org/docs/ClangFormat.html) | Конфигурационный файл `.clang-format` |
| ктлинт | .кт, .ктс | Доступна команда `ktlint` |
| ерш | .py, .pyi | Команда `ruff` доступна в конфигурации |
| ржавчина | .rs | Доступна команда `rustfmt` |
| грузовой контейнер | .rs | Доступна команда `cargo fmt` |
| уф | .py, .pyi | Доступна команда `uv` |
| рубокоп | .rb, .rake, .gemspec, .ru | Доступна команда `rubocop` |
| стандартный RB | .rb, .rake, .gemspec, .ru | Доступна команда `standardrb` |
| htmlbeautifier | .erb, .html.erb | Доступна команда `htmlbeautifier` |
| воздух | .Р | Доступна команда `air` |
| дротик | .dart | Доступна команда `dart` |
| ocamlformat | .мл, .мли | Доступна команда `ocamlformat` и файл конфигурации `.ocamlformat`. |
| терраформировать | .tf, .tfvars | Доступна команда `terraform` |
| светиться | .блеск | Доступна команда `gleam` |
| никсфмт | .nix | Доступна команда `nixfmt` |
| шфмт | .sh, .bash | Доступна команда `shfmt` |
| пинта | .php | Зависимость `laravel/pint` в `composer.json` |
| oxfmt (экспериментальный) | .js, .jsx, .ts, .tsx | Зависимость `oxfmt` в `package.json` и [экспериментальная переменная окружения flag](/docs/cli/#experimental) |
| ормол | .hs | Доступна команда `ormolu` |
Поэтому, если ваш проект имеет `prettier` в вашем `package.json`, OpenCode автоматически его использует.
---
## Как это работает
Когда OpenCode записывает или редактирует файл, он:
1. Проверяет расширение файла по всем включенным средствам форматирования.
2. Запускает соответствующую команду форматирования файла.
3. Автоматически применяет изменения форматирования.
Этот процесс происходит в фоновом режиме, обеспечивая сохранение стилей кода без каких-либо действий вручную.
---
## Настроить
Вы можете настроить форматтеры через раздел `formatter` в конфигурации OpenCode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}
```
Каждая конфигурация форматтера поддерживает следующее:
| Свойство | Тип | Описание |
| ------------- | -------- | ------------------------------------------------------- |
| `disabled` | логическое значение | Установите для этого параметра значение `true`, чтобы отключить форматтер. |
| `command` | нить[] | Команда для форматирования |
| `environment` | объект | Переменные среды, которые необходимо установить при запуске средства форматирования |
| `extensions` | нить[] | Расширения файлов, которые должен обрабатывать этот форматтер |
Давайте посмотрим на несколько примеров.
---
### Отключение форматтеров
Чтобы глобально отключить **все** средства форматирования, установите для `formatter` значение `false`:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}
```
Чтобы отключить **конкретный** форматтер, установите для `disabled` значение `true`:
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}
```
---
### Пользовательские форматтеры
Вы можете переопределить встроенные средства форматирования или добавить новые, указав команду, переменные среды и расширения файлов:
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
},
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}
```
Заполнитель **`$FILE`** в команде будет заменен путем к форматируемому файлу.

View File

@@ -0,0 +1,321 @@
---
title: GitHub
description: Используйте OpenCode в задачах и пул-реквестах GitHub.
---
OpenCode интегрируется с вашим рабочим процессом GitHub. Упомяните `/opencode` или `/oc` в своем комментарии, и OpenCode выполнит задачи в вашем средстве выполнения действий GitHub.
---
## Функции
- **Сортировка проблем**. Попросите OpenCode разобраться в проблеме и объяснить ее вам.
- **Исправить и внедрить**. Попросите OpenCode исправить проблему или реализовать функцию. И будет работать в новой ветке и подавать ПР со всеми изменениями.
- **Безопасность**: OpenCode запускается внутри бегунов вашего GitHub.
---
## Установка
Запустите следующую команду в проекте, который находится в репозитории GitHub:
```bash
opencode github install
```
Это поможет вам установить приложение GitHub, создать рабочий процесс и настроить секреты.
---
### Ручная настройка
Или вы можете настроить его вручную.
1. **Установите приложение GitHub**
Перейдите на [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent). Убедитесь, что он установлен в целевом репозитории.
2. **Добавьте рабочий процесс**
Добавьте следующий файл рабочего процесса в `.github/workflows/opencode.yml` в своем репозитории. Обязательно установите соответствующий `model` и необходимые ключи API в `env`.
```yml title=".github/workflows/opencode.yml" {24,26}
name: opencode
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
opencode:
if: |
contains(github.event.comment.body, '/oc') ||
contains(github.event.comment.body, '/opencode')
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
# share: true
# github_token: xxxx
```
3. **Храните ключи API в секрете**
В **настройках** вашей организации или проекта разверните **Секреты и переменные** слева и выберите **Действия**. И добавьте необходимые ключи API.
---
## Конфигурация
- `model`: модель для использования с OpenCode. Принимает формат `provider/model`. Это **обязательно**.
- `agent`: используемый агент. Должен быть основным агентом. Возвращается к `default_agent` из конфигурации или к `"build"`, если не найден.
- `share`: следует ли предоставлять общий доступ к сеансу OpenCode. По умолчанию **true** для общедоступных репозиториев.
- `prompt`: дополнительный настраиваемый запрос для переопределения поведения по умолчанию. Используйте это, чтобы настроить обработку запросов OpenCode.
- `token`: дополнительный токен доступа GitHub для выполнения таких операций, как создание комментариев, фиксация изменений и открытие запросов на включение. По умолчанию OpenCode использует токен доступа к установке из приложения OpenCode GitHub, поэтому фиксации, комментарии и запросы на включение отображаются как исходящие из приложения.
Кроме того, вы можете использовать [встроенный `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) средства запуска действий GitHub без установки приложения OpenCode GitHub. Просто не забудьте предоставить необходимые разрешения в вашем рабочем процессе:
```yaml
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
```
Вы также можете использовать [токены личного доступа](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT), если предпочитаете.
---
## Поддерживаемые события
OpenCode может быть запущен следующими событиями GitHub:
| Тип события | Инициировано | Подробности |
| ----------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `issue_comment` | Комментарий к проблеме или PR | Упомяните `/opencode` или `/oc` в своем комментарии. OpenCode считывает контекст и может создавать ветки, открывать PR или отвечать. |
| `pull_request_review_comment` | Комментируйте конкретные строки кода в PR. | Упоминайте `/opencode` или `/oc` при просмотре кода. OpenCode получает путь к файлу, номера строк и контекст сравнения. |
| `issues` | Проблема открыта или отредактирована | Автоматически запускать OpenCode при создании или изменении проблем. Требуется ввод `prompt`. |
| `pull_request` | PR открыт или обновлен | Автоматически запускать OpenCode при открытии, синхронизации или повторном открытии PR. Полезно для автоматических обзоров. |
| `schedule` | Расписание на основе Cron | Запускайте OpenCode по расписанию. Требуется ввод `prompt`. Вывод поступает в журналы и PR (комментариев нет). |
| `workflow_dispatch` | Ручной триггер из пользовательского интерфейса GitHub | Запускайте OpenCode по требованию на вкладке «Действия». Требуется ввод `prompt`. Вывод идет в логи и PR. |
### Пример расписания
Запускайте OpenCode по расписанию для выполнения автоматизированных задач:
```yaml title=".github/workflows/opencode-scheduled.yml"
name: Scheduled OpenCode Task
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 9am UTC
jobs:
opencode:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review the codebase for any TODO comments and create a summary.
If you find issues worth addressing, open an issue to track them.
```
Для запланированных событий вход `prompt` **обязателен**, поскольку нет комментария, из которого можно было бы извлечь инструкции. Запланированные рабочие процессы выполняются без пользовательского контекста для проверки разрешений, поэтому рабочий процесс должен предоставлять `contents: write` и `pull-requests: write`, если вы ожидаете, что OpenCode будет создавать ветки или PR.
---
### Пример запроса на включение
Автоматически просматривать PR при их открытии или обновлении:
```yaml title=".github/workflows/opencode-review.yml"
name: opencode-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: read
issues: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
model: anthropic/claude-sonnet-4-20250514
use_github_token: true
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
Если для событий `pull_request` не указан `prompt`, OpenCode по умолчанию проверяет запрос на включение.
---
### Пример сортировки проблем
Автоматически сортируйте новые проблемы. В этом примере фильтруется учетные записи старше 30 дней, чтобы уменьшить количество спама:
```yaml title=".github/workflows/opencode-triage.yml"
name: Issue Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Check account age
id: check
uses: actions/github-script@v7
with:
script: |
const user = await github.rest.users.getByUsername({
username: context.payload.issue.user.login
});
const created = new Date(user.data.created_at);
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
return days >= 30;
result-encoding: string
- uses: actions/checkout@v6
if: steps.check.outputs.result == 'true'
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
if: steps.check.outputs.result == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review this issue. If there's a clear fix or relevant docs:
- Provide documentation links
- Add error handling guidance for code examples
Otherwise, do not comment.
```
Для событий `issues` вход `prompt` **обязателен**, поскольку нет комментария, из которого можно было бы извлечь инструкции.
---
## Пользовательские подсказки
Переопределите приглашение по умолчанию, чтобы настроить поведение OpenCode для вашего рабочего процесса.
```yaml title=".github/workflows/opencode.yml"
- uses: anomalyco/opencode/github@latest
with:
model: anthropic/claude-sonnet-4-5
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
Это полезно для обеспечения соблюдения конкретных критериев проверки, стандартов кодирования или приоритетных областей, имеющих отношение к вашему проекту.
---
## Примеры
Вот несколько примеров того, как вы можете использовать OpenCode в GitHub.
- **Объясните проблему**
Добавьте этот комментарий в выпуск GitHub.
```
/opencode explain this issue
```
OpenCode прочитает всю ветку, включая все комментарии, и ответит с четким объяснением.
- **Исправить проблему**
В выпуске GitHub скажите:
```
/opencode fix this
```
А OpenCode создаст новую ветку, внедрит изменения и откроет PR с изменениями.
- **Проверьте запросы на запросы и внесите изменения**
Оставьте следующий комментарий к пиару на GitHub.
```
Delete the attachment from S3 when the note is removed /oc
```
OpenCode внедрит запрошенное изменение и зафиксирует его в том же PR.
- **Просмотрите отдельные строки кода**
Оставляйте комментарии непосредственно к строкам кода на вкладке «Файлы» PR. OpenCode автоматически определяет файл, номера строк и контекст различий, чтобы предоставить точные ответы.
```
[Comment on specific lines in Files tab]
/oc add error handling here
```
При комментировании определенных строк OpenCode получает:
- Точный файл, который просматривается
- Конкретные строки кода
- Окружающий контекст различий
- Информация о номере строки
Это позволяет выполнять более целевые запросы без необходимости вручную указывать пути к файлам или номера строк.

View File

@@ -0,0 +1,195 @@
---
title: GitLab
description: Используйте OpenCode в задачах GitLab и мерж-реквестах.
---
OpenCode интегрируется с вашим рабочим процессом GitLab через конвейер GitLab CI/CD или с GitLab Duo.
В обоих случаях OpenCode будет работать на ваших программах GitLab.
---
## ГитЛаб.
OpenCode работает в обычном конвейере GitLab. Вы можете встроить его в конвейер как [CI-компонент](https://docs.gitlab.com/ee/ci/components/)
Здесь мы используем созданный сообществом компонент CI/CD для OpenCode — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
---
### Функции
- **Использовать пользовательскую конфигурацию для каждого задания**. Настройте OpenCode с помощью пользовательского каталога конфигурации, например `./config/#custom-directory`, чтобы включать или отключать функциональность для каждого вызова OpenCode.
- **Минимальная настройка**: компонент CI настраивает OpenCode в фоновом режиме, вам нужно только создать конфигурацию OpenCode и начальное приглашение.
- **Гибкость**: компонент CI поддерживает несколько входных данных для настройки его поведения.
---
### Настраивать
1. Сохраните JSON аутентификации OpenCode как переменные среды CI типа файла в разделе **Настройки** > **CI/CD** > **Переменные**. Обязательно пометьте их как «Замаскированные и скрытые».
2. Добавьте следующее в файл `.gitlab-ci.yml`.
```yaml title=".gitlab-ci.yml"
include:
- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
inputs:
config_dir: ${CI_PROJECT_DIR}/opencode-config
auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
command: optional-custom-command
message: "Your prompt here"
```
Дополнительные сведения и варианты использования см. в документации ](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) для этого компонента.
---
## GitLab Дуэт
OpenCode интегрируется с вашим рабочим процессом GitLab.
Упомяните `@opencode` в комментарии, и OpenCode выполнит задачи в вашем конвейере GitLab CI.
---
### Функции
- **Сортировка проблем**. Попросите OpenCode разобраться в проблеме и объяснить ее вам.
- **Исправить и внедрить**. Попросите OpenCode исправить проблему или реализовать функцию.
Он создаст новую ветку и создаст мерж-реквест с изменениями.
- **Безопасность**: OpenCode работает на ваших программах GitLab.
---
### Настраивать
OpenCode работает в вашем конвейере GitLab CI/CD. Вот что вам понадобится для его настройки:
:::кончик
Ознакомьтесь с [**документацией GitLab**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) для получения актуальных инструкций.
:::
1. Настройте свою среду GitLab
2. Настройка CI/CD
3. Получите ключ API поставщика моделей ИИ
4. Создать учетную запись службы
5. Настройка переменных CI/CD
6. Создайте файл конфигурации потока, вот пример:
<details>
<summary>Конфигурация потока</summary>
```yaml
image: node:22-slim
commands:
- echo "Installing opencode"
- npm install --global opencode-ai
- echo "Installing glab"
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
- apt-get install --yes glab
- echo "Configuring glab"
- echo $GITLAB_HOST
- echo "Creating OpenCode auth configuration"
- mkdir --parents ~/.local/share/opencode
- |
cat > ~/.local/share/opencode/auth.json << EOF
{
"anthropic": {
"type": "api",
"key": "$ANTHROPIC_API_KEY"
}
}
EOF
- echo "Configuring git"
- git config --global user.email "opencode@gitlab.com"
- git config --global user.name "OpenCode"
- echo "Testing glab"
- glab issue list
- echo "Running OpenCode"
- |
opencode run "
You are an AI assistant helping with GitLab operations.
Context: $AI_FLOW_CONTEXT
Task: $AI_FLOW_INPUT
Event: $AI_FLOW_EVENT
Please execute the requested task using the available GitLab tools.
Be thorough in your analysis and provide clear explanations.
<important>
Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
</important>
"
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
- echo "Checking for git changes and pushing if any exist"
- |
if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
echo "Git changes detected, adding and pushing..."
git add .
if git diff --cached --quiet; then
echo "No staged changes to commit"
else
echo "Committing changes to branch: $CI_WORKLOAD_REF"
git commit --message "Codex changes"
echo "Pushing changes up to $CI_WORKLOAD_REF"
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
echo "Changes successfully pushed"
fi
else
echo "No git changes detected, skipping push"
fi
variables:
- ANTHROPIC_API_KEY
- GITLAB_TOKEN_OPENCODE
- GITLAB_HOST
```
</details>
Подробные инструкции можно найти в документации по агентам GitLab CLI](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/).
---
### Примеры
Вот несколько примеров того, как вы можете использовать OpenCode в GitLab.
:::кончик
Вы можете настроить использование триггерной фразы, отличной от `@opencode`.
:::
- **Объясните проблему**
Добавьте этот комментарий в выпуск GitLab.
```
@opencode explain this issue
```
OpenCode прочитает проблему и ответит с четким объяснением.
- **Исправить проблему**
В выпуске GitLab скажите:
```
@opencode fix this
```
OpenCode создаст новую ветку, внедрит изменения и откроет мерж-реквест с изменениями.
- **Просмотр мерж-реквестов**
Оставьте следующий комментарий к мерж-реквесту GitLab.
```
@opencode review this merge request
```
OpenCode рассмотрит мерж-реквест и предоставит отзыв.

View File

@@ -0,0 +1,48 @@
---
title: IDE
description: Расширение OpenCode для VS Code, Cursor и других IDE.
---
OpenCode интегрируется с VS Code, Cursor или любой IDE, поддерживающей терминал. Просто запустите `opencode` в терминале, чтобы начать.
---
## Использование
- **Быстрый запуск**: используйте `Cmd+Esc` (Mac) или `Ctrl+Esc` (Windows/Linux), чтобы открыть OpenCode в разделенном представлении терминала, или сосредоточьте внимание на существующем сеансе терминала, если он уже запущен.
- **Новый сеанс**: используйте `Cmd+Shift+Esc` (Mac) или `Ctrl+Shift+Esc` (Windows/Linux), чтобы начать новый сеанс терминала OpenCode, даже если он уже открыт. Вы также можете нажать кнопку OpenCode в пользовательском интерфейсе.
- **Узнавание контекста**: автоматически делитесь своим текущим выбором или вкладкой с помощью OpenCode.
- **File Reference Shortcuts**: Use `Cmd+Option+K` (Mac) or `Alt+Ctrl+K` (Linux/Windows) to insert file references. Например, `@File#L37-42`.
---
## Установка
Чтобы установить OpenCode на VS Code и популярные форки, такие как Cursor, Windsurf, VSCodium:
1. Открыть код VS
2. Откройте встроенный терминал
3. Запустите `opencode` - расширение установится автоматически.
С другой стороны, если вы хотите использовать собственную IDE при запуске `/editor` или `/export` из TUI, вам необходимо установить `export EDITOR="code --wait"`. [Подробнее](/docs/tui/#editor-setup).
---
### Ручная установка
Найдите **OpenCode** в магазине расширений и нажмите **Установить**.
---
### Поиск неисправностей
Если расширение не устанавливается автоматически:
- Убедитесь, что вы используете `opencode` во встроенном терминале.
- Убедитесь, что CLI для вашей IDE установлен:
- Для кода VS: команда `code`.
- Для курсора: команда `cursor`.
- Для виндсерфинга: команда `windsurf`.
- Для VSCodium: команда `codium`.
- Если нет, запустите `Cmd+Shift+P` (Mac) или `Ctrl+Shift+P` (Windows/Linux) и найдите «Команда оболочки: установите команду «код» в PATH» (или эквивалент для вашей IDE).
- Убедитесь, что у VS Code есть разрешение на установку расширений.

View File

@@ -0,0 +1,359 @@
---
title: Введение
description: Начните работу с OpenCode.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
import config from "../../../../config.mjs"
export const console = config.console
[**OpenCode**](/) — это агент кодирования искусственного интеллекта с открытым исходным кодом. Он доступен в виде интерфейса на базе терминала, настольного приложения или расширения IDE.
![OpenCode TUI с темой открытого кода](../../../assets/lander/screenshot.png)
Давайте начнем.
---
#### Предварительные условия
Чтобы использовать OpenCode в вашем терминале, вам понадобится:
1. Современный эмулятор терминала, например:
- [WezTerm](https://wezterm.org), кроссплатформенный
- [Alacritty](https://alacritty.org), кроссплатформенный
- [Ghostty](https://ghostty.org), Linux и macOS
- [Kitty](https://sw.kovidgoyal.net/kitty/), Linux и macOS
2. Ключи API для поставщиков LLM, которых вы хотите использовать.
---
## Установить
Самый простой способ установить OpenCode — через сценарий установки.
```bash
curl -fsSL https://opencode.ai/install | bash
```
Вы также можете установить его с помощью следующих команд:
- **Использование Node.js**
<Tabs>
<TabItem label="npm">
```bash
npm install -g opencode-ai
```
</TabItem>
<TabItem label="Bun">
```bash
bun install -g opencode-ai
```
</TabItem>
<TabItem label="pnpm">
```bash
pnpm install -g opencode-ai
```
</TabItem>
<TabItem label="Yarn">
```bash
yarn global add opencode-ai
```
</TabItem>
</Tabs>
- **Использование Homebrew в macOS и Linux**
```bash
brew install anomalyco/tap/opencode
```
> Мы рекомендуем использовать кран OpenCode для получения самых последних версий. Официальная формула `brew install opencode` поддерживается командой Homebrew и обновляется реже.
- **Использование Paru в Arch Linux**
```bash
paru -S opencode-bin
```
#### Окна
:::tip[Рекомендуется: используйте WSL]
Для наилучшей работы в Windows мы рекомендуем использовать [Подсистема Windows для Linux (WSL)](/docs/windows-wsl). Он обеспечивает лучшую производительность и полную совместимость с функциями OpenCode.
:::
- **Используя шоколадный**
```bash
choco install opencode
```
- **Использование Scoop**
```bash
scoop install opencode
```
- **Использование NPM**
```bash
npm install -g opencode-ai
```
- **Использование Мизе**
```bash
mise use -g github:anomalyco/opencode
```
- **Использование Docker**
```bash
docker run -it --rm ghcr.io/anomalyco/opencode
```
В настоящее время находится поддержка установки OpenCode в Windows с помощью Bun.
Вы также можете получить двоичный файл из файла [Releases](https://github.com/anomalyco/opencode/releases).
---
## Настроить
С OpenCode вы можете использовать любого поставщика LLM, настроив его ключи API.
Если вы новичок в использовании поставщиков LLM, мы рекомендуем использовать [OpenCode Zen](/docs/zen).
Это тщательно подобранный список моделей, протестированных и проверенных OpenCode.
команда.
1. Запустите команду `/connect` в TUI, выберите opencode и перейдите по адресу [opencode.ai/auth](https://opencode.ai/auth).
```txt
/connect
```
2. Войдите в систему, добавьте свои платежные данные и скопируйте ключ API.
3. Вставьте свой ключ API.
```txt
┌ API key
└ enter
```
Альтернативно вы можете выбрать одного из других поставщиков. [Подробнее](/docs/providers#directory).
---
## Инициализировать
Теперь, когда вы настроили поставщика, вы можете перейти к проекту, который
над которым вы хотите работать.
```bash
cd /path/to/project
```
И запустите OpenCode.
```bash
opencode
```
Затем инициализируйте OpenCode для проекта, выполнив следующую команду.
```bash frame="none"
/init
```
Это позволит OpenCode проанализировать ваш проект и создать файл `AGENTS.md` в
корень проекта.
:::кончик
Вам следует зафиксировать файл `AGENTS.md` вашего проекта в Git.
:::
Это помогает OpenCode понять структуру проекта и шаблоны кодирования.
использовал.
---
## Использование
Теперь вы готовы использовать OpenCode для работы над своим проектом. Не стесняйтесь спрашивать это
что-либо!
Если вы новичок в использовании агента кодирования ИИ, вот несколько примеров, которые могут вам помочь.
помощь.
---
### Задавайте вопросы
Вы можете попросить OpenCode объяснить вам кодовую базу.
:::кончик
Используйте ключ `@` для нечеткого поиска файлов в проекте.
:::
```txt frame="none" "@packages/functions/src/api/index.ts"
How is authentication handled in @packages/functions/src/api/index.ts
```
Это полезно, если есть часть кодовой базы, над которой вы не работали.
---
### Добавить функции
Вы можете попросить OpenCode добавить новые функции в ваш проект. Хотя мы сначала рекомендуем попросить его создать план.
1. **Составьте план**
OpenCode имеет _режим планирования_, который отключает возможность вносить изменения и
вместо этого предложите _как_ реализовать эту функцию.
Переключитесь на него с помощью клавиши **Tab**. Вы увидите индикатор этого в правом нижнем углу.
```bash frame="none" title="Switch to Plan mode"
<TAB>
```
Теперь давайте опишем, что мы хотим от него.
```txt frame="none"
When a user deletes a note, we'd like to flag it as deleted in the database.
Then create a screen that shows all the recently deleted notes.
From this screen, the user can undelete a note or permanently delete it.
```
Вы хотите предоставить OpenCode достаточно подробностей, чтобы понять, чего вы хотите. Это помогает
поговорить с ним так, как будто вы разговариваете с младшим разработчиком в своей команде.
:::кончик
Дайте OpenCode много контекста и примеров, чтобы помочь ему понять, что вы
хотеть.
:::
2. **Итерация плана**
Как только он предоставит вам план, вы можете оставить ему отзыв или добавить более подробную информацию.
```txt frame="none"
We'd like to design this new screen using a design I've used before.
[Image #1] Take a look at this image and use it as a reference.
```
:::кончик
Перетащите изображения в терминал, чтобы добавить их в подсказку.
:::
OpenCode может сканировать любые изображения, которые вы ему предоставляете, и добавлять их в командную строку. Ты можешь
сделайте это, перетащив изображение в терминал.
3. **Создайте функцию**
Как только вы почувствуете себя комфортно с планом, вернитесь в _режим сборки_,
снова нажав клавишу **Tab**.
```bash frame="none"
<TAB>
```
И попросить его внести изменения.
```bash frame="none"
Sounds good! Go ahead and make the changes.
```
---
### Внести изменения
Для более простых изменений вы можете попросить OpenCode создать его напрямую.
без необходимости предварительного рассмотрения плана.
```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
We need to add authentication to the /settings route. Take a look at how this is
handled in the /notes route in @packages/functions/src/notes.ts and implement
the same logic in @packages/functions/src/settings.ts
```
Вы хотите убедиться, что вы предоставляете достаточно деталей, чтобы OpenCode сделал правильный выбор.
изменения.
---
### Отменить изменения
Допустим, вы просите OpenCode внести некоторые изменения.
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
Но ты понимаешь, что это не то, чего ты хотел. Вы **можете отменить** изменения
с помощью команды `/undo`.
```bash frame="none"
/undo
```
OpenCode теперь отменит внесенные вами изменения и покажет исходное сообщение.
снова.
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
Отсюда вы можете настроить подсказку и попросить OpenCode повторить попытку.
:::кончик
Вы можете запустить `/undo` несколько раз, чтобы отменить несколько изменений.
:::
Или вы **можете повторить** изменения с помощью команды `/redo`.
```bash frame="none"
/redo
```
---
## Делиться
Разговоры, которые вы ведете с OpenCode, можно [поделиться с вашим
команда](/docs/share).
```bash frame="none"
/share
```
Это создаст ссылку на текущий разговор и скопирует ее в буфер обмена.
:::примечание
По умолчанию общий доступ к беседам не предоставляется.
:::
Вот [пример диалога](https://opencode.ai/s/4XP1fce5) с OpenCode.
---
## Настроить
И все! Теперь вы профессионал в использовании OpenCode.
Чтобы создать свою собственную, мы рекомендуем [выбрать тему](/docs/themes), [настроить привязки клавиш](/docs/keybinds), [настроить средства форматирования кода](/docs/formatters), [создать собственные команды](/docs/commands) или поиграться с файлом [OpenCode config](/docs/config).

View File

@@ -0,0 +1,192 @@
---
title: Сочетания клавиш
description: Настройте свои сочетания клавиш.
---
OpenCode имеет список сочетаний клавиш, которые вы можете настроить через конфигурацию OpenCode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"leader": "ctrl+x",
"app_exit": "ctrl+c,ctrl+d,<leader>q",
"editor_open": "<leader>e",
"theme_list": "<leader>t",
"sidebar_toggle": "<leader>b",
"scrollbar_toggle": "none",
"username_toggle": "none",
"status_view": "<leader>s",
"tool_details": "none",
"session_export": "<leader>x",
"session_new": "<leader>n",
"session_list": "<leader>l",
"session_timeline": "<leader>g",
"session_fork": "none",
"session_rename": "none",
"session_share": "none",
"session_unshare": "none",
"session_interrupt": "escape",
"session_compact": "<leader>c",
"session_child_cycle": "<leader>right",
"session_child_cycle_reverse": "<leader>left",
"session_parent": "<leader>up",
"messages_page_up": "pageup,ctrl+alt+b",
"messages_page_down": "pagedown,ctrl+alt+f",
"messages_line_up": "ctrl+alt+y",
"messages_line_down": "ctrl+alt+e",
"messages_half_page_up": "ctrl+alt+u",
"messages_half_page_down": "ctrl+alt+d",
"messages_first": "ctrl+g,home",
"messages_last": "ctrl+alt+g,end",
"messages_next": "none",
"messages_previous": "none",
"messages_copy": "<leader>y",
"messages_undo": "<leader>u",
"messages_redo": "<leader>r",
"messages_last_user": "none",
"messages_toggle_conceal": "<leader>h",
"model_list": "<leader>m",
"model_cycle_recent": "f2",
"model_cycle_recent_reverse": "shift+f2",
"model_cycle_favorite": "none",
"model_cycle_favorite_reverse": "none",
"variant_cycle": "ctrl+t",
"command_list": "ctrl+p",
"agent_list": "<leader>a",
"agent_cycle": "tab",
"agent_cycle_reverse": "shift+tab",
"input_clear": "ctrl+c",
"input_paste": "ctrl+v",
"input_submit": "return",
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
"input_move_left": "left,ctrl+b",
"input_move_right": "right,ctrl+f",
"input_move_up": "up",
"input_move_down": "down",
"input_select_left": "shift+left",
"input_select_right": "shift+right",
"input_select_up": "shift+up",
"input_select_down": "shift+down",
"input_line_home": "ctrl+a",
"input_line_end": "ctrl+e",
"input_select_line_home": "ctrl+shift+a",
"input_select_line_end": "ctrl+shift+e",
"input_visual_line_home": "alt+a",
"input_visual_line_end": "alt+e",
"input_select_visual_line_home": "alt+shift+a",
"input_select_visual_line_end": "alt+shift+e",
"input_buffer_home": "home",
"input_buffer_end": "end",
"input_select_buffer_home": "shift+home",
"input_select_buffer_end": "shift+end",
"input_delete_line": "ctrl+shift+d",
"input_delete_to_line_end": "ctrl+k",
"input_delete_to_line_start": "ctrl+u",
"input_backspace": "backspace,shift+backspace",
"input_delete": "ctrl+d,delete,shift+delete",
"input_undo": "ctrl+-,super+z",
"input_redo": "ctrl+.,super+shift+z",
"input_word_forward": "alt+f,alt+right,ctrl+right",
"input_word_backward": "alt+b,alt+left,ctrl+left",
"input_select_word_forward": "alt+shift+f,alt+shift+right",
"input_select_word_backward": "alt+shift+b,alt+shift+left",
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
"history_previous": "up",
"history_next": "down",
"terminal_suspend": "ctrl+z",
"terminal_title_toggle": "none",
"tips_toggle": "<leader>h",
"display_thinking": "none"
}
}
```
---
## Ключ лидера
OpenCode использует клавишу `leader` для большинства сочетаний клавиш. Это позволяет избежать конфликтов в вашем терминале.
По умолчанию `ctrl+x` является ведущей клавишей, и для большинства действий требуется сначала нажать ведущую клавишу, а затем сочетание клавиш. Например, чтобы начать новый сеанс, сначала нажмите `ctrl+x`, а затем нажмите `n`.
Вам не обязательно использовать выносную клавишу для привязок клавиш, но мы рекомендуем это сделать.
---
## Отключить привязку клавиш
Вы можете отключить привязку клавиш, добавив ключ в свою конфигурацию со значением «none».
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"session_compact": "none"
}
}
```
---
## Ярлыки команд на рабочем столе
Ввод приглашения настольного приложения OpenCode поддерживает распространенные сочетания клавиш в стиле Readline/Emacs для редактирования текста. Они встроены и в настоящее время не настраиваются через `opencode.json`.
| Ярлык | Действие |
| -------- | ---------------------------------------- |
| `ctrl+a` | Перейти к началу текущей строки |
| `ctrl+e` | Перейти к концу текущей строки |
| `ctrl+b` | Переместить курсор на один символ назад |
| `ctrl+f` | Переместить курсор на один символ вперед |
| `alt+b` | Переместить курсор на одно слово назад |
| `alt+f` | Переместить курсор вперед на одно слово |
| `ctrl+d` | Удалить символ под курсором |
| `ctrl+k` | Убить до конца строки |
| `ctrl+u` | Убить до начала строки |
| `ctrl+w` | Убить предыдущее слово |
| `alt+d` | Убить следующее слово |
| `ctrl+t` | Транспонировать символы |
| `ctrl+g` | Отменить всплывающие окна/прервать выполнение ответа |
---
## Shift+Ввод
Некоторые терминалы по умолчанию не отправляют клавиши-модификаторы с Enter. Возможно, вам придется настроить терминал на отправку `Shift+Enter` в качестве escape-последовательности.
### Терминал Windows
Откройте свой `settings.json` по адресу:
```
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
```
Добавьте это в массив `actions` корневого уровня:
```json
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
Добавьте это в массив `keybindings` корневого уровня:
```json
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
Сохраните файл и перезапустите терминал Windows или откройте новую вкладку.

View File

@@ -0,0 +1,188 @@
---
title: ЛСП Серверы
description: OpenCode интегрируется с вашими серверами LSP.
---
OpenCode интегрируется с вашим протоколом языкового сервера (LSP), чтобы помочь LLM взаимодействовать с вашей кодовой базой. Он использует диагностику для предоставления обратной связи LLM.
---
## Встроенный
OpenCode поставляется с несколькими встроенными LSP-серверами для популярных языков:
| ЛСП Сервер | Расширения | Требования |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------ |
| астро | .astro | Автоматическая установка для проектов Astro |
| бить | .sh, .bash, .zsh, .ksh | Автоматически устанавливает сервер языка bash |
| лязг | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Автоматическая установка для проектов C/C++. |
| csharp | .cs | `.NET SDK` установлен |
| Clojure-LSP | .clj, .cljs, .cljc, .edn | Доступна команда `clojure-lsp` |
| дротик | .dart | Доступна команда `dart` |
| дено | .ts, .tsx, .js, .jsx, .mjs | Доступна команда `deno` (автоматически определяет deno.json/deno.jsonc) |
| эликсир-ls | .ex, .exs | Доступна команда `elixir` |
| эслинт | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | Зависимость `eslint` в проекте |
| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` установлен |
| светиться | .блеск | Доступна команда `gleam` |
| гоплс | .идти | Доступна команда `go` |
| хлс | .hs, .lhs | Доступна команда `haskell-language-server-wrapper` |
| jdtls | .java | `Java SDK (version 21+)` установлен |
| Котлин-LS | .кт, .ктс | Автоматическая установка для проектов Kotlin |
| Луа-ЛС | .lua | Автоматическая установка для проектов Lua |
| снег | .nix | Доступна команда `nixd` |
| ocaml-lsp | .мл, .мли | Доступна команда `ocamllsp` |
| бычья линта | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Зависимость `oxlint` в проекте |
| PHP | .php | Автоматическая установка для проектов PHP |
| призма | .prisma | Доступна команда `prisma` |
| пирит | .py, .pyi | Установлена ​​зависимость `pyright` |
| рубин-lsp (рубокоп) | .rb, .rake, .gemspec, .ru | Доступны команды `ruby` и `gem`. |
| ржавчина | .rs | Доступна команда `rust-analyzer` |
| исходный комплект-lsp | .swift, .objc, .objcpp | `swift` установлен (`xcode` в macOS) |
| стройный | .стройный | Автоматическая установка для проектов Svelte |
| терраформировать | .tf, .tfvars | Автоматическая установка из выпусков GitHub |
| tinymist | .тип, .типк | Автоматическая установка из выпусков GitHub |
| машинопись | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Зависимость `typescript` в проекте |
| вид | .vue | Автоматическая установка для проектов Vue |
| Ямл-лс | .yaml, .yml | Автоматически устанавливает Red Hat yaml-language-server |
| Злс | .zig, .zon | Доступна команда `zig` |
Серверы LSP автоматически включаются при обнаружении одного из указанных выше расширений файлов и выполнении требований.
:::примечание
Вы можете отключить автоматическую загрузку LSP-сервера, установив для переменной среды `OPENCODE_DISABLE_LSP_DOWNLOAD` значение `true`.
:::
---
## Как это работает
Когда opencode открывает файл, он:
1. Проверяет расширение файла на всех включенных серверах LSP.
2. Запускает соответствующий сервер LSP, если он еще не запущен.
---
## Настроить
Вы можете настроить серверы LSP через раздел `lsp` в конфигурации открытого кода.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}
```
Каждый LSP-сервер поддерживает следующее:
| Свойство | Тип | Описание |
| ---------------- | -------- | ------------------------------------------------- |
| `disabled` | логическое значение | Установите для этого параметра значение `true`, чтобы отключить сервер LSP. |
| `command` | нить[] | Команда запуска LSP-сервера |
| `extensions` | нить[] | Расширения файлов, которые должен обрабатывать этот сервер LSP |
| `env` | объект | Переменные среды, которые нужно установить при запуске сервера |
| `initialization` | объект | Параметры инициализации для отправки на сервер LSP |
Давайте посмотрим на несколько примеров.
---
### Переменные среды
Используйте свойство `env` для установки переменных среды при запуске сервера LSP:
```json title="opencode.json" {5-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}
```
---
### Параметры инициализации
Используйте свойство `initialization` для передачи параметров инициализации на LSP-сервер. Это настройки, специфичные для сервера, отправляемые во время запроса LSP `initialize`:
```json title="opencode.json" {5-9}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
```
:::примечание
Параметры инициализации зависят от сервера LSP. Проверьте документацию вашего LSP-сервера на наличие доступных опций.
:::
---
### Отключение LSP-серверов
Чтобы отключить **все** LSP-серверы глобально, установите для `lsp` значение `false`:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}
```
Чтобы отключить **конкретный** LSP-сервер, установите для `disabled` значение `true`:
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
```
---
### Пользовательские LSP-серверы
Вы можете добавить собственные LSP-серверы, указав команду и расширения файлов:
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
```
---
## Дополнительная информация
### PHP Intelephense
PHP Intelephense предлагает дополнительные функции через лицензионный ключ. Вы можете предоставить лицензионный ключ, поместив (только) ключ в текстовый файл по адресу:
- В macOS/Linux: `$HOME/intelephense/licence.txt`
- В Windows: `%USERPROFILE%/intelephense/licence.txt`
Файл должен содержать только лицензионный ключ без какого-либо дополнительного содержимого.

View File

@@ -0,0 +1,511 @@
---
title: MCP-серверы
description: Добавьте локальные и удаленные инструменты MCP.
---
Вы можете добавить внешние инструменты в OpenCode, используя _Model Context Protocol_ или MCP. OpenCode поддерживает как локальные, так и удаленные серверы.
После добавления инструменты MCP автоматически становятся доступными для LLM наряду со встроенными инструментами.
---
#### Предостережения
Когда вы используете сервер MCP, он добавляет контекст. Это может быстро сложиться, если у вас много инструментов. Поэтому мы рекомендуем быть осторожными с тем, какие серверы MCP вы используете.
:::кончик
Серверы MCP добавляются к вашему контексту, поэтому будьте осторожны с тем, какие из них вы включаете.
:::
Некоторые серверы MCP, такие как сервер MCP GitHub, имеют тенденцию добавлять много токенов и могут легко превысить ограничение контекста.
---
## Давать возможность
Вы можете определить серверы MCP в своем [OpenCode Config](https://opencode.ai/docs/config/) в разделе `mcp`. Добавьте каждому MCP уникальное имя. Вы можете обратиться к этому MCP по имени при запросе LLM.
```jsonc title="opencode.jsonc" {6}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"name-of-mcp-server": {
// ...
"enabled": true,
},
"name-of-other-mcp-server": {
// ...
},
},
}
```
Вы также можете отключить сервер, установив для `enabled` значение `false`. Это полезно, если вы хотите временно отключить сервер, не удаляя его из конфигурации.
---
### Переопределение удаленных настроек по умолчанию
Организации могут предоставлять серверы MCP по умолчанию через свою конечную точку `.well-known/opencode`. Эти серверы могут быть отключены по умолчанию, что позволяет пользователям выбирать те, которые им нужны.
Чтобы включить определенный сервер из удаленной конфигурации вашей организации, добавьте его в локальную конфигурацию с помощью `enabled: true`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
Значения вашей локальной конфигурации переопределяют удаленные значения по умолчанию. Дополнительную информацию см. в [config Priorce](/docs/config#precedence-order).
---
## Местный
Добавьте локальные серверы MCP с помощью `type` в `"local"` внутри объекта MCP.
```jsonc title="opencode.jsonc" {15}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp-server": {
"type": "local",
// Or ["bun", "x", "my-mcp-command"]
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true,
"environment": {
"MY_ENV_VAR": "my_env_var_value",
},
},
},
}
```
Эта команда запускает локальный сервер MCP. Вы также можете передать список переменных среды.
Например, вот как можно добавить тестовый сервер [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp_everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
},
},
}
```
И чтобы использовать его, я могу добавить `use the mcp_everything tool` в свои подсказки.
```txt "mcp_everything"
use the mcp_everything tool to add the number 3 and 4
```
---
#### Параметры
Вот все варианты настройки локального сервера MCP.
| Вариант | Тип | Необходимый | Описание |
| ------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `type` | Нить | Да | Тип подключения к серверу MCP должен быть `"local"`. |
| `command` | Множество | Да | Команда и аргументы для запуска сервера MCP. |
| `environment` | Объект | | Переменные среды, которые необходимо установить при запуске сервера. |
| `enabled` | логическое значение | | Включите или отключите сервер MCP при запуске. |
| `timeout` | Число | | Тайм-аут в мс для получения инструментов с сервера MCP. По умолчанию 5000 (5 секунд). |
---
## Удаленный
Добавьте удаленные серверы MCP, установив для `type` значение `"remote"`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"enabled": true,
"headers": {
"Authorization": "Bearer MY_API_KEY"
}
}
}
}
```
`url` — это URL-адрес удаленного сервера MCP, а с помощью параметра `headers` вы можете передать список заголовков.
---
#### Параметры
| Вариант | Тип | Необходимый | Описание |
| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `type` | Нить | Да | Тип подключения к серверу MCP должен быть `"remote"`. |
| `url` | Нить | Да | URL-адрес удаленного сервера MCP. |
| `enabled` | логическое значение | | Включите или отключите сервер MCP при запуске. |
| `headers` | Объект | | Заголовки для отправки с запросом. |
| `oauth` | Объект | | Конфигурация аутентификации OAuth. См. раздел [OAuth](#oauth) ниже. |
| `timeout` | Число | | Тайм-аут в мс для получения инструментов с сервера MCP. По умолчанию 5000 (5 секунд). |
---
## OAuth
OpenCode автоматически обрабатывает аутентификацию OAuth для удаленных серверов MCP. Когда серверу требуется аутентификация, OpenCode:
1. Обнаружьте ответ 401 и инициируйте поток OAuth.
2. Используйте **Динамическую регистрацию клиента (RFC 7591)**, если это поддерживается сервером.
3. Надежно храните токены для будущих запросов
---
### Автоматический
Для большинства серверов MCP с поддержкой OAuth не требуется никакой специальной настройки. Просто настройте удаленный сервер:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp"
}
}
}
```
Если сервер требует аутентификации, OpenCode предложит вам пройти аутентификацию при первой попытке его использования. Если нет, вы можете [вручную запустить поток ](#authenticating) с помощью `opencode mcp auth <server-name>`.
---
### Предварительная регистрация
Если у вас есть учетные данные клиента от поставщика сервера MCP, вы можете их настроить:
```json title="opencode.json" {7-11}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {
"clientId": "{env:MY_MCP_CLIENT_ID}",
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
"scope": "tools:read tools:execute"
}
}
}
}
```
---
### Аутентификация
Вы можете вручную активировать аутентификацию или управлять учетными данными.
Аутентификация с помощью определенного сервера MCP:
```bash
opencode mcp auth my-oauth-server
```
Перечислите все серверы MCP и их статус аутентификации:
```bash
opencode mcp list
```
Удалить сохраненные учетные данные:
```bash
opencode mcp logout my-oauth-server
```
Команда `mcp auth` откроет ваш браузер для авторизации. После того как вы авторизуетесь, OpenCode надежно сохранит токены в `~/.local/share/opencode/mcp-auth.json`.
---
#### Отключение OAuth
Если вы хотите отключить автоматический OAuth для сервера (например, для серверов, которые вместо этого используют ключи API), установите для `oauth` значение `false`:
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-api-key-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}"
}
}
}
}
```
---
#### Параметры OAuth
| Вариант | Тип | Описание |
| -------------- | --------------- | -------------------------------------------------------------------------------- |
| `oauth` | Объект \ | ЛОЖЬ | Объект конфигурации OAuth или `false`, чтобы отключить автоматическое обнаружение OAuth. |
| `clientId` | Нить | Идентификатор клиента OAuth. Если этот параметр не указан, будет предпринята попытка динамической регистрации клиента. |
| `clientSecret` | Нить | Секрет клиента OAuth, если этого требует сервер авторизации. |
| `scope` | Нить | Области OAuth для запроса во время авторизации. |
#### Отладка
Если удаленный сервер MCP не может аутентифицироваться, вы можете диагностировать проблемы с помощью:
```bash
# View auth status for all OAuth-capable servers
opencode mcp auth list
# Debug connection and OAuth flow for a specific server
opencode mcp debug my-oauth-server
```
Команда `mcp debug` показывает текущий статус аутентификации, проверяет соединение HTTP и пытается выполнить поток обнаружения OAuth.
---
## Управлять
Ваши MCP доступны в виде инструментов OpenCode наряду со встроенными инструментами. Таким образом, вы можете управлять ими через конфигурацию OpenCode, как и любым другим инструментом.
---
### Глобальный
Это означает, что вы можете включать или отключать их глобально.
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp-foo": false
}
}
```
Мы также можем использовать шаблон glob, чтобы отключить все соответствующие MCP.
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp*": false
}
}
```
Здесь мы используем шаблон `my-mcp*` для отключения всех MCP.
---
### За агента
Если у вас большое количество серверов MCP, вы можете включить их только для каждого агента и отключить глобально. Для этого:
1. Отключите его как инструмент глобально.
2. В вашей [конфигурации агента](/docs/agents#tools) включите сервер MCP в качестве инструмента.
```json title="opencode.json" {11, 14-18}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp": {
"type": "local",
"command": ["bun", "x", "my-mcp-command"],
"enabled": true
}
},
"tools": {
"my-mcp*": false
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true
}
}
}
}
```
---
#### Шаблоны глобусов
Шаблон glob использует простые шаблоны подстановки регулярных выражений:
- `*` соответствует нулю или более любого символа (например, `"my-mcp*"` соответствует `my-mcp_search`, `my-mcp_list` и т. д.).
- `?` соответствует ровно одному символу.
- Все остальные символы совпадают буквально
:::примечание
Инструменты сервера MCP регистрируются с именем сервера в качестве префикса, поэтому, чтобы отключить все инструменты для сервера, просто используйте:
```
"mymcpservername_*": false
```
:::
---
## Примеры
Ниже приведены примеры некоторых распространенных серверов MCP. Вы можете отправить PR, если хотите документировать другие серверы.
---
### Часовой
Добавьте [сервер Sentry MCP](https://mcp.sentry.dev) для взаимодействия с вашими проектами и проблемами Sentry.
```json title="opencode.json" {4-8}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
}
}
}
```
После добавления конфигурации пройдите аутентификацию с помощью Sentry:
```bash
opencode mcp auth sentry
```
Откроется окно браузера для завершения процесса OAuth и подключения OpenCode к вашей учетной записи Sentry.
После аутентификации вы можете использовать инструменты Sentry в своих подсказках для запроса данных о проблемах, проектах и ​​ошибках.
```txt "use sentry"
Show me the latest unresolved issues in my project. use sentry
```
---
### Контекст7
Добавьте [сервер Context7 MCP](https://github.com/upstash/context7) для поиска в документах.
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}
```
Если вы зарегистрировали бесплатную учетную запись, вы можете использовать свой ключ API и получить более высокие ограничения скорости.
```json title="opencode.json" {7-9}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
}
}
}
}
```
Здесь мы предполагаем, что у вас установлена ​​переменная среды `CONTEXT7_API_KEY`.
Добавьте `use context7` в запросы на использование сервера Context7 MCP.
```txt "use context7"
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
```
Альтернативно вы можете добавить что-то подобное в свой файл [AGENTS.md](/docs/rules/).
```md title="AGENTS.md"
When you need to search docs, use `context7` tools.
```
---
### Греп от Верселя
Добавьте сервер MCP [Grep от Vercel](https://grep.app) для поиска по фрагментам кода на GitHub.
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gh_grep": {
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}
```
Поскольку мы назвали наш сервер MCP `gh_grep`, вы можете добавить `use the gh_grep tool` в свои запросы, чтобы агент мог его использовать.
```txt "use the gh_grep tool"
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
```
Альтернативно вы можете добавить что-то подобное в свой файл [AGENTS.md](/docs/rules/).
```md title="AGENTS.md"
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
```

View File

@@ -0,0 +1,223 @@
---
title: Модели
description: Настройка поставщика и модели LLM.
---
OpenCode использует [AI SDK](https://ai-sdk.dev/) и [Models.dev](https://models.dev) для поддержки **более 75 поставщиков LLM** и поддерживает запуск локальных моделей.
---
## Провайдеры
Большинство популярных провайдеров предварительно загружены по умолчанию. Если вы добавили учетные данные для поставщика с помощью команды `/connect`, они будут доступны при запуске OpenCode.
Узнайте больше о [providers](/docs/providers).
---
## Выберите модель
После того, как вы настроили своего провайдера, вы можете выбрать нужную модель, введя:
```bash frame="none"
/models
```
---
## Рекомендуемые модели
Моделей очень много, новые выходят каждую неделю.
:::кончик
Рассмотрите возможность использования одной из моделей, которые мы рекомендуем.
:::
Однако лишь немногие из них хороши как в генерации кода, так и в вызове инструментов.
Вот несколько моделей, которые хорошо работают с OpenCode (в произвольном порядке). (Это не исчерпывающий список и не обязательно актуальный):
- GPT 5.2
- Кодекс GPT 5.1
- Закрыть работу 4.5
- Клод Сонет 4.5
- Минимакс М2.1
- Близнецы 3 Про
---
## Установить значение по умолчанию
Чтобы установить одну из них в качестве модели по умолчанию, вы можете установить ключ `model` в вашем
Конфигурация OpenCode.
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"model": "lmstudio/google/gemma-3n-e4b"
}
```
Здесь полный идентификатор `provider_id/model_id`. Например, если вы используете [OpenCode Zen](/docs/zen), вы должны использовать `opencode/gpt-5.1-codex` для кодекса GPT 5.1.
Если вы настроили [пользовательский поставщик](/docs/providers#custom), `provider_id` — это ключ из части `provider` вашей конфигурации, а `model_id` — это ключ из `provider.models`.
---
## Настройка моделей
Вы можете глобально настроить параметры модели через файл config.
```jsonc title="opencode.jsonc" {7-12,19-24}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"options": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
"include": ["reasoning.encrypted_content"],
},
},
},
},
"anthropic": {
"models": {
"claude-sonnet-4-5-20250929": {
"options": {
"thinking": {
"type": "enabled",
"budgetTokens": 16000,
},
},
},
},
},
},
}
```
Здесь мы настраиваем глобальные параметры для двух встроенных моделей: `gpt-5` при доступе через поставщика `openai` и `claude-sonnet-4-20250514` при доступе через поставщика `anthropic`.
Названия встроенных поставщиков и моделей можно найти на сайте [Models.dev](https://models.dev).
Вы также можете настроить эти параметры для любых используемых вами агентов. Конфигурация агента переопределяет любые глобальные параметры здесь. [Подробнее](/docs/agents/#additional).
Вы также можете определить собственные варианты, расширяющие встроенные. Варианты позволяют настраивать разные параметры для одной и той же модели без создания повторяющихся записей:
```jsonc title="opencode.jsonc" {6-21}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"opencode": {
"models": {
"gpt-5": {
"variants": {
"high": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
"low": {
"reasoningEffort": "low",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
},
},
},
},
},
}
```
---
## Варианты
Многие модели поддерживают несколько вариантов с разными конфигурациями. OpenCode поставляется со встроенными вариантами по умолчанию для популярных провайдеров.
### Встроенные варианты
OpenCode поставляется с вариантами по умолчанию для многих провайдеров:
**Антропный**:
- `high` — Бюджет с высоким мышлением (по умолчанию)
- `max` — Максимальный бюджет мышления
**Открытый AI**:
Зависит от модели, но примерно:
- `none` — Никаких рассуждений.
- `minimal` — Минимальные усилия рассуждения
- `low` — Низкие усилия по рассуждению.
- `medium`  средние усилия рассуждения.
- `high` — Большие усилия по рассуждению.
- `xhigh` — сверхвысокие мыслительные усилия.
**Google**:
- `low`  меньший бюджет усилий/токенов.
- `high` — более высокий бюджет усилий/токенов
:::кончик
Этот список не является исчерпывающим. Многие другие провайдеры также имеют встроенные настройки по умолчанию.
:::
### Пользовательские варианты
Вы можете переопределить существующие варианты или добавить свои собственные:
```jsonc title="opencode.jsonc" {7-18}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"variants": {
"thinking": {
"reasoningEffort": "high",
"textVerbosity": "low",
},
"fast": {
"disabled": true,
},
},
},
},
},
},
}
```
### Варианты цикла
Используйте сочетание клавиш `variant_cycle` для быстрого переключения между вариантами. [Подробнее ](/docs/keybinds).
---
## Загрузка моделей
Когда OpenCode запускается, он проверяет модели в следующем порядке приоритета:
1. Флаг командной строки `--model` или `-m`. Формат тот же, что и в файле конфигурации: `provider_id/model_id`.
2. Список моделей в конфигурации OpenCode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-20250514"
}
```
Здесь используется формат `provider/model`.
3. Последняя использованная модель.
4. Первая модель, использующая внутренний приоритет.

View File

@@ -0,0 +1,331 @@
---
title: Режимы
description: Различные режимы для разных случаев использования.
---
:::осторожность
Режимы теперь настраиваются с помощью опции `agent` в конфигурации открытого кода.
Опция `mode` устарела. [Подробнее ](/docs/agents).
:::
Режимы в открытом коде позволяют настраивать поведение, инструменты и подсказки для различных вариантов использования.
Он имеет два встроенных режима: **сборка** и **планирование**. Вы можете настроить
эти или настройте свои собственные через конфигурацию открытого кода.
Вы можете переключаться между режимами во время сеанса или настраивать их в своем файле конфигурации.
---
## Встроенный
opencode имеет два встроенных режима.
---
### Строить
Сборка — это режим **по умолчанию** со всеми включенными инструментами. Это стандартный режим разработки, в котором вам необходим полный доступ к файловым операциям и системным командам.
---
### План
Ограниченный режим, предназначенный для планирования и анализа. В режиме плана по умолчанию отключены следующие инструменты:
- `write`  невозможно создавать новые файлы.
- `edit`  невозможно изменить существующие файлы, за исключением файлов, расположенных по адресу `.opencode/plans/*.md`, для детализации самого плана.
- `patch`  невозможно применить исправления.
- `bash` — невозможно выполнить команды оболочки.
Этот режим полезен, если вы хотите, чтобы ИИ анализировал код, предлагал изменения или создавал планы без внесения каких-либо фактических изменений в вашу кодовую базу.
---
## Переключение
Переключаться между режимами можно во время сеанса с помощью клавиши _Tab_. Или настроенную вами привязку клавиш `switch_mode`.
См. также: [Formatters](/docs/formatters) для получения информации о конфигурации форматирования кода.
---
## Настроить
Вы можете настроить встроенные режимы или создать свои собственные посредством настройки. Режимы можно настроить двумя способами:
### Конфигурация JSON
Настройте режимы в файле конфигурации `opencode.json`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mode": {
"build": {
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "{file:./prompts/build.txt}",
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"model": "anthropic/claude-haiku-4-20250514",
"tools": {
"write": false,
"edit": false,
"bash": false
}
}
}
}
```
### Конфигурация уценки
Вы также можете определить режимы, используя файлы уценки. Поместите их в:
- Глобальный: `~/.config/opencode/modes/`
- Проект: `.opencode/modes/`
```markdown title="~/.config/opencode/modes/review.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
write: false
edit: false
bash: false
---
You are in code review mode. Focus on:
- Code quality and best practices
- Potential bugs and edge cases
- Performance implications
- Security considerations
Provide constructive feedback without making direct changes.
```
Имя файла уценки становится именем режима (например, `review.md` создает режим `review`).
Давайте рассмотрим эти параметры конфигурации подробно.
---
### Модель
Используйте конфигурацию `model`, чтобы переопределить модель по умолчанию для этого режима. Полезно для использования разных моделей, оптимизированных под разные задачи. Например, более быстрая модель планирования и более эффективная модель реализации.
```json title="opencode.json"
{
"mode": {
"plan": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
```
---
### Температура
Управляйте случайностью и креативностью ответов ИИ с помощью конфигурации `temperature`. Более низкие значения делают ответы более целенаправленными и детерминированными, а более высокие значения повышают креативность и вариативность.
```json title="opencode.json"
{
"mode": {
"plan": {
"temperature": 0.1
},
"creative": {
"temperature": 0.8
}
}
}
```
Значения температуры обычно находятся в диапазоне от 0,0 до 1,0:
- **0,00,2**: очень целенаправленные и детерминированные ответы, идеальные для анализа кода и планирования.
- **0,30,5**: сбалансированные ответы с некоторой креативностью, подходят для общих задач развития.
- **0,61,0**: более творческие и разнообразные ответы, полезные для мозгового штурма и исследования.
```json title="opencode.json"
{
"mode": {
"analyze": {
"temperature": 0.1,
"prompt": "{file:./prompts/analysis.txt}"
},
"build": {
"temperature": 0.3
},
"brainstorm": {
"temperature": 0.7,
"prompt": "{file:./prompts/creative.txt}"
}
}
}
```
Если температура не указана, открытый код использует значения по умолчанию для конкретной модели (обычно 0 для большинства моделей, 0,55 для моделей Qwen).
---
### Быстрый
Укажите собственный файл системных подсказок для этого режима с помощью конфигурации `prompt`. Файл подсказки должен содержать инструкции, специфичные для целей режима.
```json title="opencode.json"
{
"mode": {
"review": {
"prompt": "{file:./prompts/code-review.txt}"
}
}
}
```
Этот путь указан относительно того, где находится файл конфигурации. Так что это работает для
как глобальная конфигурация открытого кода, так и конфигурация конкретного проекта.
---
### Инструменты
Контролируйте, какие инструменты доступны в этом режиме, с помощью конфигурации `tools`. Вы можете включить или отключить определенные инструменты, установив для них значение `true` или `false`.
```json
{
"mode": {
"readonly": {
"tools": {
"write": false,
"edit": false,
"bash": false,
"read": true,
"grep": true,
"glob": true
}
}
}
}
```
Если инструменты не указаны, все инструменты включены по умолчанию.
---
#### Доступные инструменты
Вот всеми инструментами можно управлять через конфигурацию режима.
| Инструмент | Описание |
| ----------- | ----------------------- |
| ХХ0ГГ | Выполнение команд оболочки |
| ХХ0ГГ | Изменить существующие файлы |
| ХХ0ГГ | Создание новых файлов |
| ХХ0ГГ | Чтение содержимого файла |
| ХХ0ГГ | Поиск содержимого файла |
| ХХ0ГГ | Найти файлы по шаблону |
| ХХ0ГГ | Вывести содержимое каталога |
| ХХ0ГГ | Применение патчей к файлам |
| ХХ0ГГ | Управляйте списками дел |
| ХХ0ГГ | Чтение списков дел |
| ХХ0ГГ | Получить веб-контент |
---
## Пользовательские режимы
Вы можете создавать свои собственные режимы, добавляя их в конфигурацию. Вот примеры использования обоих подходов:
### Использование конфигурации JSON
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"mode": {
"docs": {
"prompt": "{file:./prompts/documentation.txt}",
"tools": {
"write": true,
"edit": true,
"bash": false,
"read": true,
"grep": true,
"glob": true
}
}
}
}
```
### Использование файлов уценки
Создайте файлы режимов в `.opencode/modes/` для режимов, специфичных для проекта, или в `~/.config/opencode/modes/` для глобальных режимов:
```markdown title=".opencode/modes/debug.md"
---
temperature: 0.1
tools:
bash: true
read: true
grep: true
write: false
edit: false
---
You are in debug mode. Your primary goal is to help investigate and diagnose issues.
Focus on:
- Understanding the problem through careful analysis
- Using bash commands to inspect system state
- Reading relevant files and logs
- Searching for patterns and anomalies
- Providing clear explanations of findings
Do not make any changes to files. Only investigate and report.
```
```markdown title="~/.config/opencode/modes/refactor.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.2
tools:
edit: true
read: true
grep: true
glob: true
---
You are in refactoring mode. Focus on improving code quality without changing functionality.
Priorities:
- Improve code readability and maintainability
- Apply consistent naming conventions
- Reduce code duplication
- Optimize performance where appropriate
- Ensure all tests continue to pass
```
---
### Варианты использования
Вот несколько распространенных случаев использования различных режимов.
- **Режим сборки**: полная работа по разработке со всеми включенными инструментами.
- **Режим планирования**: анализ и планирование без внесения изменений.
- **Режим проверки**: проверка кода с доступом только для чтения и инструментами документирования.
- **Режим отладки**: сосредоточен на исследовании с включенными инструментами bash и чтения.
- **Режим «Документы»**: запись документации с использованием файловых операций, но без системных команд.
Вы также можете обнаружить, что разные модели подходят для разных случаев использования.

View File

@@ -0,0 +1,57 @@
---
title: Сеть
description: Настройте прокси и пользовательские сертификаты.
---
OpenCode поддерживает стандартные переменные среды прокси-сервера и пользовательские сертификаты для сетевых сред предприятия.
---
## Прокси
OpenCode учитывает стандартные переменные среды прокси.
```bash
# HTTPS proxy (recommended)
export HTTPS_PROXY=https://proxy.example.com:8080
# HTTP proxy (if HTTPS not available)
export HTTP_PROXY=http://proxy.example.com:8080
# Bypass proxy for local server (required)
export NO_PROXY=localhost,127.0.0.1
```
:::осторожность
TUI взаимодействует с локальным HTTP-сервером. Вы должны обойти прокси-сервер для этого соединения, чтобы избежать петель маршрутизации.
:::
Вы можете настроить порт и имя хоста сервера, используя [CLI flags](/docs/cli#run).
---
### Аутентификация
Если ваш прокси-сервер требует базовой аутентификации, включите учетные данные в URL-адрес.
```bash
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
```
:::осторожность
Избегайте жесткого кодирования паролей. Используйте переменные среды или безопасное хранилище учетных данных.
:::
Для прокси-серверов, требующих расширенной аутентификации, например NTLM или Kerberos, рассмотрите возможность использования шлюза LLM, поддерживающего ваш метод аутентификации.
---
## Таможенные сертификаты
Если ваше предприятие использует собственные центры сертификации для HTTPS-соединений, настройте OpenCode, чтобы доверять им.
```bash
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
```
Это работает как для прокси-соединений, так и для прямого доступа к API.

View File

@@ -0,0 +1,237 @@
---
title: Разрешения
description: Контролируйте, какие действия требуют одобрения для выполнения.
---
OpenCode использует конфигурацию `permission`, чтобы решить, должно ли данное действие выполняться автоматически, запрашивать вас или блокироваться.
Начиная с `v1.1.1`, устаревшая логическая конфигурация `tools` устарела и была объединена с `permission`. Старая конфигурация `tools` по-прежнему поддерживается для обеспечения обратной совместимости.
---
## Действия
Каждое правило разрешения разрешается в одно из:
- `"allow"` — запуск без одобрения
- `"ask"` — запрос на одобрение
- `"deny"` — заблокировать действие
---
## Конфигурация
Вы можете устанавливать разрешения глобально (с помощью `*`) и переопределять определенные инструменты.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}
```
Вы также можете установить все разрешения одновременно:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": "allow"
}
```
---
## Детальные правила (синтаксис объекта)
Для большинства разрешений вы можете использовать объект для применения различных действий на основе входных данных инструмента.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"npm *": "allow",
"rm *": "deny",
"grep *": "allow"
},
"edit": {
"*": "deny",
"packages/web/src/content/docs/*.mdx": "allow"
}
}
}
```
Правила оцениваются по шаблону, при этом **выигрывает последнее совпадающее правило**. Обычно сначала ставится универсальное правило `"*"`, а после него — более конкретные правила.
### Подстановочные знаки
В шаблонах разрешений используется простое сопоставление с подстановочными знаками:
- `*` соответствует нулю или более любого символа.
- `?` соответствует ровно одному символу
- Все остальные символы совпадают буквально
### Расширение домашнего каталога
Вы можете использовать `~` или `$HOME` в начале шаблона для ссылки на ваш домашний каталог. Это особенно полезно для правил [`external_directory`](#external-directories).
- `~/projects/*` -> `/Users/username/projects/*`
- `$HOME/projects/*` -> `/Users/username/projects/*`
- `~` -> `/Users/username`
### Внешние каталоги
Используйте `external_directory`, чтобы разрешить вызовы инструментов, затрагивающие пути за пределами рабочего каталога, в котором был запущен OpenCode. Это применимо к любому инструменту, который принимает путь в качестве входных данных (например, `read`, `edit`, `list`, `glob`, `grep` и многие команды `bash`).
Расширение дома (например, `~/...`) влияет только на запись шаблона. Он не делает внешний путь частью текущего рабочего пространства, поэтому пути за пределами рабочего каталога все равно должны быть разрешены через `external_directory`.
Например, это позволяет получить доступ ко всему, что находится под `~/projects/personal/`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
}
}
}
```
Любой каталог, разрешенный здесь, наследует те же настройки по умолчанию, что и текущая рабочая область. Поскольку для [`read` по умолчанию установлено значение `allow`](#defaults), чтение также разрешено для записей под `external_directory`, если оно не переопределено. Добавьте явные правила, когда инструмент должен быть ограничен в этих путях, например, блокировать редактирование при сохранении чтения:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}
```
Держите список сосредоточенным на доверенных путях и добавляйте дополнительные правила разрешения или запрета по мере необходимости для других инструментов (например, `bash`).
---
## Доступные разрешения
Разрешения OpenCode привязаны к имени инструмента, а также к нескольким мерам безопасности:
- `read` — чтение файла (соответствует пути к файлу)
- `edit` — все модификации файлов (охватывает `edit`, `write`, `patch`, `multiedit`)
- `glob` — подстановка файла (соответствует шаблону подстановки)
- `grep` — поиск по контенту (соответствует шаблону регулярного выражения)
- `list` — список файлов в каталоге (соответствует пути к каталогу)
- `bash` — запуск команд оболочки (соответствует проанализированным командам, например `git status --porcelain`)
- `task` — запуск субагентов (соответствует типу субагента)
- `skill` — загрузка навыка (соответствует названию навыка)
- `lsp` — выполнение запросов LSP (в настоящее время не детализированных)
- `todoread`, `todowrite` — чтение/обновление списка дел.
- `webfetch` — получение URL-адреса (соответствует URL-адресу)
- `websearch`, `codesearch` — поиск в сети/коде (соответствует запросу)
- `external_directory` — срабатывает, когда инструмент касается путей за пределами рабочего каталога проекта.
- `doom_loop` — срабатывает, когда один и тот же вызов инструмента повторяется 3 раза с одинаковым вводом.
---
## По умолчанию
Если вы ничего не укажете, OpenCode запустится с разрешенных значений по умолчанию:
- Большинство разрешений по умолчанию имеют значение `"allow"`.
- `doom_loop` и `external_directory` по умолчанию равны `"ask"`.
- `read` — это `"allow"`, но файлы `.env` по умолчанию запрещены:
```json title="opencode.json"
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}
```
---
## Что означает «Спросить»
Когда OpenCode запрашивает одобрение, пользовательский интерфейс предлагает три результата:
- `once` — утвердить только этот запрос
- `always` — одобрять будущие запросы, соответствующие предложенным шаблонам (до конца текущего сеанса OpenCode).
- `reject` — отклонить запрос
Набор шаблонов, которые одобрит `always`, предоставляется инструментом (например, утверждения bash обычно включают в белый список безопасный префикс команды, такой как `git status*`).
---
## Агенты
Вы можете переопределить разрешения для каждого агента. Разрешения агента объединяются с глобальной конфигурацией, и правила агента имеют приоритет. [Подробнее](/docs/agents#permissions) о разрешениях агента.
:::примечание
Более подробные примеры сопоставления с образцом см. в разделе [Детальные правила (синтаксис объекта)](#granular-rules-object-syntax) выше.
:::
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "deny",
"git push *": "deny",
"grep *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "ask",
"git push *": "deny",
"grep *": "allow"
}
}
}
}
}
```
Вы также можете настроить разрешения агента в Markdown:
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Only analyze code and suggest changes.
```
:::кончик
Используйте сопоставление с образцом для команд с аргументами. `"grep *"` разрешает `grep pattern file.txt`, а сам `"grep"` блокирует его. Такие команды, как `git status`, работают по умолчанию, но требуют явного разрешения (например, `"git status *"`) при передаче аргументов.
:::

View File

@@ -0,0 +1,385 @@
---
title: Плагины
description: Напишите свои собственные плагины для расширения OpenCode.
---
Плагины позволяют расширять OpenCode, подключаясь к различным событиям и настраивая поведение. Вы можете создавать плагины для добавления новых функций, интеграции с внешними сервисами или изменения поведения OpenCode по умолчанию.
Для примера ознакомьтесь с [plugins](/docs/ecosystem#plugins), созданными сообществом.
---
## Используйте плагин
Есть два способа загрузки плагинов.
---
### Из локальных файлов
Поместите файлы JavaScript или TypeScript в каталог плагина.
- `.opencode/plugins/`  плагины уровня проекта.
- `~/.config/opencode/plugins/` — глобальные плагины
Файлы в этих каталогах автоматически загружаются при запуске.
---
### Из НПМ
Укажите пакеты npm в файле конфигурации.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
}
```
Поддерживаются как обычные, так и ограниченные пакеты npm.
Просмотрите доступные плагины в папке [ecosystem](/docs/ecosystem#plugins).
---
### Как устанавливаются плагины
**Плагины npm** устанавливаются автоматически с помощью Bun при запуске. Пакеты и их зависимости кэшируются в `~/.cache/opencode/node_modules/`.
**Локальные плагины** загружаются непосредственно из каталога плагинов. Чтобы использовать внешние пакеты, вы должны создать `package.json` в своем каталоге конфигурации (см. [Зависимости](#dependencies)) или опубликовать плагин в npm и [добавить его в свой config](/docs/config#plugins).
---
### Порядок загрузки
Плагины загружаются из всех источников, и все хуки запускаются последовательно. Порядок загрузки следующий:
1. Глобальная конфигурация (`~/.config/opencode/opencode.json`)
2. Конфигурация проекта (`opencode.json`)
3. Глобальный каталог плагинов (`~/.config/opencode/plugins/`)
4. Каталог плагинов проекта (`.opencode/plugins/`)
Дубликаты пакетов npm с тем же именем и версией загружаются один раз. Однако локальный плагин и плагин npm со схожими именами загружаются отдельно.
---
## Создать плагин
Плагин — это **модуль JavaScript/TypeScript**, который экспортирует один или несколько плагинов.
функции. Каждая функция получает объект контекста и возвращает объект перехватчика.
---
### Зависимости
Локальные плагины и специальные инструменты могут использовать внешние пакеты npm. Добавьте `package.json` в каталог конфигурации с необходимыми вам зависимостями.
```json title=".opencode/package.json"
{
"dependencies": {
"shescape": "^2.1.0"
}
}
```
OpenCode запускает `bun install` при запуске для их установки. Затем ваши плагины и инструменты смогут импортировать их.
```ts title=".opencode/plugins/my-plugin.ts"
import { escape } from "shescape"
export const MyPlugin = async (ctx) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "bash") {
output.args.command = escape(output.args.command)
}
},
}
}
```
---
### Базовая структура
```js title=".opencode/plugins/example.js"
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
console.log("Plugin initialized!")
return {
// Hook implementations go here
}
}
```
Функция плагина получает:
- `project`: Текущая информация о проекте.
- `directory`: текущий рабочий каталог.
- `worktree`: путь к рабочему дереву git.
- `client`: клиент SDK с открытым кодом для взаимодействия с ИИ.
- `$`: [оболочка API](https://bun.com/docs/runtime/shell) Бана для выполнения команд.
---
### Поддержка TypeScript
Для плагинов TypeScript вы можете импортировать типы из пакета плагина:
```ts title="my-plugin.ts" {1}
import type { Plugin } from "@opencode-ai/plugin"
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
return {
// Type-safe hook implementations
}
}
```
---
### События
Плагины могут подписываться на события, как показано ниже в разделе «Примеры». Вот список различных доступных событий.
#### Командные события
- ХХ0ГГ
#### События файла
- ХХ0ГГ
- ХХ0ГГ
#### События установки
- ХХ0ГГ
#### События ЛСП
- ХХ0ГГ
- ХХ0ГГ
#### События сообщений
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
#### События разрешения
- ХХ0ГГ
- ХХ0ГГ
#### События сервера
- ХХ0ГГ
#### События сессии
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
#### События
- ХХ0ГГ
#### События оболочки
- ХХ0ГГ
#### События инструмента
- ХХ0ГГ
- ХХ0ГГ
#### Мероприятия ТУИ
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
---
## Примеры
Вот несколько примеров плагинов, которые вы можете использовать для расширения открытого кода.
---
### Отправлять уведомления
Отправляйте уведомления при возникновении определенных событий:
```js title=".opencode/plugins/notification.js"
export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
return {
event: async ({ event }) => {
// Send notification on session completion
if (event.type === "session.idle") {
await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
}
},
}
}
```
Мы используем `osascript` для запуска AppleScript на macOS. Здесь мы используем его для отправки уведомлений.
:::примечание
Если вы используете настольное приложение OpenCode, оно может автоматически отправлять системные уведомления, когда ответ готов или когда возникает ошибка сеанса.
:::
---
### защита .env
Запретите открытому коду читать файлы `.env`:
```javascript title=".opencode/plugins/env-protection.js"
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "read" && output.args.filePath.includes(".env")) {
throw new Error("Do not read .env files")
}
},
}
}
```
---
### Внедрение переменных среды
Внедряйте переменные среды во все процессы выполнения оболочки (инструменты искусственного интеллекта и пользовательские терминалы):
```javascript title=".opencode/plugins/inject-env.js"
export const InjectEnvPlugin = async () => {
return {
"shell.env": async (input, output) => {
output.env.MY_API_KEY = "secret"
output.env.PROJECT_ROOT = input.cwd
},
}
}
```
---
### Пользовательские инструменты
Плагины также могут добавлять в открытый код собственные инструменты:
```ts title=".opencode/plugins/custom-tools.ts"
import { type Plugin, tool } from "@opencode-ai/plugin"
export const CustomToolsPlugin: Plugin = async (ctx) => {
return {
tool: {
mytool: tool({
description: "This is a custom tool",
args: {
foo: tool.schema.string(),
},
async execute(args, context) {
const { directory, worktree } = context
return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
},
}),
},
}
}
```
Помощник `tool` создает собственный инструмент, который может вызывать открытый код. Он принимает функцию схемы Zod и возвращает определение инструмента:
- `description`: Что делает инструмент
- `args`: схема Zod для аргументов инструмента.
- `execute`: функция, которая запускается при вызове инструмента.
Ваши пользовательские инструменты будут доступны для открытия кода наряду со встроенными инструментами.
---
### Ведение журнала
Используйте `client.app.log()` вместо `console.log` для структурированного ведения журнала:
```ts title=".opencode/plugins/my-plugin.ts"
export const MyPlugin = async ({ client }) => {
await client.app.log({
body: {
service: "my-plugin",
level: "info",
message: "Plugin initialized",
extra: { foo: "bar" },
},
})
}
```
Уровни: `debug`, `info`, `warn`, `error`. Подробности см. в документации SDK](https://opencode.ai/docs/sdk).
---
### Уплотняющие крюки
Настройте контекст, включаемый при сжатии сеанса:
```ts title=".opencode/plugins/compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Inject additional context into the compaction prompt
output.context.push(`
## Custom Context
Include any state that should persist across compaction:
- Current task status
- Important decisions made
- Files being actively worked on
`)
},
}
}
```
Хук `experimental.session.compacting` срабатывает до того, как LLM сгенерирует сводку продолжения. Используйте его для внедрения контекста, специфичного для домена, который будет пропущен при запросе на сжатие по умолчанию.
Вы также можете полностью заменить запрос на уплотнение, установив `output.prompt`:
```ts title=".opencode/plugins/custom-compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CustomCompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Replace the entire compaction prompt
output.prompt = `
You are generating a continuation prompt for a multi-agent swarm session.
Summarize:
1. The current task and its status
2. Which files are being modified and by whom
3. Any blockers or dependencies between agents
4. The next steps to complete the work
Format as a structured prompt that a new agent can use to resume work.
`
},
}
}
```
Если установлен `output.prompt`, он полностью заменяет приглашение на сжатие по умолчанию. Массив `output.context` в этом случае игнорируется.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,180 @@
---
title: Правила
description: Установите пользовательские инструкции для открытого кода.
---
Вы можете предоставить собственные инструкции для открытия кода, создав файл `AGENTS.md`. Это похоже на правила Курсора. Он содержит инструкции, которые будут включены в контекст LLM для настройки его поведения для вашего конкретного проекта.
---
## Инициализировать
Чтобы создать новый файл `AGENTS.md`, вы можете запустить команду `/init` в открытом коде.
:::кончик
Вам следует зафиксировать файл `AGENTS.md` вашего проекта в Git.
:::
Это позволит отсканировать ваш проект и все его содержимое, чтобы понять, о чем этот проект, и сгенерировать с его помощью файл `AGENTS.md`. Это помогает opencode лучше ориентироваться в проекте.
Если у вас есть существующий файл `AGENTS.md`, мы попытаемся добавить его.
---
## Пример
Вы также можете просто создать этот файл вручную. Вот пример того, что вы можете поместить в файл `AGENTS.md`.
```markdown title="AGENTS.md"
# SST v3 Monorepo Project
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
## Project Structure
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
- `sst.config.ts` - Main SST configuration with dynamic imports
## Code Standards
- Use TypeScript with strict mode enabled
- Shared code goes in `packages/core/` with proper exports configuration
- Functions go in `packages/functions/`
- Infrastructure should be split into logical files in `infra/`
## Monorepo Conventions
- Import shared modules using workspace names: `@my-app/core/example`
```
Мы добавляем сюда инструкции для конкретного проекта, и они будут доступны всей вашей команде.
---
## Типы
opencode также поддерживает чтение файла `AGENTS.md` из нескольких мест. И это служит разным целям.
### Проект
Поместите `AGENTS.md` в корень вашего проекта для правил, специфичных для проекта. Они применяются только тогда, когда вы работаете в этом каталоге или его подкаталогах.
### Глобальный
Вы также можете иметь глобальные правила в файле `~/.config/opencode/AGENTS.md`. Это применяется ко всем сеансам открытого кода.
Поскольку это не передается в Git и не передается вашей команде, мы рекомендуем использовать его для указания любых личных правил, которым должен следовать LLM.
### Совместимость кода Клода
Для пользователей, переходящих с Claude Code, OpenCode поддерживает файловые соглашения Claude Code в качестве резерва:
- **Правила проекта**: `CLAUDE.md` в каталоге вашего проекта (используется, если `AGENTS.md` не существует).
- **Глобальные правила**: `~/.claude/CLAUDE.md` (используется, если `~/.config/opencode/AGENTS.md` не существует).
- **Навыки**: `~/.claude/skills/` — подробности см. в [Навыки агента](/docs/skills/).
Чтобы отключить совместимость Claude Code, установите одну из этих переменных среды:
```bash
export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
```
---
## Приоритет
Когда opencode запускается, он ищет файлы правил в следующем порядке:
1. **Локальные файлы** путем перехода вверх из текущего каталога (`AGENTS.md`, `CLAUDE.md`)
2. **Глобальный файл** в `~/.config/opencode/AGENTS.md`.
3. **Файл кода Клауда** по адресу `~/.claude/CLAUDE.md` (если не отключено)
Первый совпадающий файл побеждает в каждой категории. Например, если у вас есть и `AGENTS.md`, и `CLAUDE.md`, используется только `AGENTS.md`. Аналогично, `~/.config/opencode/AGENTS.md` имеет приоритет над `~/.claude/CLAUDE.md`.
---
## Пользовательские инструкции
Вы можете указать собственные файлы инструкций в `opencode.json` или в глобальном `~/.config/opencode/opencode.json`. Это позволит вам и вашей команде повторно использовать существующие правила вместо того, чтобы дублировать их на AGENTS.md.
Пример:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
Вы также можете использовать удаленные URL-адреса для загрузки инструкций из Интернета.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
}
```
Удаленные инструкции извлекаются с таймаутом в 5 секунд.
Все файлы инструкций объединяются с вашими файлами `AGENTS.md`.
---
## Ссылки на внешние файлы
Хотя opencode не анализирует автоматически ссылки на файлы в `AGENTS.md`, аналогичной функциональности можно добиться двумя способами:
### Использование opencode.json
Рекомендуемый подход — использовать поле `instructions` в `opencode.json`:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
}
```
### Ручные инструкции в AGENTS.md
Вы можете научить открытый код читать внешние файлы, предоставив явные инструкции в файле `AGENTS.md`. Вот практический пример:
```markdown title="AGENTS.md"
# TypeScript Project Rules
## External File Loading
CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
Instructions:
- Do NOT preemptively load all references - use lazy loading based on actual need
- When loaded, treat content as mandatory instructions that override defaults
- Follow references recursively when needed
## Development Guidelines
For TypeScript code style and best practices: @docs/typescript-guidelines.md
For React component architecture and hooks patterns: @docs/react-patterns.md
For REST API design and error handling: @docs/api-standards.md
For testing strategies and coverage requirements: @test/testing-guidelines.md
## General Guidelines
Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
```
Такой подход позволяет:
- Создавайте модульные файлы правил многократного использования.
- Делитесь правилами между проектами с помощью символических ссылок или подмодулей git.
- Сохраняйте AGENTS.md кратким, ссылаясь на подробные инструкции.
- Убедитесь, что открытый код загружает файлы только тогда, когда это необходимо для конкретной задачи.
:::кончик
Для монорепозиториев или проектов с общими стандартами использование `opencode.json` с шаблонами glob (например, `packages/*/AGENTS.md`) более удобно в обслуживании, чем инструкции вручную.
:::

View File

@@ -0,0 +1,391 @@
---
title: SDK
description: Типобезопасный JS-клиент для сервера открытого кода.
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
SDK JS/TS с открытым кодом предоставляет типобезопасный клиент для взаимодействия с сервером.
Используйте его для создания интеграции и программного управления открытым кодом.
[Узнайте больше](/docs/server) о том, как работает сервер. Примеры можно найти в [projects](/docs/ecosystem#projects), созданном сообществом.
---
## Установить
Установите SDK из npm:
```bash
npm install @opencode-ai/sdk
```
---
## Создать клиента
Создайте экземпляр открытого кода:
```javascript
import { createOpencode } from "@opencode-ai/sdk"
const { client } = await createOpencode()
```
Это запускает и сервер, и клиент.
#### Параметры
| Вариант | Тип | Описание | По умолчанию |
| ------- | ----- | -------------------------------- | ------------ |
| ХХ0ГГ | ХХ0ГГ | Имя хоста сервера | `127.0.0.1` |
| ХХ0ГГ | ХХ0ГГ | Порт сервера | `4096` |
| ХХ0ГГ | ХХ0ГГ | Сигнал отмены для отмены | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Таймаут в мс для запуска сервера | `5000` |
| ХХ0ГГ | ХХ0ГГ | Объект конфигурации | `{}` |
---
## Конфигурация
Вы можете передать объект конфигурации для настройки поведения. Экземпляр по-прежнему получает ваш `opencode.json`, но вы можете переопределить или добавить встроенную конфигурацию:
```javascript
import { createOpencode } from "@opencode-ai/sdk"
const opencode = await createOpencode({
hostname: "127.0.0.1",
port: 4096,
config: {
model: "anthropic/claude-3-5-sonnet-20241022",
},
})
console.log(`Server running at ${opencode.server.url}`)
opencode.server.close()
```
## Только клиент
Если у вас уже есть работающий экземпляр открытого кода, вы можете создать экземпляр клиента для подключения к нему:
```javascript
import { createOpencodeClient } from "@opencode-ai/sdk"
const client = createOpencodeClient({
baseUrl: "http://localhost:4096",
})
```
#### Параметры
| Вариант | Тип | Описание | По умолчанию |
| ------- | ----- | ------------------------------------ | ------------ |
| ХХ0ГГ | ХХ0ГГ | URL-адрес сервера | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Пользовательская реализация выборки | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Метод анализа ответа | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Стиль возврата: `data` или `fields`. | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Выдавать ошибки вместо возврата | ХХ0ГГ |
---
## Типы
SDK включает определения TypeScript для всех типов API. Импортируйте их напрямую:
```typescript
import type { Session, Message, Part } from "@opencode-ai/sdk"
```
Все типы генерируются на основе спецификации OpenAPI сервера и доступны в файле <a href={typesUrl}>types</a>.
---
## Ошибки
SDK может выдавать ошибки, которые вы можете отловить и обработать:
```typescript
try {
await client.session.get({ path: { id: "invalid-id" } })
} catch (error) {
console.error("Failed to get session:", (error as Error).message)
}
```
---
## API
SDK предоставляет все серверные API через типобезопасный клиент.
---
### Глобальный
| Метод | Описание | Ответ |
| ----- | -------------------------------------------- | ----- |
| ХХ0ГГ | Проверьте работоспособность и версию сервера | ХХ0ГГ |
---
#### Примеры
```javascript
const health = await client.global.health()
console.log(health.data.version)
```
---
### Приложение
| Метод | Описание | Ответ |
| ----- | ----------------------------- | ------------------------------------------- |
| ХХ0ГГ | Написать запись в журнале | ХХ0ГГ |
| ХХ0ГГ | Список всех доступных агентов | <a href={typesUrl}><code>Агент[]</code></a> |
---
#### Примеры
```javascript
// Write a log entry
await client.app.log({
body: {
service: "my-app",
level: "info",
message: "Operation completed",
},
})
// List available agents
const agents = await client.app.agents()
```
---
### Проект
| Метод | Описание | Ответ |
| ----- | ----------------------- | -------------------------------------------- |
| ХХ0ГГ | Список всех проектов | <a href={typesUrl}><code>Проект[]</code></a> |
| ХХ0ГГ | Получить текущий проект | <a href={typesUrl}><code>Проект</code></a> |
---
#### Примеры
```javascript
// List all projects
const projects = await client.project.list()
// Get current project
const currentProject = await client.project.current()
```
---
### Путь
| Метод | Описание | Ответ |
| ----- | --------------------- | ---------------------------------------- |
| ХХ0ГГ | Получить текущий путь | <a href={typesUrl}><code>Путь</code></a> |
---
#### Примеры
```javascript
// Get current path information
const pathInfo = await client.path.get()
```
---
### Конфигурация
| Метод | Описание | Ответ |
| ----- | ----------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| ХХ0ГГ | Получить информацию о конфигурации | <a href={typesUrl}><code>Config</code></a> |
| ХХ0ГГ | Список поставщиков и моделей по умолчанию | `{ providers: `<a href={typesUrl}><code>Provider[]</code></a>`, default: { [key: string]: string } }` |
---
#### Примеры
```javascript
const config = await client.config.get()
const { providers, default: defaults } = await client.config.providers()
```
---
### Сессии
| Метод | Описание | Примечания |
| ----- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ХХ0ГГ | Получение списка сеансов | Возвращает <a href={typesUrl}><code>Session[]</code></a> |
| ХХ0ГГ | Получить сеанс | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | Список дочерних сеансов | Возвращает <a href={typesUrl}><code>Session[]</code></a> |
| ХХ0ГГ | Создать сеанс | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | Удалить сеанс | Возвращает `boolean` |
| ХХ0ГГ | Обновить свойства сеанса | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | Проанализируйте приложение и создайте `AGENTS.md`. | Возвращает `boolean` |
| ХХ0ГГ | Прервать текущий сеанс | Возвращает `boolean` |
| ХХ0ГГ | Поделиться сеансом | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | Отменить общий доступ к сеансу | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | Подведение итогов сессии | Возвращает `boolean` |
| ХХ0ГГ | Список сообщений в сеансе | Возвращает `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}[]` |
| ХХ0ГГ | Получить подробную информацию о сообщении | Возвращает `{ info: `<a href={typesUrl}><code>Message</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| ХХ0ГГ | Отправить оперативное сообщение | `body.noReply: true` возвращает UserMessage (только контекст). По умолчанию возвращается <a href={typesUrl}><code>AssistantMessage</code></a> с ответом AI. |
| ХХ0ГГ | Отправить команду в сеанс | Возвращает `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>Part[]</code></a>`}` |
| ХХ0ГГ | Запустите команду оболочки | Возвращает <a href={typesUrl}><code>AssistantMessage</code></a> |
| ХХ0ГГ | Отменить сообщение | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | Восстановить восстановленные сообщения | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | Ответ на запрос разрешения | Возвращает `boolean` |
---
#### Примеры
```javascript
// Create and manage sessions
const session = await client.session.create({
body: { title: "My session" },
})
const sessions = await client.session.list()
// Send a prompt message
const result = await client.session.prompt({
path: { id: session.id },
body: {
model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
parts: [{ type: "text", text: "Hello!" }],
},
})
// Inject context without triggering AI response (useful for plugins)
await client.session.prompt({
path: { id: session.id },
body: {
noReply: true,
parts: [{ type: "text", text: "You are a helpful assistant." }],
},
})
```
---
### Файлы
| Метод | Описание | Ответ |
| ----- | ------------------------------------ | --------------------------------------------------------------------------------------------- |
| ХХ0ГГ | Поиск текста в файлах | Массив объектов соответствия `path`, `lines`, `line_number`, `absolute_offset`, `submatches`. |
| ХХ0ГГ | Поиск файлов и каталогов по имени | `string[]` (пути) |
| ХХ0ГГ | Найдите символы рабочей области | <a href={typesUrl}><code>Символ[]</code></a> |
| ХХ0ГГ | Чтение файла | `{ type: "raw" \| "patch", content: string }` |
| ХХ0ГГ | Получить статус отслеживаемых файлов | <a href={typesUrl}><code>Файл[]</code></a> |
`find.files` поддерживает несколько дополнительных полей запроса:
- `type`: `"file"` или `"directory"`
- `directory`: переопределить корень проекта для поиска.
- `limit`: максимальное количество результатов (1200)
---
#### Примеры
```javascript
// Search and read files
const textResults = await client.find.text({
query: { pattern: "function.*opencode" },
})
const files = await client.find.files({
query: { query: "*.ts", type: "file" },
})
const directories = await client.find.files({
query: { query: "packages", type: "directory", limit: 20 },
})
const content = await client.file.read({
query: { path: "src/index.ts" },
})
```
---
### ТУИ
| Метод | Описание | Ответ |
| ----- | -------------------------------- | ----- |
| ХХ0ГГ | Добавить текст в приглашение | ХХ0ГГ |
| ХХ0ГГ | Открыть диалоговое окно справки | ХХ0ГГ |
| ХХ0ГГ | Откройте селектор сеансов | ХХ0ГГ |
| ХХ0ГГ | Откройте выбор темы | ХХ0ГГ |
| ХХ0ГГ | Откройте выбор модели | ХХ0ГГ |
| ХХ0ГГ | Отправить текущий запрос | ХХ0ГГ |
| ХХ0ГГ | Очистить подсказку | ХХ0ГГ |
| ХХ0ГГ | Выполнить команду | ХХ0ГГ |
| ХХ0ГГ | Показать всплывающее уведомление | ХХ0ГГ |
---
#### Примеры
```javascript
// Control TUI interface
await client.tui.appendPrompt({
body: { text: "Add this to prompt" },
})
await client.tui.showToast({
body: { message: "Task completed", variant: "success" },
})
```
---
### Авторизация
| Метод | Описание | Ответ |
| ----- | -------------------------------------------- | ----- |
| ХХ0ГГ | Установите учетные данные для аутентификации | ХХ0ГГ |
---
#### Примеры
```javascript
await client.auth.set({
path: { id: "anthropic" },
body: { type: "api", key: "your-api-key" },
})
```
---
### События
| Метод | Описание | Ответ |
| ----- | ------------------------------------ | ------------------------------------ |
| ХХ0ГГ | Поток событий, отправленных сервером | Поток событий, отправленных сервером |
---
#### Примеры
```javascript
// Listen to real-time events
const events = await client.event.subscribe()
for await (const event of events.stream) {
console.log("Event:", event.type, event.properties)
}
```

View File

@@ -0,0 +1,287 @@
---
title: Сервер
description: Взаимодействуйте с сервером открытого кода через HTTP.
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
Команда `opencode serve` запускает автономный HTTP-сервер, который предоставляет конечную точку OpenAPI, которую может использовать клиент с открытым кодом.
---
### Использование
```bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
```
#### Параметры
| Флаг | Описание | По умолчанию |
| --------------- | ----------------------------------- | ---------------- |
| ХХ0ГГ | Порт для прослушивания | `4096` |
| ХХ0ГГ | Имя хоста для прослушивания | `127.0.0.1` |
| ХХ0ГГ | Включить обнаружение mDNS | ХХ0ГГ |
| ХХ0ГГ | Пользовательское доменное имя для службы mDNS | ХХ0ГГ |
| ХХ0ГГ | Дополнительные источники браузера, позволяющие | `[]` |
`--cors` можно передать несколько раз:
```bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com
```
---
### Аутентификация
Установите `OPENCODE_SERVER_PASSWORD`, чтобы защитить сервер с помощью базовой аутентификации HTTP. Имя пользователя по умолчанию — `opencode` или установите `OPENCODE_SERVER_USERNAME`, чтобы переопределить его. Это относится как к `opencode serve`, так и к `opencode web`.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve
```
---
### Как это работает
Когда вы запускаете `opencode`, он запускает TUI и сервер. Где находится TUI
клиент, который общается с сервером. Сервер предоставляет спецификацию OpenAPI 3.1.
конечная точка. Эта конечная точка также используется для создания файла [SDK](/docs/sdk).
:::кончик
Используйте сервер открытого кода для программного взаимодействия с открытым кодом.
:::
Эта архитектура позволяет открытому коду поддерживать несколько клиентов и позволяет программно взаимодействовать с открытым кодом.
Вы можете запустить `opencode serve`, чтобы запустить автономный сервер. Если у вас есть
TUI с открытым кодом запущен, `opencode serve` запустит новый сервер.
---
#### Подключиться к существующему серверу
Когда вы запускаете TUI, он случайным образом назначает порт и имя хоста. Вместо этого вы можете передать `--hostname` и `--port` [flags](/docs/cli). Затем используйте это для подключения к его серверу.
Конечную точку [`/tui`](#tui) можно использовать для управления TUI через сервер. Например, вы можете предварительно заполнить или запустить подсказку. Эта настройка используется плагинами OpenCode [IDE](/docs/ide).
---
## Спецификация
Сервер публикует спецификацию OpenAPI 3.1, которую можно просмотреть по адресу:
```
http://<hostname>:<port>/doc
```
Например, ХХ0ГГ. Используйте спецификацию для создания клиентов или проверки типов запросов и ответов. Или просмотрите его в обозревателе Swagger.
---
## API
Сервер открытого кода предоставляет следующие API.
---
### Глобальный
| Метод | Путь | Описание | Ответ |
| ------ | ---------------- | ------------------------------ | ------------------------------------ |
| ХХ0ГГ | ХХ0ГГ | Получить информацию о состоянии и версии сервера | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Получить глобальные события (поток SSE) | Трансляция событий |
---
### Проект
| Метод | Путь | Описание | Ответ |
| ------ | ------------------ | ----------------------- | --------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Список всех проектов | <a href={typesUrl}><code>Проект[]</code></a> |
| ХХ0ГГ | ХХ0ГГ | Получить текущий проект | <a href={typesUrl}><code>Проект</code></a> |
---
### Путь и система контроля версий
| Метод | Путь | Описание | Ответ |
| ------ | ------- | ------------------------------------ | ------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Получить текущий путь | <a href={typesUrl}><code>Путь</code></a> |
| ХХ0ГГ | ХХ0ГГ | Получить информацию VCS для текущего проекта | <a href={typesUrl}><code>VcsInfo</code></a> |
---
### Пример
| Метод | Путь | Описание | Ответ |
| ------ | ------------------- | ---------------------------- | --------- |
| ХХ0ГГ | ХХ0ГГ | Удалить текущий экземпляр | ХХ0ГГ |
---
### Конфигурация
| Метод | Путь | Описание | Ответ |
| ------- | ------------------- | --------------------------------- | ---------------------------------------------------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Получить информацию о конфигурации | <a href={typesUrl}><code>Config</code></a> |
| ХХ0ГГ | ХХ0ГГ | Обновить конфигурацию | <a href={typesUrl}><code>Config</code></a> |
| ХХ0ГГ | ХХ0ГГ | Список поставщиков и моделей по умолчанию | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
---
### Поставщик
| Метод | Путь | Описание | Ответ |
| ------ | -------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Список всех поставщиков | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
| ХХ0ГГ | ХХ0ГГ | Получить методы аутентификации поставщика | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
| ХХ0ГГ | ХХ0ГГ | Авторизуйте провайдера с помощью OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| ХХ0ГГ | ХХ0ГГ | Обработка обратного вызова OAuth для провайдера | ХХ0ГГ |
---
### Сессии
| Метод | Путь | Описание | Примечания |
| -------- | ---------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Список всех сессий | Возвращает <a href={typesUrl}><code>Session[]</code></a> |
| ХХ0ГГ | ХХ0ГГ | Создать новый сеанс | тело: `{ parentID?, title? }`, возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | ХХ0ГГ | Получить статус сеанса для всех сеансов | Возвращает `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
| ХХ0ГГ | ХХ0ГГ | Получить подробную информацию о сеансе | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | ХХ0ГГ | Удалить сеанс и все его данные | Возвращает `boolean` |
| ХХ0ГГ | ХХ0ГГ | Обновить свойства сеанса | тело: `{ title? }`, возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | ХХ0ГГ | Получить дочерние сеансы сеанса | Возвращает <a href={typesUrl}><code>Session[]</code></a> |
| ХХ0ГГ | ХХ0ГГ | Получить список дел для сеанса | Возвращает <a href={typesUrl}><code>Todo[]</code></a> |
| ХХ0ГГ | ХХ0ГГ | Проанализируйте приложение и создайте `AGENTS.md`. | тело: `{ messageID, providerID, modelID }`, возвращает `boolean` |
| ХХ0ГГ | ХХ0ГГ | Разветвить существующий сеанс по сообщению | тело: `{ messageID? }`, возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | ХХ0ГГ | Прервать текущий сеанс | Возвращает `boolean` |
| ХХ0ГГ | ХХ0ГГ | Поделиться сеансом | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | ХХ0ГГ | Отменить общий доступ к сеансу | Возвращает <a href={typesUrl}><code>Session</code></a> |
| ХХ0ГГ | ХХ0ГГ | Получить разницу для этой сессии | запрос: `messageID?`, возвращает <a href={typesUrl}><code>FileDiff[]</code></a> |
| ХХ0ГГ | ХХ0ГГ | Подведите итоги сессии | тело: `{ providerID, modelID }`, возвращает `boolean` |
| ХХ0ГГ | ХХ0ГГ | Отменить сообщение | тело: `{ messageID, partID? }`, возвращает `boolean` |
| ХХ0ГГ | ХХ0ГГ | Восстановить все восстановленные сообщения | Возвращает `boolean` |
| ХХ0ГГ | ХХ0ГГ | Ответ на запрос разрешения | тело: `{ response, remember? }`, возвращает `boolean` |
---
### Сообщения
| Метод | Путь | Описание | Примечания |
| ------ | --------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Список сообщений в сеансе | запрос: `limit?`, возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
| ХХ0ГГ | ХХ0ГГ | Отправьте сообщение и дождитесь ответа | тело: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| ХХ0ГГ | ХХ0ГГ | Получить подробную информацию о сообщении | Возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| ХХ0ГГ | ХХ0ГГ | Отправить сообщение асинхронно (без ожидания) | тело: то же, что и `/session/:id/message`, возвращает `204 No Content`. |
| ХХ0ГГ | ХХ0ГГ | Выполнить команду косой черты | тело: `{ messageID?, agent?, model?, command, arguments }`, возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| ХХ0ГГ | ХХ0ГГ | Запустите команду оболочки | тело: `{ agent, model?, command }`, возвращает `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
---
### Команды
| Метод | Путь | Описание | Ответ |
| ------ | ---------- | ----------------- | --------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Список всех команд | <a href={typesUrl}><code>Команда[]</code></a> |
---
### Файлы
| Метод | Путь | Описание | Ответ |
| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Поиск текста в файлах | Массив объектов соответствия `path`, `lines`, `line_number`, `absolute_offset`, `submatches`. |
| ХХ0ГГ | ХХ0ГГ | Поиск файлов и каталогов по имени | `string[]` (пути) |
| ХХ0ГГ | ХХ0ГГ | Найдите символы рабочей области | <a href={typesUrl}><code>Символ[]</code></a> |
| ХХ0ГГ | ХХ0ГГ | Список файлов и каталогов | <a href={typesUrl}><code>FileNode[]</code></a> |
| ХХ0ГГ | ХХ0ГГ | Чтение файла | <a href={typesUrl}><code>FileContent</code></a> |
| ХХ0ГГ | ХХ0ГГ | Получить статус отслеживаемых файлов | <a href={typesUrl}><code>Файл[]</code></a> |
#### `/find/file` параметры запроса
- `query` (обязательно) — строка поиска (нечеткое совпадение)
- `type` (необязательно) — ограничить результаты `"file"` или `"directory"`.
- `directory` (необязательно) — переопределить корень проекта для поиска.
- `limit` (необязательно) — максимальное количество результатов (1200)
- `dirs` (необязательно) — устаревший флаг (`"false"` возвращает только файлы)
---
### Инструменты (Экспериментальные)
| Метод | Путь | Описание | Ответ |
| ------ | ------------------------------------------- | ---------------------------------------- | -------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Список всех идентификаторов инструментов | <a href={typesUrl}><code>ToolIDs</code></a> |
| ХХ0ГГ | ХХ0ГГ | Список инструментов со схемами JSON для модели | <a href={typesUrl}><code>ToolList</code></a> |
---
### LSP, форматтеры и MCP
| Метод | Путь | Описание | Ответ |
| ------ | ------------ | -------------------------- | -------------------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Получить статус LSP-сервера | <a href={typesUrl}><code>LSPStatus[]</code></a> |
| ХХ0ГГ | ХХ0ГГ | Получить статус форматтера | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
| ХХ0ГГ | ХХ0ГГ | Получить статус сервера MCP | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| ХХ0ГГ | ХХ0ГГ | Динамическое добавление сервера MCP | тело: `{ name, config }`, возвращает объект состояния MCP |
---
### Агенты
| Метод | Путь | Описание | Ответ |
| ------ | -------- | ------------------------- | ------------------------------------------- |
| ХХ0ГГ | ХХ0ГГ | Список всех доступных агентов | <a href={typesUrl}><code>Агент[]</code></a> |
---
### Ведение журнала
| Метод | Путь | Описание | Ответ |
| ------ | ------ | ------------------------------------------------------------ | --------- |
| ХХ0ГГ | ХХ0ГГ | Напишите запись в журнале. Тело: `{ service, level, message, extra? }` | ХХ0ГГ |
---
### ТУИ
| Метод | Путь | Описание | Ответ |
| ------ | ----------------------- | ------------------------------------------- | ---------------------- |
| ХХ0ГГ | ХХ0ГГ | Добавить текст в приглашение | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Открыть диалоговое окно справки | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Откройте селектор сеансов | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Откройте выбор темы | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Откройте выбор модели | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Отправить текущий запрос | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Очистить подсказку | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Выполнить команду (`{ command }`) | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Показать тост (`{ title?, message, variant }`) | ХХ0ГГ |
| ХХ0ГГ | ХХ0ГГ | Дождитесь следующего запроса на управление | Объект запроса управления |
| ХХ0ГГ | ХХ0ГГ | Ответ на запрос управления (`{ body }`) | ХХ0ГГ |
---
### Авторизация
| Метод | Путь | Описание | Ответ |
| ------ | ----------- | --------------------------------------------------------------- | --------- |
| ХХ0ГГ | ХХ0ГГ | Установите учетные данные для аутентификации. Тело должно соответствовать схеме поставщика. | ХХ0ГГ |
---
### События
| Метод | Путь | Описание | Ответ |
| ------ | -------- | ----------------------------------------------------------------------------- | ------------------------- |
| ХХ0ГГ | ХХ0ГГ | Поток событий, отправленный сервером. Первое событие — `server.connected`, затем события шины. | Поток событий, отправленных сервером |
---
### Документы
| Метод | Путь | Описание | Ответ |
| ------ | ------ | ------------------------- | --------------------------- |
| ХХ0ГГ | ХХ0ГГ | Спецификация OpenAPI 3.1 | HTML-страница со спецификацией OpenAPI |

View File

@@ -0,0 +1,128 @@
---
title: Делиться
description: Поделитесь своими разговорами об OpenCode.
---
Функция общего доступа OpenCode позволяет вам создавать общедоступные ссылки на ваши беседы OpenCode, чтобы вы могли сотрудничать с товарищами по команде или получать помощь от других.
:::примечание
Общие беседы общедоступны для всех, у кого есть ссылка.
:::
---
## Как это работает
Когда вы делитесь беседой, OpenCode:
1. Создает уникальный общедоступный URL-адрес для вашего сеанса.
2. Синхронизирует историю ваших разговоров с нашими серверами
3. Делает беседу доступной по общей ссылке — `opncd.ai/s/<share-id>`.
---
## Совместное использование
OpenCode поддерживает три режима общего доступа, которые контролируют общий доступ к разговорам:
---
### Ручной (по умолчанию)
По умолчанию OpenCode использует режим совместного использования вручную. Сессии не передаются автоматически, но вы можете поделиться ими вручную с помощью команды `/share`:
```
/share
```
Это создаст уникальный URL-адрес, который будет скопирован в буфер обмена.
Чтобы явно установить ручной режим в вашем [файле конфигурации](/docs/config):
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "manual"
}
```
---
### Автоматическая публикация
Вы можете включить автоматический общий доступ для всех новых разговоров, установив для параметра `share` значение `"auto"` в вашем [файле конфигурации](/docs/config):
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "auto"
}
```
Если функция автоматического обмена включена, каждый новый разговор будет автоматически опубликован и будет создана ссылка.
---
### Неполноценный
Вы можете полностью отключить общий доступ, установив для параметра `share` значение `"disabled"` в вашем [файле конфигурации](/docs/config):
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "disabled"
}
```
Чтобы обеспечить соблюдение этого правила для всей вашей команды в конкретном проекте, добавьте его в `opencode.json` вашего проекта и зарегистрируйтесь в Git.
---
## Отменить совместное использование
Чтобы прекратить делиться беседой и удалить ее из общего доступа:
```
/unshare
```
Это приведет к удалению ссылки общего доступа и удалению данных, связанных с разговором.
---
## Конфиденциальность
Есть несколько вещей, которые следует учитывать при общении.
---
### Хранение данных
Общие разговоры остаются доступными до тех пор, пока вы явно не отмените общий доступ к ним. Этот
включает в себя:
- Полная история разговоров
- Все сообщения и ответы
- Метаданные сеанса
---
### Рекомендации
- Делитесь только разговорами, которые не содержат конфиденциальной информации.
- Прежде чем поделиться, просмотрите содержимое разговора.
- Отмените общий доступ к разговорам после завершения сотрудничества.
- Избегайте обмена разговорами с проприетарным кодом или конфиденциальными данными.
- Для конфиденциальных проектов полностью отключите общий доступ.
---
## Для предприятий
Для корпоративных развертываний функция общего доступа может быть:
- **Отключено** полностью из соображений безопасности.
- **Только** только для пользователей, прошедших аутентификацию посредством единого входа.
- **Автономное размещение** в вашей собственной инфраструктуре
[Узнайте больше](/docs/enterprise) об использовании открытого кода в вашей организации.

View File

@@ -0,0 +1,222 @@
---
title: «Навыки агента»
description: «Определите повторно используемое поведение с помощью определений SKILL.md»
---
Навыки агента позволяют OpenCode обнаруживать многократно используемые инструкции из вашего репозитория или домашнего каталога.
Навыки загружаются по требованию с помощью встроенного инструмента `skill`: агенты видят доступные навыки и при необходимости могут загрузить весь контент.
---
## Разместить файлы
Создайте одну папку для каждого имени навыка и поместите в нее `SKILL.md`.
OpenCode выполняет поиск в следующих местах:
- Конфигурация проекта: `.opencode/skills/<name>/SKILL.md`
- Глобальная конфигурация: `~/.config/opencode/skills/<name>/SKILL.md`.
- Совместимость с Project Claude: `.claude/skills/<name>/SKILL.md`
- Глобальная совместимость с Claude: `~/.claude/skills/<name>/SKILL.md`
- Совместимость с агентом проекта: `.agents/skills/<name>/SKILL.md`
- Совместимость с глобальным агентом: `~/.agents/skills/<name>/SKILL.md`
---
## Понять открытие
Для локальных путей проекта OpenCode переходит из вашего текущего рабочего каталога, пока не достигнет рабочего дерева git.
Он загружает все соответствующие `skills/*/SKILL.md` в `.opencode/` и все соответствующие `.claude/skills/*/SKILL.md` или `.agents/skills/*/SKILL.md` по пути.
Глобальные определения также загружаются из `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` и `~/.agents/skills/*/SKILL.md`.
---
## Напишите заголовок
Каждый `SKILL.md` должен начинаться с заголовка YAML.
Распознаются только эти поля:
- ХХ0ГГ (обязательно)
- ХХ0ГГ (обязательно)
- `license` (необязательно)
- `compatibility` (необязательно)
- `metadata` (необязательно, преобразование строк в строки)
Неизвестные поля заголовка игнорируются.
---
## Проверка имен
`name` должен:
- Длина от 1 до 64 символов.
- Используйте строчные буквы и цифры с одинарным дефисом.
- Не начинаться и не заканчиваться на `-`.
- Не содержать последовательных `--`
- Сопоставьте имя каталога, содержащее `SKILL.md`.
Эквивалентное регулярное выражение:
```text
^[a-z0-9]+(-[a-z0-9]+)*$
```
---
## Соблюдайте правила длины
`description` должно содержать от 1 до 1024 символов.
Держите его достаточно конкретным, чтобы агент мог сделать правильный выбор.
---
## Используйте пример
Создайте `.opencode/skills/git-release/SKILL.md` следующим образом:
```markdown
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
audience: maintainers
workflow: github
---
## What I do
- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command
## When to use me
Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.
```
---
## Распознать описание инструмента
OpenCode перечисляет доступные навыки в описании инструмента `skill`.
Каждая запись включает название и описание навыка:
```xml
<available_skills>
<skill>
<name>git-release</name>
<description>Create consistent releases and changelogs</description>
</skill>
</available_skills>
```
Агент загружает навык, вызывая инструмент:
```
skill({ name: "git-release" })
```
---
## Настройка разрешений
Контролируйте, к каким навыкам агенты могут получить доступ, используя разрешения на основе шаблонов в `opencode.json`:
```json
{
"permission": {
"skill": {
"*": "allow",
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask"
}
}
}
```
| Разрешение | Поведение |
| ---------- | ----------------------------------------- |
| ХХ0ГГ | Навык загружается сразу |
| ХХ0ГГ | Навык скрыт от агента, доступ отклонен |
| ХХ0ГГ | Перед загрузкой пользователю запрашивается подтверждение |
Шаблоны поддерживают подстановочные знаки: `internal-*` соответствует `internal-docs`, `internal-tools` и т. д.
---
## Переопределить для каждого агента
Предоставьте конкретным агентам разрешения, отличные от глобальных настроек по умолчанию.
**Для пользовательских агентов** (в заголовке агента):
```yaml
---
permission:
skill:
"documents-*": "allow"
---
```
**Для встроенных агентов** (в формате `opencode.json`):
```json
{
"agent": {
"plan": {
"permission": {
"skill": {
"internal-*": "allow"
}
}
}
}
}
```
---
## Отключить инструмент навыков
Полностью отключить навыки для агентов, которым не следует их использовать:
**Для индивидуальных агентов**:
```yaml
---
tools:
skill: false
---
```
**Для встроенных агентов**:
```json
{
"agent": {
"plan": {
"tools": {
"skill": false
}
}
}
}
```
Если этот параметр отключен, раздел `<available_skills>` полностью опускается.
---
## Устранение неполадок с загрузкой
Если навык не отображается:
1. Убедитесь, что `SKILL.md` написано заглавными буквами.
2. Убедитесь, что заголовок включает `name` и `description`.
3. Убедитесь, что названия навыков уникальны во всех локациях.
4. Проверьте разрешения — навыки с `deny` скрыты от агентов.

View File

@@ -0,0 +1,369 @@
---
title: Темы
description: Выберите встроенную тему или определите свою собственную.
---
С помощью OpenCode вы можете выбрать одну из нескольких встроенных тем, использовать тему, которая адаптируется к теме вашего терминала, или определить свою собственную тему.
По умолчанию OpenCode использует нашу собственную тему `opencode`.
---
## Требования к терминалу
Чтобы темы корректно отображались в полной цветовой палитре, ваш терминал должен поддерживать **truecolor** (24-битный цвет). Большинство современных терминалов поддерживают это по умолчанию, но вам может потребоваться включить его:
- **Проверьте поддержку**: запустите `echo $COLORTERM` — должен появиться `truecolor` или `24bit`.
- **Включить truecolor**: установите переменную среды `COLORTERM=truecolor` в профиле оболочки.
- **Совместимость терминала**: убедитесь, что ваш эмулятор терминала поддерживает 24-битный цвет (большинство современных терминалов, таких как iTerm2, Alacritty, Kitty, Windows Terminal и последние версии терминала GNOME, поддерживают).
Без поддержки truecolor темы могут отображаться с пониженной точностью цветопередачи или вернуться к ближайшему приближению к 256 цветам.
---
## Встроенные темы
OpenCode поставляется с несколькими встроенными темами.
| Имя | Описание |
| ---------------------- | ---------------------------------------------------------------------------- |
| ХХ0ГГ | Адаптируется к цвету фона вашего терминала |
| ХХ0ГГ | На основе темы [Tokyonight](https://github.com/folke/tokyonight.nvim) |
| ХХ0ГГ | На основе темы [Everforest](https://github.com/sainnhe/everforest) |
| ХХ0ГГ | На основе темной темы Ayu](https://github.com/ayu-theme). |
| ХХ0ГГ | На основе темы [Catppuccin](https://github.com/catppuccin) |
| ХХ0ГГ | На основе темы [Catppuccin](https://github.com/catppuccin) |
| ХХ0ГГ | На основе темы [Gruvbox](https://github.com/morhetz/gruvbox) |
| ХХ0ГГ | На основе темы [Kanagawa](https://github.com/rebelot/kanagawa.nvim) |
| ХХ0ГГ | На основе [темы Nord](https://github.com/nordtheme/nord) |
| ХХ0ГГ | Зеленый цвет в хакерском стиле на черной теме |
| ХХ0ГГ | На основе темной темы Atom One](https://github.com/Th3Whit3Wolf/one-nvim). |
И более того, мы постоянно добавляем новые темы.
---
## Системная тема
Тема `system` автоматически адаптируется к цветовой схеме вашего терминала. В отличие от традиционных тем, использующих фиксированные цвета, тема _system_:
- **Создает шкалу серого**: создает пользовательскую шкалу серого на основе цвета фона вашего терминала, обеспечивая оптимальный контраст.
- **Использует цвета ANSI**: использует стандартные цвета ANSI (015) для подсветки синтаксиса и элементов пользовательского интерфейса, которые соответствуют цветовой палитре вашего терминала.
- **Сохраняет настройки терминала по умолчанию**: использует `none` для цветов текста и фона, чтобы сохранить естественный вид вашего терминала.
Системная тема предназначена для пользователей, которые:
- Хотите, чтобы OpenCode соответствовал внешнему виду их терминала
- Используйте пользовательские цветовые схемы терминала
- Предпочитайте единообразный вид для всех терминальных приложений.
---
## Использование темы
Вы можете выбрать тему, вызвав выбор темы с помощью команды `/theme`. Или вы можете указать это в файле [config](/docs/config).
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"theme": "tokyonight"
}
```
---
## Пользовательские темы
OpenCode поддерживает гибкую систему тем на основе JSON, которая позволяет пользователям легко создавать и настраивать темы.
---
### Иерархия
Темы загружаются из нескольких каталогов в следующем порядке: более поздние каталоги переопределяют предыдущие:
1. **Встроенные темы**  они встроены в двоичный файл.
2. **Каталог конфигурации пользователя**  определяется в `~/.config/opencode/themes/*.json` или `$XDG_CONFIG_HOME/opencode/themes/*.json`.
3. **Корневой каталог проекта**  определено в `<project-root>/.opencode/themes/*.json`.
4. **Текущий рабочий каталог**  определено в `./.opencode/themes/*.json`.
Если несколько каталогов содержат тему с одинаковым именем, будет использоваться тема из каталога с более высоким приоритетом.
---
### Создание темы
Чтобы создать собственную тему, создайте файл JSON в одном из каталогов темы.
Для общепользовательских тем:
```bash no-frame
mkdir -p ~/.config/opencode/themes
vim ~/.config/opencode/themes/my-theme.json
```
И для тем, специфичных для проекта.
```bash no-frame
mkdir -p .opencode/themes
vim .opencode/themes/my-theme.json
```
---
### Формат JSON
В темах используется гибкий формат JSON с поддержкой:
- **Шестнадцатеричные цвета**: `"#ffffff"`
- **Цвета ANSI**: `3` (0255).
- **Ссылки на цвета**: `"primary"` или пользовательские определения.
- **Темный/светлый варианты**: `{"dark": "#000", "light": "#fff"}`
- **Нет цвета**: `"none"` — используется цвет терминала по умолчанию или прозрачный.
---
### Определения цвета
Раздел `defs` является необязательным и позволяет вам определять повторно используемые цвета, на которые можно ссылаться в теме.
---
### Настройки терминала по умолчанию
Специальное значение `"none"` можно использовать для любого цвета, чтобы наследовать цвет терминала по умолчанию. Это особенно полезно для создания тем, которые органично сочетаются с цветовой схемой вашего терминала:
- `"text": "none"` — использует цвет переднего плана терминала по умолчанию.
- `"background": "none"` — использует цвет фона терминала по умолчанию.
---
### Пример
Вот пример пользовательской темы:
```json title="my-theme.json"
{
"$schema": "https://opencode.ai/theme.json",
"defs": {
"nord0": "#2E3440",
"nord1": "#3B4252",
"nord2": "#434C5E",
"nord3": "#4C566A",
"nord4": "#D8DEE9",
"nord5": "#E5E9F0",
"nord6": "#ECEFF4",
"nord7": "#8FBCBB",
"nord8": "#88C0D0",
"nord9": "#81A1C1",
"nord10": "#5E81AC",
"nord11": "#BF616A",
"nord12": "#D08770",
"nord13": "#EBCB8B",
"nord14": "#A3BE8C",
"nord15": "#B48EAD"
},
"theme": {
"primary": {
"dark": "nord8",
"light": "nord10"
},
"secondary": {
"dark": "nord9",
"light": "nord9"
},
"accent": {
"dark": "nord7",
"light": "nord7"
},
"error": {
"dark": "nord11",
"light": "nord11"
},
"warning": {
"dark": "nord12",
"light": "nord12"
},
"success": {
"dark": "nord14",
"light": "nord14"
},
"info": {
"dark": "nord8",
"light": "nord10"
},
"text": {
"dark": "nord4",
"light": "nord0"
},
"textMuted": {
"dark": "nord3",
"light": "nord1"
},
"background": {
"dark": "nord0",
"light": "nord6"
},
"backgroundPanel": {
"dark": "nord1",
"light": "nord5"
},
"backgroundElement": {
"dark": "nord1",
"light": "nord4"
},
"border": {
"dark": "nord2",
"light": "nord3"
},
"borderActive": {
"dark": "nord3",
"light": "nord2"
},
"borderSubtle": {
"dark": "nord2",
"light": "nord3"
},
"diffAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffContext": {
"dark": "nord3",
"light": "nord3"
},
"diffHunkHeader": {
"dark": "nord3",
"light": "nord3"
},
"diffHighlightAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffHighlightRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffAddedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffContextBg": {
"dark": "nord1",
"light": "nord5"
},
"diffLineNumber": {
"dark": "nord2",
"light": "nord4"
},
"diffAddedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"markdownText": {
"dark": "nord4",
"light": "nord0"
},
"markdownHeading": {
"dark": "nord8",
"light": "nord10"
},
"markdownLink": {
"dark": "nord9",
"light": "nord9"
},
"markdownLinkText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCode": {
"dark": "nord14",
"light": "nord14"
},
"markdownBlockQuote": {
"dark": "nord3",
"light": "nord3"
},
"markdownEmph": {
"dark": "nord12",
"light": "nord12"
},
"markdownStrong": {
"dark": "nord13",
"light": "nord13"
},
"markdownHorizontalRule": {
"dark": "nord3",
"light": "nord3"
},
"markdownListItem": {
"dark": "nord8",
"light": "nord10"
},
"markdownListEnumeration": {
"dark": "nord7",
"light": "nord7"
},
"markdownImage": {
"dark": "nord9",
"light": "nord9"
},
"markdownImageText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCodeBlock": {
"dark": "nord4",
"light": "nord0"
},
"syntaxComment": {
"dark": "nord3",
"light": "nord3"
},
"syntaxKeyword": {
"dark": "nord9",
"light": "nord9"
},
"syntaxFunction": {
"dark": "nord8",
"light": "nord8"
},
"syntaxVariable": {
"dark": "nord7",
"light": "nord7"
},
"syntaxString": {
"dark": "nord14",
"light": "nord14"
},
"syntaxNumber": {
"dark": "nord15",
"light": "nord15"
},
"syntaxType": {
"dark": "nord7",
"light": "nord7"
},
"syntaxOperator": {
"dark": "nord9",
"light": "nord9"
},
"syntaxPunctuation": {
"dark": "nord4",
"light": "nord0"
}
}
}
```

View File

@@ -0,0 +1,379 @@
---
title: Инструменты
description: Управляйте инструментами, которые может использовать LLM.
---
Инструменты позволяют LLM выполнять действия в вашей кодовой базе. OpenCode поставляется с набором встроенных инструментов, но вы можете расширить его с помощью [пользовательских инструментов](/docs/custom-tools) или [MCP-серверов](/docs/mcp-servers).
По умолчанию все инструменты **включены** и не требуют разрешения для запуска. Вы можете контролировать поведение инструмента через [permissions](/docs/permissions).
---
## Настроить
Используйте поле `permission` для управления поведением инструмента. Вы можете разрешить, запретить или потребовать одобрения для каждого инструмента.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}
```
Вы также можете использовать подстановочные знаки для одновременного управления несколькими инструментами. Например, чтобы потребовать одобрения всех инструментов с сервера MCP:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}
```
[Подробнее](/docs/permissions) о настройке разрешений.
---
## Встроенный
Вот все встроенные инструменты, доступные в OpenCode.
---
### бить
Выполняйте команды оболочки в среде вашего проекта.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}
```
Этот инструмент позволяет LLM запускать команды терминала, такие как `npm install`, `git status` или любую другую команду оболочки.
---
### редактировать
Измените существующие файлы, используя точную замену строк.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
Этот инструмент выполняет точное редактирование файлов, заменяя точные совпадения текста. Это основной способ изменения кода в LLM.
---
### писать
Создавайте новые файлы или перезаписывайте существующие.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
Используйте это, чтобы позволить LLM создавать новые файлы. Он перезапишет существующие файлы, если они уже существуют.
:::примечание
Инструмент `write` контролируется разрешением `edit`, которое распространяется на все модификации файлов (`edit`, `write`, `patch`, `multiedit`).
:::
---
### читать
Прочитайте содержимое файла из вашей кодовой базы.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}
```
Этот инструмент читает файлы и возвращает их содержимое. Он поддерживает чтение определенных диапазонов строк для больших файлов.
---
### grep
Поиск содержимого файла с помощью регулярных выражений.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}
```
Быстрый поиск контента по вашей кодовой базе. Поддерживает полный синтаксис регулярных выражений и фильтрацию шаблонов файлов.
---
### шарик
Найдите файлы по шаблону.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}
```
Ищите файлы, используя шаблоны glob, например `**/*.js` или `src/**/*.ts`. Возвращает соответствующие пути к файлам, отсортированные по времени изменения.
---
### список
Список файлов и каталогов по заданному пути.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}
```
Этот инструмент отображает содержимое каталога. Он принимает шаблоны glob для фильтрации результатов.
---
### лсп (экспериментальный)
Взаимодействуйте с настроенными серверами LSP, чтобы получить функции анализа кода, такие как определения, ссылки, информация о наведении и иерархия вызовов.
:::примечание
Этот инструмент доступен только при `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (или `OPENCODE_EXPERIMENTAL=true`).
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}
```
Поддерживаемые операции включают `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` и `outgoingCalls`.
Чтобы настроить серверы LSP, доступные для вашего проекта, см. [LSP Servers](/docs/lsp).
---
### пластырь
Применяйте патчи к файлам.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
Этот инструмент применяет файлы исправлений к вашей кодовой базе. Полезно для применения различий и патчей из различных источников.
:::примечание
Инструмент `patch` контролируется разрешением `edit`, которое распространяется на все модификации файлов (`edit`, `write`, `patch`, `multiedit`).
:::
---
### навык
Загрузите [skill](/docs/skills) (файл `SKILL.md`) и верните его содержимое в диалог.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}
```
---
### todowrite
Управляйте списками дел во время сеансов кодирования.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}
```
Создает и обновляет списки задач для отслеживания прогресса во время сложных операций. LLM использует это для организации многоэтапных задач.
:::примечание
По умолчанию этот инструмент отключен для субагентов, но вы можете включить его вручную. [Подробнее](/docs/agents/#permissions)
:::
---
### todoread
Прочтите существующие списки дел.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}
```
Считывает текущее состояние списка дел. Используется LLM для отслеживания задач, ожидающих или завершенных.
:::примечание
По умолчанию этот инструмент отключен для субагентов, но вы можете включить его вручную. [Подробнее](/docs/agents/#permissions)
:::
---
### веб-загрузка
Получить веб-контент.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}
```
Позволяет LLM получать и читать веб-страницы. Полезно для поиска документации или исследования онлайн-ресурсов.
---
### веб-поиск
Найдите информацию в Интернете.
:::примечание
Этот инструмент доступен только при использовании поставщика OpenCode или когда для переменной среды `OPENCODE_ENABLE_EXA` установлено любое истинное значение (например, `true` или `1`).
Чтобы включить при запуске OpenCode:
```bash
OPENCODE_ENABLE_EXA=1 opencode
```
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
}
```
Выполняет поиск в Интернете с помощью Exa AI для поиска соответствующей информации в Интернете. Полезно для исследования тем, поиска текущих событий или сбора информации, выходящей за рамки данных обучения.
Ключ API не требуется — инструмент подключается напрямую к сервису MCP, размещенному на Exa AI, без аутентификации.
:::кончик
Используйте `websearch`, когда вам нужно найти информацию (обнаружение), и `webfetch`, когда вам нужно получить контент с определенного URL-адреса (извлечение).
:::
---
### вопрос
Задавайте вопросы пользователю во время выполнения.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}
```
Этот инструмент позволяет LLM задавать вопросы пользователю во время выполнения задачи. Это полезно для:
- Сбор предпочтений или требований пользователей
- Уточнение двусмысленных инструкций
- Получение решений по вариантам реализации
- Предлагая выбор, в каком направлении двигаться
Каждый вопрос включает заголовок, текст вопроса и список вариантов. Пользователи могут выбрать один из предложенных вариантов или ввести собственный ответ. Если вопросов несколько, пользователи могут перемещаться между ними, прежде чем отправлять все ответы.
---
## Пользовательские инструменты
Пользовательские инструменты позволяют вам определять собственные функции, которые может вызывать LLM. Они определены в вашем файле конфигурации и могут выполнять произвольный код.
[Подробнее](/docs/custom-tools) о создании собственных инструментов.
---
## MCP-серверы
Серверы MCP (Model Context Protocol) позволяют интегрировать внешние инструменты и сервисы. Сюда входит доступ к базе данных, интеграция API и сторонние сервисы.
[Подробнее](/docs/mcp-servers) о настройке серверов MCP.
---
## Внутренности
Внутренне такие инструменты, как `grep`, `glob` и `list`, используют [ripgrep](https://github.com/BurntSushi/ripgrep). По умолчанию ripgrep учитывает шаблоны `.gitignore`, что означает, что файлы и каталоги, перечисленные в вашем `.gitignore`, будут исключены из поиска и списков.
---
### Игнорировать шаблоны
Чтобы включить файлы, которые обычно игнорируются, создайте файл `.ignore` в корне вашего проекта. Этот файл может явно разрешать определенные пути.
```text title=".ignore"
!node_modules/
!dist/
!build/
```
Например, этот файл `.ignore` позволяет ripgrep выполнять поиск в каталогах `node_modules/`, `dist/` и `build/`, даже если они указаны в `.gitignore`.

View File

@@ -0,0 +1,300 @@
---
title: Поиск неисправностей
description: Распространенные проблемы и способы их решения.
---
Чтобы устранить проблемы с OpenCode, начните с проверки журналов и локальных данных, которые он хранит на диске.
---
## Журналы
Лог-файлы записываются в:
- **macOS/Linux**: `~/.local/share/opencode/log/`
- **Windows**: нажмите `WIN+R` и вставьте `%USERPROFILE%\.local\share\opencode\log`.
Файлам журналов присваиваются имена с метками времени (например, `2025-01-09T123456.log`), и сохраняются 10 последних файлов журналов.
Вы можете установить уровень журнала с помощью параметра командной строки `--log-level`, чтобы получить более подробную информацию об отладке. Например, `opencode --log-level DEBUG`.
---
## Хранилище
opencode хранит данные сеанса и другие данные приложения на диске по адресу:
- **macOS/Linux**: `~/.local/share/opencode/`
- **Windows**: нажмите `WIN+R` и вставьте `%USERPROFILE%\.local\share\opencode`.
Этот каталог содержит:
- `auth.json`  данные аутентификации, такие как ключи API и токены OAuth.
- `log/`  журналы приложений.
- `project/` — данные, специфичные для проекта, такие как данные сеанса и сообщения.
- Если проект находится в репозитории Git, он хранится в `./<project-slug>/storage/`.
- Если это не репозиторий Git, он хранится в `./global/storage/`.
---
## Настольное приложение
OpenCode Desktop запускает локальный сервер OpenCode (сопутствующий модуль `opencode-cli`) в фоновом режиме. Большинство проблем вызвано неправильно работающим плагином, поврежденным кешем или неверными настройками сервера.
### Быстрые проверки
- Полностью закройте и перезапустите приложение.
- Если приложение отображает экран с ошибкой, нажмите **Перезапустить** и скопируйте сведения об ошибке.
- Только для macOS: меню `OpenCode` -> **Обновить веб-просмотр** (помогает, если пользовательский интерфейс пуст или завис).
---
### Отключить плагины
Если настольное приложение дает сбой при запуске, зависает или ведет себя странно, начните с отключения плагинов.
#### Проверьте глобальную конфигурацию
Откройте файл глобальной конфигурации и найдите ключ `plugin`.
- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (или `~/.config/opencode/opencode.json`)
- **macOS/Linux** (более ранние версии): `~/.local/share/opencode/opencode.jsonc`
- **Windows**: нажмите `WIN+R` и вставьте `%USERPROFILE%\.config\opencode\opencode.jsonc`.
Если у вас настроены плагины, временно отключите их, удалив ключ или установив для него пустой массив:
```jsonc
{
"$schema": "https://opencode.ai/config.json",
"plugin": [],
}
```
#### Проверьте каталоги плагинов
OpenCode также может загружать локальные плагины с диска. Временно переместите их в сторону (или переименуйте папку) и перезапустите настольное приложение:
- **Глобальные плагины**
- **macOS/Linux**: `~/.config/opencode/plugins/`
- **Windows**: нажмите `WIN+R` и вставьте `%USERPROFILE%\.config\opencode\plugins`.
- **Плагины проекта** (только если вы используете конфигурацию для каждого проекта)
- ХХ0ГГ
Если приложение снова начнет работать, повторно включите плагины по одному, чтобы определить, какой из них вызывает проблему.
---
### Очистить кеш
Если отключение плагинов не помогает (или установка плагина зависла), очистите кеш, чтобы OpenCode мог его пересобрать.
1. Полностью закройте OpenCode Desktop.
2. Удалите каталог кэша:
- **macOS**: Finder -> `Cmd+Shift+G` -> вставить `~/.cache/opencode`.
- **Linux**: удалите `~/.cache/opencode` (или запустите `rm -rf ~/.cache/opencode`).
- **Windows**: нажмите `WIN+R` и вставьте `%USERPROFILE%\.cache\opencode`.
3. Перезапустите рабочий стол OpenCode.
---
### Исправить проблемы с подключением к серверу
OpenCode Desktop может либо запустить собственный локальный сервер (по умолчанию), либо подключиться к настроенному вами URL-адресу сервера.
Если вы видите диалоговое окно **Ошибка подключения** (или приложение никогда не выходит за пределы заставки), проверьте URL-адрес пользовательского сервера.
#### Очистите URL-адрес сервера по умолчанию для рабочего стола.
На главном экране щелкните имя сервера (с точкой состояния), чтобы открыть окно выбора сервера. В разделе **Сервер по умолчанию** нажмите **Очистить**.
#### Удалите `server.port`/`server.hostname` из вашей конфигурации.
Если ваш `opencode.json(c)` содержит раздел `server`, временно удалите его и перезапустите настольное приложение.
#### Проверьте переменные среды
Если в вашей среде установлен `OPENCODE_PORT`, настольное приложение попытается использовать этот порт для локального сервера.
- Отмените настройку `OPENCODE_PORT` (или выберите свободный порт) и перезапустите.
---
### Linux: проблемы с Wayland/X11
В Linux некоторые настройки Wayland могут вызывать пустые окна или ошибки компоновщика.
- Если вы используете Wayland, а приложение не работает или вылетает, попробуйте запустить с помощью `OC_ALLOW_WAYLAND=1`.
- Если это усугубляет ситуацию, удалите его и попробуйте вместо этого запустить сеанс X11.
---
### Windows: среда выполнения WebView2.
В Windows для OpenCode Desktop требуется Microsoft Edge **WebView2 Runtime**. Если приложение открывается в пустом окне или не запускается, установите/обновите WebView2 и повторите попытку.
---
### Windows: общие проблемы с производительностью
Если вы испытываете низкую производительность, проблемы с доступом к файлам или проблемы с терминалом в Windows, попробуйте использовать [WSL (подсистема Windows для Linux)](/docs/windows-wsl). WSL предоставляет среду Linux, которая более эффективно работает с функциями OpenCode.
---
### Уведомления не отображаются
OpenCode Desktop отображает системные уведомления только в следующих случаях:
- уведомления для OpenCode включены в настройках вашей ОС, и
- окно приложения не в фокусе.
---
### Сбросить хранилище настольных приложений (последнее средство)
Если приложение не запускается и вы не можете очистить настройки из пользовательского интерфейса, сбросьте сохраненное состояние настольного приложения.
1. Закройте рабочий стол OpenCode.
2. Найдите и удалите эти файлы (они находятся в каталоге данных приложения OpenCode Desktop):
- `opencode.settings.dat` (URL-адрес сервера по умолчанию для рабочего стола)
- `opencode.global.dat` и `opencode.workspace.*.dat` (состояние пользовательского интерфейса, например, недавние серверы/проекты)
Чтобы быстро найти каталог:
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (затем найдите имена файлов, указанные выше)
- **Linux**: найдите в `~/.local/share` имена файлов, указанные выше.
- **Windows**: нажмите `WIN+R` -> `%APPDATA%` (затем найдите имена файлов, указанные выше).
---
## Получение помощи
Если у вас возникли проблемы с OpenCode:
1. **Сообщайте о проблемах на GitHub**
Лучший способ сообщить об ошибках или запросить новые функции — через наш репозиторий GitHub:
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
Прежде чем создавать новую проблему, выполните поиск по существующим проблемам, чтобы узнать, не сообщалось ли уже о вашей проблеме.
2. **Присоединяйтесь к нашему Discord**
Для получения помощи в режиме реального времени и обсуждения в сообществе присоединяйтесь к нашему серверу Discord:
[**opencode.ai/discord**](https://opencode.ai/discord)
---
## Общие проблемы
Вот некоторые распространенные проблемы и способы их решения.
---
### OpenCode не запускается
1. Проверьте журналы на наличие сообщений об ошибках
2. Попробуйте запустить `--print-logs`, чтобы увидеть вывод в терминале.
3. Убедитесь, что у вас установлена ​​последняя версия `opencode upgrade`.
---
### Проблемы аутентификации
1. Попробуйте выполнить повторную аутентификацию с помощью команды `/connect` в TUI.
2. Убедитесь, что ваши ключи API действительны
3. Убедитесь, что ваша сеть разрешает подключения к API провайдера.
---
### Модель недоступна
1. Убедитесь, что вы прошли аутентификацию у провайдера
2. Проверьте правильность названия модели в вашей конфигурации.
3. Для некоторых моделей может потребоваться специальный доступ или подписка.
Если вы столкнулись с `ProviderModelNotFoundError`, вы, скорее всего, ошибаетесь.
ссылка на модель где-то.
На модели следует ссылаться следующим образом: `<providerId>/<modelId>`.
Примеры:
- ХХ0ГГ
- ХХ0ГГ
- ХХ0ГГ
Чтобы выяснить, к каким моделям у вас есть доступ, запустите `opencode models`.
---
### Провидеринитеррор
Если вы столкнулись с ошибкой ProviderInitError, скорее всего, у вас неверная или поврежденная конфигурация.
Чтобы решить эту проблему:
1. Сначала убедитесь, что ваш провайдер настроен правильно, следуя [руководству провайдеров](/docs/providers)
2. Если проблема не устранена, попробуйте очистить сохраненную конфигурацию:
```bash
rm -rf ~/.local/share/opencode
```
В Windows нажмите `WIN+R` и удалите: `%USERPROFILE%\.local\share\opencode`.
3. Повторно выполните аутентификацию у своего провайдера, используя команду `/connect` в TUI.
---
### AI_APICallError и проблемы с пакетом провайдера
Если вы столкнулись с ошибками вызова API, это может быть связано с устаревшими пакетами провайдера. opencode динамически устанавливает пакеты провайдеров (OpenAI, Anthropic, Google и т. д.) по мере необходимости и кэширует их локально.
Чтобы решить проблемы с пакетом поставщика:
1. Очистите кеш пакетов провайдера:
```bash
rm -rf ~/.cache/opencode
```
В Windows нажмите `WIN+R` и удалите: `%USERPROFILE%\.cache\opencode`.
2. Перезапустите открытый код, чтобы переустановить последние пакеты поставщиков.
Это заставит opencode загружать самые последние версии пакетов провайдеров, что часто решает проблемы совместимости с параметрами модели и изменениями API.
---
### Копирование/вставка не работает в Linux
Для работы функций копирования/вставки пользователям Linux необходимо установить одну из следующих утилит буфера обмена:
**Для систем X11:**
```bash
apt install -y xclip
# or
apt install -y xsel
```
**Для систем Wayland:**
```bash
apt install -y wl-clipboard
```
**Для безголовых сред:**
```bash
apt install -y xvfb
# and run:
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
export DISPLAY=:99.0
```
opencode определит, используете ли вы Wayland и предпочитаете `wl-clipboard`, в противном случае он попытается найти инструменты буфера обмена в порядке: `xclip` и `xsel`.

View File

@@ -0,0 +1,390 @@
---
title: ТУИ
description: Использование пользовательского интерфейса терминала OpenCode.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
OpenCode предоставляет интерактивный интерфейс терминала или TUI для работы над вашими проектами с помощью LLM.
Запуск OpenCode запускает TUI для текущего каталога.
```bash
opencode
```
Или вы можете запустить его для определенного рабочего каталога.
```bash
opencode /path/to/project
```
Как только вы окажетесь в TUI, вы можете запросить его с помощью сообщения.
```text
Give me a quick summary of the codebase.
```
---
## Ссылки на файлы
Вы можете ссылаться на файлы в своих сообщениях, используя `@`. Это выполняет нечеткий поиск файлов в текущем рабочем каталоге.
:::кончик
Вы также можете использовать `@` для ссылки на файлы в своих сообщениях.
:::
```text "@packages/functions/src/api/index.ts"
How is auth handled in @packages/functions/src/api/index.ts?
```
Содержимое файла добавляется в беседу автоматически.
---
## Bash-команды
Начните сообщение с `!`, чтобы запустить команду оболочки.
```bash frame="none"
!ls -la
```
Вывод команды добавляется в диалог как результат работы инструмента.
---
## Команды
При использовании OpenCode TUI вы можете ввести `/`, а затем имя команды, чтобы быстро выполнить действия. Например:
```bash frame="none"
/help
```
Большинство команд также имеют привязку клавиш с использованием `ctrl+x` в качестве ведущей клавиши, где `ctrl+x` — это ведущая клавиша по умолчанию. [Подробнее ](/docs/keybinds).
Вот все доступные слэш-команды:
---
### соединять
Добавьте провайдера в OpenCode. Позволяет выбирать из доступных поставщиков и добавлять их ключи API.
```bash frame="none"
/connect
```
---
### компактный
Сжать текущий сеанс. _Псевдоним_: `/summarize`
```bash frame="none"
/compact
```
**Привязка клавиш:** `ctrl+x c`
---
### подробности
Переключить детали выполнения инструмента.
```bash frame="none"
/details
```
**Привязка клавиш:** `ctrl+x d`
---
### редактор
Открыть внешний редактор для составления сообщений. Использует редактор, установленный в переменной среды `EDITOR`. [Подробнее ](#editor-setup).
```bash frame="none"
/editor
```
**Привязка клавиш:** `ctrl+x e`
---
### Выход
Выйдите из OpenCode. _Псевдонимы_: `/quit`, `/q`
```bash frame="none"
/exit
```
**Привязка клавиш:** `ctrl+x q`
---
### экспорт
Экспортируйте текущий разговор в Markdown и откройте его в редакторе по умолчанию. Использует редактор, установленный в переменной среды `EDITOR`. [Подробнее ](#editor-setup).
```bash frame="none"
/export
```
**Привязка клавиш:** `ctrl+x x`
---
### помощь
Показать диалоговое окно помощи.
```bash frame="none"
/help
```
**Привязка клавиш:** `ctrl+x h`
---
### инициализация
Создайте или обновите файл `AGENTS.md`. [Подробнее ](/docs/rules).
```bash frame="none"
/init
```
**Привязка клавиш:** `ctrl+x i`
---
### модели
Перечислите доступные модели.
```bash frame="none"
/models
```
**Привязка клавиш:** `ctrl+x m`
---
### новый
Начать новый сеанс. _Псевдоним_: `/clear`
```bash frame="none"
/new
```
**Привязка клавиш:** `ctrl+x n`
---
### переделывать
Повторить ранее отмененное сообщение. Доступно только после использования `/undo`.
:::кончик
Любые изменения файлов также будут восстановлены.
:::
Внутри это использует Git для управления изменениями файлов. Итак, ваш проект ** должен
быть репозиторием Git**.
```bash frame="none"
/redo
```
**Привязка клавиш:** `ctrl+x r`
---
### сессии
Составляйте список и переключайтесь между сеансами. _Псевдонимы_: `/resume`, `/continue`
```bash frame="none"
/sessions
```
**Привязка клавиш:** `ctrl+x l`
---
### делиться
Поделиться текущим сеансом. [Подробнее](/docs/share).
```bash frame="none"
/share
```
**Привязка клавиш:** `ctrl+x s`
---
### темы
Список доступных тем.
```bash frame="none"
/theme
```
**Привязка клавиш:** `ctrl+x t`
---
### мышление
Переключить видимость блоков мышления/рассуждения в разговоре. Если этот параметр включен, вы можете увидеть процесс рассуждения модели для моделей, поддерживающих расширенное мышление.
:::примечание
Эта команда только контролирует, будут ли **отображаться** блоки мышления, но не включает и не отключает возможности модели по рассуждению. Чтобы переключить фактические возможности рассуждения, используйте `ctrl+t` для циклического переключения вариантов модели.
:::
```bash frame="none"
/thinking
```
---
### отменить
Отменить последнее сообщение в разговоре. Удаляет самое последнее сообщение пользователя, все последующие ответы и любые изменения файлов.
:::кончик
Любые внесенные изменения в файле также будут отменены.
:::
Внутри это использует Git для управления изменениями файлов. Итак, ваш проект ** должен
быть репозиторием Git**.
```bash frame="none"
/undo
```
**Привязка клавиш:** `ctrl+x u`
---
### отменить совместное использование
Отменить общий доступ к текущему сеансу. [Подробнее](/docs/share#un-sharing).
```bash frame="none"
/unshare
```
---
## Настройка редактора
Команды `/editor` и `/export` используют редактор, указанный в переменной среды `EDITOR`.
ХХ0ГГ
ХХ0ГГ
```bash
# Example for nano or vim
export EDITOR=nano
export EDITOR=vim
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
export EDITOR="code --wait"
```
Чтобы сделать его постоянным, добавьте это в свой профиль оболочки;
`~/.bashrc`, `~/.zshrc` и т. д.
ХХ0ГГ
ХХ0ГГ
```bash
set EDITOR=notepad
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
set EDITOR=code --wait
```
Чтобы сделать его постоянным, используйте **Свойства системы** > **Среда.
Переменные**.
ХХ0ГГ
ХХ0ГГ
```powershell
$env:EDITOR = "notepad"
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
# include --wait
$env:EDITOR = "code --wait"
```
Чтобы сделать его постоянным, добавьте его в свой профиль PowerShell.
ХХ0ГГ
ХХ0ГГ
Популярные варианты редактора включают в себя:
- `code` — код Visual Studio
- `cursor` — Курсор
- `windsurf` - Виндсерфинг
- `nvim` - Редактор Neovim
- `vim` — редактор Vim
- `nano` — Нано-редактор
- `notepad` — Блокнот Windows
- `subl`  возвышенный текст
:::примечание
Некоторые редакторы, такие как VS Code, необходимо запускать с флагом `--wait`.
:::
Некоторым редакторам для работы в режиме блокировки необходимы аргументы командной строки. Флаг `--wait` блокирует процесс редактора до его закрытия.
---
## Настроить
Вы можете настроить поведение TUI через файл конфигурации OpenCode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
}
}
}
```
### Параметры
- `scroll_acceleration` — включите ускорение прокрутки в стиле macOS для плавной и естественной прокрутки. Если этот параметр включен, скорость прокрутки увеличивается при быстрой прокрутке и остается точной при более медленных движениях. **Этот параметр имеет приоритет над `scroll_speed` и переопределяет его, если он включен.**
- `scroll_speed` — контролирует скорость прокрутки TUI при использовании команд прокрутки (минимум: `1`). По умолчанию `3`. **Примечание. Это игнорируется, если для `scroll_acceleration.enabled` установлено значение `true`.**
---
## Кастомизация
Вы можете настроить различные аспекты представления TUI, используя палитру команд (`ctrl+x h` или `/help`). Эти настройки сохраняются после перезапуска.
---
#### Отображение имени пользователя
Включите, будет ли ваше имя пользователя отображаться в сообщениях чата. Доступ к этому через:
- Палитра команд: поиск «имя пользователя» или «скрыть имя пользователя».
- Настройка сохраняется автоматически и будет запоминаться во время сеансов TUI.

View File

@@ -0,0 +1,142 @@
---
title: Интернет
description: Использование OpenCode в вашем браузере.
---
OpenCode может работать как веб-приложение в вашем браузере, обеспечивая такой же мощный опыт кодирования AI без необходимости использования терминала.
![OpenCode Web — новый сеанс](../../../assets/web/web-homepage-new-session.png)
## Начиная
Запустите веб-интерфейс, выполнив:
```bash
opencode web
```
Это запустит локальный сервер `127.0.0.1` со случайным доступным портом и автоматически откроет OpenCode в браузере по умолчанию.
:::осторожность
Если `OPENCODE_SERVER_PASSWORD` не установлен, сервер будет незащищен. Это подходит для локального использования, но его следует настроить для доступа к сети.
:::
:::tip[Пользователи Windows]
Для получения наилучших результатов запустите `opencode web` из [WSL](/docs/windows-wsl), а не из PowerShell. Это обеспечивает правильный доступ к файловой системе и интеграцию терминала.
:::
---
## Конфигурация
Вы можете настроить веб-сервер с помощью флагов командной строки или в файле [config file](/docs/config).
### Порт
По умолчанию OpenCode выбирает доступный порт. Вы можете указать порт:
```bash
opencode web --port 4096
```
### Имя хоста
По умолчанию сервер привязывается к `127.0.0.1` (только локальный хост). Чтобы сделать OpenCode доступным в вашей сети:
```bash
opencode web --hostname 0.0.0.0
```
При использовании `0.0.0.0` OpenCode будет отображать как локальные, так и сетевые адреса:
```
Local access: http://localhost:4096
Network access: http://192.168.1.100:4096
```
### обнаружение mDNS
Включите mDNS, чтобы ваш сервер был доступен для обнаружения в локальной сети:
```bash
opencode web --mdns
```
Это автоматически устанавливает имя хоста `0.0.0.0` и объявляет сервер как `opencode.local`.
Вы можете настроить доменное имя mDNS для запуска нескольких экземпляров в одной сети:
```bash
opencode web --mdns --mdns-domain myproject.local
```
### КОРС
Чтобы разрешить дополнительные домены для CORS (полезно для пользовательских интерфейсов):
```bash
opencode web --cors https://example.com
```
### Аутентификация
Чтобы защитить доступ, установите пароль, используя переменную среды `OPENCODE_SERVER_PASSWORD`:
```bash
OPENCODE_SERVER_PASSWORD=secret opencode web
```
Имя пользователя по умолчанию — `opencode`, но его можно изменить с помощью `OPENCODE_SERVER_USERNAME`.
---
## Использование веб-интерфейса
После запуска веб-интерфейс предоставляет доступ к вашим сеансам OpenCode.
### Сессии
Просматривайте свои сеансы и управляйте ими с главной страницы. Вы можете видеть активные сеансы и начинать новые.
![OpenCode Web — активный сеанс](../../../assets/web/web-homepage-active-session.png)
### Статус сервера
Нажмите «Просмотреть серверы», чтобы просмотреть подключенные серверы и их статус.
![OpenCode Web — см. Серверы](../../../assets/web/web-homepage-see-servers.png)
---
## Подключение терминала
Вы можете подключить TUI терминала к работающему веб-серверу:
```bash
# Start the web server
opencode web --port 4096
# In another terminal, attach the TUI
opencode attach http://localhost:4096
```
Это позволяет вам одновременно использовать веб-интерфейс и терминал, используя одни и те же сеансы и состояние.
---
## Конфигурационный файл
Вы также можете настроить параметры сервера в файле конфигурации `opencode.json`:
```json
{
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"cors": ["https://example.com"]
}
}
```
Флаги командной строки имеют приоритет над настройками файла конфигурации.

View File

@@ -0,0 +1,113 @@
---
title: Windows (WSL)
description: Запускайте OpenCode в Windows через WSL.
---
import { Steps } from "@astrojs/starlight/components"
OpenCode можно запускать напрямую в Windows, но для лучшего опыта мы рекомендуем [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install). WSL дает Linux-среду, которая отлично работает с возможностями OpenCode.
:::tip[Почему WSL?]
WSL дает более высокую производительность файловой системы, полноценную поддержку терминала и совместимость с инструментами разработки, на которые опирается OpenCode.
:::
---
## Настройка
<Steps>
1. **Установите WSL**
Если вы еще не сделали этого, установите WSL по [официальному руководству Microsoft](https://learn.microsoft.com/en-us/windows/wsl/install).
2. **Установите OpenCode в WSL**
После настройки WSL откройте терминал WSL и установите OpenCode одним из [способов установки](/docs/).
```bash
curl -fsSL https://opencode.ai/install | bash
```
3. **Запускайте OpenCode из WSL**
Перейдите в каталог проекта (к файлам Windows можно обращаться через `/mnt/c/`, `/mnt/d/` и т.д.) и запустите OpenCode.
```bash
cd /mnt/c/Users/YourName/project
opencode
```
</Steps>
---
## Десктопное приложение + сервер в WSL
Если вы предпочитаете OpenCode Desktop, но хотите запускать сервер в WSL:
1. **Запустите сервер в WSL** с параметром `--hostname 0.0.0.0`, чтобы разрешить внешние подключения:
```bash
opencode serve --hostname 0.0.0.0 --port 4096
```
2. **Подключите десктопное приложение** к `http://localhost:4096`
:::note
Если в вашей конфигурации `localhost` не работает, используйте IP-адрес WSL (выполните в WSL: `hostname -I`) и подключайтесь по `http://<wsl-ip>:4096`.
:::
:::caution
При использовании `--hostname 0.0.0.0` задайте `OPENCODE_SERVER_PASSWORD`, чтобы защитить сервер.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
```
:::
---
## Веб-клиент + WSL
Для лучшего веб-опыта в Windows:
1. **Запускайте `opencode web` в терминале WSL**, а не в PowerShell:
```bash
opencode web --hostname 0.0.0.0
```
2. **Открывайте в браузере Windows** адрес `http://localhost:<port>` (OpenCode выведет URL)
Запуск `opencode web` из WSL обеспечивает корректный доступ к файловой системе и интеграцию с терминалом, при этом интерфейс остается доступным из браузера Windows.
---
## Доступ к файлам Windows
WSL может получать доступ ко всем вашим файлам Windows через каталог `/mnt/`:
- `C:` drive → `/mnt/c/`
- `D:` drive → `/mnt/d/`
- И так далее
Пример:
```bash
cd /mnt/c/Users/YourName/Documents/project
opencode
```
:::tip
Для максимально плавной работы стоит клонировать или скопировать репозиторий в файловую систему WSL (например, в `~/code/`) и запускать OpenCode оттуда.
:::
---
## Советы
- Даже для проектов на дисках Windows запускайте OpenCode в WSL, чтобы получить более плавный доступ к файлам
- Используйте OpenCode вместе с [расширением WSL для VS Code](https://code.visualstudio.com/docs/remote/wsl) для единого рабочего процесса
- Конфигурация и сессии OpenCode хранятся в среде WSL по пути `~/.local/share/opencode/`

View File

@@ -0,0 +1,254 @@
---
title: Дзен
description: Кураторский список моделей, предоставленный OpenCode.
---
import config from "../../../../config.mjs"
export const console = config.console
export const email = `mailto:${config.email}`
OpenCode Zen — это список протестированных и проверенных моделей, предоставленный командой OpenCode.
:::примечание
OpenCode Zen в настоящее время находится в стадии бета-тестирования.
:::
Zen работает как любой другой провайдер в OpenCode. Вы входите в OpenCode Zen и получаете
ваш ключ API. Это **совершенно необязательно**, и вам не обязательно использовать его для использования
Открытый код.
---
## Фон
Существует большое количество моделей, но лишь некоторые из них.
эти модели хорошо работают в качестве агентов кодирования. Кроме того, большинство провайдеров
настроен совсем по-другому; так что вы получите совсем другую производительность и качество.
:::кончик
Мы протестировали избранную группу моделей и поставщиков, которые хорошо работают с OpenCode.
:::
Поэтому, если вы используете модель через что-то вроде OpenRouter, вы никогда не сможете
уверен, что вы получаете лучшую версию модели, которую хотите.
Чтобы это исправить, мы сделали пару вещей:
1. Мы протестировали избранную группу моделей и поговорили с их командами о том, как
лучше всего запустить их.
2. Затем мы поработали с несколькими поставщиками услуг, чтобы убедиться, что они обслуживаются.
правильно.
3. Наконец, мы сравнили комбинацию модель/провайдер и пришли к выводу, что
со списком, который мы с удовольствием рекомендуем.
OpenCode Zen — это шлюз искусственного интеллекта, который дает вам доступ к этим моделям.
---
## Как это работает
OpenCode Zen работает так же, как и любой другой поставщик OpenCode.
1. Вы входите в систему **<a href={console}>OpenCode Zen</a>**, добавляете свой платежный аккаунт.
подробности и скопируйте свой ключ API.
2. Вы запускаете команду `/connect` в TUI, выбираете OpenCode Zen и вставляете свой ключ API.
3. Запустите `/models` в TUI, чтобы просмотреть список рекомендуемых нами моделей.
С вас взимается плата за каждый запрос, и вы можете добавить кредиты на свой счет.
---
## Конечные точки
Вы также можете получить доступ к нашим моделям через следующие конечные точки API.
| Модель | Идентификатор модели | Конечная точка | Пакет AI SDK |
| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
| GPT 5.2 | gpt-5.2 | ХХ0ГГ | ХХ0ГГ |
| Кодекс GPT 5.2 | gpt-5.2-кодекс | ХХ0ГГ | ХХ0ГГ |
| GPT 5.1 | gpt-5.1 | ХХ0ГГ | ХХ0ГГ |
| Кодекс GPT 5.1 | gpt-5.1-кодекс | ХХ0ГГ | ХХ0ГГ |
| Кодекс GPT 5.1 Макс. | gpt-5.1-кодекс-макс | ХХ0ГГ | ХХ0ГГ |
| Кодекс GPT 5.1 Мини | gpt-5.1-кодекс-мини | ХХ0ГГ | ХХ0ГГ |
| GPT 5 | гпт-5 | ХХ0ГГ | ХХ0ГГ |
| Кодекс GPT 5 | gpt-5-кодекс | ХХ0ГГ | ХХ0ГГ |
| ГПТ 5 Нано | gpt-5-нано | ХХ0ГГ | ХХ0ГГ |
| Клод Сонет 4.5 | Клод-сонет-4-5 | ХХ0ГГ | ХХ0ГГ |
| Клод Сонет 4 | Клод-Сонет-4 | ХХ0ГГ | ХХ0ГГ |
| Клод Хайку 4.5 | Клод-Хайку-4-5 | ХХ0ГГ | ХХ0ГГ |
| Клод Хайку 3.5 | Клод-3-5-хайку | ХХ0ГГ | ХХ0ГГ |
| Закрыть работу 4.6 | плотная работа-4-6 | ХХ0ГГ | ХХ0ГГ |
| Закрыть работу 4.5 | плотная работа-4-5 | ХХ0ГГ | ХХ0ГГ |
| Закрыть работу 4.1 | плотная работа-4-1 | ХХ0ГГ | ХХ0ГГ |
| Близнецы 3 Про | Близнецы-3-про | ХХ0ГГ | ХХ0ГГ |
| Близнецы 3 Флэш | Близнецы-3-вспышка | ХХ0ГГ | ХХ0ГГ |
| МиниМакс М2.1 | минимакс-м2.1 | ХХ0ГГ | ХХ0ГГ |
| МиниМакс М2.1 Бесплатно | минимакс-м2.1-бесплатно | ХХ0ГГ | ХХ0ГГ |
| ГЛМ 4.7 | глм-4.7 | ХХ0ГГ | ХХ0ГГ |
| ГЛМ 4.7 Бесплатно | glm-4.7-бесплатно | ХХ0ГГ | ХХ0ГГ |
| ГЛМ 4.6 | глм-4.6 | ХХ0ГГ | ХХ0ГГ |
| Как К2.5 | ас-к2.5 | ХХ0ГГ | ХХ0ГГ |
| Кими K2.5 Бесплатно | кими-к2.5-бесплатно | ХХ0ГГ | ХХ0ГГ |
| Кими К2 думает | Кими-К2-думает | ХХ0ГГ | ХХ0ГГ |
| Как К2 | as-k2 | ХХ0ГГ | ХХ0ГГ |
| Qwen3 Кодер 480B | qwen3-кодер | ХХ0ГГ | ХХ0ГГ |
| Большой рассол | большой рассол | ХХ0ГГ | ХХ0ГГ |
[модель id](/docs/config/#models) в вашей конфигурации OpenCode
использует формат `opencode/<model-id>`. Например, для Кодекса GPT 5.2 вы должны
используйте `opencode/gpt-5.2-codex` в вашей конфигурации.
---
### Модели
Полный список доступных моделей и их метаданные можно получить по адресу:
```
https://opencode.ai/zen/v1/models
```
---
## Цены
Мы поддерживаем модель оплаты по мере использования. Ниже приведены цены **за 1 миллион токенов**.
| Модель | Вход | Выход | Кэшированное чтение | Кэшированная запись |
| --------------------------------- | ------ | ------ | ----------- | ------------ |
| Большой рассол | Бесплатно | Бесплатно | Бесплатно | - |
| МиниМакс М2.1 Бесплатно | Бесплатно | Бесплатно | Бесплатно | - |
| МиниМакс М2.1 | $0.30 | $1.20 | $0.10 | - |
| ГЛМ 4.7 Бесплатно | Бесплатно | Бесплатно | Бесплатно | - |
| ГЛМ 4.7 | $0.60 | $2.20 | $0.10 | - |
| ГЛМ 4.6 | $0.60 | $2.20 | $0.10 | - |
| Кими K2.5 Бесплатно | Бесплатно | Бесплатно | Бесплатно | - |
| Как К2.5 | $0.60 | $3.00 | $0.08 | - |
| Кими К2 думает | $0.40 | $2.50 | - | - |
| Как К2 | $0.40 | $2.50 | - | - |
| Qwen3 Кодер 480B | $0.45 | $1.50 | - | - |
| Клод Сонет 4.5 (≤ 200 тыс. токенов) | $3.00 | $15.00 | $0.30 | $3.75 |
| Клод Сонет 4.5 (> 200 тыс. токенов) | $6.00 | $22.50 | $0.60 | $7.50 |
| Клод Сонет 4 (≤ 200 тыс. токенов) | $3.00 | $15.00 | $0.30 | $3.75 |
| Клод Сонет 4 (> 200 тыс. токенов) | $6.00 | $22.50 | $0.60 | $7.50 |
| Клод Хайку 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
| Клод Хайку 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
| Клод Опус 4.6 (≤ 200 тыс. токенов) | $5.00 | $25.00 | $0.50 | $6.25 |
| Клод Опус 4.6 (> 200 тыс. токенов) | $10.00 | $37.50 | $1.00 | $12.50 |
| Закрыть работу 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
| Закрыть работу 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
| Gemini 3 Pro (≤ 200 тыс. токенов) | $2.00 | $12.00 | $0.20 | - |
| Gemini 3 Pro (> 200 тыс. токенов) | $4.00 | $18.00 | $0.40 | - |
| Близнецы 3 Флэш | $0.50 | $3.00 | $0.05 | - |
| GPT 5.2 | $1.75 | $14.00 | $0.175 | - |
| Кодекс GPT 5.2 | $1.75 | $14.00 | $0.175 | - |
| GPT 5.1 | $1.07 | $8.50 | $0.107 | - |
| Кодекс GPT 5.1 | $1.07 | $8.50 | $0.107 | - |
| Кодекс GPT 5.1 Макс. | $1.25 | $10.00 | $0.125 | - |
| Кодекс GPT 5.1 Мини | $0.25 | $2.00 | $0.025 | - |
| GPT 5 | $1.07 | $8.50 | $0.107 | - |
| Кодекс GPT 5 | $1.07 | $8.50 | $0.107 | - |
| ГПТ 5 Нано | Бесплатно | Бесплатно | Бесплатно | - |
Вы можете заметить _Claude Haiku 3.5_ в своей истории использования. Это [недорогая модель](/docs/config/#models), которая используется для создания заголовков ваших сеансов.
:::примечание
Комиссии по кредитной карте учитываются по себестоимости (4,4% + 0,30 доллара США за транзакцию); мы не взимаем ничего сверх этого.
:::
Бесплатные модели:
- GLM 4.7 Free доступен на OpenCode в течение ограниченного времени. Команда использует это время для сбора отзывов и улучшения модели.
- Kimi K2.5 Free доступен на OpenCode в течение ограниченного времени. Команда использует это время для сбора отзывов и улучшения модели.
- MiniMax M2.1 Free доступен на OpenCode в течение ограниченного времени. Команда использует это время для сбора отзывов и улучшения модели.
- Big Pickle — это стелс-модель, которая доступна бесплатно на OpenCode в течение ограниченного времени. Команда использует это время для сбора отзывов и улучшения модели.
<a href={email}>Свяжитесь с нами</a>, если у вас есть вопросы.
---
### Автоматическая перезагрузка
Если ваш баланс упадет ниже 5 долларов, Zen автоматически пополнит 20 долларов.
Вы можете изменить сумму автопополнения. Вы также можете полностью отключить автоматическую перезагрузку.
---
### Ежемесячные лимиты
Вы также можете установить месячный лимит использования для всего рабочего пространства и для каждого
член вашей команды.
Например, предположим, что вы установили ежемесячный лимит использования в размере 20 долларов США, Zen не будет использовать
более 20 долларов в месяц. Но если у вас включена автоматическая перезагрузка, Дзен может оказаться
взимать с вас более 20 долларов США, если ваш баланс опускается ниже 5 долларов США.
---
## Конфиденциальность
Все наши модели размещены в США. Наши поставщики придерживаются политики нулевого хранения и не используют ваши данные для обучения моделей, за следующими исключениями:
- Big Pickle: во время бесплатного периода собранные данные могут быть использованы для улучшения модели.
- GLM 4.7 Бесплатная: в течение бесплатного периода собранные данные могут использоваться для улучшения модели.
- Kimi K2.5 Free: в течение бесплатного периода собранные данные могут использоваться для улучшения модели.
- MiniMax M2.1 Бесплатно: в течение бесплатного периода собранные данные могут использоваться для улучшения модели.
- 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).
---
## Для команд
Дзен также отлично подходит для команд. Вы можете приглашать товарищей по команде, назначать роли, курировать
модели, которые использует ваша команда, и многое другое.
:::примечание
Рабочие пространства в настоящее время бесплатны для команд в рамках бета-тестирования.
:::
Управление вашим рабочим пространством в настоящее время бесплатно для команд в рамках бета-тестирования. Мы будем
скоро поделимся более подробной информацией о ценах.
---
### Роли
Вы можете приглашать товарищей по команде в свое рабочее пространство и распределять роли:
- **Администратор**: управляйте моделями, участниками, ключами API и выставлением счетов.
- **Участник**: Управляйте только своими собственными ключами API.
Администраторы также могут установить ежемесячные лимиты расходов для каждого участника, чтобы держать расходы под контролем.
---
### Доступ к модели
Администраторы могут включать или отключать определенные модели для рабочей области. Запросы, сделанные к отключенной модели, вернут ошибку.
Это полезно в случаях, когда вы хотите отключить использование модели, которая
собирает данные.
---
### Принесите свой ключ
Вы можете использовать свои собственные ключи API OpenAI или Anthropic, сохраняя при этом доступ к другим моделям в Zen.
Когда вы используете свои собственные ключи, счета за токены взимаются непосредственно провайдером, а не Zen.
Например, у вашей организации уже может быть ключ для OpenAI или Anthropic.
и вы хотите использовать его вместо того, который предоставляет Zen.
---
## Цели
Мы создали OpenCode Zen, чтобы:
1. **Сравните** лучшие модели/поставщики агентов кодирования.
2. Получите доступ к вариантам **самого высокого качества**, не снижая производительность и не обращаясь к более дешевым поставщикам.
3. Не допускайте **падения цен**, продавая по себестоимости; поэтому единственная надбавка предназначена для покрытия наших сборов за обработку.
4. Не допускайте **привязки**, позволяя использовать его с любым другим агентом кодирования. И всегда позволяйте вам использовать любого другого провайдера с OpenCode.