From 2868ba07af87bd1242ee0d52d83bc1a40bf103b0 Mon Sep 17 00:00:00 2001 From: Dmitry Dementiev Date: Tue, 6 Oct 2026 15:44:19 +0300 Subject: [PATCH] =?UTF-8?q?feat(opencode):=20=D0=BF=D0=BE=D0=B4=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D1=91=D0=BD=20=D0=BF=D0=BB=D0=B0=D0=B3=D0=B8?= =?UTF-8?q?=D0=BD=20opencode-permission-reviewer=20=D0=B4=D0=BB=D1=8F=20V2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: каждый ask-запрос требовал ручного подтверждения; плагин пропускает безопасные действия через модель-ревьюер, остальное эскалирует. - Что: добавлена запись плагина в plugins (V2-формат) и доверенный конфиг permission-reviewer.jsonc (ревьюер deepseek/deepseek-flash, variant none). - Проверка: сквозной прогон opencode run — printf hello автоодобрен ревьюером (risk low, confidence 0.98), запись в audit jsonl появилась. --- opencode/.config/opencode/opencode.json | 23 ++++++++++++++++--- .../opencode/permission-reviewer.jsonc | 10 ++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 opencode/.config/opencode/permission-reviewer.jsonc diff --git a/opencode/.config/opencode/opencode.json b/opencode/.config/opencode/opencode.json index 0b0c7f5..23f5622 100644 --- a/opencode/.config/opencode/opencode.json +++ b/opencode/.config/opencode/opencode.json @@ -1,5 +1,11 @@ { "$schema": "https://opencode.ai/config.json", + "plugins": [ + { + "package": "opencode-permission-reviewer@^2.4.0", + "options": {} + } + ], "default_agent": "safe-plan", "permission": { "write": "ask", @@ -24,7 +30,11 @@ }, "searxng": { "type": "local", - "command": ["npx", "-y", "mcp-searxng"], + "command": [ + "npx", + "-y", + "mcp-searxng" + ], "environment": { "SEARXNG_URL": "http://localhost:26745" }, @@ -32,12 +42,19 @@ }, "playwright": { "type": "local", - "command": ["npx", "-y", "@playwright/mcp@latest"], + "command": [ + "npx", + "-y", + "@playwright/mcp@latest" + ], "enabled": false }, "duckduckgo": { "type": "local", - "command": ["uvx", "duckduckgo-mcp-server"], + "command": [ + "uvx", + "duckduckgo-mcp-server" + ], "enabled": true } }, diff --git a/opencode/.config/opencode/permission-reviewer.jsonc b/opencode/.config/opencode/permission-reviewer.jsonc new file mode 100644 index 0000000..d599f46 --- /dev/null +++ b/opencode/.config/opencode/permission-reviewer.jsonc @@ -0,0 +1,10 @@ +{ + // Модель-ревьюер разрешений. Провайдеры: deepseek, opencode-go. + // Если модель не поддерживает structured output (например opencode-go/deepseek-v4-flash), + // переключить outputFormat на "text". + "model": "deepseek/deepseek-flash", + "outputFormat": "json_schema", + "variant": "none", + // Ниже порога уверенности решение уходит человеку + "confidenceThreshold": 0.7 +}