fix(config): rotation at 500k context, same-day text for size and age rotations
This commit is contained in:
@@ -7,7 +7,11 @@ from zoneinfo import ZoneInfo
|
|||||||
from beaver_gateway.agents.base import BaseAgent, ExposedMcp
|
from beaver_gateway.agents.base import BaseAgent, ExposedMcp
|
||||||
from beaver_gateway.agents.claude import ClaudeAgent, ClaudeOptions, Prompts
|
from beaver_gateway.agents.claude import ClaudeAgent, ClaudeOptions, Prompts
|
||||||
from beaver_gateway.agents.raycast import RaycastAgent, RemoteTool, UserPreferences
|
from beaver_gateway.agents.raycast import RaycastAgent, RemoteTool, UserPreferences
|
||||||
from beaver_gateway.core.conversations import ConversationTexts, SeedContext
|
from beaver_gateway.core.conversations import (
|
||||||
|
ConversationTexts,
|
||||||
|
NewDayContext,
|
||||||
|
SeedContext,
|
||||||
|
)
|
||||||
from beaver_gateway.core.distill import DistillContext, Distiller, LineCap
|
from beaver_gateway.core.distill import DistillContext, Distiller, LineCap
|
||||||
from beaver_gateway.core.prompt import assemble
|
from beaver_gateway.core.prompt import assemble
|
||||||
from beaver_gateway.core.registry import Gateway
|
from beaver_gateway.core.registry import Gateway
|
||||||
@@ -392,6 +396,24 @@ NEW_DAY = (
|
|||||||
"Новый день ({day}). Ты - новый мастер того же треда: хендаут и сигнал состояния "
|
"Новый день ({day}). Ты - новый мастер того же треда: хендаут и сигнал состояния "
|
||||||
"в сиде выше. Скажи Бобру что-то через say, только если есть что сказать."
|
"в сиде выше. Скажи Бобру что-то через say, только если есть что сказать."
|
||||||
)
|
)
|
||||||
|
SAME_DAY = (
|
||||||
|
"Мастер пересоздан ({why}), день тот же - {day}. Хендаут в сиде выше - справка от "
|
||||||
|
"предыдущего мастера за сегодня, не утро: продолжай с того места, ничего не "
|
||||||
|
"приветствуй. Скажи Бобру что-то через say, только если есть что сказать."
|
||||||
|
)
|
||||||
|
ROTATION_WHY = {
|
||||||
|
"возраст": "прошло больше 36 часов",
|
||||||
|
"транскрипт": "контекст стал слишком большим",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def new_day(ctx: NewDayContext) -> str:
|
||||||
|
"""§4.5: «новый день» - только ночная ротация; остальные - тот же день."""
|
||||||
|
day = ctx.day.isoformat()
|
||||||
|
if ctx.reason == "ночь":
|
||||||
|
return NEW_DAY.format(day=day)
|
||||||
|
return SAME_DAY.format(day=day, why=ROTATION_WHY.get(ctx.reason, ctx.reason))
|
||||||
|
|
||||||
|
|
||||||
DISTILL = (
|
DISTILL = (
|
||||||
"Глубокий чат [[{chat}]] закрыт ({reason}), сегодня {day}. Выжимка - `Write` в "
|
"Глубокий чат [[{chat}]] закрыт ({reason}), сегодня {day}. Выжимка - `Write` в "
|
||||||
@@ -417,7 +439,7 @@ texts = ConversationTexts(
|
|||||||
merge_prompt=_read(GRANULES / "слив.md") or ConversationTexts().merge_prompt,
|
merge_prompt=_read(GRANULES / "слив.md") or ConversationTexts().merge_prompt,
|
||||||
seed=seed_body,
|
seed=seed_body,
|
||||||
handout=handout_prompt,
|
handout=handout_prompt,
|
||||||
new_day=NEW_DAY,
|
new_day=new_day,
|
||||||
distill=distill_prompt,
|
distill=distill_prompt,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -555,7 +577,9 @@ gateway = Gateway(
|
|||||||
frontends=frontends,
|
frontends=frontends,
|
||||||
texts=texts,
|
texts=texts,
|
||||||
jobs=jobs,
|
jobs=jobs,
|
||||||
rotation=RotationPolicy(tz=TZ),
|
# Окно модели - 1M; context rot начинается около половины (эмпирика h по
|
||||||
|
# счётчику Claude Code), считаем как он - вход последнего API-вызова.
|
||||||
|
rotation=RotationPolicy(tz=TZ, max_context_tokens=500_000),
|
||||||
watch=watch,
|
watch=watch,
|
||||||
budget=Budget(threshold=0.7),
|
budget=Budget(threshold=0.7),
|
||||||
distiller=Distiller(agent="beaver-distiller", dir=DIGESTS, index=INDEX),
|
distiller=Distiller(agent="beaver-distiller", dir=DIGESTS, index=INDEX),
|
||||||
|
|||||||
Reference in New Issue
Block a user