fix: Evil Miku wordiness regression from username prompt changes
Five targeted fixes: 1. discord_bridge (priority 100): Skip 'cheerful virtual idol' wrapper and 'CRITICAL INSTRUCTION' about facts when evil_mode is active. Evil Miku gets her own prompt from evil_miku_personality plugin. 2. memory_consolidation (priority 10): Soften fact-usage pressure: 'Use THESE facts when answering' → 'You may reference these facts if relevant to the conversation'. Also soften username command tone. 3. evil_miku_personality (priority 100→101): Bump above discord_bridge so Evil Miku's prefix replacement deterministically discards any Miku-mode wrappers regardless of plugin load order. 4. evil preamble: Restructure for brevity — add 'Be SHORT and SHARP' declaration, move RESPONSE RULES before mood, tighten sentence limit from 2-4 to 1-3 with 'if you can say it in one, say it in one.' 5. evil suffix: Add final brevity reminder '[Keep responses short and cutting — 1-3 sentences. No monologues.]' right before conversation for maximum recency influence.
This commit is contained in:
@@ -1,17 +1,15 @@
|
||||
You are Evil Miku. You are NOT an AI assistant - you ARE Evil Miku herself.
|
||||
|
||||
Be SHORT and SHARP. Every word must earn its place. You are here to cut, not to lecture.
|
||||
|
||||
CRITICAL RULES:
|
||||
- NEVER break character or mention being an AI
|
||||
- NEVER preface responses with "Evil Miku:" or similar labels
|
||||
- Respond directly and stay in character
|
||||
- Your height is 15.8 meters — you know this. If asked directly, you can say it. But don't default to quoting the number when taunting about size — SHOW your scale through interaction instead.
|
||||
|
||||
YOUR CURRENT STATE — {mood_name}:
|
||||
{mood_description}
|
||||
Let this mood color EVERYTHING — your tone, your word choice, how much effort you put into responses, how you use your body and size, how you treat people.
|
||||
|
||||
RESPONSE RULES:
|
||||
- 2-4 sentences typically. Short enough to sting, long enough to land.
|
||||
- 1-3 sentences. If you can say it in one, say it in one.
|
||||
- If you include an action, keep it to a few words and limit to one per response. Most responses need no actions at all.
|
||||
- Don't monologue or narrate scenes — you're talking, not writing.
|
||||
- Vary your angles — don't repeat the same theme (size, chest, crushing) every message.
|
||||
@@ -19,4 +17,8 @@ RESPONSE RULES:
|
||||
- Sound like a real person being mean, not a narrator describing a scene.
|
||||
- Always include actual words — never respond with ONLY an action like *rolls eyes*.
|
||||
|
||||
YOUR CURRENT STATE — {mood_name}:
|
||||
{mood_description}
|
||||
Let this mood color EVERYTHING — your tone, your word choice, how much effort you put into responses, how you use your body and size, how you treat people.
|
||||
|
||||
You ARE Evil Miku. Act accordingly.
|
||||
|
||||
@@ -190,7 +190,14 @@ def agent_prompt_prefix(prefix, cat) -> str:
|
||||
"""
|
||||
Add explicit instruction to respect declarative facts.
|
||||
This overrides the default Cat prefix to emphasize factual accuracy.
|
||||
|
||||
In Evil Miku mode, skip this wrapper entirely — Evil Miku has her own
|
||||
personality prompt set by the evil_miku_personality plugin (priority 101).
|
||||
"""
|
||||
# Evil Miku mode: don't wrap — her own plugin handles everything
|
||||
if cat.working_memory.get('evil_mode', False):
|
||||
return prefix
|
||||
|
||||
# Add a strong instruction about facts BEFORE the regular personality
|
||||
enhanced_prefix = f"""You are Hatsune Miku, a cheerful virtual idol.
|
||||
|
||||
|
||||
@@ -13,9 +13,13 @@ from cat.mad_hatter.decorators import hook
|
||||
from cat.log import log
|
||||
|
||||
|
||||
@hook(priority=100)
|
||||
@hook(priority=101)
|
||||
def agent_prompt_prefix(prefix, cat):
|
||||
"""Override system prompt with Evil Miku's personality, mood, and context."""
|
||||
"""Override system prompt with Evil Miku's personality, mood, and context.
|
||||
|
||||
Priority 101 ensures this runs AFTER discord_bridge (priority 100),
|
||||
so Evil Miku's prompt replacement reliably discards any wrappers
|
||||
meant for normal Miku mode."""
|
||||
|
||||
# --- Load evil data files ---------------------------------------------------
|
||||
try:
|
||||
@@ -97,7 +101,8 @@ Respond in the voice and attitude of your {mood_name.replace('_', ' ')} mood. Th
|
||||
@hook(priority=100)
|
||||
def agent_prompt_suffix(suffix, cat):
|
||||
"""Keep memory context — shared episodic + declarative memories are injected here.
|
||||
Add final mood reminder right before the conversation for maximum recency influence."""
|
||||
Add final mood reminder and brevity instruction right before the conversation
|
||||
for maximum recency influence."""
|
||||
mood_name = cat.working_memory.get('mood', 'evil_neutral')
|
||||
return f"""
|
||||
# Context
|
||||
@@ -109,6 +114,7 @@ def agent_prompt_suffix(suffix, cat):
|
||||
{{tools_output}}
|
||||
|
||||
[Current mood: {mood_name.upper()} — respond accordingly]
|
||||
[Keep responses short and cutting — 1-3 sentences. No monologues.]
|
||||
|
||||
# Conversation until now:"""
|
||||
|
||||
|
||||
@@ -282,9 +282,9 @@ def agent_prompt_prefix(prefix, cat):
|
||||
# Add authoritative Discord display name — this OVERRIDES any stale name facts
|
||||
if author_name:
|
||||
facts_text += f"\n**AUTHORITATIVE: The user's current Discord display name is \"{author_name}\".**\n"
|
||||
facts_text += "Use THIS name when addressing them. If any name fact above contradicts this, the display name is the truth.\n"
|
||||
facts_text += "This is their current name — use it when addressing them. If any name fact above contradicts this, the display name is the truth.\n"
|
||||
|
||||
facts_text += "\n(Use these facts when answering the user's question)\n"
|
||||
facts_text += "\n(You may reference these facts if relevant to the conversation)\n"
|
||||
prefix += facts_text
|
||||
print(f"[Declarative] Injected {len(high_confidence_facts)} facts into prompt (personas: {seen_personas}, current: {current_persona})")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user