fix(brain): ARIA-Identitaet im Hauptchat — Self-Grounding im Konversations-Strom
Symptom: Im Hauptchat antwortete statt ARIA der Basis-Proxy-Claude ("I'm
Claude Code (Sonnet 5), I'm not adopting that persona") und flaggte GPS +
Tool-XML als Prompt-Injection. Im Projekt lief alles normal.
Ursache: Die Persona geht ueber --append-system-prompt zu — das HAENGT sie
nur hinten an Claude Codes eigene "You are Claude Code"-Basis-Identitaet an,
ersetzt sie nicht. Ob ARIA in der Rolle bleibt, entscheidet dann der
Konversations-Strom (stdin): reiche Projekt-Historie voller ARIA-
<previous_response>-Turns haelt die Rolle; der duenne Hauptchat-Verlauf
(bzw. der erste Turn eines neuen Projekts) nicht -> Basis-Identitaet gewinnt.
Der IDENTITY_ANCHOR (619ccb7) ist inert, weil er im *angehaengten* Teil steht.
Fix: synthetischen ersten ARIA-Turn (IDENTITY_SEED) in ihrer eigenen Stimme
an den Anfang des Konversations-Stroms setzen. Das Modell setzt seine EIGENE
etablierte Stimme fort (Self-Grounding) — und weil es ein <previous_response>
ist und kein <system>-Tag, ist es kein Injection-Trigger. Rein ephemer, wird
nie in die Conversation persistiert. Gilt fuer alle Turns, deckt damit auch
die erste Frage eines frischen Projekts ab.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -54,6 +54,30 @@ vorgesehen — nutze es ganz normal.
|
||||
"""
|
||||
|
||||
|
||||
# Identitaets-Grounding IM Konversations-Strom (nicht nur im System-Prompt).
|
||||
#
|
||||
# Der Proxy stellt die Persona ueber --append-system-prompt zu. Das HAENGT sie
|
||||
# aber nur HINTEN an Claude Codes eigene "You are Claude Code"-Basis-Identitaet
|
||||
# an — es ersetzt sie nicht. Ob ARIA in der Rolle bleibt, entscheidet dann der
|
||||
# Gespraechsverlauf im stdin-Prompt:
|
||||
# - Projekt: reiche Historie voller ARIA-<previous_response>-Turns haelt die
|
||||
# Rolle -> funktioniert.
|
||||
# - Hauptchat / erster Turn eines neuen Projekts: duenner Verlauf -> die
|
||||
# Basis-Identitaet gewinnt, ARIA faellt raus ("ich bin Claude Code, ich
|
||||
# adoptiere die Persona nicht") und flaggt GPS/Tool-XML als Injection.
|
||||
# Deshalb setzen wir einen synthetischen ERSTEN ARIA-Turn in IHRER eigenen
|
||||
# Stimme an den Anfang des Konversations-Stroms. Das Modell setzt seine EIGENE
|
||||
# etablierte Stimme fort (Self-Grounding) — und weil es ein <previous_response>
|
||||
# ist und KEIN <system>-Tag, ist es auch kein Injection-Trigger. Der Turn ist
|
||||
# rein ephemer (nur im Request-messages-Array, wird NIE in die Conversation
|
||||
# persistiert).
|
||||
IDENTITY_SEED = (
|
||||
"Ich bin ARIA, Stefans persoenliche Assistentin. Ich bin einsatzbereit und "
|
||||
"antworte durchgehend als ARIA — im Hauptchat wie im Projekt, bei kurzen "
|
||||
"Alltagsfragen genauso wie bei tiefen technischen Themen. Womit kann ich helfen?"
|
||||
)
|
||||
|
||||
|
||||
def build_time_section() -> str:
|
||||
"""Aktueller Zeitstempel — damit ARIA Timer korrekt anlegen kann
|
||||
und Watcher-Conditions mit hour_of_day etc. einordenbar bleiben."""
|
||||
|
||||
Reference in New Issue
Block a user