diff options
| author | Adam <[email protected]> | 2026-02-09 11:34:35 -0600 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-09 11:34:35 -0600 |
| commit | dc53086c1e73d43d3a28fc4cdf161e83d09b1877 (patch) | |
| tree | 45a1d0e38de958d0886a5120b2806b21db74145b /packages/web/src/content/docs/ru/permissions.mdx | |
| parent | f74c0339cc6315f7e7743e26b7eab47ce026c239 (diff) | |
| download | opencode-dc53086c1e73d43d3a28fc4cdf161e83d09b1877.tar.gz opencode-dc53086c1e73d43d3a28fc4cdf161e83d09b1877.zip | |
wip(docs): i18n (#12681)
Diffstat (limited to 'packages/web/src/content/docs/ru/permissions.mdx')
| -rw-r--r-- | packages/web/src/content/docs/ru/permissions.mdx | 237 |
1 files changed, 237 insertions, 0 deletions
diff --git a/packages/web/src/content/docs/ru/permissions.mdx b/packages/web/src/content/docs/ru/permissions.mdx new file mode 100644 index 000000000..104aaf657 --- /dev/null +++ b/packages/web/src/content/docs/ru/permissions.mdx @@ -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 *"`) при передаче аргументов. +::: |
