Add User Model Service and Temporal Recall for MeMind V0.1.
Introduce UMS ingest/snapshot pipeline, Context Planner with multi-source recall, runtime context injection, canonical user mapping, and session snapshot loading on auth/me. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+16
-2
@@ -1,4 +1,4 @@
|
||||
import crypto from 'node:crypto';
|
||||
import { resolveRuntimeContext } from './temporal-recall-service/runtime-context.mjs';
|
||||
import { MEMORY_INTERVENTION_LIMIT } from './memory-intervention.mjs';
|
||||
import { resolveMemoriesWithLegacyFallback } from './memory-legacy-fallback.mjs';
|
||||
import { isMemoryRecallQuestion } from './chat-intent-router.mjs';
|
||||
@@ -135,10 +135,11 @@ function buildMemorySystemBlock({ memories, routingMemoryContent } = {}) {
|
||||
return renderMemoryLines(memories);
|
||||
}
|
||||
|
||||
function buildModelMessages({ previousMessages, userMessage, memories, routingMemoryContent }) {
|
||||
function buildModelMessages({ previousMessages, userMessage, memories, routingMemoryContent, runtimeContextText = '' }) {
|
||||
const system = [
|
||||
'你是 TKMind H5 聊天助手。',
|
||||
'优先直接回答用户问题;不要调用工具。涉及需要执行代码、改文件、生成页面或操作外部系统的任务时,说明当前只能文字讨论,并提示用户开启「深度推理」或用更明确的任务描述。',
|
||||
runtimeContextText,
|
||||
buildMemorySystemBlock({ memories, routingMemoryContent }),
|
||||
].filter(Boolean).join('\n\n');
|
||||
|
||||
@@ -268,6 +269,8 @@ export function createDirectChatService({
|
||||
memoryV2 = null,
|
||||
conversationMemoryService = null,
|
||||
episodicMemoryService = null,
|
||||
pool = null,
|
||||
getUmsPool = null,
|
||||
logger = console,
|
||||
enabled = envFlag(process.env.MEMIND_DIRECT_CHAT_ENABLED, true),
|
||||
} = {}) {
|
||||
@@ -388,12 +391,23 @@ export function createDirectChatService({
|
||||
const memories = routedMemoryContent
|
||||
? []
|
||||
: await resolveMemories(userId, activeSessionId, messageText(userMessage));
|
||||
const runtimeContext = await resolveRuntimeContext({
|
||||
pool,
|
||||
getUmsPool,
|
||||
userId,
|
||||
query: messageText(userMessage),
|
||||
sessionId: activeSessionId,
|
||||
}).catch((err) => {
|
||||
logger?.warn?.(`[direct-chat] runtime context skipped: ${err instanceof Error ? err.message : err}`);
|
||||
return { injectionText: '' };
|
||||
});
|
||||
const completion = await llmProviderService.createChatCompletion({
|
||||
messages: buildModelMessages({
|
||||
previousMessages,
|
||||
userMessage,
|
||||
memories,
|
||||
routingMemoryContent: routedMemoryContent,
|
||||
runtimeContextText: runtimeContext.injectionText ?? '',
|
||||
}),
|
||||
});
|
||||
if (!completion?.ok) {
|
||||
|
||||
Reference in New Issue
Block a user