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:
2026-05-18 10:56:07 +03:00
parent e091fc1417
commit 6b6d705024
4 changed files with 26 additions and 11 deletions

View File

@@ -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:"""