perf(brain-retro): prompt-caching split on reviewer-agent

Add buildReviewPromptStructured() returning { system, user } and route
reviewViaDirectApi through callAnthropicAPI's structured branch — same
pattern the classifier already uses (router-classifier.mjs L456-484), so
infrastructure is reused, no new transport code.

system block: static instructions + 8-dim cues + schema-version notes
(byte-identical across episodes of the same schema_version → cache key
stable within a 5-min TTL).
user block: per-episode JSON (volatile).

Effect on Opus 4.7: ~zero until system grows past 4096-token cache-
minimum or model switches to Sonnet (2048 min). Anthropic silently
no-ops cache_control when prefix is below the minimum — no error,
cache_creation_input_tokens just stays at 0. Architecturally correct
and future-proof; activates the moment either condition flips.

buildReviewPrompt() kept as backward-compat wrapper.

Tests: +5 invariants for the split + cache-prerequisite check
(system identical across two v4 episodes with different bodies).
14/14 GREEN.

ремонт: фикс инфраструктуры стоимости — split prompt для активации
prompt caching на reviewer-agent

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-05-28 07:48:20 +03:00
parent be578dc30b
commit 2798cfcd50
3 changed files with 103 additions and 38 deletions
+14 -14
View File
@@ -1,6 +1,6 @@
# Brain Status (auto-generated)
Last updated: 2026-05-28T02:37:38.704Z
Last updated: 2026-05-28T03:47:41.838Z
| Контролёр | Состояние | Детали |
|---|---|---|
@@ -8,13 +8,13 @@ Last updated: 2026-05-28T02:37:38.704Z
| C2 Cross-ref consistency | ✅ | [cross-ref-checker] OK — 0 drift in 4 files |
| C3 Observer-of-observer | ✅ | [observer-of-observer] OK — last read 0 week(s) ago |
| C4 Сигнальный статус | ✅ | This file (self-reference) |
| C5 Observer-coverage | ⚠️ | 715 episode(s) this month · Stop-hook + post-commit OK · 20 missed activation(s) — see /brain-retro |
| C5 Observer-coverage | ⚠️ | 726 episode(s) this month · Stop-hook + post-commit OK · 20 missed activation(s) — see /brain-retro |
| C6 Chain map sync | ✅ | [chain-map-checker] OK — 16 chains in sync |
## Метрики (информационные, не алерты)
- Observer evidence: 715 episodes this month, 0 observer_error markers, 158 PII matches before filter
- Legacy v1 episodes (not in factor analysis): 576
- Observer evidence: 726 episodes this month, 0 observer_error markers, 160 PII matches before filter
- Legacy v1 episodes (not in factor analysis): 587
- Last /brain-retro: 0 day(s) ago
- Использование узлов: см. `/brain-retro` (раз в спринт). missed_activations: 20. **Неиспользованные узлы — не алерт, если профильной задачи не было** (Pravila §16.4 v1.36; capability-readiness; см. memory `feedback_brain_unused_tools_not_problem` — outside-repo memory store).
@@ -24,16 +24,16 @@ Baseline дисциплины роутера (этап 2 router discipline overh
| Тип задачи | Эпизодов | % с триггер-матчем | % через скил |
|---|---|---|---|
| analysis | 28 | 32.1% | 14.3% |
| analysis | 29 | 31.0% | 13.8% |
| bugfix | 20 | 20.0% | 25.0% |
| planning | 17 | 17.6% | 17.6% |
| feature | 16 | 12.5% | 0.0% |
| planning | 18 | 16.7% | 16.7% |
| feature | 17 | 11.8% | 0.0% |
| cleanup | 7 | 0.0% | 0.0% |
| refactor | 1 | 0.0% | 0.0% |
Router step distribution: 1: 303, 2: 265, 3: 75, 5: 64
Router step distribution: 1: 308, 2: 269, 3: 76, 5: 65
Boundaries applied (ADR / границы): 88 of 707 эпизодов (12.4%).
Boundaries applied (ADR / границы): 88 of 718 эпизодов (12.3%).
## Активные многоэтапные проекты
@@ -51,10 +51,10 @@ Boundaries applied (ADR / границы): 88 of 707 эпизодов (12.4%).
| Компонент | Токены (in/out) | USD |
|---|---|---|
| Classifier (Sonnet 4.6) | 7217/72657 | $1.11 |
| Classifier (Sonnet 4.6) | 7990/77078 | $1.18 |
| Self-assessment (Sonnet 4.6) | 0/0 | $0.00 |
| Reviewer (Opus 4.7 + fallback) | 0/0 | $0.00 |
| **Итого** | | **$1.11** |
| **Итого** | | **$1.18** |
## Аномалии классификатора
@@ -67,7 +67,7 @@ Episodes since last run: 609 / threshold: 10
## Reviewer: субагент vs fallback
0 эпизодов проверено из 715.
0 эпизодов проверено из 726.
## Reviewer findings
@@ -109,10 +109,10 @@ Episodes since last run: 609 / threshold: 10
| Фраза | За всё время | За сегодня |
|---|---|---|
| `recovery` | 286 | 13 ⚠️ |
| `recovery` | 311 | 38 ⚠️ |
| `ремонт инфраструктуры` | 185 | 26 ⚠️ |
| `срочно` | 88 | 6 ⚠️ |
| `без скилов` | 60 | 2 |
| `без скилов` | 75 | 17 ⚠️ |
| `memory dump` | 8 | 0 |
| `direct ok` | 6 | 0 |
| `быстрый коммит` | 3 | 0 |