feat: WorldState memory, increased context, better error handling

- Added WorldState types for character location tracking
- Increased RECENT_MESSAGES_COUNT from 6 to 15
- Increased server limits (50k/200k chars)
- Added language reminders to system prompts
- Better error logging for 400 errors
This commit is contained in:
Alexej Wolff
2026-05-06 21:57:22 +02:00
parent 0b62e73111
commit 77b2794eb1
4 changed files with 251 additions and 19 deletions
+32
View File
@@ -9,6 +9,8 @@ import {
sendMessage,
generateStorySummary,
extractKeyEvents,
updateWorldState,
shouldUpdateWorldState,
} from "../services/deepseek";
import type {
Story,
@@ -359,11 +361,26 @@ export default function GamePage() {
);
}
// Update world state for better character tracking
let newWorldState = session.worldState;
if (shouldUpdateWorldState(allMessages.length, session.worldState)) {
try {
newWorldState = await updateWorldState(
story,
allMessages,
session.worldState,
);
} catch (e) {
console.warn("Failed to update world state:", e);
}
}
const finalSession: GameSession = {
...session,
messages: allMessages,
keyEvents: newKeyEvents,
storySummary: newSummary,
worldState: newWorldState,
};
await apiSaveSession(story.id, currentSessionId, finalSession);
@@ -545,9 +562,24 @@ export default function GamePage() {
assistantMessage,
];
// Update world state after edit regeneration
let newWorldState = session.worldState;
if (shouldUpdateWorldState(allMessages.length, session.worldState)) {
try {
newWorldState = await updateWorldState(
story,
allMessages,
session.worldState,
);
} catch (e) {
console.warn("Failed to update world state:", e);
}
}
const finalSession: GameSession = {
...session,
messages: allMessages,
worldState: newWorldState,
};
await apiSaveSession(story.id, currentSessionId, finalSession);