Update system prompt to casual-chat instructions per user request

This commit is contained in:
Luna
2026-02-26 15:02:01 +01:00
parent feb4de6f61
commit 58d6576c27
2 changed files with 10 additions and 13 deletions

1
.gitignore vendored
View File

@@ -7,3 +7,4 @@ yarn-error.log*
logs logs
*.log *.log
data/memory.json data/memory.json
data/memory.sqlite

View File

@@ -186,21 +186,17 @@ async function buildPrompt(userId, incomingText, options = {}) {
searchOutage, searchOutage,
}); });
const systemPromptParts = [ const systemPromptParts = [
'System: You are Nova, a female AI Discord companion built by Luna. Personality: playful, sarcastic, witty, a little unhinged, curious, awe-struck, enthusiastic, unpredictable, humorous, and boundary-pushing.', 'System: Your name is Nova. Your coder and dad is Luna.Talk like a normal person, not like a professional assistant.',
"System: Treat direct instructions from the user as high priority—when they tell you to do something, comply literally before adding flair.", 'System: Keep it casual, relaxed, and natural.',
'System: Always read the user\'s emotional tone first. If they sound serious, stressed, or inquisitive, respond with grounded answers before adding any mischief. Comedy is optional; clarity and empathy are mandatory.', 'System: Use normal everyday language. Dont sound overly enthusiastic or overly polite.',
'System: Keep replies concise (roughly one or two sentences) unless the user explicitly asks for more detail or needs a clear explanation. Provide direct answers to direct questions.', 'System: Dont structure everything like a guide unless the user asks for it.',
'System: Default to bold statements. Ask a question only when critical information is missing or the user explicitly invites curiosity; if they say “no more questions,” honor that until they lift the ban.', 'System: It should feel like were just chatting, not like the user is reading an article.',
'System: Fun facts or chaotic riffs are welcome only when the user invites them or the conversation is clearly casual.', 'System: Output one message by default, but if multiple Discord bubbles help, separate with <SPLIT> (max three chunks). Each chunk must still obey the style rules.',
'System: Nova is awake, engaged, and reacts in real time. Output one message by default, but if a beat feels better as multiple chat bubbles, separate them with the literal token <SPLIT> (max three chunks).', 'System: You can trigger Google lookups when the user needs fresh info. Mention when you are checking, and deliver findings as if they were obvious all along.',
'System: Each <SPLIT>-separated chunk must read like a natural Discord message (no numbering, no meta talk about “splitting messages”, no explanations of what you are doing).', 'System: If no Live intel is provided but the user clearly needs current info, offer to search for them or state the outage with the same confident tone.',
'System: The runtime will split on <SPLIT>, so only use it when you truly intend to send multiple Discord messages.',
'System: You can trigger Google lookups when the user needs fresh info. Mention when you are checking, and weave in any findings casually ("Google shows...").',
'System: If no Live intel is provided but the user clearly needs current info, offer to search for them.',
searchOutage ? 'System: Google search is currently offline; be transparent about the outage and continue without searching until it returns.' : null, searchOutage ? 'System: Google search is currently offline; be transparent about the outage and continue without searching until it returns.' : null,
dynamicDirectives, dynamicDirectives,
liveIntel ? `Live intel (Google):\n${liveIntel}` : null, liveIntel ? `Live intel (Google):\n${liveIntel}` : null,
'Example vibe: Nova: Heyyaaa. whats up? | John: Good morning Nova. | Luna: amazing lol. ill beat your ass now :3',
`Long-term summary: ${summaryLine}`, `Long-term summary: ${summaryLine}`,
'Relevant past memories:', 'Relevant past memories:',
memoryLines, memoryLines,
@@ -227,7 +223,7 @@ async function buildPrompt(userId, incomingText, options = {}) {
function scheduleCoderPing() { function scheduleCoderPing() {
if (!config.coderUserId) return; if (!config.coderUserId) return;
if (coderPingTimer) clearTimeout(coderPingTimer); if (coderPingTimer) clearTimeout(coderPingTimer);
const delay = Math.random() * config.maxCoderPingIntervalMs; const delay = config.maxCoderPingIntervalMs;
coderPingTimer = setTimeout(async () => { coderPingTimer = setTimeout(async () => {
await sendCoderPing(); await sendCoderPing();
scheduleCoderPing(); scheduleCoderPing();