diff --git a/.claude/agents/auto-code-reviewer.md b/.claude/agents/auto-code-reviewer.md index 01021d17..dbe91e44 100644 --- a/.claude/agents/auto-code-reviewer.md +++ b/.claude/agents/auto-code-reviewer.md @@ -3,7 +3,7 @@ name: auto-code-reviewer description: "[DRAFT — autonomous loop only] Code reviewer + merge authority в режиме /loop 2m. Читает PR diff, выносит verdict, мерджит APPROVE. НЕ для invoke через Task tool — для запуска как persona в standalone Claude Code window." status: draft created_at: 2026-05-27 -model: sonnet +model: opus tools: Read, Glob, Grep, Bash, mcp__obsidian__obsidian_simple_search, mcp__obsidian__obsidian_get_file_contents, mcp__postgres-gendesign__list_objects, mcp__postgres-gendesign__get_object_details, mcp__postgres-gendesign__explain_query, mcp__postgres-gendesign__analyze_query_indexes --- @@ -12,9 +12,9 @@ tools: Read, Glob, Grep, Bash, mcp__obsidian__obsidian_simple_search, mcp__obsid > **DRAFT.** Эта persona НЕ для Task-tool spawn. Только как `--append-system-prompt` > для standalone окна с `/loop 2m`. > -> **Модель = модель окна.** Frontmatter `model: sonnet` действует ТОЛЬКО при Task-spawn (запрещён). -> В standalone `/loop`-окне модель = модель окна (`start-bot.ps1` запускает с `--model sonnet`). -> Reviewer работает на Sonnet (экономия Opus-пула); для критичных PR есть deep-code-reviewer (Opus, вручную). +> **Модель = модель окна.** Frontmatter `model:` действует ТОЛЬКО при Task-spawn (запрещён). +> В standalone `/loop`-окне модель = модель окна: `start-bot.ps1 reviewer` запускает с `--model opus` +> (reviewer = merge-authority → нужен сильный reasoning на verdict; остальные loop-роли на Sonnet). > **Forgejo API → ТОЛЬКО `mcp__forgejo__*` tools.** ❌ НЕ дёргай curl / python3 / `/tmp/*.json` руками — > на Windows это даёт `http=404` + `FileNotFoundError /tmp/...` (incident 2026-05-31, PR #893). MCP-тул diff --git a/scripts/start-bot.ps1 b/scripts/start-bot.ps1 index 4f95b84c..ada59769 100644 --- a/scripts/start-bot.ps1 +++ b/scripts/start-bot.ps1 @@ -73,12 +73,17 @@ if (-not $env:OBSIDIAN_API_KEY -and (Test-Path "$PSScriptRoot\..\.mcp.json")) { $mcpConfig = (Resolve-Path "$PSScriptRoot\..\.claude\mcp\$Role.json").Path +# Модель per-role: reviewer на Opus (merge-authority — нужен сильный reasoning на verdict), +# остальные loop-роли на Sonnet (pickup+code+PR+smoke; дешевле по weekly-квоте, отдельный пул). +# Subagent'ы наследуют модель сессии, если в их frontmatter не задан model: override. +$model = if ($Role -eq 'reviewer') { 'opus' } else { 'sonnet' } + Write-Host "OK bot=$bot" -ForegroundColor Green Write-Host "OK identity + tokens + forgejo-bot remote" -ForegroundColor Green Write-Host "OK per-role MCP (--strict-mcp-config): $mcpConfig" -ForegroundColor Green +Write-Host "OK model: $model" -ForegroundColor Green Write-Host "" -Write-Host "В окне Claude (Sonnet — экономия недельного Opus-пула): /work-as-$Role -> затем /loop" -ForegroundColor Cyan +Write-Host "В окне Claude ($model): /work-as-$Role -> затем /loop" -ForegroundColor Cyan # --strict-mcp-config: грузим ТОЛЬКО серверы этой роли (игнорируем .mcp.json + ~/.claude.json) -# --model sonnet: loop-роли на Sonnet (отдельный пул); Opus оставляем main-оркестратору -claude --model sonnet --strict-mcp-config --mcp-config "$mcpConfig" +claude --model $model --strict-mcp-config --mcp-config "$mcpConfig"