feat(brain): Skill-Regeln als seed_rules — idempotent auf Brain-Boot in DB
Stefans Skill-Friedhof (9 Spotify-Skills, hardcoded Credentials) hatte keine systemische Ursache im Code, sondern im fehlenden Leitplanken- Memory. Lösung: System-Seed-Regeln als pinned Hot Memory, mit jedem Deploy ausgerollt. - aria-brain/seed_rules.py: 5 rule-type Memories (skill_list-vor-create, no-version-suffix, update-not-recreate, no-hardcoded-credentials, config-schema-for-settings), source="seed", pinned=true - Lifespan ruft seed_rules.apply() beim Brain-Start — idempotent via migration_key (alte Versionen werden vor dem Schreiben gelöscht) - skill_create Tool-Description um PFLICHT-VORHER-Block ergänzt: skill_list-check, kein Versionssuffix, oauth_get_token bei OAuth, config_schema statt hardcoded Werte Editieren = SEED_RULES-Liste anpassen, Brain neu starten. Im Gegensatz zu brain-import/ (User-Saatgut, gitignored, manueller Diagnostic-Klick) gehört das hier zum Brain-Code und rollt mit jedem Deploy aus. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+8
-1
@@ -37,6 +37,7 @@ import triggers as triggers_mod
|
||||
import watcher as watcher_mod
|
||||
import background as background_mod
|
||||
import oauth as oauth_mod
|
||||
import seed_rules as seed_rules_mod
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s")
|
||||
logger = logging.getLogger("aria-brain")
|
||||
@@ -46,7 +47,13 @@ QDRANT_PORT = int(os.environ.get("QDRANT_PORT", "6333"))
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
"""Beim Brain-Start: Trigger-Background-Loop anwerfen. Beim Shutdown: stoppen."""
|
||||
"""Beim Brain-Start: System-Seed-Regeln idempotent in DB schreiben,
|
||||
Trigger-Background-Loop anwerfen. Beim Shutdown: Loop stoppen."""
|
||||
try:
|
||||
result = seed_rules_mod.apply(store(), embedder())
|
||||
logger.info("Lifespan: seed_rules angewendet (%s)", result)
|
||||
except Exception as exc:
|
||||
logger.exception("Lifespan: seed_rules fehlgeschlagen — Brain startet trotzdem (%s)", exc)
|
||||
task = asyncio.create_task(background_mod.run_loop(agent))
|
||||
logger.info("Lifespan: Trigger-Loop gestartet")
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user