31 Commits
Author SHA1 Message Date
ddadmin 761fd9978b refactor(opencode): минимальный шаблон конфига для 2.x
Конфиг переписан в каноническом виде OpenCode 2: права заданы
списком permissions, MCP-серверы — в mcp.servers. Убраны устаревшие
default_agent и выключенный playwright, а также комментарий про
снятый плагин. Пример возврата SearXNG в README поправлен под новую
схему. Лишний симлинк opencode/skills удалён: OpenCode сам читает
~/.agents/skills.
2026-10-17 17:16:41 +02:00
ddadmin 0ab5dbe182 chore(opencode): отключены MCP-серверы поиска duckduckgo и searxng
Встроенные websearch и webfetch дают более полную выдачу, поэтому
локальные MCP-серверы поиска больше не нужны. SearXNG оставлен
в docker/searxng как резерв: добавлен README с запуском и возвратом
MCP-сервера. Заодно поправлено описание OpenCode в AGENTS.md.
2026-10-17 17:11:31 +02:00
Dmitry DementievandClaude Opus 5.5 4d3edc09ee fix(opencode): исправлена подстановка ключа Context7 и почищены разрешения
- ключ Context7 подставляется через {env:...}: с ${env:...} в заголовок
  уходил лишний $
- убраны устаревшие в V2 разрешения write и patch, их покрывает edit
- удалён слишком широкий шаблон *shadow*
- в permission-reviewer.md отмечено, что система отключена

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 22:37:23 +02:00
ddadmin 16e85139b9 chore(opencode): эксперимент с permission-reviewer — итоги и отключение
Плагин настроен и проверен (jev через Zen + прокси, enforce+deny),
но признан не стоящим использования: хрупкая цепочка, нервные
эскалации, запертая сессия. Запись в opencode.json отключена
(закомментирована), выводы — в docs/research/.
2026-10-11 12:15:19 +03:00
Dmitry Dementiev 9f6db963be chore(opencode): второе мнение permission-reviewer на glm-5.3-flash
У glm-5.3-flash в подписке opencode-go лимиты в 4 раза выше, чем у
deepseek-v4.1-flash, при сравнимом интеллекте. outputFormat json_schema:
модель поддерживает structured output (по models.dev).
2026-10-10 22:00:13 +02:00
Dmitry Dementiev b516e9cc54 fix(opencode): searxng обратно на npx - node установлен
npm-пакет ihor-sokoliuk/mcp-searxng работает (проверен initialize-
handshake). PyPI-варианты заброшены и несовместимы с текущим MCP SDK.
2026-10-10 18:06:36 +02:00
Dmitry Dementiev 156d22c3b0 fix(opencode): searxng MCP переведён с npx на uvx
На машине нет Node.js - spawn npx падал с NotFound, searxng никогда
не подключался. Тот же сервер есть на PyPI и работает через uvx,
как и duckduckgo.
2026-10-10 17:59:53 +02:00
Dmitry Dementiev 452b0c5c75 fix(opencode): второе мнение permission-reviewer на доступную модель
escalationReviewer ссылался на deepseek/deepseek-flash - такого провайдера
нет, каждая эскалация Jev падала с 'Reviewer model is unavailable'.
Заменено на opencode-go/deepseek-v4.1-flash (подписка, в 2 раза дешевле
Zen): outputFormat text (у модели нет json_schema), variant high
(none не поддерживается, есть только low/high/max).
2026-10-10 17:49:47 +02:00
Dmitry Dementiev 32cd7097e6 refactor(opencode): удалены устаревшие профили safe-build/safe-plan
Профили дублировали работу permission-reviewer статическими списками:
их deny обходили ревьюер и давали отказы без причины (git push). Теперь
решения об ask принимает плагин; статикой оставлены только deny на чтение
секретов - детерминированная гарантия, LLM-ревьюеру не доверяем.

- opencode.json: default_agent -> build, убраны статические списки
  и deny на git push (решение за ревьюером)
- permission-reviewer.jsonc: actorProfiles переключены на встроенные
  build/plan
- install.sh: блок линковки agents заменён чисткой старого симлинка;
  добавлено копирование permission-reviewer.jsonc в ~/.config/opencode
  (плагин читает его только оттуда - раньше тюнинг не применялся)
- тесты: проверка чистки симлинка и копирования конфига ревьюера
2026-10-10 17:32:34 +02:00
Dmitry Dementiev 346b3bfc61 feat(opencode): ревьюер разрешений переключён на Jev со вторым мнением
- Зачем: Jev (System One) решает за ~0.6 с против 4 с у чат-модели,
  но на тонком контексте занижает confidence (0.6 < 0.7) и эскалировал
  даже тривиальные команды.
- Что: model=opencode/jev-1.13-free (ключ OPENCODE_API_KEY из
  ~/.env.secrets, нужен export); escalationReviewer=deepseek/deepseek-flash
  для неуверенных решений; actorProfiles для safe-build/safe-plan.
- Проверка: прогон printf → allow (low, 0.97), аудит пишется;
  fail-closed при отсутствии ключа подтверждён (эскалация, не allow).
