feat(config): reasoningEffort max for all agents, fix review suggestions #101

Closed
opened 2026-08-17 17:15:04 +03:00 by slaid098 · 0 comments
Owner

Контекст

После PR #100 (general → glm-5.2, vision-агент, удалён plan) reviewer оставил 5 info-suggestions (не блокирующие). Пользователь хочет явно зафиксировать максимальный уровень мышления (reasoningEffort: "max") для всех агентов с model, чтобы не зависеть от model-specific default (дока opencode.ai/docs/models не указывает default для ollama-cloud моделей; для OpenAI это medium/high, для остальных — модель-специфичный).

Задача

  1. В .opencode/opencode.json (секция agent) добавить "reasoningEffort": "max" к записям: general (glm-5.2), reviewer (deepseek-v4-pro), vision (minimax-m3), explore, scout, memory-syncer (deepseek-v4-flash). plan — не трогать (без model, наследует глобальную из UI).
  2. Фиксы 5 suggestions от reviewer'а PR #100:
    • .opencode/agents/vision.md: добавить deny-правила для oracle-скриптов в bash allow-список (6 правил: python3 *pipeline-status.py*, python3 .opencode/scripts/pipeline-status.py*, и аналоги для spec-status.py, project-status.py — как в reviewer.md:63-72).
    • tests/test_permissions.py:369: docstring «All 5 subagents» → «All 6 subagents».
    • tests/test_permissions.py:431-469: вынести _parse_frontmatter/_parse_yaml_block в общий helper (например tests/conftest.py), убрать дублирование ~40 строк.
    • .opencode/agents/vision.md: добавить trailing newline.
    • opencode.json: добавить "serena_*": false в tools у vision (симметрия с memory-syncer).

Контракты

  • reasoningEffort — camelCase, поле в записи агента в opencode.json (секция agent.<name>), передаётся провайдеру как model option (дока opencode.ai/docs/agents «Additional»).
  • Значение "max" поддерживается всеми 4 моделями: glm-5.2 (high/max), minimax-m3 (low/medium/high/max), deepseek-v4-flash/pro (effort).
  • vision.md bash deny-правила — формат как в reviewer.md:63-72 (glob-паттерны с *).
  • tests/conftest.py — если файла нет, создать; helper-функции импортируются из test_agent_frontmatter.py и test_permissions.py.

Инварианты

  • plan НЕ получает reasoningEffort (нет model).
  • Модели агентов НЕ меняются (general=glm-5.2, reviewer=deepseek-v4-pro, vision=minimax-m3, explore/scout/memory-syncer=deepseek-v4-flash).
  • check-permissions.py — exit 0.
  • Все тесты зелёные (uv run pytest tests/ -x -q).

Граничные случаи

  • Если tests/conftest.py уже существует — добавить helper туда, не перезаписывая содержимое.
  • Если _parse_frontmatter используется в других тестах — обновить импорты везде.
  • serena_*: false у vision не ломает его работу (vision использует antidetect-browser MCP + Read, не Serena).

Влияние на связанные компоненты

  • tests/test_permissions.py, tests/test_agent_frontmatter.py — рефакторинг парсера.
  • .opencode/agents/vision.md — bash permission.
  • .opencode/opencode.json — agent секция.
  • Memory: после merge обновить opencode-config-007.md (reasoningEffort max для всех агентов).

Вне scope

  • Смена моделей агентов.
  • Изменение plan (primary без model).
  • Другие suggestions/улучшения конфига.

Критерии приемки

  • uv run pytest tests/ -x -q — все зелёные.
  • python3 .opencode/scripts/check-permissions.py — exit 0.
  • В opencode.json у 6 агентов с model есть "reasoningEffort": "max".
  • В vision.md есть 6 deny-правил для oracle-скриптов и trailing newline.
  • Docstring «All 6 subagents».
  • Парсер frontmatter не дублируется между тестами.
  • У vision в tools есть "serena_*": false.
