feat:做梦可以私发
This commit is contained in:
@@ -2,10 +2,12 @@ import random
|
||||
from typing import List, Optional
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.config.config import model_config
|
||||
from src.config.config import global_config, model_config
|
||||
from src.chat.utils.prompt_builder import Prompt
|
||||
from src.llm_models.payload_content.message import RoleType, Message
|
||||
from src.llm_models.utils_model import LLMRequest
|
||||
from src.chat.message_receive.chat_stream import get_chat_manager
|
||||
from src.plugin_system.apis import send_api
|
||||
|
||||
logger = get_logger("dream_generator")
|
||||
|
||||
@@ -82,7 +84,7 @@ async def generate_dream_summary(
|
||||
total_iterations: int,
|
||||
time_cost: float,
|
||||
) -> None:
|
||||
"""生成梦境总结并输出到日志"""
|
||||
"""生成梦境总结,输出到日志,并根据配置可选地推送给指定用户"""
|
||||
try:
|
||||
import json
|
||||
from src.chat.utils.prompt_builder import global_prompt_manager
|
||||
@@ -193,6 +195,52 @@ async def generate_dream_summary(
|
||||
|
||||
if dream_content:
|
||||
logger.info(f"[dream][梦境总结] 对 chat_id={chat_id} 的整理过程梦境:\n{dream_content}")
|
||||
|
||||
# 第五步:根据配置决定是否将梦境发送给指定用户
|
||||
try:
|
||||
dream_send_raw = getattr(global_config.dream, "dream_send", "") or ""
|
||||
dream_send = dream_send_raw.strip()
|
||||
if dream_send:
|
||||
parts = dream_send.split(":")
|
||||
if len(parts) != 2:
|
||||
logger.warning(
|
||||
f"[dream][梦境总结] dream_send 配置格式不正确,应为 'platform:user_id',当前值: {dream_send_raw!r}"
|
||||
)
|
||||
else:
|
||||
platform, user_id = parts[0].strip(), parts[1].strip()
|
||||
if not platform or not user_id:
|
||||
logger.warning(
|
||||
f"[dream][梦境总结] dream_send 平台或用户ID为空,当前值: {dream_send_raw!r}"
|
||||
)
|
||||
else:
|
||||
# 默认为私聊会话
|
||||
stream_id = get_chat_manager().get_stream_id(
|
||||
platform=platform,
|
||||
id_str=str(user_id),
|
||||
is_group=False,
|
||||
)
|
||||
if not stream_id:
|
||||
logger.error(
|
||||
f"[dream][梦境总结] 无法根据 dream_send 找到有效的聊天流,"
|
||||
f"platform={platform!r}, user_id={user_id!r}"
|
||||
)
|
||||
else:
|
||||
ok = await send_api.text_to_stream(
|
||||
dream_content,
|
||||
stream_id=stream_id,
|
||||
typing=False,
|
||||
storage_message=True,
|
||||
)
|
||||
if ok:
|
||||
logger.info(
|
||||
f"[dream][梦境总结] 已将梦境结果发送给配置的目标用户: {platform}:{user_id}"
|
||||
)
|
||||
else:
|
||||
logger.error(
|
||||
f"[dream][梦境总结] 向 {platform}:{user_id} 发送梦境结果失败"
|
||||
)
|
||||
except Exception as send_exc:
|
||||
logger.error(f"[dream][梦境总结] 发送梦境结果到配置用户时出错: {send_exc}", exc_info=True)
|
||||
else:
|
||||
logger.warning("[dream][梦境总结] 未能生成梦境总结")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user