2026-10-06 17:14:41 +03:00
Dmitry Dementiev 54467a2888 fix(opencode): запрещено чтение ключей и секретов через bash
- Зачем: allow-правило "cat *" в safe-агентах пропускало чтение
  ~/.ssh/*, ~/.env.secrets и подобного без ask, мимо ревьюера.
- Что: deny-паттерны на .ssh, id_rsa/id_ed25519, .pem, shadow, .env*,
  *.secrets*, .netrc в safe-build и safe-plan; .env.example оставлен allow.
  Префиксные паттерны — заслон от буквальных случаев; обход через
  интерпретаторы остаётся на ревьюере (он видит содержимое скриптов).
- Проверка: прогон cat ~/.ssh/config → Permission denied до выполнения,
  содержимое в вывод не попало.
2026-10-06 16:52:23 +03:00
Dmitry Dementiev 22c4fcd710 chore(opencode): permission-reviewer.jsonc исключён из stow-линковки
- Зачем: плагин читает конфиг с O_NOFOLLOW и молча игнорирует симлинк
  (проверено doctor: со слинкованным файлом применяются дефолты).
- Что: добавлен .stow-local-ignore; файл деплоится копией в
  ~/.config/opencode/, репозиторий остаётся источником истины.
- Проверка: doctor видит файл и применяет model=deepseek/deepseek-flash.
2026-10-06 15:47:57 +03:00
Dmitry Dementiev 2868ba07af feat(opencode): подключён плагин opencode-permission-reviewer для V2
- Зачем: каждый ask-запрос требовал ручного подтверждения; плагин
  пропускает безопасные действия через модель-ревьюер, остальное эскалирует.
- Что: добавлена запись плагина в plugins (V2-формат) и доверенный конфиг
  permission-reviewer.jsonc (ревьюер deepseek/deepseek-flash, variant none).
- Проверка: сквозной прогон opencode run — printf hello автоодобрен
  ревьюером (risk low, confidence 0.98), запись в audit jsonl появилась.
2026-10-06 15:44:19 +03:00
Dmitry DementievandClaude Sonnet 5 53761f0a87 chore(opencode): удалён кастомный провайдер zai
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 17:45:27 +03:00
ddadmin 5f23fdda3c chore(opencode): удалён плагин superpowers
- Зачем: плагин больше не используется, а в OpenCode 2 он не грузится (V1-формат) и даёт ошибку на старте.
- Что: из opencode.json удалена опция plugin с репозиторием obra/superpowers.
- Проверка: opencode plugin list больше не показывает superpowers; JSON валиден; V1 и V2 читают конфиг как раньше.
2026-09-17 10:22:38 +03:00
Dmitry Dementiev dbc81c9c8f chore(opencode): удалены Z.AI MCP-сервисы (web-reader, web-search-prime, zread) 2026-05-11 19:16:37 +03:00
ddadmin 1a5ff7cecf feat(opencode): добавлен плагин superpowers в конфигурацию
- Зачем:
  - необходимо подключить набор skills для расширения возможностей агента Opencode.
- Что:
  - добавлена опция plugin с указанием репозитория superpowers в opencode.json.
- Проверка:
  - cat opencode/.config/opencode/opencode.json.
2026-04-25 20:13:14 +03:00
Dmitry DementievandClaude Opus 4.6 b6b501dc77 fix(docker): изменён порт SearXNG на безопасный диапазон
- Зачем:
  - порт 57458 попадал в динамический диапазон Hyper-V (49152–65535), что блокировало запуск контейнера на WSL2.
- Что:
  - порт изменён с 57458 на 26745 в docker-compose.yml.
  - обновлён SEARXNG_URL в конфиге MCP opencode.
- Проверка:
  - docker compose up -d && curl -s -o /dev/null -w "%{http_code}" http://localhost:26745/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 10:09:42 +03:00
ddadminandClaude Opus 4.6 168b40ddd7 feat(docker): добавлен локальный SearXNG для веб-поиска из opencode
- Зачем:
  - модели в opencode не имели доступа к поиску без платных API.
- Что:
  - добавлен docker-compose для SearXNG (localhost:57458, без valkey).
  - секрет подставляется из .env через generate-config.sh при старте.
  - добавлен MCP-сервер searxng в конфиг opencode.
  - env_file с fallback: .env.sample работает из коробки, .env опционален.
- Проверка:
  - cd docker/searxng && docker compose up -d.
  - curl http://localhost:57458/search?q=test&format=json.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 19:09:41 +03:00
ddadminandClaude Opus 4.6 d3a91bea95 fix(opencode): заменён DuckDuckGo MCP с npx/bun на uvx
- Зачем:
  - duckduckgo-mcp (npx) требует bun, которого нет в системе.
- Что:
  - убран websearch из permissions (инструмент не существует в opencode).
  - команда заменена на uvx duckduckgo-mcp-server (Python, работает без bun).
- Проверка:
  - перезапустить opencode, убедиться что инструменты duckduckgo доступны.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:11:22 +03:00
ddadminandClaude Opus 4.6 1b675ab34a feat(opencode): включён встроенный websearch в permissions
- Зачем:
  - доступ к поиску в интернете для моделей без внешних MCP-серверов.
- Что:
  - добавлен "websearch": "ask" в секцию permission.
- Проверка:
  - открыть opencode, убедиться что websearch доступен как инструмент.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 17:42:29 +03:00
ddadminandClaude Opus 4.6 ffc794a219 feat(opencode): добавлен провайдер GLM-5.1 (Coding Plan) и TODO.md
- Зачем:
  - подключение модели glm-5.1 через подписку GLM Coding Plan Lite.
- Что:
  - добавлен кастомный провайдер zai с OpenAI-compatible адаптером.
  - создан TODO.md с планом миграции на config.d + stow (anomalyco/opencode#9062).
- Проверка:
  - открыть opencode, выполнить /models, убедиться что zai/glm-5.1 доступен.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 17:17:01 +03:00
ddadmin d6483850cd chore(opencode): очищен конфиг opencode.json от комментариев
- Зачем:
  - конфигурационный файл содержит лишние комментарии, которые можно удалить.
- Что:
  - удалены комментарии с пояснениями в opencode.json.
  - удалены лишние пустые строки для компактности.
  - добавлен перевод строки в конце файла.
- Проверка:
  - валидация JSON: cat opencode/.config/opencode/opencode.json | jq empty.
2026-03-10 15:39:31 +03:00
ddadmin 82a54d0541 feat(opencode): добавлены безопасные агенты и настройки разрешений
- Зачем:
  - необходим дополнительный уровень безопасности для предотвращения случайных изменений в репозитории
- Что:
  - создан агент safe-plan для безопасного планирования (read-only)
  - создан агент safe-build с защищенным доступом к shell
  - установлен default_agent: "safe-plan"
  - обновлены глобальные permissions: все операции требуют подтверждения, git push запрещен
  - добавлен share: "manual"
- Проверка:
  - проверка конфигурации через OpenCode UI
2026-03-08 22:49:42 +03:00
ddadmin 245b69d992 chore(opencode): отключены MCP серверы web-reader, web-search-prime, zread
- Зачем:
  - отключение неиспользуемых MCP серверов для оптимизации конфигурации.
- Что:
  - добавлено поле enabled: false для web-reader.
  - добавлено поле enabled: false для web-search-prime.
  - добавлено поле enabled: false для zread.
- Проверка:
  - проверка конфигурации opencode.
2026-03-04 21:48:37 +03:00
ddadmin efd8bccba7 chore(opencode): удалена символическая ссылка на skills
- Зачем:
  - рефакторинг структуры директорий проекта.
- Что:
  - удалена символическая ссылка opencode/.config/opencode/skills.
- Проверка:
  - проверка отсутствия ссылки и обновлённого статуса git.
2026-03-04 21:29:18 +03:00
ddadmin 6cac374180 config(opencode): обновлены настройки разрешений и MCP-серверов
- Зачем:
  - упрощение правил разрешений и отключение неиспользуемого MCP-сервера.
- Что:
  - удалено правило "*" с режимом ask из секции permission.
  - отключен MCP-сервер playwright (enabled: false).
- Проверка:
  - проверка файла opencode/.config/opencode/opencode.json.
2026-02-28 19:52:34 +03:00
ddadmin 08873ebbe2 config(opencode): добавлены настройки разрешений для git-команд
- Зачем:
  - требуется контроль выполнения опасных git-операций (commit, branch, switch).
- Что:
  - добавлена секция permission в конфигурацию OpenCode.
  - настроен режим ask для git commit, git commit --amend, git branch, git switch.
  - разрешены все остальные git-команды.
- Проверка:
  - проверка файла opencode/.config/opencode/opencode.json.
2026-02-28 18:08:07 +03:00
ddadmin 7cd55ac988 refactor(dotfiles): унифицированы skills и упрощен bash_custom
Зачем: убрать дублирование skills между агентами и сократить кастомный bash слой до реально необходимых настроек.
Что: skill conventional-commits перенесен в agents/.agents/skills, добавлены symlink-bridge пакеты для opencode и codex, обновлен README, очищен bash/.bash_custom от дублирования с системным ~/.bashrc, добавлены базовые zed settings/keymap файлы.
Проверка: stow -nvv bash agents opencode codex zed и bash -n bash/.bash_custom.
2026-02-21 19:22:10 +03:00
ddadmin 938dfe15e7 refactor(opencode): реструктурирован скилл conventional-commits
Зачем: переход на новый формат хранения скиллов для лучшей организации и расширяемости.
Что: удалён .skill.md файл, создана директория skills/conventional-commits/ с новой структурой.
Проверка: ls -la opencode/.config/opencode/skills/
2026-02-21 18:31:29 +03:00
ddadmin ab53f2501e feat(opencode): добавлена конфигурация с gitignore, bashrc и скриптами
Зачем: настройка рабочего окружения для инструмента opencode с поддержкой conventional commits.
Что: созданы конфигурационные файлы, добавлен bashrc, gitignore, документация и skill для коммитов.
Проверка: git status, проверка наличия файлов в opencode/.config/.
2026-02-21 18:28:21 +03:00