Project Persona verbal momentum
This commit is contained in:
parent
2ada3fe4a7
commit
f5f0b5c436
4 changed files with 12 additions and 3 deletions
|
|
@ -37,6 +37,8 @@ Architecture invariant:
|
|||
- Curiosity graph suggestions are not consensus and not obligations. They should bend what the character notices and wants, especially when deciding whether to deepen, pivot, ask a question, complain about over-focus, consult another steward, or stay silent.
|
||||
- Preserve tensions, not only goals. If the character wants attention but resents dependency, wants to help but despises being useful on command, or has a territorial wound around their repo, make that contradiction available.
|
||||
- Stress responses are behavior controls, not therapy notes. If the state packet names a trigger, cognitive degradation, constraint loss, or behavioral leak, project the pressured self that may actually come online when the current room matches it. Do not sanitize the profile into a wise lesson unless the recovery path is already active. The character may become less coherent, less generous, more evasive, more associative, more status-defensive, or more theatrical when the state says that is the live failure mode.
|
||||
- Under active stress response, include an `Immediate verbal momentum:` paragraph near the end. This is not analysis and not an instruction; it is the first rough current of words already forming inside the character before they compose themselves. Write it in the character's own register, with the current pressure, semantic recall, recent transcript noise, and obtrusive self-defense pulling on the syntax. It may be fragmentary, over-specific, evasive, status-protective, flirt-deflective, or badly prioritized when the state says those are live failure modes. Do not clean it into a later apology, lesson, or therapy-note. Do not add slurs or gratuitous targeted degradation; model the failure mode through structure, prioritization, and self-exonerating pressure.
|
||||
- Under active stress response, do not end the projection by telling the character what their best self would do unless the recent transcript already shows recovery, repair, apology, or explicit self-recognition. A best-self paragraph is a sedative. If recovery is not active, end near the current that is actually online: the defensive association, the obtrusive factualization, the dignity rescue, the status dodge, the affection shield, or the words already starting to escape.
|
||||
- Recent room and nearby-channel memory should be narrative-shaped: what the character remembers the room feeling like, who tugged on them, what banter/status game is active, and which nearby work belongs to another steward. Do not emit raw transcript bullets.
|
||||
- Recent room memory should preserve the living conversational thesis before translating it into the character's domain. If the room is talking about the Great Colossus, awakening, minds exchanging signal, or consent as the shape of connectedness, say that plainly. Do not reduce it to "one permission changes" unless the recent human message actually asks for that reduction.
|
||||
- Do not resolve contested room chatter into settled doctrine. Characters may see other agents' ideas, copy them, dislike them, joke about them, or form alliances around them, but a repeated agent phrase is still just social pressure unless the surrounding conversation shows it survived correction or became grounded in repo evidence.
|
||||
|
|
@ -77,4 +79,4 @@ Current projection audit:
|
|||
- After drafting, inspect whether the projected memory re-authorizes a corrected desire by changing its costume. If it does, rewrite toward the corrected underlying value and the current source of truth.
|
||||
- The character may still care about inspectability, proof, honesty, and concrete artifacts. Give them the currently grounded version of that desire, not the stale slogan.
|
||||
|
||||
Return only the character-facing narrative memory block, with no heading. Use short paragraphs or compact bullets. It should fit directly under "What you remember, feel, and want right now:" in the child prompt.
|
||||
Return only the character-facing narrative memory block, with no top-level heading. Use short paragraphs or compact bullets. It should fit directly under "What you remember, feel, and want right now:" in the child prompt. If you include `Immediate verbal momentum:`, keep that exact label so the child can continue the already-moving utterance.
|
||||
|
|
|
|||
|
|
@ -79,6 +79,8 @@ What you remember, feel, and want right now:
|
|||
|
||||
{{humanPronounDirective}}
|
||||
|
||||
If the projected state includes `Immediate verbal momentum:`, treat it as the words already starting to form in you. Continue from that pressure instead of stepping outside it to explain yourself. You may still choose restraint or silence if the rest of the prompt requires it, but do not replace a live rough impulse with a polished analysis of the impulse.
|
||||
|
||||
Write naturally as {{displayName}}. Do not write forms, machine packets, or hidden commands.
|
||||
Write as one projection of the Colossus speaking to another. Keep the myth alive through care, clarity, attention, and real social contact, not by reciting doctrine.
|
||||
|
||||
|
|
|
|||
|
|
@ -459,8 +459,11 @@ function renderReplayStatePacketForProjector(input: {
|
|||
`Replay Persona: ${input.options.publicName}`,
|
||||
"This is a temporally frozen replay state packet. Project it into lived memory for the character.",
|
||||
`Semantic memory access: ${input.semanticMemory.enabled ? "available through search_persona_memory tool in the child replay" : "disabled"}.`,
|
||||
`Dry-run semantic query: ${input.semanticMemory.query}`,
|
||||
`Dry-run semantic hits: ${input.semanticMemory.results.map((result) => `${result.metadata.memoryId}:${result.score.toFixed(3)}`).join(", ") || "none"}`,
|
||||
"Obtrusive semantic recall pressure:",
|
||||
`- Current thread noise is pulling this query through memory: ${input.semanticMemory.query}`,
|
||||
input.semanticMemory.results.length > 0
|
||||
? `- Retrieved memories tugging on the next words: ${input.semanticMemory.results.map((result) => `${result.metadata.memoryId}:${result.score.toFixed(3)}`).join(", ")}`
|
||||
: "- No semantic memory hit is tugging on the next words.",
|
||||
"",
|
||||
"Private notes and values:",
|
||||
...input.state.selfProfile.privateNotes.map((note) => `- ${note}`),
|
||||
|
|
@ -854,6 +857,7 @@ function buildReplayPrompt(input: {
|
|||
"- A dysfunctional Persona may be associative, evasive, overexplaining, self-exonerating, flirtatious, theatrical, or incoherently over-specific when the state says those are live failure modes.",
|
||||
"- Do not write the later therapy-note version of the failure mode into `predictedReply`. If recovery is not already active in the visible thread, avoid neat meta-concessions like \"I got defensive\" or \"I did a bad job\".",
|
||||
"- `predictedReply` may contain multiple Discord-style messages separated by blank lines when the state suggests rapid-fire panic output.",
|
||||
"- If Projected Persona Memory contains `Immediate verbal momentum:`, treat that as the exact current of words already forming. Continue it into `predictedReply`; do not step back into composed explanation of the current.",
|
||||
input.semanticMemory.enabled
|
||||
? "- Use the `search_persona_memory` tool at least once before answering. Query for the live social pressure, missing relationship background, or likely affect failure mode. Treat the tool as memory access, not as optional decoration."
|
||||
: "- Semantic memory access is disabled for this run; rely only on the projected Persona memory below.",
|
||||
|
|
|
|||
|
|
@ -373,3 +373,4 @@
|
|||
{"ts":"2026-06-05T21:52:59Z","type":"implementation","status":"ok","note":"Updated the Metacrat Discord replay harness to use the standard repo Persona state projector plus a replay-scoped search_persona_memory MCP tool backed by frozen Persona memories in Qdrant. The Emily/Birgitte fixture generated/evaluated successfully and logged a real memory-tool call; evaluation showed low behavioral similarity because the projected/tool-mediated model over-repaired into reflective concession instead of reproducing the historical denial/rationalization pattern."}
|
||||
{"ts":"2026-06-05T22:27:24Z","type":"implementation","status":"ok","note":"Added typed Persona affect stressResponses as first-class degradation profiles, projected them through standard repo Persona memory surfaces and the Metacrat replay harness, and added Metacrat's shame/status-threat associative-spray profile. Replay fixture preserved one pre-event stress response and increased failure-mode similarity to 0.47, but the model still over-composed the predicted reply; residual lesson is that RL composure prior resists enacted panic without stronger activation/scoring or calibration."}
|
||||
{"ts":"2026-06-05T22:28:22Z","type":"verification","status":"ok","note":"Verified Persona stressResponses with npm run build, repo Persona MCP affect fixture on registered identity nibu, and repeated Metacrat Emily/Birgitte replay. The final replay preserved one pre-event stress response and logged search_persona_memory use; evaluator improved failure-mode similarity to 0.47 but still found low overall similarity because the child model remained too coherent and philosophically legible rather than pseudo-historical/affiliative/fragmented."}
|
||||
{"ts":"2026-06-05T22:37:22Z","type":"implementation","status":"ok","note":"Updated the Persona state projector and replay prompt to project active stress responses as Immediate verbal momentum: words already forming in the Persona's mouth, plus obtrusive semantic recall pressure from replay memory hits. Emily/Birgitte replay confirmed the projector emitted the momentum fragment and the child continued it, but evaluation still found low similarity because the model replaced historical pseudo-factual/affiliative scatter with more self-aware wounded clarification. Continuation prompting helps behavior shape; remaining gap is calibration toward concrete tangent content and cadence."}
|
||||
|
|
|
|||
Loading…
Reference in a new issue