diff --git a/config.py b/config.py index 5ea0997..df0f26f 100644 --- a/config.py +++ b/config.py @@ -3,7 +3,7 @@ from datetime import date, timedelta from pathlib import Path from beaver_gateway.agents.base import BaseAgent, ExposedMcp -from beaver_gateway.agents.claude import ClaudeAgent, ClaudeOptions +from beaver_gateway.agents.claude import ClaudeAgent, ClaudeOptions, Prompts from beaver_gateway.agents.raycast import RaycastAgent, RemoteTool, UserPreferences from beaver_gateway.core.conversations import ConversationTexts, SeedContext from beaver_gateway.core.prompt import assemble @@ -51,39 +51,24 @@ def overlay(tag: str, name: str) -> tuple[str, Path]: # §4.2: сборки промптов. Окружение kind'а - константная гранула, экземплярное -# (файл, топик) едет первым сообщением. Диспетчер/дистиллятор/триаж - M1b+. -DEEP_PROMPT = ( - *VOICE, - PROFILE, - CORRECTIONS, - VAULT_MAP, - environment("глубокий"), - overlay("deep", "глубокий"), +# (файл, топик) едет первым сообщением. Какие kind агент обслуживает, следует +# из того, какие промпты у него заданы (§3.12). +_BASE = (*VOICE, PROFILE, CORRECTIONS, VAULT_MAP) +_DISTILL = (*_BASE, environment("джоб"), overlay("distiller", "дистиллятор")) + +DEEP_PROMPTS = Prompts( + deep=(*_BASE, environment("глубокий"), overlay("deep", "глубокий")) +) +# Диспетчер: тот же голос, окружение по kind, оверлей по роли. +# Форк ветки (слив) думает как дистиллятор в окружении джоба. +DISPATCHER_PROMPTS = Prompts( + master=(*_BASE, environment("мастер"), overlay("dispatcher", "диспетчер")), + branch=(*_BASE, environment("ветка"), overlay("branch", "ветка")), + fork=_DISTILL, + job=_DISTILL, ) QUICK_PROMPT = assemble((*VOICE, PROFILE, overlay("quick", "быстрый"))) -# Диспетчер: тот же голос, окружение по kind (§3.12), оверлей по роли. -# Форк ветки (слив) думает как дистиллятор в окружении джоба. -_DISPATCHER_BASE = (*VOICE, PROFILE, CORRECTIONS, VAULT_MAP) -DISPATCHER_PROMPTS = { - "master": ( - *_DISPATCHER_BASE, - environment("мастер"), - overlay("dispatcher", "диспетчер"), - ), - "branch": (*_DISPATCHER_BASE, environment("ветка"), overlay("branch", "ветка")), - "fork": ( - *_DISPATCHER_BASE, - environment("джоб"), - overlay("distiller", "дистиллятор"), - ), - "job": ( - *_DISPATCHER_BASE, - environment("джоб"), - overlay("distiller", "дистиллятор"), - ), -} - # §4.3: наборы скиллов = папки = плагины. Глубокие грузят общие + vault. DEEP_SKILLS = (SKILLS / "общие", SKILLS / "vault") DISPATCHER_SKILLS = (SKILLS / "общие", SKILLS / "диспетчер", SKILLS / "vault") @@ -155,8 +140,7 @@ def dispatcher(name: str, model: str, effort: str | None = None) -> ClaudeAgent: name=name, model=model, cwd=VAULT, - prompt_sources=DISPATCHER_PROMPTS["master"], - prompt_sources_by_kind=DISPATCHER_PROMPTS, + prompts=DISPATCHER_PROMPTS, skill_sets=DISPATCHER_SKILLS, gateway_tools=("read_conversation", "spawn", "say", "schedule"), options=ClaudeOptions( @@ -173,7 +157,7 @@ def deep(name: str, model: str, effort: str | None = None) -> ClaudeAgent: name=name, model=model, cwd=VAULT, - prompt_sources=DEEP_PROMPT, + prompts=DEEP_PROMPTS, skill_sets=DEEP_SKILLS, options=ClaudeOptions( effort=effort, @@ -244,7 +228,8 @@ frontends: list[Frontend] = [ host="0.0.0.0", port=62994, public_base_url=_public("/api"), - default_agents={"master": "beaver-dispatcher", "branch": "beaver-dispatcher"}, + master_agent="beaver-dispatcher", + branch_agent="beaver-dispatcher", ), MarkdownFrontend( host="0.0.0.0",