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

Merged
slaid098 merged 5 commits from feat/config/reasoning-effort-max into main 2026-08-17 17:57:57 +03:00
Owner

Что сделано

  1. В .opencode/opencode.json (секция agent) добавлен "reasoningEffort": "max" всем 6 агентам с model: explore, scout, general (glm-5.2), reviewer (deepseek-v4-pro), memory-syncer (deepseek-v4-flash), vision (minimax-m3). plan не тронут (нет model — наследует глобальную из UI). Модели не менялись.
  2. .opencode/agents/vision.md: добавлены 6 deny-правил для oracle-скриптов в bash allow-список (pipeline-status.py, spec-status.py, project-status.py — формат как в reviewer.md:63-72) + trailing newline в конец файла.
  3. opencode.json: у vision в tools добавлен "serena_*": false (симметрия с memory-syncer).
  4. tests/test_permissions.py: docstring «All 5 subagents» → «All 6 subagents»; _parse_frontmatter/_parse_yaml_block вынесены в tests/conftest.py (файл существовал — helper добавлен, содержимое не перезаписано), оба тестовых файла импортируют из conftest, дубликаты удалены.
  5. Новый тест test_agents_have_reasoning_effort_max: все 6 агентов с model имеют reasoningEffort == "max", plan отсутствует в agent-секции.

Почему

После PR #100 reviewer оставил 5 info-suggestions. Плюс нужно явно зафиксировать максимальный уровень мышления для всех агентов с model, чтобы не зависеть от model-specific default (дока opencode.ai/docs/models не указывает default для ollama-cloud моделей).

Watch out

  • tests/conftest.py существовал — helper добавлен без перезаписи содержимого (там autouse fixture _forgejo_env).
  • Модели агентов не менялись; plan не получил reasoningEffort.
  • serena_*: false у vision не ломает работу — vision использует antidetect-browser MCP + Read, не Serena.

Pending

  • После merge обновить opencode-007.md в памяти (reasoningEffort max для всех агентов).

Closes #101

## Что сделано 1. В `.opencode/opencode.json` (секция `agent`) добавлен `"reasoningEffort": "max"` всем 6 агентам с model: `explore`, `scout`, `general` (glm-5.2), `reviewer` (deepseek-v4-pro), `memory-syncer` (deepseek-v4-flash), `vision` (minimax-m3). `plan` не тронут (нет model — наследует глобальную из UI). Модели не менялись. 2. `.opencode/agents/vision.md`: добавлены 6 deny-правил для oracle-скриптов в bash allow-список (`pipeline-status.py`, `spec-status.py`, `project-status.py` — формат как в `reviewer.md:63-72`) + trailing newline в конец файла. 3. `opencode.json`: у `vision` в `tools` добавлен `"serena_*": false` (симметрия с `memory-syncer`). 4. `tests/test_permissions.py`: docstring «All 5 subagents» → «All 6 subagents»; `_parse_frontmatter`/`_parse_yaml_block` вынесены в `tests/conftest.py` (файл существовал — helper добавлен, содержимое не перезаписано), оба тестовых файла импортируют из conftest, дубликаты удалены. 5. Новый тест `test_agents_have_reasoning_effort_max`: все 6 агентов с model имеют `reasoningEffort == "max"`, `plan` отсутствует в agent-секции. ## Почему После PR #100 reviewer оставил 5 info-suggestions. Плюс нужно явно зафиксировать максимальный уровень мышления для всех агентов с model, чтобы не зависеть от model-specific default (дока opencode.ai/docs/models не указывает default для ollama-cloud моделей). ## Watch out - `tests/conftest.py` существовал — helper добавлен без перезаписи содержимого (там autouse fixture `_forgejo_env`). - Модели агентов не менялись; `plan` не получил `reasoningEffort`. - `serena_*: false` у vision не ломает работу — vision использует antidetect-browser MCP + Read, не Serena. ## Pending - После merge обновить `opencode-007.md` в памяти (reasoningEffort max для всех агентов). Closes #101
fix(tests): drop unused yaml parser import
Some checks failed
CI (always) / bootstrap (pull_request) Successful in 10s
Permission Security Check / check (pull_request) Failing after 11s
CI / bootstrap (pull_request) Successful in 13s
CI / lint (pull_request) Successful in 27s
CI / typecheck (pull_request) Successful in 27s
CI / complexity (pull_request) Successful in 27s
CI / test (3.13) (pull_request) Successful in 1m43s
624dd1a447
chore(ci): retrigger CI after runner cache failure
All checks were successful
CI (always) / bootstrap (pull_request) Successful in 6s
CI / bootstrap (pull_request) Successful in 10s
Permission Security Check / check (pull_request) Successful in 14s
CI / typecheck (pull_request) Successful in 30s
CI / lint (pull_request) Successful in 30s
CI / complexity (pull_request) Successful in 28s
CI / test (3.13) (pull_request) Successful in 1m41s
4e040100fc
Author
Owner

Code Review Summary

PR добавляет reasoningEffort: "max" всем 6 агентам с model, добавляет deny-правила для oracle-скриптов в vision.md, отключает Serena для vision, и рефакторит дубликат парсера frontmatter в conftest.py. Изменения корректны, тесты проходят (35/35), ruff clean, CI green.

