feat: 添加获取用户名称的方法,优化超时决策和主动思考中的用户名处理
This commit is contained in:
@@ -277,6 +277,9 @@ class ProactiveThinker:
|
|||||||
logger.info(f"[ProactiveThinker] 等待超时: user={session.user_id}")
|
logger.info(f"[ProactiveThinker] 等待超时: user={session.user_id}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# 获取用户名
|
||||||
|
user_name = await self._get_user_name(session.user_id, session.stream_id)
|
||||||
|
|
||||||
# 获取聊天流
|
# 获取聊天流
|
||||||
chat_stream = await self._get_chat_stream(session.stream_id)
|
chat_stream = await self._get_chat_stream(session.stream_id)
|
||||||
|
|
||||||
@@ -292,7 +295,7 @@ class ProactiveThinker:
|
|||||||
# 调用 Planner 生成超时决策
|
# 调用 Planner 生成超时决策
|
||||||
plan_response = await generate_plan(
|
plan_response = await generate_plan(
|
||||||
session=session,
|
session=session,
|
||||||
user_name=session.user_id, # 这里可以改进,获取真实用户名
|
user_name=user_name,
|
||||||
situation_type="timeout",
|
situation_type="timeout",
|
||||||
chat_stream=chat_stream,
|
chat_stream=chat_stream,
|
||||||
available_actions=action_manager.get_using_actions(),
|
available_actions=action_manager.get_using_actions(),
|
||||||
@@ -304,7 +307,7 @@ class ProactiveThinker:
|
|||||||
if action.type == "kfc_reply":
|
if action.type == "kfc_reply":
|
||||||
success, reply_text = await generate_reply_text(
|
success, reply_text = await generate_reply_text(
|
||||||
session=session,
|
session=session,
|
||||||
user_name=session.user_id,
|
user_name=user_name,
|
||||||
thought=plan_response.thought,
|
thought=plan_response.thought,
|
||||||
situation_type="timeout",
|
situation_type="timeout",
|
||||||
chat_stream=chat_stream,
|
chat_stream=chat_stream,
|
||||||
@@ -449,6 +452,9 @@ class ProactiveThinker:
|
|||||||
logger.info(f"[ProactiveThinker] 主动思考触发: user={session.user_id}, reason={trigger_reason}")
|
logger.info(f"[ProactiveThinker] 主动思考触发: user={session.user_id}, reason={trigger_reason}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# 获取用户名
|
||||||
|
user_name = await self._get_user_name(session.user_id, session.stream_id)
|
||||||
|
|
||||||
# 获取聊天流
|
# 获取聊天流
|
||||||
chat_stream = await self._get_chat_stream(session.stream_id)
|
chat_stream = await self._get_chat_stream(session.stream_id)
|
||||||
|
|
||||||
@@ -476,7 +482,7 @@ class ProactiveThinker:
|
|||||||
# 调用 Planner
|
# 调用 Planner
|
||||||
plan_response = await generate_plan(
|
plan_response = await generate_plan(
|
||||||
session=session,
|
session=session,
|
||||||
user_name=session.user_id,
|
user_name=user_name,
|
||||||
situation_type="proactive",
|
situation_type="proactive",
|
||||||
chat_stream=chat_stream,
|
chat_stream=chat_stream,
|
||||||
available_actions=action_manager.get_using_actions(),
|
available_actions=action_manager.get_using_actions(),
|
||||||
@@ -501,7 +507,7 @@ class ProactiveThinker:
|
|||||||
if action.type == "kfc_reply":
|
if action.type == "kfc_reply":
|
||||||
success, reply_text = await generate_reply_text(
|
success, reply_text = await generate_reply_text(
|
||||||
session=session,
|
session=session,
|
||||||
user_name=session.user_id,
|
user_name=user_name,
|
||||||
thought=plan_response.thought,
|
thought=plan_response.thought,
|
||||||
situation_type="proactive",
|
situation_type="proactive",
|
||||||
chat_stream=chat_stream,
|
chat_stream=chat_stream,
|
||||||
@@ -565,6 +571,28 @@ class ProactiveThinker:
|
|||||||
logger.warning(f"[ProactiveThinker] 获取 chat_stream 失败: {e}")
|
logger.warning(f"[ProactiveThinker] 获取 chat_stream 失败: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
async def _get_user_name(self, user_id: str, stream_id: str) -> str:
|
||||||
|
"""获取用户名称(优先从 person_info 获取)"""
|
||||||
|
try:
|
||||||
|
from src.person_info.person_info import get_person_info_manager
|
||||||
|
|
||||||
|
person_info_manager = get_person_info_manager()
|
||||||
|
# 从 stream_id 提取 platform(格式通常是 platform_xxx)
|
||||||
|
platform = "qq" # 默认平台
|
||||||
|
if "_" in stream_id:
|
||||||
|
platform = stream_id.split("_")[0]
|
||||||
|
|
||||||
|
person_id = person_info_manager.get_person_id(platform, user_id)
|
||||||
|
person_name = await person_info_manager.get_value(person_id, "person_name")
|
||||||
|
|
||||||
|
if person_name:
|
||||||
|
return person_name
|
||||||
|
except Exception as e:
|
||||||
|
logger.debug(f"[ProactiveThinker] 获取用户名失败: {e}")
|
||||||
|
|
||||||
|
# 回退到 user_id
|
||||||
|
return user_id
|
||||||
|
|
||||||
def get_stats(self) -> dict:
|
def get_stats(self) -> dict:
|
||||||
"""获取统计信息"""
|
"""获取统计信息"""
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user