长文本自动截断开关,绰号映射上下文长度配置

pull/937/head
Bakadax 2025-05-04 17:57:58 +08:00
parent 87f1637081
commit a96c2720dc
4 changed files with 34 additions and 18 deletions

View File

@ -244,6 +244,8 @@ class BotConfig:
default_factory=lambda: ["表情包", "图片", "回复", "聊天记录"]
) # 添加新的配置项默认值
long_message_auto_truncate: bool = True # HFC 模式过长消息自动截断,防止他人 prompt 恶意注入减少token消耗但可能损失图片/长文信息,按需选择状态(默认开启)
# mood
mood_update_interval: float = 1.0 # 情绪更新间隔 单位秒
mood_decay_rate: float = 0.95 # 情绪衰减率
@ -277,11 +279,12 @@ class BotConfig:
enable_pfc_chatting: bool = False # 是否启用PFC聊天
# Group Nickname
ENABLE_NICKNAME_MAPPING: bool = False # 绰号映射功能总开关
MAX_NICKNAMES_IN_PROMPT: int = 10 # Prompt 中最多注入的绰号数量
NICKNAME_PROBABILITY_SMOOTHING: int = 1 # 绰号加权随机选择的平滑因子
NICKNAME_QUEUE_MAX_SIZE: int = 100 # 绰号处理队列最大容量
NICKNAME_PROCESS_SLEEP_INTERVAL: float = 60 # 绰号处理进程休眠间隔(秒)
enable_nickname_mapping: bool = False # 绰号映射功能总开关
max_nicknames_in_prompt: int = 10 # Prompt 中最多注入的绰号数量
nickname_probability_smoothing: int = 1 # 绰号加权随机选择的平滑因子
nickname_queue_max_size: int = 100 # 绰号处理队列最大容量
nickname_process_sleep_interval: float = 60 # 绰号处理进程休眠间隔(秒)
nickname_observation_context_size: int = 30 # 绰号处理选中上下文长度
# 模型配置
llm_reasoning: dict[str, str] = field(default_factory=lambda: {})
@ -417,22 +420,26 @@ class BotConfig:
def group_nickname(parent: dict):
if config.INNER_VERSION in SpecifierSet(">=1.6.1.1"):
gn_config = parent.get("group_nickname", {})
config.ENABLE_NICKNAME_MAPPING = gn_config.get(
"enable_nickname_mapping", config.ENABLE_NICKNAME_MAPPING
group_nickname_config = parent.get("group_nickname", {})
config.enable_nickname_mapping = group_nickname_config.get(
"enable_nickname_mapping", config.enable_nickname_mapping
)
config.MAX_NICKNAMES_IN_PROMPT = gn_config.get(
"max_nicknames_in_prompt", config.MAX_NICKNAMES_IN_PROMPT
config.max_nicknames_in_prompt = group_nickname_config.get(
"max_nicknames_in_prompt", config.max_nicknames_in_prompt
)
config.NICKNAME_PROBABILITY_SMOOTHING = gn_config.get(
"nickname_probability_smoothing", config.NICKNAME_PROBABILITY_SMOOTHING
config.nickname_probability_smoothing = group_nickname_config.get(
"nickname_probability_smoothing", config.nickname_probability_smoothing
)
config.NICKNAME_QUEUE_MAX_SIZE = gn_config.get(
"nickname_queue_max_size", config.NICKNAME_QUEUE_MAX_SIZE
config.nickname_queue_max_size = group_nickname_config.get(
"nickname_queue_max_size", config.nickname_queue_max_size
)
config.NICKNAME_PROCESS_SLEEP_INTERVAL = gn_config.get(
"nickname_process_sleep_interval", config.NICKNAME_PROCESS_SLEEP_INTERVAL
config.nickname_process_sleep_interval = group_nickname_config.get(
"nickname_process_sleep_interval", config.nickname_process_sleep_interval
)
if config.INNER_VERSION in SpecifierSet(">=1.6.1.3"):
config.nickname_observation_context_size = group_nickname_config.get(
"nickname_observation_context_size", config.nickname_observation_context_size
)
def bot(parent: dict):
# 机器人基础配置
@ -620,6 +627,10 @@ class BotConfig:
config.consolidate_memory_percentage = memory_config.get(
"consolidate_memory_percentage", config.consolidate_memory_percentage
)
if config.INNER_VERSION in SpecifierSet(">=1.6.1.3"):
config.long_message_auto_truncate = memory_config.get(
"long_message_auto_truncate", config.long_message_auto_truncate
)
def remote(parent: dict):
remote_config = parent["remote"]

View File

@ -205,7 +205,7 @@ class NicknameManager:
log_prefix = f"[{current_chat_stream.stream_id}]"
try:
# 1. 获取历史记录
history_limit = getattr(self.config, "NICKNAME_ANALYSIS_HISTORY_LIMIT", 30)
history_limit = getattr(self.config, "NICKNAME_ANALYSIS_HISTORY_LIMIT", global_config.nickname_observation_context_size)
history_messages = get_raw_msg_before_timestamp_with_chat(
chat_id=current_chat_stream.stream_id,
timestamp=time.time(),

View File

@ -205,6 +205,8 @@ async def _build_readable_messages_internal(
message_details_raw.sort(key=lambda x: x[0]) # 按时间戳(第一个元素)升序排序,越早的消息排在前面
# 应用截断逻辑 (如果 truncate 为 True)
if not global_config.long_message_auto_truncate:
truncate = False
message_details: List[Tuple[float, str, str]] = []
n_messages = len(message_details_raw)
if truncate and n_messages > 0:

View File

@ -1,5 +1,5 @@
[inner]
version = "1.6.1.2"
version = "1.6.1.3"
#----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读----
#如果你想要修改配置文件请在修改后将version的值进行变更
@ -131,6 +131,7 @@ max_nicknames_in_prompt = 10 # Prompt 中最多注入的绰号数量防止to
nickname_probability_smoothing = 1 # 绰号加权随机选择的平滑因子
nickname_queue_max_size = 100 # 绰号处理队列最大容量
nickname_process_sleep_interval = 60 # 绰号处理进程休眠间隔(秒)
nickname_observation_context_size = 30 # 绰号处理选中上下文长度
[memory]
build_memory_interval = 2000 # 记忆构建间隔 单位秒 间隔越低,麦麦学习越多,但是冗余信息也会增多
@ -152,6 +153,8 @@ memory_ban_words = [
# "403","张三"
]
long_message_auto_truncate = true # HFC 模式过长消息自动截断,防止他人 prompt 恶意注入减少token消耗但可能损失图片/长文信息,按需选择状态(默认开启)
[mood]
mood_update_interval = 1.0 # 情绪更新间隔 单位秒
mood_decay_rate = 0.95 # 情绪衰减率