Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 137 additions & 0 deletions packages/web/src/content/docs/ru/policies.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
---
title: Политики
description: Управляйте доступом к ресурсам, которые OpenCode может использовать.
---

Политики определяют, разрешено ли OpenCode выполнять действия с конкретными ресурсами. Эта функция является экспериментальной и настраивается через массив `experimental.policies` в `opencode.json`.

Политики отличаются от [разрешений](/docs/permissions). Разрешения определяют, что инструменты могут делать во время сессии (например, изменять файлы), в то время как политики определяют, может ли OpenCode вообще использовать ресурс, например, конкретного LLM-провайдера.

---

## Настройка

Каждое правило политики содержит три поля:

- `effect` — Либо `"allow"`, либо `"deny"`.
- `action` — Контролируемая операция.
- `resource` — ID или маска ресурса, к которому применяется правило.

Например, запрет на использование провайдера `openai`:

```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"policies": [
{
"effect": "deny",
"action": "provider.use",
"resource": "openai"
}
]
}
}
```

Провайдер, запрещённый политикой, будет недоступен для выбора или использования модели, даже если ключи доступа или иные параметры для него настроены верно.

---

## Доступные политики

На данный момент OpenCode поддерживает одно действие политики:

| Действие | Ресурс | Описание |
| -------------- | --------------------------------- | ----------------------------------------------------- |
| `provider.use` | ID провайдера (например, `openai`) | Разрешить или запретить использование LLM-провайдера. |

В будущем список доступных действий политики может быть расширен.

---

## Использование масок

Поле `resource` поддерживает использование масок (wildcards). Используйте `*` для обозначения любого количества символов (включая ноль) и `?` для одного символа.

```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"policies": [
{
"effect": "deny",
"action": "provider.use",
"resource": "company-*"
}
]
}
}
```

Эта политика запрещает доступ к таким провайдерам как `company-us` и `company-eu`.

---

## Приоритет правил политики

Если условиям удовлетворяет несколько правил, приоритет имеет последнее из них. Рекомендуется сначала указывать общие правила, а затем — более конкретные исключения.

Например, запретить всех провайдеров, кроме Anthropic:

```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"policies": [
{
"effect": "deny",
"action": "provider.use",
"resource": "*"
},
{
"effect": "allow",
"action": "provider.use",
"resource": "anthropic"
}
]
}
}
```

Если провайдер не соответствует ни одной политике, то доступ к нему разрешен по умолчанию.

Политики могут быть заданы как в глобальной конфигурации, так и в конфигурации проекта. Если политики из обоих файлов конфликтуют, глобальная политика имеет приоритет. Это не позволяет коду из репозитория включить провайдера, которого вы явно запретили в своих глобальных настройках.

---

## Списки провайдеров

Для управления доступом используйте политики вместо устаревших параметров `disabled_providers` и `enabled_providers`.

Чтобы заменить `disabled_providers`:

```json title="opencode.json"
{
"experimental": {
"policies": [
{ "effect": "deny", "action": "provider.use", "resource": "openai" },
{ "effect": "deny", "action": "provider.use", "resource": "google" }
]
}
}
```

Чтобы заменить `enabled_providers`, сначала запретите всех провайдеров, затем разрешите выбранных:

```json title="opencode.json"
{
"experimental": {
"policies": [
{ "effect": "deny", "action": "provider.use", "resource": "*" },
{ "effect": "allow", "action": "provider.use", "resource": "anthropic" },
{ "effect": "allow", "action": "provider.use", "resource": "openai" }
]
}
}
```
Loading