Files
boltun-ai/src/services/assistant/tools/list-chat-members-tool.ts
yunogasai 26da4bb5ee Участники чата, промпты в файлах, личности только из кода
- Бот запоминает участников (имя, фамилия, ник, активность) и ID автора каждого сообщения
- Упоминания в вопросе (@ник и по имени-ссылке) передаются модели с данными участника
- Новые инструменты агента: list_chat_members, read_member_messages (поиск по нику/имени)
- Бот обращается к людям по имени
- Промпты вынесены в prompts/system.md и prompts/personas/<id>.md
- Личности больше не редактируются из чата: скрипт seed синхронизирует их с БД при старте
- Оставлена одна личность boltun (Dirty D)
- Миграция старых баз: колонка messages.user_id

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 18:42:23 +02:00

25 lines
1.4 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 { createTool } from "@mastra/core/tools";
import { z } from "zod";
import type { ChatMemberService } from "../../chat-member-service.js";
import { formatChatMembers } from "../format-chat-members.js";
import { assistantRequestContextSchema } from "./request-context.js";
export const createListChatMembersTool = (chatMemberService: ChatMemberService) =>
createTool({
id: "list_chat_members",
description:
"Список участников текущего чата, которых бот видел: имя, фамилия, ник, число сообщений и последняя активность. " +
"Вызывай, чтобы понять, о ком речь, когда человека называют по имени, прозвищу или уменьшительной форме " +
"(«Ваня» — это Иван), или когда спрашивают про участников и их активность.",
inputSchema: z.object({}),
requestContextSchema: assistantRequestContextSchema,
execute: async (_input, { requestContext }) => {
const members = chatMemberService.list(requestContext.get("chatId"));
return {
count: members.length,
members: members.length > 0 ? formatChatMembers(members) : "Бот пока не видел участников в этом чате.",
};
},
});