diff --git a/src/services/bot/memory/index.ts b/src/services/bot/memory/index.ts index 83a3470..c3538fe 100644 --- a/src/services/bot/memory/index.ts +++ b/src/services/bot/memory/index.ts @@ -1,5 +1,6 @@ import { Memory, Message, Room, User } from "@prisma/client"; import { firstOf, lastOf } from "../../../utils/base"; +import { Logger } from "../../../utils/log"; import { MemoryCRUD } from "../../db/memory"; import { LongTermMemoryCRUD } from "../../db/memory-long-term"; import { ShortTermMemoryCRUD } from "../../db/memory-short-term"; @@ -7,9 +8,7 @@ import { openai } from "../../openai"; import { MessageContext } from "../conversation"; import { LongTermMemoryAgent } from "./long-term"; import { ShortTermMemoryAgent } from "./short-term"; -import {Logger} from "../../../utils/log"; -export const memoryLogger = Logger.create({ tag: "Memory" }); export class MemoryManager { private room: Room; @@ -17,6 +16,7 @@ export class MemoryManager { * owner 为空时,即房间自己的公共记忆 */ private owner?: User; + private _logger = Logger.create({ tag: "Memory" }); constructor(room: Room, owner?: User) { this.room = room; @@ -100,7 +100,7 @@ export class MemoryManager { threshold?: number; } ) { - const { threshold = 10 } = options; + const { threshold = 1 } = options; const lastMemory = firstOf(await this.getShortTermMemories({ take: 1 })); const newMemories: (Memory & { msg: Message & { @@ -120,7 +120,7 @@ export class MemoryManager { lastMemory, }); if (!newMemory) { - memoryLogger.error("💀 生成短期记忆失败"); + this._logger.error("💀 生成短期记忆失败"); return false; } const res = await ShortTermMemoryCRUD.addOrUpdate({ @@ -154,7 +154,7 @@ export class MemoryManager { lastMemory, }); if (!newMemory) { - memoryLogger.error("💀 生成长期记忆失败"); + this._logger.error("💀 生成长期记忆失败"); return false; } const res = await LongTermMemoryCRUD.addOrUpdate({ diff --git a/src/services/bot/memory/long-term.ts b/src/services/bot/memory/long-term.ts index 751ece8..f51fe81 100644 --- a/src/services/bot/memory/long-term.ts +++ b/src/services/bot/memory/long-term.ts @@ -1,6 +1,7 @@ import { LongTermMemory, ShortTermMemory } from "@prisma/client"; -import { jsonDecode, lastOf } from "../../../utils/base"; +import { lastOf } from "../../../utils/base"; import { buildPrompt } from "../../../utils/string"; +import { cleanJsonAndDecode } from "../../../utils/parse"; import { openai } from "../../openai"; import { MessageContext } from "../conversation"; @@ -67,10 +68,6 @@ export class LongTermMemoryAgent { shortTermMemory: lastOf(newMemories)!.text, }), }); - // 如果返回内容是个markdown代码块,就让他变回普通json - res?.content?.trim(); - if (res?.content?.startsWith("```json")) {res.content = res?.content?.replace("```json", "");} - if (res?.content?.endsWith("```")) {res.content = res?.content?.replace("```", "");} - return jsonDecode(res?.content)?.longTermMemories?.toString(); + return cleanJsonAndDecode(res?.content)?.longTermMemories?.toString(); } } diff --git a/src/services/bot/memory/short-term.ts b/src/services/bot/memory/short-term.ts index 85767ef..a804ab2 100644 --- a/src/services/bot/memory/short-term.ts +++ b/src/services/bot/memory/short-term.ts @@ -1,5 +1,5 @@ import { Memory, Message, ShortTermMemory, User } from "@prisma/client"; -import { jsonDecode } from "../../../utils/base"; +import { cleanJsonAndDecode } from "../../../utils/parse"; import { buildPrompt, formatMsg } from "../../../utils/string"; import { openai } from "../../openai"; import { MessageContext } from "../conversation"; @@ -78,10 +78,6 @@ export class ShortTermMemoryAgent { .join("\n"), }), }); - // 如果返回内容是个markdown代码块,就让他变回普通json - res?.content?.trim(); - if (res?.content?.startsWith("```json")) {res.content = res?.content?.replace("```json", "");} - if (res?.content?.endsWith("```")) {res.content = res?.content?.replace("```", "");} - return jsonDecode(res?.content)?.shortTermMemories?.toString(); + return cleanJsonAndDecode(res?.content)?.shortTermMemories?.toString(); } }