Skip to content

Commit decb29a

Browse files
lxfightXiYang6666
andcommitted
feat: 添加人格回退配置选项
- 新增 personality_fallback 配置项,允许在会话未配置人格时使用默认人格 - 添加异常处理,防止访问不存在的配置项导致崩溃 - 优化日志输出,清晰显示回退逻辑 - 版本升级至 v2.0.16 Resolves #109 Co-authored-by: XiYang6666 <XiYang6666@users.noreply.github.com>
1 parent d744670 commit decb29a

3 files changed

Lines changed: 27 additions & 7 deletions

File tree

_conf_schema.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@
100100
"type":"bool",
101101
"default":true
102102
},
103+
"personality_fallback":{
104+
"description":"对话未配置人格时是否回退到默认人格",
105+
"type":"bool",
106+
"default":false
107+
},
103108
"num_pairs":{
104109
"description":"记忆总结的对话轮数",
105110
"type":"int",

core/memory_operations.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -272,13 +272,28 @@ async def _get_persona_id(plugin: "Mnemosyne", event: AstrMessageEvent) -> str |
272272
persona_id = conversation.persona_id if conversation else None
273273

274274
if not persona_id or persona_id == "[%None]":
275-
# 不使用默认人格,避免记忆错乱
276-
# 当会话没有配置人格时,使用占位符或None,而不是回退到默认人格
277-
logger.warning(
278-
f"当前会话 (ID: {event.unified_msg_origin}) 未配置人格,将使用占位符 '{DEFAULT_PERSONA_ON_NONE}' 进行记忆操作(如果启用人格过滤)。"
279-
)
275+
if plugin.config.get("personality_fallback", False):
276+
# 尝试获取默认人格
277+
try:
278+
fallback_id = plugin.context._config.get("provider_settings", {}).get(
279+
"default_personality", DEFAULT_PERSONA_ON_NONE
280+
)
281+
if not fallback_id or fallback_id == "[%None]":
282+
fallback_id = DEFAULT_PERSONA_ON_NONE
283+
message = f"当前会话 (ID: {event.unified_msg_origin}) 未配置人格,将使用默认人格 '{fallback_id}' 进行记忆操作(如果启用人格过滤)。"
284+
except Exception as e:
285+
logger.error(f"获取默认人格失败: {e},回退到占位符")
286+
fallback_id = DEFAULT_PERSONA_ON_NONE
287+
message = f"当前会话 (ID: {event.unified_msg_origin}) 未配置人格,将使用占位符 '{fallback_id}' 进行记忆操作(如果启用人格过滤)。"
288+
else:
289+
# 不使用默认人格,避免记忆错乱
290+
fallback_id = DEFAULT_PERSONA_ON_NONE
291+
message = f"当前会话 (ID: {event.unified_msg_origin}) 未配置人格,将使用占位符 '{fallback_id}' 进行记忆操作(如果启用人格过滤)。"
292+
293+
logger.warning(message)
294+
280295
if plugin.config.get("use_personality_filtering", False):
281-
persona_id = DEFAULT_PERSONA_ON_NONE
296+
persona_id = fallback_id
282297
else:
283298
persona_id = None
284299
return persona_id

metadata.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: astrbot_plugin_mnemosyne
22
desc: 一个基于Milvus数据库的长期记忆存储与查询插件
33
help: 输入 /memory 查看指令帮助
4-
version: v2.0.15
4+
version: v2.0.16
55
author: lxfight
66
repo: https://github.com/lxfight/astrbot_plugin_mnemosyne

0 commit comments

Comments
 (0)