wip(docs): i18n (#12681)
This commit is contained in:
67
packages/web/src/content/docs/ru/1-0.mdx
Normal file
67
packages/web/src/content/docs/ru/1-0.mdx
Normal 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
|
||||
- инструмент_детали
|
||||
- думающие_блоки
|
||||
156
packages/web/src/content/docs/ru/acp.mdx
Normal file
156
packages/web/src/content/docs/ru/acp.mdx
Normal 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`
|
||||
- Пользовательские форматтеры и линтеры
|
||||
- Агенты и система разрешений
|
||||
747
packages/web/src/content/docs/ru/agents.mdx
Normal file
747
packages/web/src/content/docs/ru/agents.mdx
Normal 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,0–0,2**: очень целенаправленные и детерминированные ответы, идеальные для анализа кода и планирования.
|
||||
- **0,3–0,5**: сбалансированные ответы с некоторой креативностью, подходят для общих задач развития.
|
||||
- **0,6–1,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
|
||||
```
|
||||
601
packages/web/src/content/docs/ru/cli.mdx
Normal file
601
packages/web/src/content/docs/ru/cli.mdx
Normal 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` | логическое значение | Включить режим плана |
|
||||
323
packages/web/src/content/docs/ru/commands.mdx
Normal file
323
packages/web/src/content/docs/ru/commands.mdx
Normal 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).
|
||||
|
||||
:::примечание
|
||||
Пользовательские команды могут переопределять встроенные команды.
|
||||
:::
|
||||
|
||||
Если вы определите пользовательскую команду с тем же именем, она переопределит встроенную команду.
|
||||
685
packages/web/src/content/docs/ru/config.mdx
Normal file
685
packages/web/src/content/docs/ru/config.mdx
Normal 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, в отдельных файлах.
|
||||
- Включая большие файлы инструкций, не загромождая вашу конфигурацию.
|
||||
- Совместное использование общих фрагментов конфигурации в нескольких файлах конфигурации.
|
||||
170
packages/web/src/content/docs/ru/custom-tools.mdx
Normal file
170
packages/web/src/content/docs/ru/custom-tools.mdx
Normal 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.
|
||||
76
packages/web/src/content/docs/ru/ecosystem.mdx
Normal file
76
packages/web/src/content/docs/ru/ecosystem.mdx
Normal 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) | Конфигурации, подсказки, агенты и плагины для улучшения рабочих процессов. |
|
||||
170
packages/web/src/content/docs/ru/enterprise.mdx
Normal file
170
packages/web/src/content/docs/ru/enterprise.mdx
Normal 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>
|
||||
130
packages/web/src/content/docs/ru/formatters.mdx
Normal file
130
packages/web/src/content/docs/ru/formatters.mdx
Normal 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`** в команде будет заменен путем к форматируемому файлу.
|
||||
321
packages/web/src/content/docs/ru/github.mdx
Normal file
321
packages/web/src/content/docs/ru/github.mdx
Normal 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 получает:
|
||||
- Точный файл, который просматривается
|
||||
- Конкретные строки кода
|
||||
- Окружающий контекст различий
|
||||
- Информация о номере строки
|
||||
|
||||
Это позволяет выполнять более целевые запросы без необходимости вручную указывать пути к файлам или номера строк.
|
||||
195
packages/web/src/content/docs/ru/gitlab.mdx
Normal file
195
packages/web/src/content/docs/ru/gitlab.mdx
Normal 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 рассмотрит мерж-реквест и предоставит отзыв.
|
||||
48
packages/web/src/content/docs/ru/ide.mdx
Normal file
48
packages/web/src/content/docs/ru/ide.mdx
Normal 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 есть разрешение на установку расширений.
|
||||
359
packages/web/src/content/docs/ru/index.mdx
Normal file
359
packages/web/src/content/docs/ru/index.mdx
Normal 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 в вашем терминале, вам понадобится:
|
||||
|
||||
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).
|
||||
192
packages/web/src/content/docs/ru/keybinds.mdx
Normal file
192
packages/web/src/content/docs/ru/keybinds.mdx
Normal 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 или откройте новую вкладку.
|
||||
188
packages/web/src/content/docs/ru/lsp.mdx
Normal file
188
packages/web/src/content/docs/ru/lsp.mdx
Normal 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`
|
||||
|
||||
Файл должен содержать только лицензионный ключ без какого-либо дополнительного содержимого.
|
||||
511
packages/web/src/content/docs/ru/mcp-servers.mdx
Normal file
511
packages/web/src/content/docs/ru/mcp-servers.mdx
Normal 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.
|
||||
```
|
||||
223
packages/web/src/content/docs/ru/models.mdx
Normal file
223
packages/web/src/content/docs/ru/models.mdx
Normal 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. Первая модель, использующая внутренний приоритет.
|
||||
331
packages/web/src/content/docs/ru/modes.mdx
Normal file
331
packages/web/src/content/docs/ru/modes.mdx
Normal 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,0–0,2**: очень целенаправленные и детерминированные ответы, идеальные для анализа кода и планирования.
|
||||
- **0,3–0,5**: сбалансированные ответы с некоторой креативностью, подходят для общих задач развития.
|
||||
- **0,6–1,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 и чтения.
|
||||
- **Режим «Документы»**: запись документации с использованием файловых операций, но без системных команд.
|
||||
|
||||
Вы также можете обнаружить, что разные модели подходят для разных случаев использования.
|
||||
57
packages/web/src/content/docs/ru/network.mdx
Normal file
57
packages/web/src/content/docs/ru/network.mdx
Normal 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.
|
||||
237
packages/web/src/content/docs/ru/permissions.mdx
Normal file
237
packages/web/src/content/docs/ru/permissions.mdx
Normal 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 *"`) при передаче аргументов.
|
||||
:::
|
||||
385
packages/web/src/content/docs/ru/plugins.mdx
Normal file
385
packages/web/src/content/docs/ru/plugins.mdx
Normal 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` в этом случае игнорируется.
|
||||
1889
packages/web/src/content/docs/ru/providers.mdx
Normal file
1889
packages/web/src/content/docs/ru/providers.mdx
Normal file
File diff suppressed because it is too large
Load Diff
180
packages/web/src/content/docs/ru/rules.mdx
Normal file
180
packages/web/src/content/docs/ru/rules.mdx
Normal 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`) более удобно в обслуживании, чем инструкции вручную.
|
||||
:::
|
||||
391
packages/web/src/content/docs/ru/sdk.mdx
Normal file
391
packages/web/src/content/docs/ru/sdk.mdx
Normal 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`: максимальное количество результатов (1–200)
|
||||
|
||||
---
|
||||
|
||||
#### Примеры
|
||||
|
||||
```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)
|
||||
}
|
||||
```
|
||||
287
packages/web/src/content/docs/ru/server.mdx
Normal file
287
packages/web/src/content/docs/ru/server.mdx
Normal 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` (необязательно) — максимальное количество результатов (1–200)
|
||||
- `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 |
|
||||
128
packages/web/src/content/docs/ru/share.mdx
Normal file
128
packages/web/src/content/docs/ru/share.mdx
Normal 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) об использовании открытого кода в вашей организации.
|
||||
222
packages/web/src/content/docs/ru/skills.mdx
Normal file
222
packages/web/src/content/docs/ru/skills.mdx
Normal 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` скрыты от агентов.
|
||||
369
packages/web/src/content/docs/ru/themes.mdx
Normal file
369
packages/web/src/content/docs/ru/themes.mdx
Normal 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 (0–15) для подсветки синтаксиса и элементов пользовательского интерфейса, которые соответствуют цветовой палитре вашего терминала.
|
||||
- **Сохраняет настройки терминала по умолчанию**: использует `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` (0–255).
|
||||
- **Ссылки на цвета**: `"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
379
packages/web/src/content/docs/ru/tools.mdx
Normal file
379
packages/web/src/content/docs/ru/tools.mdx
Normal 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`.
|
||||
300
packages/web/src/content/docs/ru/troubleshooting.mdx
Normal file
300
packages/web/src/content/docs/ru/troubleshooting.mdx
Normal 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`.
|
||||
390
packages/web/src/content/docs/ru/tui.mdx
Normal file
390
packages/web/src/content/docs/ru/tui.mdx
Normal 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.
|
||||
142
packages/web/src/content/docs/ru/web.mdx
Normal file
142
packages/web/src/content/docs/ru/web.mdx
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
title: Интернет
|
||||
description: Использование OpenCode в вашем браузере.
|
||||
---
|
||||
|
||||
OpenCode может работать как веб-приложение в вашем браузере, обеспечивая такой же мощный опыт кодирования AI без необходимости использования терминала.
|
||||
|
||||

|
||||
|
||||
## Начиная
|
||||
|
||||
Запустите веб-интерфейс, выполнив:
|
||||
|
||||
```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.
|
||||
|
||||
### Сессии
|
||||
|
||||
Просматривайте свои сеансы и управляйте ими с главной страницы. Вы можете видеть активные сеансы и начинать новые.
|
||||
|
||||

|
||||
|
||||
### Статус сервера
|
||||
|
||||
Нажмите «Просмотреть серверы», чтобы просмотреть подключенные серверы и их статус.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Подключение терминала
|
||||
|
||||
Вы можете подключить 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"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Флаги командной строки имеют приоритет над настройками файла конфигурации.
|
||||
113
packages/web/src/content/docs/ru/windows-wsl.mdx
Normal file
113
packages/web/src/content/docs/ru/windows-wsl.mdx
Normal 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/`
|
||||
254
packages/web/src/content/docs/ru/zen.mdx
Normal file
254
packages/web/src/content/docs/ru/zen.mdx
Normal 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.
|
||||
Reference in New Issue
Block a user