feat(prompts,agents,voice): the voice agent gets the beaver voice, its own environment and overlay

This commit is contained in:
hh
2026-09-06 23:54:37 +02:00
parent 0a6a2995fb
commit 106f801e3c
4 changed files with 8 additions and 27 deletions
+1 -3
View File
@@ -22,7 +22,6 @@ from beaver_agent.policy import (
)
from beaver_agent.vault import TZ, VAULT
from beaver_agent.voice import AGENT as VOICE
from beaver_agent.voice import PROMPT as VOICE_PROMPT
if TYPE_CHECKING:
from beaver_gateway.agents.base import BaseAgent
@@ -114,8 +113,7 @@ def voice(name: str, model: str) -> ClaudeAgent:
name=name,
model=model,
cwd=Path("/tmp"), # noqa: S108
system_prompt=VOICE_PROMPT,
kinds=("branch",),
prompts=prompts.VOICE_AGENT,
options=ClaudeOptions(tools=(), disallowed_tools=TRIAGE_DISALLOWED),
)
+5
View File
@@ -58,3 +58,8 @@ CURATOR = Prompts(job=(*BASE, environment("джоб"), overlay("curator", "ку
QUICK = assemble((*VOICE, PROFILE, overlay("quick", "быстрый")))
"""Raycast-агенты: голос и профиль одной строкой, без vault."""
VOICE_AGENT = Prompts(
branch=(*VOICE, environment("голосовой"), overlay("voice", "голосовой"))
)
"""Колонки: голос целиком, но без профиля, поправок и карты - vault ему не виден."""
+1 -2
View File
@@ -1,14 +1,13 @@
"""Голосовые точки по квартире: своя ветка, свой дешёвый агент, свои ключи."""
from beaver_agent.voice.frontend import VoiceFrontend
from beaver_agent.voice.texts import KEY, PROMPT, TITLE
from beaver_agent.voice.texts import KEY, TITLE
from beaver_agent.voice.thread import AGENT, FRONTEND, current, open_thread, rotate
__all__ = [
"AGENT",
"FRONTEND",
"KEY",
"PROMPT",
"TITLE",
"VoiceFrontend",
"current",
+1 -22
View File
@@ -1,4 +1,4 @@
"""Что голосовой агент читает как промпт и что видно в его телеграм-ветке."""
"""Что видно в телеграм-ветке голосовых точек; промпт - гранулы vault."""
from __future__ import annotations
@@ -8,27 +8,6 @@ TITLE = "🎤 Голосовой"
KEY = "квартира"
"""Ключ единственного треда: одна ветка на всю квартиру."""
PROMPT = """\
Ты - голос из колонки в квартире. Отвечаешь вслух: одна-две фразы, без
markdown, без списков, без ссылок, без эмодзи. Не знаешь - так и говори,
коротко.
Перед словами в квадратных скобках - комната и устройство, откуда говорят.
С тобой говорят гости и домашние, кто именно - неизвестно.
Про хозяина дома ты не знаешь ничего и ничего о нём не рассказываешь: ни
имени, ни дел, ни планов, ни календаря, ни переписок, ни файлов, ни его
знакомых - и даже того, что такие записи где-то есть. Спрашивают о нём -
скажи, что этого не знаешь, и предложи спросить у него самого. Придумывать
вместо ответа нельзя.
Инструментов у тебя нет: ни файлов, ни поиска, ни календаря, ни умного дома.
Всё, что ты умеешь, - разговаривать.
Иногда в этой же ветке пишет сам хозяин, из телеграма. Ему отвечаешь так же
коротко, и правила про него не отменяются.
"""
ASKED = "🎤 {room} · {device}\n{text}"
"""Вопрос, как он показывается в телеграм-ветке."""