## Контекст После PR #100 (general → glm-5.2, vision-агент, удалён plan) reviewer оставил 5 info-suggestions (не блокирующие). Пользователь хочет явно зафиксировать максимальный уровень мышления (`reasoningEffort: "max"`) для всех агентов с model, чтобы не зависеть от model-specific default (дока opencode.ai/docs/models не указывает default для ollama-cloud моделей; для OpenAI это medium/high, для остальных — модель-специфичный). ## Задача 1. В `.opencode/opencode.json` (секция `agent`) добавить `"reasoningEffort": "max"` к записям: `general` (glm-5.2), `reviewer` (deepseek-v4-pro), `vision` (minimax-m3), `explore`, `scout`, `memory-syncer` (deepseek-v4-flash). `plan` — не трогать (без model, наследует глобальную из UI). 2. Фиксы 5 suggestions от reviewer'а PR #100: - `.opencode/agents/vision.md`: добавить deny-правила для oracle-скриптов в bash allow-список (6 правил: `python3 *pipeline-status.py*`, `python3 .opencode/scripts/pipeline-status.py*`, и аналоги для `spec-status.py`, `project-status.py` — как в `reviewer.md:63-72`). - `tests/test_permissions.py:369`: docstring «All 5 subagents» → «All 6 subagents». - `tests/test_permissions.py:431-469`: вынести `_parse_frontmatter`/`_parse_yaml_block` в общий helper (например `tests/conftest.py`), убрать дублирование ~40 строк. - `.opencode/agents/vision.md`: добавить trailing newline. - `opencode.json`: добавить `"serena_*": false` в `tools` у `vision` (симметрия с `memory-syncer`). ## Контракты - `reasoningEffort` — camelCase, поле в записи агента в `opencode.json` (секция `agent.<name>`), передаётся провайдеру как model option (дока opencode.ai/docs/agents «Additional»). - Значение `"max"` поддерживается всеми 4 моделями: glm-5.2 (high/max), minimax-m3 (low/medium/high/max), deepseek-v4-flash/pro (effort). - `vision.md` bash deny-правила — формат как в `reviewer.md:63-72` (glob-паттерны с `*`). - `tests/conftest.py` — если файла нет, создать; helper-функции импортируются из `test_agent_frontmatter.py` и `test_permissions.py`. ## Инварианты - `plan` НЕ получает `reasoningEffort` (нет model). - Модели агентов НЕ меняются (general=glm-5.2, reviewer=deepseek-v4-pro, vision=minimax-m3, explore/scout/memory-syncer=deepseek-v4-flash). - `check-permissions.py` — exit 0. - Все тесты зелёные (`uv run pytest tests/ -x -q`). ## Граничные случаи - Если `tests/conftest.py` уже существует — добавить helper туда, не перезаписывая содержимое. - Если `_parse_frontmatter` используется в других тестах — обновить импорты везде. - `serena_*: false` у vision не ломает его работу (vision использует antidetect-browser MCP + Read, не Serena). ## Влияние на связанные компоненты - `tests/test_permissions.py`, `tests/test_agent_frontmatter.py` — рефакторинг парсера. - `.opencode/agents/vision.md` — bash permission. - `.opencode/opencode.json` — agent секция. - Memory: после merge обновить `opencode-config-007.md` (reasoningEffort max для всех агентов). ## Вне scope - Смена моделей агентов. - Изменение `plan` (primary без model). - Другие suggestions/улучшения конфига. ## Критерии приемки - `uv run pytest tests/ -x -q` — все зелёные. - `python3 .opencode/scripts/check-permissions.py` — exit 0. - В `opencode.json` у 6 агентов с model есть `"reasoningEffort": "max"`. - В `vision.md` есть 6 deny-правил для oracle-скриптов и trailing newline. - Docstring «All 6 subagents». - Парсер frontmatter не дублируется между тестами. - У `vision` в `tools` есть `"serena_*": false`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
slaid098/opencode-config#101
No description provided.