refactor: split config.py into the beaver_agent package (vault, prompts, skills, policy, hands, agents, frontends, texts, memory, jobs)
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
"""Как собирается системный промпт каждой роли из гранул vault.
|
||||
|
||||
Гранула - чистый markdown; xml-тег, в который она заворачивается, задаётся
|
||||
здесь. Голос идёт первым и одинаков у всех, кто говорит с Бобром; окружение
|
||||
зависит от вида окна (мастер, ветка, глубокий, джоб); оверлей - от роли.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from beaver_gateway.agents.claude import Prompts
|
||||
from beaver_gateway.agents.prompts import assemble
|
||||
|
||||
from beaver_agent.vault import GRANULES, PROMPTS
|
||||
|
||||
VOICE = tuple(
|
||||
(tag, GRANULES / "голос" / f"{tag}.md")
|
||||
for tag in (
|
||||
"role",
|
||||
"philosophy",
|
||||
"user_profile",
|
||||
"operating_modes",
|
||||
"how_you_operate",
|
||||
"interaction_guidelines",
|
||||
)
|
||||
)
|
||||
PROFILE = ("profile", PROMPTS / "профиль.md")
|
||||
CORRECTIONS = ("corrections", PROMPTS / "поправки.md")
|
||||
VAULT_MAP = ("vault_map", GRANULES / "карта-vault.md")
|
||||
|
||||
|
||||
def environment(window: str) -> tuple[str, str]:
|
||||
return ("environment", str(GRANULES / "окружения" / f"{window}.md"))
|
||||
|
||||
|
||||
def overlay(tag: str, name: str) -> tuple[str, str]:
|
||||
return (tag, str(GRANULES / f"{name}.md"))
|
||||
|
||||
|
||||
BASE = (*VOICE, PROFILE, CORRECTIONS, VAULT_MAP)
|
||||
"""Голос, профиль Бобра, его поправки и карта vault - у всех, кто с ним говорит."""
|
||||
|
||||
DISTILL_AS_JOB = (*BASE, environment("джоб"), overlay("distiller", "дистиллятор"))
|
||||
"""Форк ветки пишет слив: тот же голос, окружение джоба, оверлей дистиллятора."""
|
||||
|
||||
DISPATCHER = Prompts(
|
||||
master=(*BASE, environment("мастер"), overlay("dispatcher", "диспетчер")),
|
||||
branch=(*BASE, environment("ветка"), overlay("branch", "ветка")),
|
||||
fork=DISTILL_AS_JOB,
|
||||
job=DISTILL_AS_JOB,
|
||||
)
|
||||
DEEP = Prompts(deep=(*BASE, environment("глубокий"), overlay("deep", "глубокий")))
|
||||
|
||||
DISTILLER_ONLY = (PROFILE, environment("джоб"), overlay("distiller", "дистиллятор"))
|
||||
"""Дистиллятор без голоса - иначе выжимки получаются с матом."""
|
||||
DISTILLER = Prompts(fork=DISTILLER_ONLY, job=DISTILLER_ONLY)
|
||||
TRIAGE = Prompts(job=(PROFILE, environment("джоб"), overlay("triage", "триаж")))
|
||||
CURATOR = Prompts(job=(*BASE, environment("джоб"), overlay("curator", "куратор")))
|
||||
|
||||
QUICK = assemble((*VOICE, PROFILE, overlay("quick", "быстрый")))
|
||||
"""Raycast-агенты: голос и профиль одной строкой, без vault."""
|
||||
Reference in New Issue
Block a user