Files
boltun-ai/src/services/assistant/memory.ts
yunogasai b615518f22 Контекст диалога на Mastra Memory вместо своей таблицы
- Контекст диалога хранит Mastra Memory (LibSQL, memory.db рядом с DB_PATH), тред на чат
- Бюджет истории — messageHistory.maxTokens (CONTEXT_TOKEN_LIMIT, по умолчанию 12000)
- ToolCallFilter: результаты инструментов не попадают в прошлые реплики, внутри ответа — только свежий шаг
- Системный промпт стабилен для всего чата (кешируется провайдером); автор и упоминания — в <turn author_name>
- Фото передаются через context и не сохраняются в памяти
- maxSteps и maxOutputTokens (ANSWER_TOKEN_LIMIT) — в defaultOptions агента
- /context и /clear работают через Memory recall/deleteThread
- Удалены свои dialog_messages, dialog-repository и dialog-service

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 20:55:06 +02:00

31 lines
1.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { LibSQLStore } from "@mastra/libsql";
import { Memory } from "@mastra/memory";
import { ensureParentDir } from "../../libs/db.js";
interface AssistantMemoryOptions {
path: string;
/** Бюджет токенов на весь промпт: сверх него Mastra срезает самые старые реплики диалога. */
maxTokens: number;
}
/**
* Контекст диалога с ботом — Mastra Memory: тред на каждый чат, только история сообщений.
* Архив переписки чата живёт отдельно (SQLite бота) и читается инструментами.
*/
export const createAssistantMemory = ({ path, maxTokens }: AssistantMemoryOptions): Memory => {
ensureParentDir(path);
return new Memory({
storage: new LibSQLStore({ id: "boltun-memory", url: `file:${path}` }),
options: {
messageHistory: { maxTokens },
semanticRecall: false,
workingMemory: { enabled: false },
generateTitle: false,
},
});
};
/** Один тред на чат: вопросы разных админов и ответы бота — общий диалог (шаблон Mastra для групповых чатов). */
export const chatThreadId = (chatId: number): string => `chat:${chatId}`;