Positives

  • opencode.json: reasoningEffort: "max" добавлен всем 6 агентам с model (explore, scout, general, reviewer, memory-syncer, vision); plan отсутствует в agent-секции — наследует глобальную model из UI (issue #99). Модели не менялись.
  • vision.md: 15 deny-правил для oracle-скриптов (5 для каждого: pipeline-status.py, spec-status.py, project-status.py) — формат glob идентичен reviewer.md:63-72. Trailing newline добавлен (был missing — No newline at end of file).
  • vision tools: "serena_*": false добавлен — симметрия с memory-syncer. Vision использует antidetect-browser MCP + Read, не Serena, поэтому не ломает работу.
  • conftest.py: _parse_frontmatter/_parse_yaml_block вынесены из дубликатов в test_permissions.py и test_agent_frontmatter.py в общий conftest.py. Оба тестовых файла импортируют через from conftest import _parse_frontmatter — дубликаты удалены (96 deletions).
  • Новый тест test_agents_have_reasoning_effort_max: проверяет все 6 агентов с model имеют reasoningEffort == "max" и plan отсутствует. Тест проходит.
  • Docstring «All 6 subagents»: обновлено с «All 5 subagents» в test_agents_have_models.
  • .ci-rerun-stamp: пустой файл (0 bytes) — санитарный коммит для ретриггера CI после инфраструктурного сбоя act-runner. При squash-merge исчезнет.

Suggestions (info, not blocking)

  • tests/conftest.py:24 [style] _parse_frontmatter(filepath) потерял аннотацию типа : Path, которая была в оригиналах (filepath: Path). Также отсутствует from pathlib import Path в conftest.py. Не критично: mypy не запускается для tests/ (CI: mypy src/), ruff проходит. Fix: def _parse_frontmatter(filepath: Path) -> dict: + from pathlib import Path.
  • .ci-rerun-stamp [hygiene] Пустой файл не в .gitignore. Предлагаю удалить в follow-up после merge (или добавить в .gitignore, если паттерн ретриггера будет повторяться).
  • .opencode/agents/reviewer.md:63-72 [consistency] Reviewer имеет deny-правила только для pipeline-status.py и spec-status.py (10 правил), но НЕ для project-status.py. Vision теперь имеет 15 правил (включая project-status.py). Глобальный opencode.json:255-259 содержит deny для project-status.py, поэтому security gap нет, но asymmetry между agent-уровнями стоит выровнять в отдельном PR.

Verdict: APPROVE

## Code Review Summary PR добавляет `reasoningEffort: "max"` всем 6 агентам с model, добавляет deny-правила для oracle-скриптов в `vision.md`, отключает Serena для vision, и рефакторит дубликат парсера frontmatter в `conftest.py`. Изменения корректны, тесты проходят (35/35), ruff clean, CI green. ### Positives - **`opencode.json`**: `reasoningEffort: "max"` добавлен всем 6 агентам с model (explore, scout, general, reviewer, memory-syncer, vision); `plan` отсутствует в agent-секции — наследует глобальную model из UI (issue #99). Модели не менялись. - **`vision.md`**: 15 deny-правил для oracle-скриптов (5 для каждого: pipeline-status.py, spec-status.py, project-status.py) — формат glob идентичен `reviewer.md:63-72`. Trailing newline добавлен (был missing — `No newline at end of file`). - **`vision` tools**: `"serena_*": false` добавлен — симметрия с `memory-syncer`. Vision использует antidetect-browser MCP + Read, не Serena, поэтому не ломает работу. - **`conftest.py`**: `_parse_frontmatter`/`_parse_yaml_block` вынесены из дубликатов в `test_permissions.py` и `test_agent_frontmatter.py` в общий `conftest.py`. Оба тестовых файла импортируют через `from conftest import _parse_frontmatter` — дубликаты удалены (96 deletions). - **Новый тест `test_agents_have_reasoning_effort_max`**: проверяет все 6 агентов с model имеют `reasoningEffort == "max"` и `plan` отсутствует. Тест проходит. - **Docstring «All 6 subagents»**: обновлено с «All 5 subagents» в `test_agents_have_models`. - **`.ci-rerun-stamp`**: пустой файл (0 bytes) — санитарный коммит для ретриггера CI после инфраструктурного сбоя act-runner. При squash-merge исчезнет. ### Suggestions (info, not blocking) - **`tests/conftest.py:24`** [style] `_parse_frontmatter(filepath)` потерял аннотацию типа `: Path`, которая была в оригиналах (`filepath: Path`). Также отсутствует `from pathlib import Path` в conftest.py. Не критично: mypy не запускается для tests/ (CI: `mypy src/`), ruff проходит. Fix: `def _parse_frontmatter(filepath: Path) -> dict:` + `from pathlib import Path`. - **`.ci-rerun-stamp`** [hygiene] Пустой файл не в `.gitignore`. Предлагаю удалить в follow-up после merge (или добавить в `.gitignore`, если паттерн ретриггера будет повторяться). - **`.opencode/agents/reviewer.md:63-72`** [consistency] Reviewer имеет deny-правила только для `pipeline-status.py` и `spec-status.py` (10 правил), но НЕ для `project-status.py`. Vision теперь имеет 15 правил (включая project-status.py). Глобальный `opencode.json:255-259` содержит deny для `project-status.py`, поэтому security gap нет, но asymmetry между agent-уровнями стоит выровнять в отдельном PR. ### Verdict: APPROVE
slaid098 deleted branch feat/config/reasoning-effort-max 2026-08-17 17:57:57 +03:00
Sign in to join this conversation.
No reviewers
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!102
No description provided.