添加用户上下文获取规范,确保插件安全提取用户信息并避免潜在错误

This commit is contained in:
fujie
2026-01-01 04:10:32 +08:00
parent 84246db0bd
commit feeed7d332
5 changed files with 77 additions and 4 deletions

View File

@@ -100,6 +100,21 @@ class Action:
def __init__(self):
self.valves = self.Valves()
def _get_user_context(self, __user__: Optional[Dict[str, Any]]) -> Dict[str, str]:
"""Extract basic user context with safe fallbacks."""
if isinstance(__user__, (list, tuple)):
user_data = __user__[0] if __user__ else {}
elif isinstance(__user__, dict):
user_data = __user__
else:
user_data = {}
return {
"user_id": user_data.get("id", "unknown_user"),
"user_name": user_data.get("name", "User"),
"user_language": user_data.get("language", "en-US"),
}
async def action(
self,
body: dict,
@@ -165,7 +180,8 @@ class Action:
done=False,
)
user_id = __user__.get("id") if __user__ else "default"
user_ctx = self._get_user_context(__user__)
user_id = user_ctx["user_id"]
user_obj = Users.get_user_by_id(user_id)
target_model = (

View File

@@ -97,6 +97,21 @@ class Action:
def __init__(self):
self.valves = self.Valves()
def _get_user_context(self, __user__: Optional[Dict[str, Any]]) -> Dict[str, str]:
"""安全提取用户上下文信息,支持多种输入格式。"""
if isinstance(__user__, (list, tuple)):
user_data = __user__[0] if __user__ else {}
elif isinstance(__user__, dict):
user_data = __user__
else:
user_data = {}
return {
"user_id": user_data.get("id", "unknown_user"),
"user_name": user_data.get("name", "用户"),
"user_language": user_data.get("language", "zh-CN"),
}
async def action(
self,
body: dict,
@@ -156,7 +171,8 @@ class Action:
__event_emitter__, "⚡ 闪记卡: 正在调用 AI 模型分析内容...", done=False
)
user_id = __user__.get("id") if __user__ else "default"
user_ctx = self._get_user_context(__user__)
user_id = user_ctx["user_id"]
user_obj = Users.get_user_by_id(user_id)
target_model = (