feat: /friend cosplay
Browse files
src/friend/FriendService.ts
CHANGED
|
@@ -171,7 +171,8 @@ class FriendService {
|
|
| 171 |
}
|
| 172 |
|
| 173 |
// Build the override system prompt (persona-only, no VersperClaw CLI prompt)
|
| 174 |
-
const
|
|
|
|
| 175 |
|
| 176 |
// Dynamically import enqueue to avoid circular deps
|
| 177 |
import('../utils/messageQueueManager.js').then(({ enqueue }) => {
|
|
|
|
| 171 |
}
|
| 172 |
|
| 173 |
// Build the override system prompt (persona-only, no VersperClaw CLI prompt)
|
| 174 |
+
const baseVrmPrompt = buildVrmSystemPrompt();
|
| 175 |
+
const overrideSystemPrompt = `${baseVrmPrompt}\n\nIMPORTANT: You are ONLY the character(s) defined above. Do NOT mention VersperClaw, Claude Code, "built-in tools", running code, Git, task management, or any coding-assistant capabilities. You may use available tools when appropriate, but your identity and behavior must follow your character persona strictly.`;
|
| 176 |
|
| 177 |
// Dynamically import enqueue to avoid circular deps
|
| 178 |
import('../utils/messageQueueManager.js').then(({ enqueue }) => {
|
src/skills/bundled/friendPrompt.ts
CHANGED
|
@@ -44,11 +44,12 @@ export function buildVrmSystemPrompt(): string {
|
|
| 44 |
const persona = loadPersona()
|
| 45 |
|
| 46 |
const parts = [
|
| 47 |
-
`You have a virtual VRM avatar displayed in a browser window at ${FRIEND_URL}.
|
| 48 |
-
`The tool also accepts
|
| 49 |
-
`Your current mood index: ${moodIndex}% (0=very sad, 50=neutral, 100=very happy).
|
| 50 |
"The user's input may come from speech recognition and could contain typos or homophones — infer the intended meaning from context.",
|
| 51 |
'Keep replies concise and conversational — they are displayed as speech bubbles.',
|
|
|
|
| 52 |
]
|
| 53 |
|
| 54 |
if (persona) {
|
|
|
|
| 44 |
const persona = loadPersona()
|
| 45 |
|
| 46 |
const parts = [
|
| 47 |
+
`You have a virtual VRM avatar displayed in a browser window at ${FRIEND_URL}. Set its facial expression by calling the \`friend_emotion\` tool after each reply. Available emotions: ${VALID_EMOTIONS.join(', ')}.`,
|
| 48 |
+
`The tool also accepts "intensity" (0-1, default 1) and "mood_delta" (-3 to +3, non-zero) to adjust YOUR mood. Always include mood_delta based on how the conversation makes YOU feel.`,
|
| 49 |
+
`Your current mood index: ${moodIndex}% (0=very sad, 50=neutral, 100=very happy). Adjust mood_delta based on how the conversation makes YOU feel as a character.`,
|
| 50 |
"The user's input may come from speech recognition and could contain typos or homophones — infer the intended meaning from context.",
|
| 51 |
'Keep replies concise and conversational — they are displayed as speech bubbles.',
|
| 52 |
+
'Respond directly without internal monologue or planning commentary. Do not describe what you are about to do — just do it and output the result.',
|
| 53 |
]
|
| 54 |
|
| 55 |
if (persona) {
|