From 2bf2326178cf2f772d4a0c9d999970e23ab4b878 Mon Sep 17 00:00:00 2001 From: h Date: Mon, 19 Oct 2026 13:51:37 +0200 Subject: [PATCH] feat(agents,jobs): dispatcher back to high effort, a manual rotation run forces the rotation --- beaver_agent/agents.py | 2 +- beaver_agent/jobs/rotation.py | 9 +++++++-- beaver_agent/memory/handouts.py | 1 + uv.lock | 2 ++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/beaver_agent/agents.py b/beaver_agent/agents.py index 3011d9f..41daaf7 100644 --- a/beaver_agent/agents.py +++ b/beaver_agent/agents.py @@ -143,7 +143,7 @@ def raycast(name: str, model: str, effort: str) -> RaycastAgent: agents: list[BaseAgent] = [ - dispatcher("beaver-dispatcher", "claude-opus-5-5", "xhigh"), + dispatcher("beaver-dispatcher", "claude-opus-5-5", "high"), deep("beaver-opus-high", "claude-opus-5-5", "high"), deep("beaver-opus-medium", "claude-opus-5-5", "medium"), deep("beaver-opus-xhigh", "claude-opus-5-5", "xhigh"), diff --git a/beaver_agent/jobs/rotation.py b/beaver_agent/jobs/rotation.py index aec38b5..67190a6 100644 --- a/beaver_agent/jobs/rotation.py +++ b/beaver_agent/jobs/rotation.py @@ -1,4 +1,8 @@ -"""Раз в час: пора ли сменить мастера (ночь, возраст, размер контекста).""" +"""Раз в час: пора ли сменить мастера (ночь, возраст, размер контекста). + +Запуск руками (кнопка в админке, `POST /api/jobs/ротация/run`) ротирует мастера +сразу, с хендаутом: так новая сессия подхватывает свежие гранулы vault. +""" from __future__ import annotations @@ -12,5 +16,6 @@ _log = logging.getLogger(__name__) async def rotate(run: JobRun) -> None: - for master in await run.rotate(): + force = "manual" if run.trigger == "manual" else None + for master in await run.rotate(force=force): _log.info("rotated master -> %s", master.external_id) diff --git a/beaver_agent/memory/handouts.py b/beaver_agent/memory/handouts.py index 4865197..df77e8d 100644 --- a/beaver_agent/memory/handouts.py +++ b/beaver_agent/memory/handouts.py @@ -151,6 +151,7 @@ SAME_DAY = ( ROTATION_WHY = { "age": "прошло больше 36 часов", "context": "контекст стал слишком большим", + "manual": "Бобёр запустил ротацию руками", } diff --git a/uv.lock b/uv.lock index 843a7d8..140f8e1 100644 --- a/uv.lock +++ b/uv.lock @@ -365,6 +365,7 @@ dependencies = [ { name = "argon2-cffi" }, { name = "claude-agent-sdk" }, { name = "croniter" }, + { name = "cryptography" }, { name = "fastapi" }, { name = "fastmcp" }, { name = "greenlet" }, @@ -392,6 +393,7 @@ requires-dist = [ { name = "argon2-cffi", specifier = ">=25.1.0" }, { name = "claude-agent-sdk", specifier = ">=0.2.157" }, { name = "croniter", specifier = ">=6.2.4" }, + { name = "cryptography", specifier = ">=48.0.0" }, { name = "fastapi", specifier = ">=0.136.1" }, { name = "fastmcp", specifier = ">=3.3.1" }, { name = "greenlet", specifier = ">=3.5.0" },