mirror of https://github.com/Mai-with-u/MaiBot.git
Merge branch 'dev' of https://github.com/SnowindMe/MaiBot into dev
commit
b9febdc515
16
bot.py
16
bot.py
|
|
@ -8,21 +8,15 @@ import time
|
|||
import platform
|
||||
import traceback
|
||||
from dotenv import load_dotenv
|
||||
from src.common.logger import get_module_logger, LogConfig, CONFIRM_STYLE_CONFIG, MAIN_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
# from src.common.logger import LogConfig, CONFIRM_STYLE_CONFIG
|
||||
from src.common.crash_logger import install_crash_handler
|
||||
from src.main import MainSystem
|
||||
|
||||
|
||||
main_log_config = LogConfig(
|
||||
console_format=MAIN_STYLE_CONFIG["console_format"],
|
||||
file_format=MAIN_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("main_bot", config=main_log_config)
|
||||
confirm_logger_config = LogConfig(
|
||||
console_format=CONFIRM_STYLE_CONFIG["console_format"],
|
||||
file_format=CONFIRM_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
confirm_logger = get_module_logger("confirm", config=confirm_logger_config)
|
||||
logger = get_logger("main")
|
||||
confirm_logger = get_logger("confirm")
|
||||
# 获取没有加载env时的环境变量
|
||||
env_mask = {key: os.getenv(key) for key in os.environ}
|
||||
|
||||
|
|
|
|||
|
|
@ -426,6 +426,24 @@ CHAT_STREAM_STYLE_CONFIG = {
|
|||
},
|
||||
}
|
||||
|
||||
CHAT_MESSAGE_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<light-blue>聊天消息</light-blue> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天消息 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": (
|
||||
"<level>{time:MM-DD HH:mm}</level> | <light-blue>聊天消息</light-blue> | <light-blue>{message}</light-blue>"
|
||||
), # noqa: E501
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天消息 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
PERSON_INFO_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
|
|
@ -567,6 +585,42 @@ LPMM_STYLE_CONFIG = {
|
|||
},
|
||||
}
|
||||
|
||||
OBSERVATION_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<light-yellow>聊天观察</light-yellow> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天观察 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": (
|
||||
"<level>{time:MM-DD HH:mm}</level> | <light-yellow>聊天观察</light-yellow> | <light-yellow>{message}</light-yellow>"
|
||||
), # noqa: E501
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天观察 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
CHAT_IMAGE_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<light-yellow>聊天图片</light-yellow> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天图片 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": (
|
||||
"<level>{time:MM-DD HH:mm}</level> | <light-yellow>聊天图片</light-yellow> | <light-yellow>{message}</light-yellow>"
|
||||
), # noqa: E501
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天图片 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
# 兴趣log
|
||||
INTEREST_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
|
|
@ -610,6 +664,136 @@ TIANYI_STYLE_CONFIG = {
|
|||
},
|
||||
}
|
||||
|
||||
# 模型日志样式配置
|
||||
MODEL_UTILS_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<light-yellow>模型</light-yellow> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 模型 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-green>模型</light-green> | {message}",
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 模型 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
MESSAGE_BUFFER_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<light-yellow>消息缓存</light-yellow> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息缓存 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-green>消息缓存</light-green> | {message}",
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息缓存 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
PROMPT_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<light-yellow>提示词构建</light-yellow> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 提示词构建 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-green>提示词构建</light-green> | {message}",
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 提示词构建 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
CHANGE_MOOD_TOOL_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<fg #3FC1C9>心情工具</fg #3FC1C9> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情工具 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-green>心情工具</light-green> | {message}",
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情工具 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<fg #3FC1C9>关系工具</fg #3FC1C9> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系工具 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-green>关系工具</light-green> | {message}",
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系工具 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
GET_KNOWLEDGE_TOOL_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<fg #3FC1C9>获取知识</fg #3FC1C9> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取知识 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-green>获取知识</light-green> | {message}",
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取知识 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
GET_TIME_DATE_TOOL_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<fg #3FC1C9>获取时间日期</fg #3FC1C9> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取时间日期 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-green>获取时间日期</light-green> | {message}",
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取时间日期 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG = {
|
||||
"advanced": {
|
||||
"console_format": (
|
||||
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
||||
"<level>{level: <8}</level> | "
|
||||
"<fg #3FC1C9>LPMM获取知识</fg #3FC1C9> | "
|
||||
"<level>{message}</level>"
|
||||
),
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM获取知识 | {message}",
|
||||
},
|
||||
"simple": {
|
||||
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-green>LPMM获取知识</light-green> | {message}",
|
||||
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM获取知识 | {message}",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
# 根据SIMPLE_OUTPUT选择配置
|
||||
MAIN_STYLE_CONFIG = MAIN_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MAIN_STYLE_CONFIG["advanced"]
|
||||
EMOJI_STYLE_CONFIG = EMOJI_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else EMOJI_STYLE_CONFIG["advanced"]
|
||||
|
|
@ -649,6 +833,35 @@ PFC_STYLE_CONFIG = PFC_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PFC_STYLE_CO
|
|||
LPMM_STYLE_CONFIG = LPMM_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else LPMM_STYLE_CONFIG["advanced"]
|
||||
INTEREST_STYLE_CONFIG = INTEREST_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else INTEREST_STYLE_CONFIG["advanced"]
|
||||
TIANYI_STYLE_CONFIG = TIANYI_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else TIANYI_STYLE_CONFIG["advanced"]
|
||||
MODEL_UTILS_STYLE_CONFIG = MODEL_UTILS_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MODEL_UTILS_STYLE_CONFIG["advanced"]
|
||||
PROMPT_STYLE_CONFIG = PROMPT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PROMPT_STYLE_CONFIG["advanced"]
|
||||
CHANGE_MOOD_TOOL_STYLE_CONFIG = (
|
||||
CHANGE_MOOD_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHANGE_MOOD_TOOL_STYLE_CONFIG["advanced"]
|
||||
)
|
||||
CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG = (
|
||||
CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG["simple"]
|
||||
if SIMPLE_OUTPUT
|
||||
else CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG["advanced"]
|
||||
)
|
||||
GET_KNOWLEDGE_TOOL_STYLE_CONFIG = (
|
||||
GET_KNOWLEDGE_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else GET_KNOWLEDGE_TOOL_STYLE_CONFIG["advanced"]
|
||||
)
|
||||
GET_TIME_DATE_TOOL_STYLE_CONFIG = (
|
||||
GET_TIME_DATE_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else GET_TIME_DATE_TOOL_STYLE_CONFIG["advanced"]
|
||||
)
|
||||
LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG = (
|
||||
LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG["simple"]
|
||||
if SIMPLE_OUTPUT
|
||||
else LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG["advanced"]
|
||||
)
|
||||
OBSERVATION_STYLE_CONFIG = OBSERVATION_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else OBSERVATION_STYLE_CONFIG["advanced"]
|
||||
MESSAGE_BUFFER_STYLE_CONFIG = (
|
||||
MESSAGE_BUFFER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MESSAGE_BUFFER_STYLE_CONFIG["advanced"]
|
||||
)
|
||||
CHAT_MESSAGE_STYLE_CONFIG = (
|
||||
CHAT_MESSAGE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_MESSAGE_STYLE_CONFIG["advanced"]
|
||||
)
|
||||
CHAT_IMAGE_STYLE_CONFIG = CHAT_IMAGE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_IMAGE_STYLE_CONFIG["advanced"]
|
||||
|
||||
|
||||
def is_registered_module(record: dict) -> bool:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,100 @@
|
|||
from src.common.logger import get_module_logger, LogConfig
|
||||
from src.common.logger import (
|
||||
BACKGROUND_TASKS_STYLE_CONFIG,
|
||||
MAIN_STYLE_CONFIG,
|
||||
MEMORY_STYLE_CONFIG,
|
||||
PFC_STYLE_CONFIG,
|
||||
MOOD_STYLE_CONFIG,
|
||||
TOOL_USE_STYLE_CONFIG,
|
||||
RELATION_STYLE_CONFIG,
|
||||
CONFIG_STYLE_CONFIG,
|
||||
HEARTFLOW_STYLE_CONFIG,
|
||||
SCHEDULE_STYLE_CONFIG,
|
||||
LLM_STYLE_CONFIG,
|
||||
CHAT_STYLE_CONFIG,
|
||||
EMOJI_STYLE_CONFIG,
|
||||
SUB_HEARTFLOW_STYLE_CONFIG,
|
||||
SUB_HEARTFLOW_MIND_STYLE_CONFIG,
|
||||
SUBHEARTFLOW_MANAGER_STYLE_CONFIG,
|
||||
BASE_TOOL_STYLE_CONFIG,
|
||||
CHAT_STREAM_STYLE_CONFIG,
|
||||
PERSON_INFO_STYLE_CONFIG,
|
||||
WILLING_STYLE_CONFIG,
|
||||
PFC_ACTION_PLANNER_STYLE_CONFIG,
|
||||
MAI_STATE_CONFIG,
|
||||
LPMM_STYLE_CONFIG,
|
||||
INTEREST_STYLE_CONFIG,
|
||||
TIANYI_STYLE_CONFIG,
|
||||
REMOTE_STYLE_CONFIG,
|
||||
TOPIC_STYLE_CONFIG,
|
||||
SENDER_STYLE_CONFIG,
|
||||
CONFIRM_STYLE_CONFIG,
|
||||
MODEL_UTILS_STYLE_CONFIG,
|
||||
PROMPT_STYLE_CONFIG,
|
||||
CHANGE_MOOD_TOOL_STYLE_CONFIG,
|
||||
CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG,
|
||||
GET_KNOWLEDGE_TOOL_STYLE_CONFIG,
|
||||
GET_TIME_DATE_TOOL_STYLE_CONFIG,
|
||||
LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG,
|
||||
OBSERVATION_STYLE_CONFIG,
|
||||
MESSAGE_BUFFER_STYLE_CONFIG,
|
||||
CHAT_MESSAGE_STYLE_CONFIG,
|
||||
CHAT_IMAGE_STYLE_CONFIG,
|
||||
)
|
||||
|
||||
# 可根据实际需要补充更多模块配置
|
||||
MODULE_LOGGER_CONFIGS = {
|
||||
"background_tasks": BACKGROUND_TASKS_STYLE_CONFIG, # 后台任务
|
||||
"main": MAIN_STYLE_CONFIG, # 主程序
|
||||
"memory": MEMORY_STYLE_CONFIG, # 海马体
|
||||
"pfc": PFC_STYLE_CONFIG, # PFC
|
||||
"mood": MOOD_STYLE_CONFIG, # 心情
|
||||
"tool_use": TOOL_USE_STYLE_CONFIG, # 工具使用
|
||||
"relation": RELATION_STYLE_CONFIG, # 关系
|
||||
"config": CONFIG_STYLE_CONFIG, # 配置
|
||||
"heartflow": HEARTFLOW_STYLE_CONFIG, # 麦麦大脑袋
|
||||
"schedule": SCHEDULE_STYLE_CONFIG, # 在干嘛
|
||||
"llm": LLM_STYLE_CONFIG, # 麦麦组织语言
|
||||
"chat": CHAT_STYLE_CONFIG, # 见闻
|
||||
"emoji": EMOJI_STYLE_CONFIG, # 表情包
|
||||
"sub_heartflow": SUB_HEARTFLOW_STYLE_CONFIG, # 麦麦水群
|
||||
"sub_heartflow_mind": SUB_HEARTFLOW_MIND_STYLE_CONFIG, # 麦麦小脑袋
|
||||
"subheartflow_manager": SUBHEARTFLOW_MANAGER_STYLE_CONFIG, # 麦麦水群[管理]
|
||||
"base_tool": BASE_TOOL_STYLE_CONFIG, # 工具使用
|
||||
"chat_stream": CHAT_STREAM_STYLE_CONFIG, # 聊天流
|
||||
"person_info": PERSON_INFO_STYLE_CONFIG, # 人物信息
|
||||
"willing": WILLING_STYLE_CONFIG, # 意愿
|
||||
"pfc_action_planner": PFC_ACTION_PLANNER_STYLE_CONFIG, # PFC私聊规划
|
||||
"mai_state": MAI_STATE_CONFIG, # 麦麦状态
|
||||
"lpmm": LPMM_STYLE_CONFIG, # LPMM
|
||||
"interest": INTEREST_STYLE_CONFIG, # 兴趣
|
||||
"tianyi": TIANYI_STYLE_CONFIG, # 天依
|
||||
"remote": REMOTE_STYLE_CONFIG, # 远程
|
||||
"topic": TOPIC_STYLE_CONFIG, # 话题
|
||||
"sender": SENDER_STYLE_CONFIG, # 消息发送
|
||||
"confirm": CONFIRM_STYLE_CONFIG, # EULA与PRIVACY确认
|
||||
"model_utils": MODEL_UTILS_STYLE_CONFIG, # 模型工具
|
||||
"prompt": PROMPT_STYLE_CONFIG, # 提示词
|
||||
"change_mood_tool": CHANGE_MOOD_TOOL_STYLE_CONFIG, # 改变心情工具
|
||||
"change_relationship": CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG, # 改变关系工具
|
||||
"get_knowledge_tool": GET_KNOWLEDGE_TOOL_STYLE_CONFIG, # 获取知识工具
|
||||
"get_time_date": GET_TIME_DATE_TOOL_STYLE_CONFIG, # 获取时间日期工具
|
||||
"lpm_get_knowledge_tool": LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG, # LPMM获取知识工具
|
||||
"observation": OBSERVATION_STYLE_CONFIG, # 聊天观察
|
||||
"message_buffer": MESSAGE_BUFFER_STYLE_CONFIG, # 消息缓冲
|
||||
"chat_message": CHAT_MESSAGE_STYLE_CONFIG, # 聊天消息
|
||||
"chat_image": CHAT_IMAGE_STYLE_CONFIG, # 聊天图片
|
||||
# ...如有更多模块,继续添加...
|
||||
}
|
||||
|
||||
|
||||
def get_logger(module_name: str):
|
||||
style_config = MODULE_LOGGER_CONFIGS.get(module_name)
|
||||
if style_config:
|
||||
log_config = LogConfig(
|
||||
console_format=style_config["console_format"],
|
||||
file_format=style_config["file_format"],
|
||||
)
|
||||
return get_module_logger(module_name, config=log_config)
|
||||
# 若无特殊样式,使用默认
|
||||
return get_module_logger(module_name)
|
||||
|
|
@ -13,17 +13,11 @@ from packaging import version
|
|||
from packaging.version import Version, InvalidVersion
|
||||
from packaging.specifiers import SpecifierSet, InvalidSpecifier
|
||||
|
||||
from src.common.logger import get_module_logger, CONFIG_STYLE_CONFIG, LogConfig
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
# 定义日志配置
|
||||
config_config = LogConfig(
|
||||
# 使用消息发送专用样式
|
||||
console_format=CONFIG_STYLE_CONFIG["console_format"],
|
||||
file_format=CONFIG_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
# 配置主程序日志格式
|
||||
logger = get_module_logger("config", config=config_config)
|
||||
logger = get_logger("config")
|
||||
|
||||
# 考虑到,实际上配置文件中的mai_version是不会自动更新的,所以采用硬编码
|
||||
is_test = True
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
from src.do_tool.tool_can_use.base_tool import BaseTool
|
||||
from src.config.config import global_config
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.moods.moods import MoodManager
|
||||
|
||||
from typing import Dict, Any
|
||||
|
||||
logger = get_module_logger("change_mood_tool")
|
||||
logger = get_logger("change_mood_tool")
|
||||
|
||||
|
||||
class ChangeMoodTool(BaseTool):
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
from typing import Dict, Any
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.do_tool.tool_can_use.base_tool import BaseTool
|
||||
|
||||
|
||||
logger = get_module_logger("relationship_tool")
|
||||
logger = get_logger("relationship_tool")
|
||||
|
||||
|
||||
class RelationshipTool(BaseTool):
|
||||
|
|
|
|||
|
|
@ -4,14 +4,9 @@ import inspect
|
|||
import importlib
|
||||
import pkgutil
|
||||
import os
|
||||
from src.common.logger import get_module_logger, LogConfig, BASE_TOOL_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
base_tool_log_config = LogConfig(
|
||||
console_format=BASE_TOOL_STYLE_CONFIG["console_format"],
|
||||
file_format=BASE_TOOL_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("base_tool", config=base_tool_log_config)
|
||||
logger = get_logger("base_tool")
|
||||
|
||||
# 工具注册表
|
||||
TOOL_REGISTRY = {}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
from src.do_tool.tool_can_use.base_tool import BaseTool
|
||||
from src.plugins.chat.utils import get_embedding
|
||||
from src.common.database import db
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
from typing import Dict, Any, Union
|
||||
|
||||
logger = get_module_logger("get_knowledge_tool")
|
||||
logger = get_logger("get_knowledge_tool")
|
||||
|
||||
|
||||
class SearchKnowledgeTool(BaseTool):
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
from src.do_tool.tool_can_use.base_tool import BaseTool, run_lua_code
|
||||
from src.common.logger import get_module_logger
|
||||
from src.do_tool.tool_can_use.base_tool import BaseTool
|
||||
from src.common.logger_manager import get_logger
|
||||
from typing import Dict, Any
|
||||
|
||||
logger = get_module_logger("get_time_date")
|
||||
logger = get_logger("get_time_date")
|
||||
|
||||
|
||||
class GetCurrentDateTimeTool(BaseTool):
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ from src.do_tool.tool_can_use.base_tool import BaseTool
|
|||
from src.plugins.chat.utils import get_embedding
|
||||
|
||||
# from src.common.database import db
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
from typing import Dict, Any
|
||||
from src.plugins.knowledge.knowledge_lib import qa_manager
|
||||
|
||||
|
||||
logger = get_module_logger("lpmm_get_knowledge_tool")
|
||||
logger = get_logger("lpmm_get_knowledge_tool")
|
||||
|
||||
|
||||
class SearchKnowledgeFromLPMMTool(BaseTool):
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from src.plugins.models.utils_model import LLMRequest
|
||||
from src.config.config import global_config
|
||||
import json
|
||||
from src.common.logger import get_module_logger, TOOL_USE_STYLE_CONFIG, LogConfig
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.do_tool.tool_can_use import get_all_tool_definitions, get_tool_instance
|
||||
import traceback
|
||||
from src.plugins.person_info.relationship_manager import relationship_manager
|
||||
|
|
@ -9,12 +9,7 @@ from src.plugins.chat.utils import parse_text_timestamps
|
|||
from src.plugins.chat.chat_stream import ChatStream
|
||||
from src.heart_flow.observation import ChattingObservation
|
||||
|
||||
tool_use_config = LogConfig(
|
||||
# 使用消息发送专用样式
|
||||
console_format=TOOL_USE_STYLE_CONFIG["console_format"],
|
||||
file_format=TOOL_USE_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("tool_use", config=tool_use_config)
|
||||
logger = get_logger("tool_use")
|
||||
|
||||
|
||||
class ToolUser:
|
||||
|
|
|
|||
|
|
@ -1,45 +1,45 @@
|
|||
# 0.6.3 版本发布前待办事项
|
||||
|
||||
- **统一化人格配置:**
|
||||
- [0.6.3]**统一化人格配置:**
|
||||
- 检查代码中是否存在硬编码的人格相关配置。
|
||||
- 将所有硬编码的人格配置替换为使用 `individual` 模块进行管理。
|
||||
|
||||
- **在 Planner 中添加回复计数信息:**
|
||||
- [0.6.3]**在 Planner 中添加回复计数信息:**
|
||||
- 修改 `HeartFlowChatInstance` 的 `Plan` 阶段逻辑。
|
||||
- 将当前周期的回复计数(或其他相关统计信息)作为输入提供给 Planner。
|
||||
- 目的是为 Planner 提供负反馈,减少连续回复或不当回复的可能性。
|
||||
|
||||
- **恢复/检查被停止的功能:**
|
||||
- [0.6.3]**恢复/检查被停止的功能:**
|
||||
- 全面审查代码,特别是对比之前的版本或设计文档。
|
||||
- 识别并重新启用那些暂时被禁用但应该恢复的功能。
|
||||
- 确认没有核心功能意外丢失。
|
||||
|
||||
- **参数提取与配置化:**
|
||||
- [0.6.3]**参数提取与配置化:**
|
||||
- 识别代码中散落的各种可调参数(例如:概率阈值、时间间隔、次数限制、LLM 模型名称等)。
|
||||
- 将这些参数统一提取到模块或类的顶部。
|
||||
- 最终将这些参数移至外部配置文件(如 YAML 或 JSON 文件),方便用户自定义。
|
||||
|
||||
- **提供 HFC (HeartFlowChatInstance) 开启/关闭选项:**
|
||||
- **[0.6.3]提供 HFC (HeartFlowChatInstance) 开启/关闭选项:**
|
||||
- 增加一个全局或针对特定子心流的配置选项。
|
||||
- 允许用户控制是否启用 `FOCUSED` 状态以及关联的 `HeartFlowChatInstance`。
|
||||
- 如果禁用 HFC,子心流可能只会在 `ABSENT` 和 `CHAT` 状态间切换。
|
||||
|
||||
- **添加防破线机制 (针对接收消息):**
|
||||
- [0.6.3]**添加防破线机制 (针对接收消息):**
|
||||
- 在消息处理流程的早期阶段 (例如 `HeartHC_processor` 或类似模块),增加对接收到的消息文本长度的检查。
|
||||
- 对超过预设长度阈值的*接收*消息进行截断处理。
|
||||
- 目的是防止过长的输入(可能包含"破限"提示词)影响后续的兴趣计算、LLM 回复生成等环节。
|
||||
|
||||
- **NormalChat 模式下的记忆与 Prompt 优化:**
|
||||
- [0.6.3]**NormalChat 模式下的记忆与 Prompt 优化:**
|
||||
- 重点审视 `NormalChatInstance` (闲聊/推理模式) 中记忆调用 (例如 `HippocampusManager` 的使用) 的方式。
|
||||
- 评估在该模式下引入工具调用 (Tool Calling) 机制以更结构化访问记忆的必要性。
|
||||
- 优化 `NormalChatInstance` 中与记忆检索、应用相关的 Prompt。
|
||||
|
||||
- **完善简易兴趣监控 GUI:**
|
||||
- [0.6.3]**完善简易兴趣监控 GUI:**
|
||||
- 改进现有的、用于监控聊天兴趣度 (`InterestChatting`?) 的简单 GUI 界面。
|
||||
- 使其能更清晰地展示关键参数和状态,作为查看日志之外的更直观的监控方式。
|
||||
- 作为完整外部 UI 开发完成前的临时替代方案。
|
||||
|
||||
- **修复/完善中期记忆 (Midterm Memory):**
|
||||
- [0.6.3]**修复/完善中期记忆 (Midterm Memory):**
|
||||
- 检查当前中期记忆模块的状态。
|
||||
- 修复已知问题,使其能够稳定运行。
|
||||
- (优先级视开发时间而定)
|
||||
|
|
|
|||
|
|
@ -2,19 +2,15 @@ import asyncio
|
|||
import traceback
|
||||
from typing import Optional, Coroutine, Callable, Any, List
|
||||
|
||||
from src.common.logger import get_module_logger, LogConfig, BACKGROUND_TASKS_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
# Need manager types for dependency injection
|
||||
from src.heart_flow.mai_state_manager import MaiStateManager, MaiStateInfo
|
||||
from src.heart_flow.subheartflow_manager import SubHeartflowManager
|
||||
from src.heart_flow.interest_logger import InterestLogger
|
||||
|
||||
background_tasks_log_config = LogConfig(
|
||||
console_format=BACKGROUND_TASKS_STYLE_CONFIG["console_format"],
|
||||
file_format=BACKGROUND_TASKS_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("background_tasks", config=background_tasks_log_config)
|
||||
logger = get_logger("background_tasks")
|
||||
|
||||
# 新增随机停用间隔 (5 分钟)
|
||||
RANDOM_DEACTIVATION_INTERVAL_SECONDS = 300
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from src.heart_flow.sub_heartflow import SubHeartflow
|
|||
from src.plugins.models.utils_model import LLMRequest
|
||||
from src.config.config import global_config
|
||||
from src.plugins.schedule.schedule_generator import bot_schedule
|
||||
from src.common.logger import get_module_logger, LogConfig, HEARTFLOW_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from typing import Any, Optional
|
||||
from src.do_tool.tool_use import ToolUser
|
||||
from src.plugins.person_info.relationship_manager import relationship_manager # Module instance
|
||||
|
|
@ -13,11 +13,7 @@ from src.heart_flow.interest_logger import InterestLogger # Import InterestLogg
|
|||
from src.heart_flow.background_tasks import BackgroundTaskManager # Import BackgroundTaskManager
|
||||
# --- End import ---
|
||||
|
||||
heartflow_config = LogConfig(
|
||||
console_format=HEARTFLOW_STYLE_CONFIG["console_format"],
|
||||
file_format=HEARTFLOW_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("heartflow", config=heartflow_config)
|
||||
logger = get_logger("heartflow")
|
||||
|
||||
|
||||
# Task Intervals (should be in BackgroundTaskManager or config)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import os
|
|||
import traceback
|
||||
from typing import TYPE_CHECKING, Dict, List
|
||||
|
||||
from src.common.logger import get_module_logger, LogConfig, INTEREST_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
# Need chat_manager to get stream names
|
||||
from src.plugins.chat.chat_stream import chat_manager
|
||||
|
|
@ -15,11 +15,8 @@ if TYPE_CHECKING:
|
|||
from src.heart_flow.sub_heartflow import SubHeartflow
|
||||
from src.heart_flow.heartflow import Heartflow # 导入 Heartflow 类型
|
||||
|
||||
interest_logger_config = LogConfig(
|
||||
console_format=INTEREST_STYLE_CONFIG["console_format"],
|
||||
file_format=INTEREST_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("interest_logger", config=interest_logger_config)
|
||||
|
||||
logger = get_logger("interest")
|
||||
|
||||
# Consider moving log directory/filename constants here
|
||||
LOG_DIRECTORY = "logs/interest"
|
||||
|
|
|
|||
|
|
@ -2,15 +2,10 @@ import enum
|
|||
import time
|
||||
import random
|
||||
from typing import List, Tuple, Optional
|
||||
from src.common.logger import get_module_logger, LogConfig, MAI_STATE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.moods.moods import MoodManager
|
||||
|
||||
mai_state_config = LogConfig(
|
||||
# 使用海马体专用样式
|
||||
console_format=MAI_STATE_CONFIG["console_format"],
|
||||
file_format=MAI_STATE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("mai_state_manager", config=mai_state_config)
|
||||
logger = get_logger("mai_state")
|
||||
|
||||
|
||||
# enable_unlimited_hfc_chat = True
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import traceback
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from src.common.logger import get_module_logger, LogConfig, SUB_HEARTFLOW_MIND_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.models.utils_model import LLMRequest
|
||||
from src.individuality.individuality import Individuality
|
||||
from src.plugins.utils.prompt_builder import global_prompt_manager
|
||||
|
|
@ -12,12 +12,8 @@ if TYPE_CHECKING:
|
|||
from src.heart_flow.subheartflow_manager import SubHeartflowManager
|
||||
from src.heart_flow.mai_state_manager import MaiStateInfo
|
||||
|
||||
mind_log_config = LogConfig(
|
||||
console_format=SUB_HEARTFLOW_MIND_STYLE_CONFIG["console_format"],
|
||||
file_format=SUB_HEARTFLOW_MIND_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("mind", config=mind_log_config)
|
||||
logger = get_logger("sub_heartflow_mind")
|
||||
|
||||
|
||||
class Mind:
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
from datetime import datetime
|
||||
from src.plugins.models.utils_model import LLMRequest
|
||||
from src.config.config import global_config
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
import traceback
|
||||
from src.plugins.utils.chat_message_builder import (
|
||||
get_raw_msg_before_timestamp_with_chat,
|
||||
|
|
@ -12,7 +12,7 @@ from src.plugins.utils.chat_message_builder import (
|
|||
num_new_messages_since,
|
||||
)
|
||||
|
||||
logger = get_module_logger("observation")
|
||||
logger = get_logger("observation")
|
||||
|
||||
|
||||
# 所有观察的基类
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from src.config.config import global_config
|
|||
import time
|
||||
from typing import Optional, List, Dict, Tuple, Callable, Coroutine
|
||||
import traceback
|
||||
from src.common.logger import get_module_logger, LogConfig, SUB_HEARTFLOW_STYLE_CONFIG # noqa: E402
|
||||
from src.common.logger_manager import get_logger
|
||||
import random
|
||||
from src.plugins.chat.message import MessageRecv
|
||||
from src.plugins.chat.chat_stream import chat_manager
|
||||
|
|
@ -24,12 +24,7 @@ from src.heart_flow.sub_mind import SubMind
|
|||
# 定义常量 (从 interest.py 移动过来)
|
||||
MAX_INTEREST = 15.0
|
||||
|
||||
subheartflow_config = LogConfig(
|
||||
# 使用海马体专用样式
|
||||
console_format=SUB_HEARTFLOW_STYLE_CONFIG["console_format"],
|
||||
file_format=SUB_HEARTFLOW_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("subheartflow", config=subheartflow_config)
|
||||
logger = get_logger("subheartflow")
|
||||
|
||||
base_reply_probability = 0.05
|
||||
probability_increase_rate_per_second = 0.08
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from src.plugins.models.utils_model import LLMRequest
|
|||
from src.config.config import global_config
|
||||
import time
|
||||
import traceback
|
||||
from src.common.logger import get_module_logger, LogConfig, SUB_HEARTFLOW_STYLE_CONFIG # noqa: E402
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.individuality.individuality import Individuality
|
||||
import random
|
||||
from ..plugins.utils.prompt_builder import Prompt, global_prompt_manager
|
||||
|
|
@ -13,11 +13,8 @@ from src.heart_flow.chat_state_info import ChatStateInfo
|
|||
from src.plugins.chat.chat_stream import chat_manager
|
||||
from src.plugins.heartFC_chat.heartFC_Cycleinfo import CycleInfo
|
||||
|
||||
subheartflow_config = LogConfig(
|
||||
console_format=SUB_HEARTFLOW_STYLE_CONFIG["console_format"],
|
||||
file_format=SUB_HEARTFLOW_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("subheartflow", config=subheartflow_config)
|
||||
|
||||
logger = get_logger("sub_heartflow")
|
||||
|
||||
|
||||
def init_prompt():
|
||||
|
|
@ -25,6 +22,7 @@ def init_prompt():
|
|||
prompt += "{extra_info}\n"
|
||||
prompt += "{prompt_personality}\n"
|
||||
prompt += "{last_loop_prompt}\n"
|
||||
prompt += "{cycle_info_block}\n"
|
||||
prompt += "现在是{time_now},你正在上网,和qq群里的网友们聊天,以下是正在进行的聊天内容:\n{chat_observe_info}\n"
|
||||
prompt += "\n你现在{mood_info}\n"
|
||||
prompt += (
|
||||
|
|
@ -69,7 +67,7 @@ class SubMind:
|
|||
self.past_mind = []
|
||||
self.structured_info = {}
|
||||
|
||||
async def do_thinking_before_reply(self, last_cycle: CycleInfo = None):
|
||||
async def do_thinking_before_reply(self, history_cycle: list[CycleInfo] = None):
|
||||
"""
|
||||
在回复前进行思考,生成内心想法并收集工具调用结果
|
||||
|
||||
|
|
@ -133,6 +131,7 @@ class SubMind:
|
|||
("进行深入思考", 0.2),
|
||||
]
|
||||
|
||||
last_cycle = history_cycle[-1] if history_cycle else None
|
||||
# 上一次决策信息
|
||||
if last_cycle != None:
|
||||
last_action = last_cycle.action_type
|
||||
|
|
@ -154,6 +153,49 @@ class SubMind:
|
|||
else:
|
||||
last_loop_prompt = ""
|
||||
|
||||
# 准备循环信息块 (分析最近的活动循环)
|
||||
recent_active_cycles = []
|
||||
for cycle in reversed(history_cycle):
|
||||
# 只关心实际执行了动作的循环
|
||||
if cycle.action_taken:
|
||||
recent_active_cycles.append(cycle)
|
||||
# 最多找最近的3个活动循环
|
||||
if len(recent_active_cycles) == 3:
|
||||
break
|
||||
|
||||
cycle_info_block = ""
|
||||
consecutive_text_replies = 0
|
||||
responses_for_prompt = []
|
||||
|
||||
# 检查这最近的活动循环中有多少是连续的文本回复 (从最近的开始看)
|
||||
for cycle in recent_active_cycles:
|
||||
if cycle.action_type == "text_reply":
|
||||
consecutive_text_replies += 1
|
||||
# 获取回复内容,如果不存在则返回'[空回复]'
|
||||
response_text = cycle.response_info.get("response_text", [])
|
||||
# 使用简单的 join 来格式化回复内容列表
|
||||
formatted_response = "[空回复]" if not response_text else " ".join(response_text)
|
||||
responses_for_prompt.append(formatted_response)
|
||||
else:
|
||||
# 一旦遇到非文本回复,连续性中断
|
||||
break
|
||||
|
||||
# 根据连续文本回复的数量构建提示信息
|
||||
# 注意: responses_for_prompt 列表是从最近到最远排序的
|
||||
if consecutive_text_replies >= 3: # 如果最近的三个活动都是文本回复
|
||||
cycle_info_block = f'你已经连续回复了三条消息(最近: "{responses_for_prompt[0]}",第二近: "{responses_for_prompt[1]}",第三近: "{responses_for_prompt[2]}")。你回复的有点多了,请注意'
|
||||
elif consecutive_text_replies == 2: # 如果最近的两个活动是文本回复
|
||||
cycle_info_block = f'你已经连续回复了两条消息(最近: "{responses_for_prompt[0]}",第二近: "{responses_for_prompt[1]}"),请注意'
|
||||
elif consecutive_text_replies == 1: # 如果最近的一个活动是文本回复
|
||||
cycle_info_block = f'你刚刚已经回复一条消息(内容: "{responses_for_prompt[0]}")'
|
||||
|
||||
# 包装提示块,增加可读性,即使没有连续回复也给个标记
|
||||
if cycle_info_block:
|
||||
cycle_info_block = f"\n【近期回复历史】\n{cycle_info_block}\n"
|
||||
else:
|
||||
# 如果最近的活动循环不是文本回复,或者没有活动循环
|
||||
cycle_info_block = "\n【近期回复历史】\n(最近没有连续文本回复)\n"
|
||||
|
||||
# 加权随机选择思考指导
|
||||
hf_do_next = local_random.choices(
|
||||
[option[0] for option in hf_options], weights=[option[1] for option in hf_options], k=1
|
||||
|
|
@ -170,6 +212,7 @@ class SubMind:
|
|||
mood_info=mood_info,
|
||||
hf_do_next=hf_do_next,
|
||||
last_loop_prompt=last_loop_prompt,
|
||||
cycle_info_block=cycle_info_block,
|
||||
)
|
||||
|
||||
# logger.debug(f"[{self.subheartflow_id}] 心流思考提示词构建完成")
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import json # 导入 json 模块
|
|||
import functools # <-- 新增导入
|
||||
|
||||
# 导入日志模块
|
||||
from src.common.logger import get_module_logger, LogConfig, SUBHEARTFLOW_MANAGER_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
# 导入聊天流管理模块
|
||||
from src.plugins.chat.chat_stream import chat_manager
|
||||
|
|
@ -25,11 +25,7 @@ import traceback
|
|||
|
||||
# 初始化日志记录器
|
||||
|
||||
subheartflow_manager_log_config = LogConfig(
|
||||
console_format=SUBHEARTFLOW_MANAGER_STYLE_CONFIG["console_format"],
|
||||
file_format=SUBHEARTFLOW_MANAGER_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("subheartflow_manager", config=subheartflow_manager_log_config)
|
||||
logger = get_logger("subheartflow_manager")
|
||||
|
||||
# 子心流管理相关常量
|
||||
INACTIVE_THRESHOLD_SECONDS = 3600 # 子心流不活跃超时时间(秒)
|
||||
|
|
|
|||
|
|
@ -13,16 +13,12 @@ from .plugins.chat.message_sender import message_manager
|
|||
from .plugins.storage.storage import MessageStorage
|
||||
from .config.config import global_config
|
||||
from .plugins.chat.bot import chat_bot
|
||||
from .common.logger import get_module_logger, LogConfig, MAIN_STYLE_CONFIG
|
||||
from .common.logger_manager import get_logger
|
||||
from .plugins.remote import heartbeat_thread # noqa: F401
|
||||
from .individuality.individuality import Individuality
|
||||
from .common.server import global_server
|
||||
|
||||
main_log_config = LogConfig(
|
||||
console_format=MAIN_STYLE_CONFIG["console_format"],
|
||||
file_format=MAIN_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("main", config=main_log_config)
|
||||
logger = get_logger("main")
|
||||
|
||||
|
||||
class MainSystem:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import time
|
||||
from typing import Tuple
|
||||
from src.common.logger import get_module_logger, LogConfig, PFC_ACTION_PLANNER_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from ..models.utils_model import LLMRequest
|
||||
from ...config.config import global_config
|
||||
from .chat_observer import ChatObserver
|
||||
|
|
@ -10,12 +10,8 @@ from .observation_info import ObservationInfo
|
|||
from .conversation_info import ConversationInfo
|
||||
from src.plugins.utils.chat_message_builder import build_readable_messages
|
||||
|
||||
pfc_action_log_config = LogConfig(
|
||||
console_format=PFC_ACTION_PLANNER_STYLE_CONFIG["console_format"],
|
||||
file_format=PFC_ACTION_PLANNER_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("action_planner", config=pfc_action_log_config)
|
||||
logger = get_logger("pfc_action_planner")
|
||||
|
||||
|
||||
# 注意:这个 ActionPlannerInfo 类似乎没有在 ActionPlanner 中使用,
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ from typing import Dict, Any, Optional
|
|||
from ..chat.message import Message
|
||||
from .pfc_types import ConversationState
|
||||
from .pfc import ChatObserver, GoalAnalyzer, DirectMessageSender
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
from .action_planner import ActionPlanner
|
||||
from .observation_info import ObservationInfo
|
||||
from .conversation_info import ConversationInfo
|
||||
|
|
@ -23,7 +23,7 @@ from .waiter import Waiter
|
|||
|
||||
import traceback
|
||||
|
||||
logger = get_module_logger("pfc_conversation")
|
||||
logger = get_logger("pfc")
|
||||
|
||||
|
||||
class Conversation:
|
||||
|
|
|
|||
|
|
@ -5,20 +5,16 @@ from ..PFC.pfc_manager import PFCManager
|
|||
from .chat_stream import chat_manager
|
||||
from .only_message_process import MessageProcessor
|
||||
|
||||
from src.common.logger import get_module_logger, CHAT_STYLE_CONFIG, LogConfig
|
||||
from src.common.logger_manager import get_logger
|
||||
from ..heartFC_chat.heartflow_processor import HeartFCProcessor
|
||||
from ..utils.prompt_builder import Prompt, global_prompt_manager
|
||||
import traceback
|
||||
|
||||
# 定义日志配置
|
||||
chat_config = LogConfig(
|
||||
# 使用消息发送专用样式
|
||||
console_format=CHAT_STYLE_CONFIG["console_format"],
|
||||
file_format=CHAT_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
|
||||
# 配置主程序日志格式
|
||||
logger = get_module_logger("chat_bot", config=chat_config)
|
||||
logger = get_logger("chat")
|
||||
|
||||
|
||||
class ChatBot:
|
||||
|
|
|
|||
|
|
@ -8,14 +8,10 @@ from typing import Dict, Optional
|
|||
from ...common.database import db
|
||||
from maim_message import GroupInfo, UserInfo
|
||||
|
||||
from src.common.logger import get_module_logger, LogConfig, CHAT_STREAM_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
chat_stream_log_config = LogConfig(
|
||||
console_format=CHAT_STREAM_STYLE_CONFIG["console_format"],
|
||||
file_format=CHAT_STREAM_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("chat_stream", config=chat_stream_log_config)
|
||||
logger = get_logger("chat_stream")
|
||||
|
||||
|
||||
class ChatStream:
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@ from typing import Dict, List, Optional, Union
|
|||
|
||||
import urllib3
|
||||
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
from .chat_stream import ChatStream
|
||||
from .utils_image import image_manager
|
||||
from maim_message import Seg, UserInfo, BaseMessageInfo, MessageBase
|
||||
|
||||
logger = get_module_logger("chat_message")
|
||||
logger = get_logger("chat_message")
|
||||
|
||||
# 禁用SSL警告
|
||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from ..person_info.person_info import person_info_manager
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
import asyncio
|
||||
from dataclasses import dataclass, field
|
||||
from .message import MessageRecv
|
||||
|
|
@ -11,7 +11,7 @@ import random
|
|||
import time
|
||||
from ...config.config import global_config
|
||||
|
||||
logger = get_module_logger("message_buffer")
|
||||
logger = get_logger("message_buffer")
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@ import asyncio
|
|||
import time
|
||||
from typing import Dict, List, Optional, Union
|
||||
|
||||
from src.common.logger import get_module_logger
|
||||
|
||||
# from ...common.database import db # 数据库依赖似乎不需要了,注释掉
|
||||
from ..message.api import global_api
|
||||
from .message import MessageSending, MessageThinking, MessageSet
|
||||
|
|
@ -13,16 +11,10 @@ from ..storage.storage import MessageStorage
|
|||
from ...config.config import global_config
|
||||
from .utils import truncate_message, calculate_typing_time, count_messages_between
|
||||
|
||||
from src.common.logger import LogConfig, SENDER_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
# 定义日志配置
|
||||
sender_config = LogConfig(
|
||||
# 使用消息发送专用样式
|
||||
console_format=SENDER_STYLE_CONFIG["console_format"],
|
||||
file_format=SENDER_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("msg_sender", config=sender_config)
|
||||
logger = get_logger("sender")
|
||||
|
||||
|
||||
class MessageSender:
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.chat.message import MessageRecv
|
||||
from src.plugins.storage.storage import MessageStorage
|
||||
from src.config.config import global_config
|
||||
from datetime import datetime
|
||||
|
||||
logger = get_module_logger("pfc_message_processor")
|
||||
logger = get_logger("pfc")
|
||||
|
||||
|
||||
class MessageProcessor:
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ from ...common.database import db
|
|||
from ...config.config import global_config
|
||||
from ..models.utils_model import LLMRequest
|
||||
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
logger = get_module_logger("chat_image")
|
||||
logger = get_logger("chat_image")
|
||||
|
||||
|
||||
class ImageManager:
|
||||
|
|
|
|||
|
|
@ -14,15 +14,10 @@ from ...common.database import db
|
|||
from ...config.config import global_config
|
||||
from ..chat.utils_image import image_path_to_base64, image_manager
|
||||
from ..models.utils_model import LLMRequest
|
||||
from src.common.logger import get_module_logger, LogConfig, EMOJI_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
|
||||
emoji_log_config = LogConfig(
|
||||
console_format=EMOJI_STYLE_CONFIG["console_format"],
|
||||
file_format=EMOJI_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("emoji", config=emoji_log_config)
|
||||
logger = get_logger("emoji")
|
||||
|
||||
BASE_DIR = os.path.join("data")
|
||||
EMOJI_DIR = os.path.join(BASE_DIR, "emoji") # 表情包存储目录
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ from src.plugins.chat.message import Seg # Local import needed after move
|
|||
from src.plugins.chat.chat_stream import ChatStream
|
||||
from src.plugins.chat.message import UserInfo
|
||||
from src.plugins.chat.chat_stream import chat_manager
|
||||
from src.common.logger import get_module_logger, LogConfig, PFC_STYLE_CONFIG # 引入 DEFAULT_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.models.utils_model import LLMRequest
|
||||
from src.config.config import global_config
|
||||
from src.plugins.chat.utils_image import image_path_to_base64 # Local import needed after move
|
||||
|
|
@ -30,12 +30,7 @@ from .heartFC_sender import HeartFCSender
|
|||
INITIAL_DURATION = 60.0
|
||||
|
||||
|
||||
# 定义日志配置 (使用 loguru 格式)
|
||||
interest_log_config = LogConfig(
|
||||
console_format=PFC_STYLE_CONFIG["console_format"], # 使用默认控制台格式
|
||||
file_format=PFC_STYLE_CONFIG["file_format"], # 使用默认文件格式
|
||||
)
|
||||
logger = get_module_logger("HeartFCLoop", config=interest_log_config) # Logger Name Changed
|
||||
logger = get_logger("interest") # Logger Name Changed
|
||||
|
||||
|
||||
# 默认动作定义
|
||||
|
|
@ -413,7 +408,7 @@ class HeartFChatting:
|
|||
|
||||
# 在获取规划结果后检查新消息
|
||||
if await self._check_new_messages(planner_start_db_time):
|
||||
if random.random() < 0.3:
|
||||
if random.random() < 0.2:
|
||||
logger.info(f"{self.log_prefix} 看到了新消息,麦麦决定重新观察和规划...")
|
||||
# 重新规划
|
||||
with Timer("重新决策", cycle_timers):
|
||||
|
|
@ -710,12 +705,14 @@ class HeartFChatting:
|
|||
await observation.observe()
|
||||
|
||||
# 获取上一个循环的信息
|
||||
last_cycle = self._cycle_history[-1] if self._cycle_history else None
|
||||
# last_cycle = self._cycle_history[-1] if self._cycle_history else None
|
||||
|
||||
with Timer("思考", cycle_timers):
|
||||
# 获取上一个循环的动作
|
||||
# 传递上一个循环的信息给 do_thinking_before_reply
|
||||
current_mind, _past_mind = await self.sub_mind.do_thinking_before_reply(last_cycle=last_cycle)
|
||||
current_mind, _past_mind = await self.sub_mind.do_thinking_before_reply(
|
||||
history_cycle=self._cycle_history
|
||||
)
|
||||
return current_mind
|
||||
except Exception as e:
|
||||
logger.error(f"{self.log_prefix}[SubMind] 思考失败: {e}")
|
||||
|
|
@ -767,9 +764,15 @@ class HeartFChatting:
|
|||
# 执行LLM请求
|
||||
|
||||
try:
|
||||
print("prompt")
|
||||
print("prompt")
|
||||
print("prompt")
|
||||
print(payload)
|
||||
print(prompt)
|
||||
response = await self.planner_llm._execute_request(
|
||||
endpoint="/chat/completions", payload=payload, prompt=prompt
|
||||
)
|
||||
print(response)
|
||||
except Exception as req_e:
|
||||
logger.error(f"{self.log_prefix}[Planner] LLM请求执行失败: {req_e}")
|
||||
return {
|
||||
|
|
@ -784,6 +787,9 @@ class HeartFChatting:
|
|||
# 处理LLM响应
|
||||
with Timer("使用工具", cycle_timers):
|
||||
# 使用辅助函数处理工具调用响应
|
||||
print(1111122222222222)
|
||||
print(response)
|
||||
|
||||
success, arguments, error_msg = process_llm_tool_response(
|
||||
response, expected_tool_name="decide_reply_action", log_prefix=f"{self.log_prefix}[Planner] "
|
||||
)
|
||||
|
|
@ -973,38 +979,87 @@ class HeartFChatting:
|
|||
replan_prompt: str,
|
||||
) -> str:
|
||||
"""构建 Planner LLM 的提示词"""
|
||||
try:
|
||||
# 准备结构化信息块
|
||||
structured_info_block = ""
|
||||
if structured_info:
|
||||
structured_info_block = f"以下是一些额外的信息:\n{structured_info}\n"
|
||||
|
||||
# 准备结构化信息块
|
||||
structured_info_block = ""
|
||||
if structured_info:
|
||||
structured_info_block = f"以下是一些额外的信息:\n{structured_info}\n"
|
||||
# 准备聊天内容块
|
||||
chat_content_block = ""
|
||||
if observed_messages_str:
|
||||
chat_content_block = "观察到的最新聊天内容如下:\n---\n"
|
||||
chat_content_block += observed_messages_str
|
||||
chat_content_block += "\n---"
|
||||
else:
|
||||
chat_content_block = "当前没有观察到新的聊天内容。\n"
|
||||
|
||||
# 准备聊天内容块
|
||||
chat_content_block = ""
|
||||
if observed_messages_str:
|
||||
chat_content_block = "观察到的最新聊天内容如下:\n---\n"
|
||||
chat_content_block += observed_messages_str
|
||||
chat_content_block += "\n---"
|
||||
else:
|
||||
chat_content_block = "当前没有观察到新的聊天内容。\n"
|
||||
# 准备当前思维块
|
||||
current_mind_block = ""
|
||||
if current_mind:
|
||||
current_mind_block = f"{current_mind}"
|
||||
else:
|
||||
current_mind_block = "[没有特别的想法]"
|
||||
|
||||
# 准备当前思维块
|
||||
current_mind_block = ""
|
||||
if current_mind:
|
||||
current_mind_block = f"{current_mind}"
|
||||
else:
|
||||
current_mind_block = "[没有特别的想法]"
|
||||
# 准备循环信息块 (分析最近的活动循环)
|
||||
recent_active_cycles = []
|
||||
for cycle in reversed(self._cycle_history):
|
||||
# 只关心实际执行了动作的循环
|
||||
if cycle.action_taken:
|
||||
recent_active_cycles.append(cycle)
|
||||
# 最多找最近的3个活动循环
|
||||
if len(recent_active_cycles) == 3:
|
||||
break
|
||||
|
||||
# 获取提示词模板并填充数据
|
||||
prompt = (await global_prompt_manager.get_prompt_async("planner_prompt")).format(
|
||||
bot_name=global_config.BOT_NICKNAME,
|
||||
structured_info_block=structured_info_block,
|
||||
chat_content_block=chat_content_block,
|
||||
current_mind_block=current_mind_block,
|
||||
replan=replan_prompt,
|
||||
)
|
||||
cycle_info_block = ""
|
||||
consecutive_text_replies = 0
|
||||
responses_for_prompt = []
|
||||
|
||||
return prompt
|
||||
# 检查这最近的活动循环中有多少是连续的文本回复 (从最近的开始看)
|
||||
for cycle in recent_active_cycles:
|
||||
if cycle.action_type == "text_reply":
|
||||
consecutive_text_replies += 1
|
||||
# 获取回复内容,如果不存在则返回'[空回复]'
|
||||
response_text = cycle.response_info.get("response_text", [])
|
||||
# 使用简单的 join 来格式化回复内容列表
|
||||
formatted_response = "[空回复]" if not response_text else " ".join(response_text)
|
||||
responses_for_prompt.append(formatted_response)
|
||||
else:
|
||||
# 一旦遇到非文本回复,连续性中断
|
||||
break
|
||||
|
||||
# 根据连续文本回复的数量构建提示信息
|
||||
# 注意: responses_for_prompt 列表是从最近到最远排序的
|
||||
if consecutive_text_replies >= 3: # 如果最近的三个活动都是文本回复
|
||||
cycle_info_block = f'你已经连续回复了三条消息(最近: "{responses_for_prompt[0]}",第二近: "{responses_for_prompt[1]}",第三近: "{responses_for_prompt[2]}")。你回复的有点多了,请注意'
|
||||
elif consecutive_text_replies == 2: # 如果最近的两个活动是文本回复
|
||||
cycle_info_block = f'你已经连续回复了两条消息(最近: "{responses_for_prompt[0]}",第二近: "{responses_for_prompt[1]}"),请注意'
|
||||
elif consecutive_text_replies == 1: # 如果最近的一个活动是文本回复
|
||||
cycle_info_block = f'你刚刚已经回复一条消息(内容: "{responses_for_prompt[0]}")'
|
||||
|
||||
# 包装提示块,增加可读性,即使没有连续回复也给个标记
|
||||
if cycle_info_block:
|
||||
cycle_info_block = f"\n【近期回复历史】\n{cycle_info_block}\n"
|
||||
else:
|
||||
# 如果最近的活动循环不是文本回复,或者没有活动循环
|
||||
cycle_info_block = "\n【近期回复历史】\n(最近没有连续文本回复)\n"
|
||||
|
||||
# 获取提示词模板并填充数据
|
||||
prompt = (await global_prompt_manager.get_prompt_async("planner_prompt")).format(
|
||||
bot_name=global_config.BOT_NICKNAME,
|
||||
structured_info_block=structured_info_block,
|
||||
chat_content_block=chat_content_block,
|
||||
current_mind_block=current_mind_block,
|
||||
replan=replan_prompt,
|
||||
cycle_info_block=cycle_info_block,
|
||||
)
|
||||
|
||||
return prompt
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"{self.log_prefix}[Planner] 构建提示词时出错: {e}")
|
||||
logger.error(traceback.format_exc())
|
||||
return ""
|
||||
|
||||
# --- 回复器 (Replier) 的定义 --- #
|
||||
async def _replier_work(
|
||||
|
|
|
|||
|
|
@ -6,20 +6,14 @@ from ...config.config import global_config
|
|||
from ..chat.message import MessageRecv
|
||||
from .heartflow_prompt_builder import prompt_builder
|
||||
from ..chat.utils import process_llm_response
|
||||
from src.common.logger import get_module_logger, LogConfig, LLM_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.respon_info_catcher.info_catcher import info_catcher_manager
|
||||
from ..utils.timer_calculator import Timer
|
||||
|
||||
from src.plugins.moods.moods import MoodManager
|
||||
|
||||
# 定义日志配置
|
||||
llm_config = LogConfig(
|
||||
# 使用消息发送专用样式
|
||||
console_format=LLM_STYLE_CONFIG["console_format"],
|
||||
file_format=LLM_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("llm_generator", config=llm_config)
|
||||
logger = get_logger("llm")
|
||||
|
||||
|
||||
class HeartFCGenerator:
|
||||
|
|
|
|||
|
|
@ -1,23 +1,15 @@
|
|||
# src/plugins/heartFC_chat/heartFC_sender.py
|
||||
import asyncio # 重新导入 asyncio
|
||||
from typing import Dict, Optional # 重新导入类型
|
||||
|
||||
from src.common.logger import get_module_logger
|
||||
from ..message.api import global_api
|
||||
from ..chat.message import MessageSending, MessageThinking # 只保留 MessageSending 和 MessageThinking
|
||||
from ..storage.storage import MessageStorage
|
||||
from ..chat.utils import truncate_message
|
||||
from src.common.logger import LogConfig, SENDER_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.chat.utils import calculate_typing_time
|
||||
|
||||
# 定义日志配置
|
||||
sender_config = LogConfig(
|
||||
# 使用消息发送专用样式
|
||||
console_format=SENDER_STYLE_CONFIG["console_format"],
|
||||
file_format=SENDER_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("msg_sender", config=sender_config)
|
||||
logger = get_logger("sender")
|
||||
|
||||
|
||||
class HeartFCSender:
|
||||
|
|
|
|||
|
|
@ -7,19 +7,14 @@ from ..storage.storage import MessageStorage
|
|||
from ..chat.utils import is_mentioned_bot_in_message
|
||||
from maim_message import Seg
|
||||
from src.heart_flow.heartflow import heartflow
|
||||
from src.common.logger import get_module_logger, CHAT_STYLE_CONFIG, LogConfig
|
||||
from src.common.logger_manager import get_logger
|
||||
from ..chat.chat_stream import chat_manager
|
||||
from ..chat.message_buffer import message_buffer
|
||||
from ..utils.timer_calculator import Timer
|
||||
from src.plugins.person_info.relationship_manager import relationship_manager
|
||||
from typing import Optional, Tuple
|
||||
|
||||
# 定义日志配置
|
||||
processor_config = LogConfig(
|
||||
console_format=CHAT_STYLE_CONFIG["console_format"],
|
||||
file_format=CHAT_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("heartflow_processor", config=processor_config)
|
||||
logger = get_logger("chat")
|
||||
|
||||
|
||||
class HeartFCProcessor:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import random
|
||||
from ...config.config import global_config
|
||||
from src.common.logger import get_module_logger
|
||||
from src.common.logger_manager import get_logger
|
||||
from ...individuality.individuality import Individuality
|
||||
from src.plugins.utils.prompt_builder import Prompt, global_prompt_manager
|
||||
from src.plugins.utils.chat_message_builder import build_readable_messages, get_raw_msg_before_timestamp_with_chat
|
||||
|
|
@ -15,7 +15,7 @@ from ..memory_system.Hippocampus import HippocampusManager
|
|||
from ..schedule.schedule_generator import bot_schedule
|
||||
from ..knowledge.knowledge_lib import qa_manager
|
||||
|
||||
logger = get_module_logger("prompt")
|
||||
logger = get_logger("prompt")
|
||||
|
||||
|
||||
def init_prompt():
|
||||
|
|
@ -55,6 +55,7 @@ def init_prompt():
|
|||
你的内心想法:
|
||||
{current_mind_block}
|
||||
{replan}
|
||||
{cycle_info_block}
|
||||
|
||||
请综合分析聊天内容和你看到的新消息,参考内心想法,使用'decide_reply_action'工具做出决策。决策时请注意:
|
||||
|
||||
|
|
|
|||
|
|
@ -14,19 +14,14 @@ from ..chat.message_sender import message_manager
|
|||
from ..chat.utils_image import image_path_to_base64
|
||||
from ..willing.willing_manager import willing_manager
|
||||
from maim_message import UserInfo, Seg
|
||||
from src.common.logger import get_module_logger, CHAT_STYLE_CONFIG, LogConfig
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.chat.chat_stream import ChatStream, chat_manager
|
||||
from src.plugins.person_info.relationship_manager import relationship_manager
|
||||
from src.plugins.respon_info_catcher.info_catcher import info_catcher_manager
|
||||
from src.plugins.utils.timer_calculator import Timer
|
||||
|
||||
# 定义日志配置
|
||||
chat_config = LogConfig(
|
||||
console_format=CHAT_STYLE_CONFIG["console_format"],
|
||||
file_format=CHAT_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("normal_chat", config=chat_config)
|
||||
logger = get_logger("chat")
|
||||
|
||||
|
||||
class NormalChat:
|
||||
|
|
|
|||
|
|
@ -6,17 +6,11 @@ from ..chat.message import MessageThinking
|
|||
from .heartflow_prompt_builder import prompt_builder
|
||||
from ..chat.utils import process_llm_response
|
||||
from ..utils.timer_calculator import Timer
|
||||
from src.common.logger import get_module_logger, LogConfig, LLM_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.respon_info_catcher.info_catcher import info_catcher_manager
|
||||
|
||||
# 定义日志配置
|
||||
llm_config = LogConfig(
|
||||
# 使用消息发送专用样式
|
||||
console_format=LLM_STYLE_CONFIG["console_format"],
|
||||
file_format=LLM_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("llm_generator", config=llm_config)
|
||||
logger = get_logger("llm")
|
||||
|
||||
|
||||
class NormalChatGenerator:
|
||||
|
|
|
|||
|
|
@ -1,10 +1,5 @@
|
|||
# Configure logger
|
||||
|
||||
from src.common.logger import get_module_logger, LogConfig, LPMM_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
|
||||
lpmm_log_config = LogConfig(
|
||||
console_format=LPMM_STYLE_CONFIG["console_format"],
|
||||
file_format=LPMM_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("LPMM", config=lpmm_log_config)
|
||||
logger = get_logger("lpmm")
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import numpy as np
|
|||
from collections import Counter
|
||||
from ...common.database import db
|
||||
from ...plugins.models.utils_model import LLMRequest
|
||||
from src.common.logger import get_module_logger, LogConfig, MEMORY_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from src.plugins.memory_system.sample_distribution import MemoryBuildScheduler # 分布生成器
|
||||
from .memory_config import MemoryConfig
|
||||
|
||||
|
|
@ -83,15 +83,7 @@ def cosine_similarity(v1, v2):
|
|||
return dot_product / (norm1 * norm2)
|
||||
|
||||
|
||||
# 定义日志配置
|
||||
memory_config = LogConfig(
|
||||
# 使用海马体专用样式
|
||||
console_format=MEMORY_STYLE_CONFIG["console_format"],
|
||||
file_format=MEMORY_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
|
||||
logger = get_module_logger("memory_system", config=memory_config)
|
||||
logger = get_logger("memory")
|
||||
|
||||
|
||||
class MemoryGraph:
|
||||
|
|
|
|||
|
|
@ -4,16 +4,12 @@ import time
|
|||
from dataclasses import dataclass
|
||||
|
||||
from ...config.config import global_config
|
||||
from src.common.logger import get_module_logger, LogConfig, MOOD_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from ..person_info.relationship_manager import relationship_manager
|
||||
from src.individuality.individuality import Individuality
|
||||
|
||||
mood_config = LogConfig(
|
||||
# 使用海马体专用样式
|
||||
console_format=MOOD_STYLE_CONFIG["console_format"],
|
||||
file_format=MOOD_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("mood_manager", config=mood_config)
|
||||
|
||||
logger = get_logger("mood")
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from src.common.logger import get_module_logger, LogConfig, PERSON_INFO_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from ...common.database import db
|
||||
import copy
|
||||
import hashlib
|
||||
|
|
@ -33,12 +33,8 @@ PersonInfoManager 类方法功能摘要:
|
|||
9. personal_habit_deduction - 定时推断个人习惯
|
||||
"""
|
||||
|
||||
person_info_log_config = LogConfig(
|
||||
console_format=PERSON_INFO_STYLE_CONFIG["console_format"],
|
||||
file_format=PERSON_INFO_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
|
||||
logger = get_module_logger("person_info", config=person_info_log_config)
|
||||
logger = get_logger("person_info")
|
||||
|
||||
person_info_default = {
|
||||
"person_id": None,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from src.common.logger import get_module_logger, LogConfig, RELATION_STYLE_CONFIG
|
||||
from src.common.logger_manager import get_logger
|
||||
from ..chat.chat_stream import ChatStream
|
||||
import math
|
||||
from bson.decimal128 import Decimal128
|
||||
|
|
@ -7,12 +7,8 @@ import time
|
|||
import re
|
||||
import traceback
|
||||
|
||||
relationship_config = LogConfig(
|
||||
# 使用关系专用样式
|
||||
console_format=RELATION_STYLE_CONFIG["console_format"],
|
||||
file_format=RELATION_STYLE_CONFIG["file_format"],
|
||||
)
|
||||
logger = get_module_logger("rel_manager", config=relationship_config)
|
||||
|
||||
logger = get_logger("relation")
|
||||
|
||||
|
||||
class RelationshipManager:
|
||||
|
|
|
|||
|
|
@ -213,6 +213,9 @@ def process_llm_tool_calls(response: List[Any], log_prefix: str = "") -> Tuple[b
|
|||
元组 (成功标志, 工具调用列表, 错误消息)
|
||||
"""
|
||||
# 确保响应格式正确
|
||||
print(response)
|
||||
print(11111111111111111)
|
||||
|
||||
if len(response) != 3:
|
||||
return False, [], f"LLM响应元素数量不正确: 预期3个元素,实际{len(response)}个"
|
||||
|
||||
|
|
@ -274,7 +277,17 @@ def process_llm_tool_response(
|
|||
if not success:
|
||||
return False, {}, error_msg
|
||||
|
||||
# 新增检查:确保响应包含预期的工具调用部分
|
||||
if len(normalized_response) != 3:
|
||||
# 如果长度不为3,说明LLM响应不包含工具调用部分,这在期望工具调用的上下文中是错误的
|
||||
error_msg = (
|
||||
f"LLM响应未包含预期的工具调用部分: 元素数量{len(normalized_response)},响应内容:{normalized_response}"
|
||||
)
|
||||
logger.warning(f"{log_prefix}{error_msg}")
|
||||
return False, {}, error_msg
|
||||
|
||||
# 使用新的工具调用处理函数
|
||||
# 此时已知 normalized_response 长度必定为 3
|
||||
success, valid_tool_calls, error_msg = process_llm_tool_calls(normalized_response, log_prefix)
|
||||
if not success:
|
||||
return False, {}, error_msg
|
||||
|
|
|
|||
Loading…
Reference in New Issue