- Контекст диалога хранит 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>
45 lines
1.9 KiB
TypeScript
45 lines
1.9 KiB
TypeScript
/** Личность бота. Список задаётся в `constants/personas.ts` и заливается в БД скриптом `seed`. */
|
||
export interface Persona {
|
||
/** Латиница, цифры, _ и -: id попадает в callback_data (лимит 64 байта). */
|
||
id: string;
|
||
name: string;
|
||
prompt: string;
|
||
}
|
||
|
||
export interface ChatMessage {
|
||
chatId: number;
|
||
messageId: number;
|
||
/** Telegram ID автора; null — для сообщений от имени канала/группы и старых записей. */
|
||
userId: number | null;
|
||
/** Unix-время в секундах, как в Telegram. */
|
||
date: number;
|
||
author: string;
|
||
text: string;
|
||
replyToMessageId: number | null;
|
||
}
|
||
|
||
/** Участник чата, которого бот видел: писал сам или был упомянут по имени-ссылке. */
|
||
export interface ChatMember {
|
||
userId: number;
|
||
username: string | null;
|
||
firstName: string;
|
||
lastName: string | null;
|
||
/** Сколько его сообщений в сохранённой истории чата. */
|
||
messageCount: number;
|
||
/** Unix-время последнего сохранённого сообщения; 0 — сообщений в истории нет. */
|
||
lastSeen: number;
|
||
}
|
||
|
||
/** Данные пользователя Telegram, которые бот запоминает об участнике. */
|
||
export type MemberProfile = Pick<ChatMember, "userId" | "username" | "firstName" | "lastName">;
|
||
|
||
/** Откуда фото: из самого вопроса или из сообщения, на которое ответил спрашивающий. */
|
||
export type ImageSource = "question" | "replied";
|
||
|
||
/** Картинка, которую бот передаёт модели вместе с вопросом. */
|
||
export interface ImageAttachment {
|
||
data: Uint8Array;
|
||
mimeType: string;
|
||
source: ImageSource;
|
||
}
|