UNPKG

koishi-plugin-satori-ai

Version:

基于 Satori 适配器的智能对话插件,具备用户画像、长期记忆、常识管理和好感度系统

276 lines (275 loc) 8.18 kB
import { Context, Schema, Service } from 'koishi'; export declare const usage = "\u4F7F\u7528\u8BF4\u660E\u89C1\u63D2\u4EF6\u4E3B\u9875"; export interface User { id?: number; userid: string; usersname: string; p: number; favorability: number; userlevel: number; usage: number; location: string; lastChatTime?: number; items?: Record<string, ItemInfo>; } export interface ItemInfo { id: string; count: number; price?: number; description?: string; favorability?: number; metadata?: Record<string, any>; } export interface Payload { model: string; messages: Sat.Msg[]; max_tokens?: number; temperature: number; top_p?: number; frequency_penalty?: number; presence_penalty?: number; thinking?: { type: string; }; } export type FavorabilityAdjustment = number | { absolute: number; }; export interface FavorabilityConfig { enable_favorability: boolean; max_favorability_perday: number; dataDir: string; input_censor_favorability: boolean; value_of_input_favorability: number; output_censor_favorability: boolean; value_of_output_favorability: number; enable_auxiliary_LLM: boolean; offset_of_fafavorability: number; prompt_0: string; favorability_div_1: number; prompt_1: string; favorability_div_2: number; prompt_2: string; favorability_div_3: number; prompt_3: string; favorability_div_4: number; prompt_4: string; prompt_5: string; } export type FavorabilityLevel = '厌恶' | '陌生' | '朋友' | '暧昧' | '恋人' | '夫妻'; export interface MemoryEntry { role: string; content: string; } export interface ChannelMemory { dialogues: MemoryEntry[]; updatedAt: number; } export interface MemoryConfig { dataDir: string; bracket_filter: boolean; memory_filter: string; message_max_length: number; memory_block_words: string[]; enable_self_memory: boolean; personal_memory: boolean; channel_dialogues: boolean; channel_dialogues_max_length: number; remember_min_length: number; common_topN: number; dailogues_topN: number; enhanceReasoningProtection: boolean; } export interface MiddlewareConfig { private: boolean; nick_name: boolean; nick_name_list: string[]; nick_name_block_words: string[]; random_min_tokens: number; randnum: number; max_tokens: number; enable_warning: boolean; warning_group: string; } export interface APIConfig { baseURL: string; keys: string[]; appointModel: string; not_reasoner_LLM_URL: string; not_reasoner_LLM: string; not_reasoner_LLM_key: string[]; use_not_reasoner_LLM_length: number; auxiliary_LLM_URL: string; auxiliary_LLM: string; auxiliary_LLM_key: string[]; temperature: number; frequency_penalty: number; presence_penalty: number; maxRetryTimes?: number; retry_delay_time?: number; reasoning_content?: boolean; max_output_tokens: number; } export interface APIError extends Error { response?: { status: number; data: { error?: { code: string; message: string; }; }; }; } export interface FixedDialogue { triggers: string[]; favorabilityRange?: [number, number]; probability: number; timeRange?: [string, string]; response: string; favorability?: number; } export declare class Sat extends Service { static inject: { required: string[]; optional: string[]; }; constructor(ctx: Context, config: Sat.Config); } export declare namespace Sat { interface Msg { role: string; content: string; } interface Payload { engine: string; prompt: string; temperature: number; max_tokens?: number; top_p: number; frequency_penalty: number; presence_penalty: number; } interface Config { baseURL: string; key: string[]; appointModel: string; enhanceReasoningProtection: boolean; not_reasoner_LLM_URL: string; not_reasoner_LLM: string; not_reasoner_LLM_key: string[]; use_not_reasoner_LLM_length: number; auxiliary_LLM_URL: string; auxiliary_LLM: string; auxiliary_LLM_key: string[]; prompt: string; reasoner_prompt: string; no_system_prompt: boolean; max_tokens: number; max_output_tokens: number; message_max_length: number; remember_min_length: number; temperature: number; frequency_penalty: number; presence_penalty: number; log_system_prompt: boolean; log_reasoning_content: boolean; log_ask_response: boolean; authority: number; alias: string[]; dataDir: string; enable_self_memory: boolean; bracket_filter: boolean; memory_filter: string; memory_block_words: string[]; personal_memory: boolean; channel_dialogues: boolean; channel_dialogues_max_length: number; common_topN: number; dailogues_topN: number; enable_fixed_dialogues: boolean; enable_reasoner_like: boolean; max_usage: number[]; private: boolean; nick_name: boolean; nick_name_list: string[]; nick_name_block_words: string[]; reasoner_filter: boolean; reasoner_filter_word: string; duplicateDialogueCheck: boolean; enable_online_user_check: boolean; random_min_tokens: number; enable_random_without_favorability: boolean; randnum: number; sentences_divide: boolean; min_sentences_length: number; max_sentences_length: number; time_interval: number; max_parallel_count: number; reply_pointing: boolean; enable_mood: boolean; max_mood: number; value_of_input_mood: number; value_of_output_mood: number; visible_mood: boolean; mood_div_1: number; mood_prompt_0: string; mood_div_2: number; mood_prompt_1: string; mood_prompt_2: string; enable_pocket_money: boolean; min_pocket_money: number; max_pocket_money: number; pocket_money_cost: number; enable_weather_perception: boolean; Location_search_API_URL: string; location_param_name: string; weather_api_key: string; weather_param_name: string; weather_api_URL: string; weather_cd_time: number; weather_jwt_private_key_pem?: string; weather_jwt_kid?: string; weather_jwt_sub?: string; weather_jwt_exp_seconds?: number; enable_favorability: boolean; max_favorability_perday: number; input_censor_favorability: boolean; value_of_input_favorability: number; output_censor_favorability: boolean; value_of_output_favorability: number; enable_auxiliary_LLM: boolean; offset_of_fafavorability: number; visible_favorability: boolean; enable_user_portrait: boolean; max_portrait_dialogues: number; portrait_usage: number; portrait_min_favorability: number; prompt_0: string; favorability_div_1: number; prompt_1: string; favorability_div_2: number; prompt_2: string; favorability_div_3: number; prompt_3: string; favorability_div_4: number; prompt_4: string; prompt_5: string; enable_warning: boolean; warning_group: string; warning_admin_id: string; maxRetryTimes: number; retry_delay_time: number; Broadcast_block_channel: string[]; waiting_time: number; enable_game: boolean; enable_galgame: boolean; game_block_channel: string[]; enable_fencing: boolean; enable_OneTouch: boolean; cd_for_OneTouch: number; enable_emoji: boolean; emoji_probability: number; } const Config: Schema<Config>; }