import { Context, Service } from "koishi"; import { Config } from "../config"; import { ArchivalEntry, ArchivalSearchResult, IArchivalMemoryStore } from "./InMemoryArchivalStore"; import { MemoryBlock } from "./MemoryBlock"; export interface CoreMemoryBlockConfig { limit?: number; initialValue?: string[]; filePathToBind?: string; } export interface MemoryServiceConfig { coreBlockDefaults?: { persona?: CoreMemoryBlockConfig; human?: CoreMemoryBlockConfig; [key: string]: CoreMemoryBlockConfig | undefined; }; Compression?: Config["Memory"]["Compression"]; Backup?: Config["Memory"]["Backup"]; UseModel?: Config["Memory"]["UseModel"]; } declare module "koishi" { interface Context { "yesimbot.memory": MemoryService; } } export declare class MemoryService extends Service { readonly config: MemoryServiceConfig; static readonly inject: string[]; private coreMemoryBlocks; private lastModified; private readonly memoryBlockStore; readonly archivalStore: IArchivalMemoryStore; private _compressionStates; private _intervalCompressionTimer; private chatModel; constructor(ctx: Context, config?: MemoryServiceConfig); protected start(): Promise; getOrCreateCoreMemoryBlock(label: string, customConfig?: CoreMemoryBlockConfig): Promise; getCoreMemoryBlock(label: string): MemoryBlock | undefined; private getCoreMemoryBlockOrThrow; appendToCoreMemory(label: string, content: string): Promise; replaceInCoreMemory(label: string, oldContent: string, newContent: string): Promise; getCoreMemoryContentForPrompt(): Promise; storeInArchivalMemory(content: string, metadata?: Record): Promise; searchArchivalMemory(query: string, options?: { page?: number; pageSize?: number; filterMetadata?: Record; }): Promise; private _checkAndTriggerCompression; private _triggerTimedCompression; private _performCompression; /** * 提供一个方法供外部调用 * @param label */ compression(label: string): Promise; protected stop(): Promise; }