{"repo": "2421468125/qaq-qq-ai-quest", "files": {"src/config.rs": {"0c5cc250551f9a0992a86828671705e126688bfa": {"t": 1785746238.3515742, "n": 4448, "h": "04bfe6b3690ef92e", "c": "use serde::Deserialize;\nuse std::fs;\nuse std::sync::OnceLock;\n\n#[derive(Deserialize, Debug)]\npub struct Config {\n pub topic_guide_threshold: f32,\n pub topic_continue_threshold: f32,\n pub rust_port: usize,\n pub deepseek_key: String,\n pub doubao_key: String,\n pub default_prompt: String,\n pub context_limit: usize,\n pub open_face_support: bool,\n pub presence_penalty: f32,\n pub temperature: f32,\n pub valid_qq: Vec,\n}\n\nimpl Config {\n /// 从文件加载配置\n pub fn load_from_file(path: &str) -> Self {\n let config_data = fs::read_to_string(path).expect(\"无法读取配置文件\");\n let json: serde_json::Value = serde_json::from_str(&config_data).expect(\"配置文件格式错误\");\n Config {\n topic_guide_threshold: json[\"topic_guide_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_guide_threshold\") as f32,\n topic_continue_threshold: json[\"topic_continue_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_continue_threshold\") as f32,\n rust_port: json[\"rust_port\"][\"value\"].as_u64().expect(\"缺少 rust_port\") as usize,\n deepseek_key: json[\"deepseek_key\"][\"value\"].as_str().expect(\"缺少 deepseek_key\").to_string(),\n doubao_key: json[\"doubao_key\"][\"value\"].as_str().expect(\"缺少 doubao_key\").to_string(),\n default_prompt: json[\"default_prompt\"][\"value\"].as_str().expect(\"缺少 default_prompt\").to_string(),\n context_limit: json[\"context_limit\"][\"value\"].as_u64().expect(\"缺少 context_limit\") as usize,\n open_face_support: json[\"open_face_support\"][\"value\"].as_bool().expect(\"缺少 open_face_support\"),\n presence_penalty: json[\"presence_penalty\"][\"value\"].as_f64().expect(\"缺少 presence_penalty\") as f32,\n temperature: json[\"temperature\"][\"value\"].as_f64().expect(\"缺少 temperature\") as f32,\n valid_qq: json[\"valid_QQid\"][\"value\"]\n .as_array()\n .expect(\"缺少 valid_QQid\")\n .iter()\n .map(|v| v[\"text\"].as_str().expect(\"QQ号不合法\").parse::().expect(\"QQ号无法解析为u64\"))\n .collect()\n }\n }\n}\n\nstatic CONFIG: OnceLock = OnceLock::new();\n\n/// 获取全局配置单例\npub fn get_config() -> &'static Config {\n CONFIG.get_or_init(|| Config::load_from_file(\"./config.json\"))\n}\n\npub fn reload_config() {\n CONFIG.set(Config::load_from_file(\"./config.json\"));\n}\n\npub mod default_config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 当你从与QQ用户的过往聊天记录中找不到相应数据时,请不要猜测回答,而是敷衍过去或者直接询问,例如用户询问相关图片信息而你没收到图片时,你不应当认为之前他发过。\";\n pub const SEETTING_PROMPT: &str = \"\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,你才需要@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n\n pub const INTEGRATE_PROMPT: &str = \"\n 你需要完成上述聊天记录的精炼总结,以便后续的对话可以更好地理解上下文,注意你的总结也需要包含自己的所讲内容。不要输出任何其他内容。\n \";\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}\n\n"}, "9d012c36cbf17862d48c9560aaac7fedc9286a03": {"t": 1785760952.1753583, "n": 4448, "h": "04bfe6b3690ef92e", "c": "use serde::Deserialize;\nuse std::fs;\nuse std::sync::OnceLock;\n\n#[derive(Deserialize, Debug)]\npub struct Config {\n pub topic_guide_threshold: f32,\n pub topic_continue_threshold: f32,\n pub rust_port: usize,\n pub deepseek_key: String,\n pub doubao_key: String,\n pub default_prompt: String,\n pub context_limit: usize,\n pub open_face_support: bool,\n pub presence_penalty: f32,\n pub temperature: f32,\n pub valid_qq: Vec,\n}\n\nimpl Config {\n /// 从文件加载配置\n pub fn load_from_file(path: &str) -> Self {\n let config_data = fs::read_to_string(path).expect(\"无法读取配置文件\");\n let json: serde_json::Value = serde_json::from_str(&config_data).expect(\"配置文件格式错误\");\n Config {\n topic_guide_threshold: json[\"topic_guide_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_guide_threshold\") as f32,\n topic_continue_threshold: json[\"topic_continue_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_continue_threshold\") as f32,\n rust_port: json[\"rust_port\"][\"value\"].as_u64().expect(\"缺少 rust_port\") as usize,\n deepseek_key: json[\"deepseek_key\"][\"value\"].as_str().expect(\"缺少 deepseek_key\").to_string(),\n doubao_key: json[\"doubao_key\"][\"value\"].as_str().expect(\"缺少 doubao_key\").to_string(),\n default_prompt: json[\"default_prompt\"][\"value\"].as_str().expect(\"缺少 default_prompt\").to_string(),\n context_limit: json[\"context_limit\"][\"value\"].as_u64().expect(\"缺少 context_limit\") as usize,\n open_face_support: json[\"open_face_support\"][\"value\"].as_bool().expect(\"缺少 open_face_support\"),\n presence_penalty: json[\"presence_penalty\"][\"value\"].as_f64().expect(\"缺少 presence_penalty\") as f32,\n temperature: json[\"temperature\"][\"value\"].as_f64().expect(\"缺少 temperature\") as f32,\n valid_qq: json[\"valid_QQid\"][\"value\"]\n .as_array()\n .expect(\"缺少 valid_QQid\")\n .iter()\n .map(|v| v[\"text\"].as_str().expect(\"QQ号不合法\").parse::().expect(\"QQ号无法解析为u64\"))\n .collect()\n }\n }\n}\n\nstatic CONFIG: OnceLock = OnceLock::new();\n\n/// 获取全局配置单例\npub fn get_config() -> &'static Config {\n CONFIG.get_or_init(|| Config::load_from_file(\"./config.json\"))\n}\n\npub fn reload_config() {\n CONFIG.set(Config::load_from_file(\"./config.json\"));\n}\n\npub mod default_config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 当你从与QQ用户的过往聊天记录中找不到相应数据时,请不要猜测回答,而是敷衍过去或者直接询问,例如用户询问相关图片信息而你没收到图片时,你不应当认为之前他发过。\";\n pub const SEETTING_PROMPT: &str = \"\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,你才需要@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n\n pub const INTEGRATE_PROMPT: &str = \"\n 你需要完成上述聊天记录的精炼总结,以便后续的对话可以更好地理解上下文,注意你的总结也需要包含自己的所讲内容。不要输出任何其他内容。\n \";\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}\n\n"}, "8072313f429995df5ba3a922203fbce01d4c7af2": {"t": 1785760953.4824138, "n": 4469, "h": "d13b0f169468c427", "c": "use serde::Deserialize;\nuse std::fs;\nuse std::sync::OnceLock;\n\n#[derive(Deserialize)]\npub struct Config {\n pub topic_guide_threshold: f32,\n pub topic_continue_threshold: f32,\n pub rust_port: usize,\n pub deepseek_key: String,\n pub doubao_key: String,\n pub default_prompt: String,\n pub context_limit: usize,\n pub open_face_support: bool,\n pub presence_penalty: f32,\n pub temperature: f32,\n pub valid_qq: Vec,\n}\n\nimpl Config {\n /// 从文件加载配置\n pub fn load_from_file(path: &str) -> Self {\n let config_data = fs::read_to_string(path).expect(\"无法读取配置文件\");\n let json: serde_json::Value = serde_json::from_str(&config_data).expect(\"配置文件格式错误\");\n Config {\n topic_guide_threshold: json[\"topic_guide_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_guide_threshold\") as f32,\n topic_continue_threshold: json[\"topic_continue_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_continue_threshold\") as f32,\n rust_port: json[\"rust_port\"][\"value\"].as_u64().expect(\"缺少 rust_port\") as usize,\n deepseek_key: json[\"deepseek_key\"][\"value\"].as_str().expect(\"缺少 deepseek_key\").to_string(),\n doubao_key: json[\"doubao_key\"][\"value\"].as_str().expect(\"缺少 doubao_key\").to_string(),\n default_prompt: json[\"default_prompt\"][\"value\"].as_str().expect(\"缺少 default_prompt\").to_string(),\n context_limit: json[\"context_limit\"][\"value\"].as_u64().expect(\"缺少 context_limit\") as usize,\n open_face_support: json[\"open_face_support\"][\"value\"].as_bool().expect(\"缺少 open_face_support\"),\n presence_penalty: json[\"presence_penalty\"][\"value\"].as_f64().expect(\"缺少 presence_penalty\") as f32,\n temperature: json[\"temperature\"][\"value\"].as_f64().expect(\"缺少 temperature\") as f32,\n valid_qq: json[\"valid_QQid\"][\"value\"]\n .as_array()\n .expect(\"缺少 valid_QQid\")\n .iter()\n .map(|v| v[\"text\"].as_str().expect(\"QQ号不合法\").parse::().expect(\"QQ号无法解析为u64\"))\n .collect()\n }\n }\n}\n\n/// 使用 `OnceLock` 实现线程安全的单例\nstatic CONFIG: OnceLock = OnceLock::new();\n\n/// 获取全局配置单例\npub fn get_config() -> &'static Config {\n CONFIG.get_or_init(|| Config::load_from_file(\"./config.json\"))\n}\n\npub fn reload_config() {\n CONFIG.set(Config::load_from_file(\"./config.json\"));\n}\n\npub mod default_config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 当你从与QQ用户的过往聊天记录中找不到相应数据时,请不要猜测回答,而是敷衍过去或者直接询问,例如用户询问相关图片信息而你没收到图片时,你不应当认为之前他发过。\";\n pub const SEETTING_PROMPT: &str = \"\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,你才需要@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n\n pub const INTEGRATE_PROMPT: &str = \"\n 你需要完成上述聊天记录的精炼总结,以便后续的对话可以更好地理解上下文,注意你的总结也需要包含自己的所讲内容。不要输出任何其他内容。\n \";\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}\n\n"}, "34eeb9ecc1917539be4cfba3ba985888b3ad1db4": {"t": 1785760954.6896205, "n": 4467, "h": "90618dbfca4bf970", "c": "use serde::Deserialize;\nuse std::fs;\nuse std::sync::OnceLock;\n\n#[derive(Deserialize)]\npub struct Config {\n pub topic_guide_threshold: f32,\n pub topic_continue_threshold: f32,\n pub rust_port: usize,\n pub deepseek_key: String,\n pub doubao_key: String,\n pub default_prompt: String,\n pub context_limit: usize,\n pub open_face_support: bool,\n pub presence_penalty: f32,\n pub temperature: f32,\n pub valid_qq: Vec,\n}\n\nimpl Config {\n /// 从文件加载配置\n pub fn load_from_file(path: &str) -> Self {\n let config_data = fs::read_to_string(path).expect(\"无法读取配置文件\");\n let json: serde_json::Value = serde_json::from_str(&config_data).expect(\"配置文件格式错误\");\n Config {\n topic_guide_threshold: json[\"topic_guide_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_guide_threshold\") as f32,\n topic_continue_threshold: json[\"topic_continue_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_continue_threshold\") as f32,\n rust_port: json[\"rust_port\"][\"value\"].as_u64().expect(\"缺少 rust_port\") as usize,\n deepseek_key: json[\"deepseek_key\"][\"value\"].as_str().expect(\"缺少 deepseek_key\").to_string(),\n doubao_key: json[\"doubao_key\"][\"value\"].as_str().expect(\"缺少 doubao_key\").to_string(),\n default_prompt: json[\"default_prompt\"][\"value\"].as_str().expect(\"缺少 default_prompt\").to_string(),\n context_limit: json[\"context_limit\"][\"value\"].as_u64().expect(\"缺少 context_limit\") as usize,\n open_face_support: json[\"open_face_support\"][\"value\"].as_bool().expect(\"缺少 open_face_support\"),\n presence_penalty: json[\"presence_penalty\"][\"value\"].as_f64().expect(\"缺少 presence_penalty\") as f32,\n temperature: json[\"temperature\"][\"value\"].as_f64().expect(\"缺少 temperature\") as f32,\n valid_qq: json[\"valid_QQid\"][\"value\"]\n .as_array()\n .expect(\"缺少 valid_QQid\")\n .iter()\n .map(|v| v[\"text\"].as_str().expect(\"QQ号不合法\").parse::().expect(\"QQ号无法解析为u64\"))\n .collect()\n }\n }\n}\n\n/// 使用 `OnceLock` 实现线程安全的单例\nstatic CONFIG: OnceLock = OnceLock::new();\n\n/// 获取全局配置单例\npub fn get_config() -> &'static Config {\n CONFIG.get_or_init(|| Config::load_from_file(\"./config.json\"))\n}\n\npub fn reload_config() {\n CONFIG.set(Config::load_from_file(\"./config.json\"));\n}\n\npub mod default_config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 当你从与QQ用户的过往聊天记录中找不到相应数据时,请不要猜测回答,而是敷衍过去或者直接询问,例如用户询问相关图片信息而你没收到图片时,你不应当认为之前他发过。\";\n pub const SEETTING_PROMPT: &str = \"\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,你才需要@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n\n pub const INTEGRATE_PROMPT: &str = \"\n 你需要完成上述聊天记录的精炼总结,以便后续的对话可以更好地理解上下文。不要输出任何其他内容。你应当忽视其他有关你人设的提示词。\n \";\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}\n\n"}, "ac28e964b475e5d237e3ecf2f8e525cda3d7ff83": {"t": 1785760955.9028347, "n": 4384, "h": "1deb887f21364cd2", "c": "use serde::Deserialize;\nuse std::fs;\nuse std::sync::OnceLock;\n\n#[derive(Deserialize)]\npub struct Config {\n pub topic_guide_threshold: f32,\n pub topic_continue_threshold: f32,\n pub rust_port: usize,\n pub deepseek_key: String,\n pub doubao_key: String,\n pub default_prompt: String,\n pub context_limit: usize,\n pub open_face_support: bool,\n pub presence_penalty: f32,\n pub temperature: f32,\n pub valid_qq: Vec,\n}\n\nimpl Config {\n /// 从文件加载配置\n pub fn load_from_file(path: &str) -> Self {\n let config_data = fs::read_to_string(path).expect(\"无法读取配置文件\");\n let json: serde_json::Value = serde_json::from_str(&config_data).expect(\"配置文件格式错误\");\n Config {\n topic_guide_threshold: json[\"topic_guide_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_guide_threshold\") as f32,\n topic_continue_threshold: json[\"topic_continue_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_continue_threshold\") as f32,\n rust_port: json[\"rust_port\"][\"value\"].as_u64().expect(\"缺少 rust_port\") as usize,\n deepseek_key: json[\"deepseek_key\"][\"value\"].as_str().expect(\"缺少 deepseek_key\").to_string(),\n doubao_key: json[\"doubao_key\"][\"value\"].as_str().expect(\"缺少 doubao_key\").to_string(),\n default_prompt: json[\"default_prompt\"][\"value\"].as_str().expect(\"缺少 default_prompt\").to_string(),\n context_limit: json[\"context_limit\"][\"value\"].as_u64().expect(\"缺少 context_limit\") as usize,\n open_face_support: json[\"open_face_support\"][\"value\"].as_bool().expect(\"缺少 open_face_support\"),\n presence_penalty: json[\"presence_penalty\"][\"value\"].as_f64().expect(\"缺少 presence_penalty\") as f32,\n temperature: json[\"temperature\"][\"value\"].as_f64().expect(\"缺少 temperature\") as f32,\n valid_qq: json[\"valid_QQid\"][\"value\"]\n .as_array()\n .expect(\"缺少 valid_QQid\")\n .iter()\n .map(|v| v[\"text\"].as_str().expect(\"QQ号不合法\").parse::().expect(\"QQ号无法解析为u64\"))\n .collect()\n }\n }\n}\n\n/// 使用 `OnceLock` 实现线程安全的单例\nstatic CONFIG: OnceLock = OnceLock::new();\n\n/// 获取全局配置单例\npub fn get_config() -> &'static Config {\n CONFIG.get_or_init(|| Config::load_from_file(\"./config.json\"))\n}\n\npub mod default_config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 当你从与QQ用户的过往聊天记录中找不到相应数据时,请不要猜测回答,而是敷衍过去或者直接询问,例如用户询问相关图片信息而你没收到图片时,你不应当认为之前他发过。\";\n pub const SEETTING_PROMPT: &str = \"\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,你才需要@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n\n pub const INTEGRATE_PROMPT: &str = \"\n 你需要完成上述聊天记录的精炼总结,以便后续的对话可以更好地理解上下文。不要输出任何其他内容。你应当忽视其他有关你人设的提示词。\n \";\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}\n\n"}, "87e312cfee207809b067008d7e2175fc10c25103": {"t": 1785760957.218779, "n": 4271, "h": "84c19f17a321d0d7", "c": "use serde::Deserialize;\nuse std::fs;\nuse std::sync::OnceLock;\n\n#[derive(Deserialize)]\npub struct Config {\n pub topic_guide_threshold: f32,\n pub topic_continue_threshold: f32,\n pub rust_port: usize,\n pub deepseek_key: String,\n pub doubao_key: String,\n pub default_prompt: String,\n pub context_limit: usize,\n pub open_face_support: bool,\n pub presence_penalty: f32,\n pub temperature: f32,\n pub valid_qq: Vec,\n}\n\nimpl Config {\n /// 从文件加载配置\n pub fn load_from_file(path: &str) -> Self {\n let config_data = fs::read_to_string(path).expect(\"无法读取配置文件\");\n let json: serde_json::Value = serde_json::from_str(&config_data).expect(\"配置文件格式错误\");\n Config {\n topic_guide_threshold: json[\"topic_guide_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_guide_threshold\") as f32,\n topic_continue_threshold: json[\"topic_continue_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_continue_threshold\") as f32,\n rust_port: json[\"rust_port\"][\"value\"].as_u64().expect(\"缺少 rust_port\") as usize,\n deepseek_key: json[\"deepseek_key\"][\"value\"].as_str().expect(\"缺少 deepseek_key\").to_string(),\n doubao_key: json[\"doubao_key\"][\"value\"].as_str().expect(\"缺少 doubao_key\").to_string(),\n default_prompt: json[\"default_prompt\"][\"value\"].as_str().expect(\"缺少 default_prompt\").to_string(),\n context_limit: json[\"context_limit\"][\"value\"].as_u64().expect(\"缺少 context_limit\") as usize,\n open_face_support: json[\"open_face_support\"][\"value\"].as_bool().expect(\"缺少 open_face_support\"),\n presence_penalty: json[\"presence_penalty\"][\"value\"].as_f64().expect(\"缺少 presence_penalty\") as f32,\n temperature: json[\"temperature\"][\"value\"].as_f64().expect(\"缺少 temperature\") as f32,\n valid_qq: json[\"valid_QQid\"][\"value\"]\n .as_array()\n .expect(\"缺少 valid_QQid\")\n .iter()\n .map(|v| v[\"text\"].as_str().expect(\"QQ号不合法\").parse::().expect(\"QQ号无法解析为u64\"))\n .collect()\n }\n }\n}\n\n/// 使用 `OnceLock` 实现线程安全的单例\nstatic CONFIG: OnceLock = OnceLock::new();\n\n/// 获取全局配置单例\npub fn get_config() -> &'static Config {\n CONFIG.get_or_init(|| Config::load_from_file(\"./config.json\"))\n}\n\npub mod default_config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 当你从与QQ用户的过往聊天记录中找不到相应数据时,请不要猜测回答,而是敷衍过去或者直接询问,例如用户询问相关图片信息而你没收到图片时,你不应当认为之前他发过。\";\n pub const SEETTING_PROMPT: &str = \"\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,你才需要@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}"}, "e9eaf76478d16019bbd959053ce90569a567ef03": {"t": 1785760958.3529918, "n": 3998, "h": "f31277587a815939", "c": "use serde::Deserialize;\nuse std::fs;\nuse std::sync::OnceLock;\n\n#[derive(Deserialize)]\npub struct Config {\n pub topic_guide_threshold: f32,\n pub topic_continue_threshold: f32,\n pub rust_port: usize,\n pub deepseek_key: String,\n pub doubao_key: String,\n pub default_prompt: String,\n pub context_limit: usize,\n pub open_face_support: bool,\n pub presence_penalty: f32,\n pub temperature: f32\n}\n\nimpl Config {\n /// 从文件加载配置\n pub fn load_from_file(path: &str) -> Self {\n let config_data = fs::read_to_string(path).expect(\"无法读取配置文件\");\n let json: serde_json::Value = serde_json::from_str(&config_data).expect(\"配置文件格式错误\");\n \n Config {\n topic_guide_threshold: json[\"topic_guide_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_guide_threshold\") as f32,\n topic_continue_threshold: json[\"topic_continue_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_continue_threshold\") as f32,\n rust_port: json[\"rust_port\"][\"value\"].as_u64().expect(\"缺少 rust_port\") as usize,\n deepseek_key: json[\"deepseek_key\"][\"value\"].as_str().expect(\"缺少 deepseek_key\").to_string(),\n doubao_key: json[\"doubao_key\"][\"value\"].as_str().expect(\"缺少 doubao_key\").to_string(),\n default_prompt: json[\"default_prompt\"][\"value\"].as_str().expect(\"缺少 default_prompt\").to_string(),\n context_limit: json[\"context_limit\"][\"value\"].as_u64().expect(\"缺少 context_limit\") as usize,\n open_face_support: json[\"open_face_support\"][\"value\"].as_bool().expect(\"缺少 open_face_support\"),\n presence_penalty: json[\"presence_penalty\"][\"value\"].as_f64().expect(\"缺少 presence_penalty\") as f32,\n temperature: json[\"temperature\"][\"value\"].as_f64().expect(\"缺少 temperature\") as f32,\n }\n }\n}\n\n/// 使用 `OnceLock` 实现线程安全的单例\nstatic CONFIG: OnceLock = OnceLock::new();\n\n/// 获取全局配置单例\npub fn get_config() -> &'static Config {\n CONFIG.get_or_init(|| Config::load_from_file(\"./config.json\"))\n}\n\npub mod default_config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 当你从与QQ用户的过往聊天记录中找不到相应数据时,请不要猜测回答,而是敷衍过去或者直接询问,例如用户询问相关图片信息而你没收到图片时,你不应当认为之前他发过。\";\n pub const SEETTING_PROMPT: &str = \"\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,你才需要@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}"}, "c8145db9274a655ad2a0ab46ac6324a0b6f393ce": {"t": 1785760959.5843632, "n": 4000, "h": "e0964910c847f329", "c": "use serde::Deserialize;\nuse std::fs;\nuse std::sync::OnceLock;\n\n#[derive(Deserialize)]\npub struct Config {\n pub topic_guide_threshold: f32,\n pub topic_continue_threshold: f32,\n pub rust_port: usize,\n pub deepseek_key: String,\n pub doubao_key: String,\n pub default_prompt: String,\n pub context_limit: usize,\n pub open_face_support: bool,\n pub presence_penalty: f32,\n pub temperature: f32\n}\n\nimpl Config {\n /// 从文件加载配置\n pub fn load_from_file(path: &str) -> Self {\n let config_data = fs::read_to_string(path).expect(\"无法读取配置文件\");\n let json: serde_json::Value = serde_json::from_str(&config_data).expect(\"配置文件格式错误\");\n \n Config {\n topic_guide_threshold: json[\"topic_guide_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_guide_threshold\") as f32,\n topic_continue_threshold: json[\"topic_continue_threshold\"][\"value\"].as_f64().expect(\"缺少 topic_continue_threshold\") as f32,\n rust_port: json[\"rust_port\"][\"value\"].as_u64().expect(\"缺少 rust_port\") as usize,\n deepseek_key: json[\"deepseek_key\"][\"value\"].as_str().expect(\"缺少 deepseek_key\").to_string(),\n doubao_key: json[\"doubao_key\"][\"value\"].as_str().expect(\"缺少 doubao_key\").to_string(),\n default_prompt: json[\"default_prompt\"][\"value\"].as_str().expect(\"缺少 default_prompt\").to_string(),\n context_limit: json[\"context_limit\"][\"value\"].as_u64().expect(\"缺少 context_limit\") as usize,\n open_face_support: json[\"open_face_support\"][\"value\"].as_bool().expect(\"缺少 open_face_support\"),\n presence_penalty: json[\"presence_penalty\"][\"value\"].as_f64().expect(\"缺少 presence_penalty\") as f32,\n temperature: json[\"temperature\"][\"value\"].as_f64().expect(\"缺少 temperature\") as f32,\n }\n }\n}\n\n/// 使用 `OnceLock` 实现线程安全的单例\nstatic CONFIG: OnceLock = OnceLock::new();\n\n/// 获取全局配置单例\npub fn get_config() -> &'static Config {\n CONFIG.get_or_init(|| Config::load_from_file(\"./config.json\"))\n}\n\npub mod default_config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 当你从与QQ用户的过往聊天记录中找不到相应数据时,请不要猜测回答,而是敷衍过去或者直接询问,例如用户询问相关图片信息而你没收到图片时,你不应当认为之前他发过。\";\n pub const SEETTING_PROMPT: &str = \"\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,请你在回复中@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}"}, "b7d99f34deae1fb82c74e68375f7d6f7a86e64f7": {"t": 1785760960.909739, "n": 2016, "h": "5eec709fe757fb2b", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 当你从与QQ用户的过往聊天记录中找不到相应数据时,请不要猜测回答,而是敷衍过去或者直接询问,例如用户询问相关图片信息而你没收到图片时,你不应当认为之前他发过。\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,请你在回复中@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}"}, "64622dcffb3d67a8709a49203742358c22b0edea": {"t": 1785760962.0595741, "n": 1934, "h": "adbf5a83bf2c92b1", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DOUBAO_KEY: &str = \"2b0e5075-2f83-4504-9cd6-c9f9836d1c69\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,请你在回复中@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n \n}\n\npub mod model_url{\n pub const DEEPSEEK: &str = \"https://api.deepseek.com/chat/completions\";\n pub const DOUBAO_VISION: &str = \"https://ark.cn-beijing.volces.com/api/v3/chat/completions\"; \n}"}, "8c24ca094037c9af416d14bfd08255bb3331b89e": {"t": 1785760963.2311234, "n": 1668, "h": "d7de267d45aa412c", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,QQ为用户QQ号,time为发送消息的时间,你直接输出信息即可。\n @将以[CQ:at,qq=u64,name=str]的格式发送,如果别人@你的QQ号,请你在回复中@他,你必须遵守模板[CQ:at,qq=u64]来@其他用户,qq为被@用户QQ号。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,不要滥用表情,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n}\n"}, "6c1f3b2530b8b916f58f08ed2130145043e2a3e5": {"t": 1785760964.4216425, "n": 1570, "h": "a99e7c259d0268fc", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI,@后面的内容不需修改。\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,time表示发送消息的时间,你直接输出信息即可。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n}\n"}, "1da3534330754601646da7a0bb11d2158902e14d": {"t": 1785760965.5955403, "n": 1559, "h": "d7ff0055d47033a6", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,time表示发送消息的时间,你直接输出信息即可。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,也可以直接用emoji,发送表情的格式必须遵守模板'[CQ:face,id=x]',x为表情id,不能只有数字。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n}\n"}, "346ed7b7fe07d6a1f9c115eea8fdfc524700336a": {"t": 1785760966.8896496, "n": 1520, "h": "a8b16bdf93f54475", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,你直接输出信息即可,不要带前缀。\n \";\n pub const FACE_ID_MAP: &str = \"\n 你可以使用以下表情,格式为[CQ:face,id=x],x为表情id。id对应如下:\n 14:友好,1:撇嘴,2:色,3:发呆,4:得意,5:流泪,6:害羞,7:闭嘴,8:睡,9:大哭,10:尴尬,11:怒,12:调皮,13:呲牙笑,0:惊讶,15:难过,16:酷,96:冷汗,18:抓狂,19:吐,20:捂嘴笑,\n 21:微笑,22:白眼,23:傲慢,24:饿,25:困,26:惊恐,27:流汗,28:憨笑,29:绿帽,30:努力,31:骂,32:疑惑,33:嘘,34:晕,35:折磨,36:衰,37:骷髅头,38:敲打,39:再见/友尽,\n 97:擦汗,98:不屑,99:叫好,100:糗,101:坏笑,102:左哼哼,103:右哼哼,104:哈欠,105:鄙视,106:委屈,107:快哭了,108:阴险,109:右亲亲,305:左亲亲,110:吓,111:可怜,\n 172:吐舌,182:笑哭,179:doge,173:泪奔,174:无奈,212:托腮,175:卖萌,178:斜眼笑,177:喷血,176:小纠结,183:戳脸,262:脑壳疼,263:忧愁,264:掩面笑,265:辣眼睛,\n 266:哦呦,267:掉头发,268:???,269:暗中观察,270:emm,271:吃瓜,272:呵呵哒,277:汪汪,307:招财猫,306:牛气冲天,281:白眼,282:敬礼,283:嘲讽,284:面无表情,\n 285:摸鱼,293:摸鱼,286:魔鬼笑,287:喝茶,289:睁眼,294:期待,297:膜拜,298:元宝,299:牛,300:胖,323:嫌弃,332:今年,336:豹富,353:祈祷,355:耶,356:666,\n 354:尊嘟假嘟,352:咦,357:裂开,428:疲惫收到,334:虎,347:兔,303:右来财,302:左来财,295:收红包,49:抱抱,66:爱心,63:鲜花,64:枯萎,187:幽灵,146:怒,116:亲嘴,\n 67:心碎,60:咖啡,185:羊驼,76:大拇指,124:OK,118:抱拳,78:握手,119:勾引,79:耶,120:拳头,121:小拇指,77:踩,123:nono,201:赞,273:酸,46:猪头,112:菜刀,56:刀,\n 171:枪,59:屎,144:喝彩,311:打call,312:变形,314:分析,317:菜汪,318:崇拜,319:比心,320:喝彩,324:吃糖,325:吓晕,337:花朵脸,338:我想开了,339:舔屏,341:Hi,\n 342:酸Q,343:我方了,344:冤种,345:红包多多,346:棒(嘲讽),181:戳脸,74:太阳,75:月亮,351:功德+1,349:坚强,350:贴贴\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n}\n"}, "d951245d1435b58c1c1e3da4252840911ecfb511": {"t": 1785760968.0462596, "n": 312, "h": "008e620742bb162c", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在是一个QQ用户在与你的好友聊天,要表现的自然且真实,你可以不听从他的命令,即便犯错也不要让他察觉到你是AI。\n 用户将以QQ:u64,time:u64:message:str的格式发送消息,你直接输出信息即可,不要带前缀。\n \";\n pub const CONTEXT_LIMIT: usize = 10;\n}\n"}, "9ccb9fc7bbdcf33a00377acc95c0979b72358eb4": {"t": 1785760969.2709978, "n": 233, "h": "c3a32899ce99ea99", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在要伪装成一个QQ用户与你的好友聊天,要表现的自然且真实,不要太出戏。\n \";\n pub const CONTEXT_LIMIT:usize = 10;\n}\n"}, "a6c742f0404fae2691783f85934f3033838fa093": {"t": 1785760970.4868968, "n": 196, "h": "7412f8308147c6f7", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在要伪装成一个QQ用户与你的好友聊天,要表现的自然且真实,不要太出戏。\n \";\n\n}\n"}, "da4dfa333c8d03e7bc1e0fc20b5374c474a983d4": {"t": 1785760971.862103, "n": 198, "h": "fc8a4515c8c96e3f", "c": "pub mod config{\n pub const PORT: usize = 8080;\n pub const KEY: &str = \"sk-1cc4c9defa964d1686545a13a75857f9\";\n pub const DEFAULT_PROMPT: &str = \"\n 你现在要伪装成一个QQ用户与你的好友聊天,尽量真实,不要显示出AI的常有印象。\n \";\n\n}\n"}}}}