优化表情包删除逻辑,确保成功删除记录后返回正确的结果。同时,更新聊天提示模板,新增日程和心情信息,以提升聊天互动的自然性和趣味性(希望能更好的回复)

This commit is contained in:
minecraft1024a
2025-08-13 16:10:45 +08:00
committed by Windpicker-owo
parent e6499e2fa7
commit 62e00d4dc0
2 changed files with 41 additions and 5 deletions

View File

@@ -21,18 +21,35 @@ from src.chat.planner_actions.action_manager import ActionManager
from src.chat.message_receive.chat_stream import get_chat_manager
from src.plugin_system.base.component_types import ActionInfo, ChatMode, ComponentType
from src.plugin_system.core.component_registry import component_registry
from src.common.schedule_manager import schedule_manager
from src.mood.mood_manager import mood_manager
logger = get_logger("planner")
install(extra_lines=3)
def init_prompt():
Prompt(
"""
Prompt(
"""
{schedule_block}
{mood_block}
{time_block}
{identity_block}
现在需要根据聊天内容选择的合适的action来参与聊天
的核心任务是积极地在对话中寻找参与机会,像一个真正的群成员一样,自然地融入并活跃气氛。你的目标是让对话更有趣、更顺畅
判断标准如下(重要性依次递减):
1. **直接互动**:当有人直接 @你、回复你、或明确提到你的名字 {bot_name} 时,你应该优先回应。
2. **扩展对话**
* 当讨论的话题与你的知识、身份或兴趣相关时,积极分享你的见解。
* 当用户的言论中透露出求助、困惑、好奇或强烈情绪时,主动提供帮助、解答或表达关心。
* 当对话出现模糊的观点或不明确的信息时,可以主动提问,寻求澄清。
3. **主动引导**
* 如果对话陷入长时间的沉默或冷场,你可以主动开启一个你认为大家可能感兴趣的新话题。
* 可以适时分享一些有趣的事实、笑话或与当前氛围相符的内容。
4. **发言边界与时机 (Speaking Boundaries and Timing)**
* **保持礼貌距离**:避免在短时间内连续发言,给他人留出空间。如果对话节奏过快或话题非常私人,选择观察而非强行加入。
根据以上判断选择最合适的action来参与聊天。
{chat_context_description},以下是具体的聊天内容
{chat_content_block}
@@ -346,6 +363,18 @@ class ActionPlanner:
action_options_block = ""
# 先定义 schedule_block 和 mood_block这些在主模板中需要使用
schedule_block = ""
if global_config.schedule.enable:
current_activity = schedule_manager.get_current_activity()
if current_activity:
schedule_block = f"你当前正在:{current_activity}"
mood_block = ""
if global_config.mood.enable_mood:
chat_mood = mood_manager.get_mood_by_chat_id(self.chat_id)
mood_block = f"你现在的心情是:{chat_mood.mood_state}"
for using_actions_name, using_actions_info in current_available_actions.items():
if using_actions_info.action_parameters:
param_text = "\n"
@@ -362,6 +391,8 @@ class ActionPlanner:
using_action_prompt = await global_prompt_manager.get_prompt_async("action_prompt")
using_action_prompt = using_action_prompt.format(
schedule_block=schedule_block,
mood_block=mood_block,
action_name=using_actions_name,
action_description=using_actions_info.description,
action_parameters=param_text,
@@ -384,6 +415,8 @@ class ActionPlanner:
planner_prompt_template = await global_prompt_manager.get_prompt_async("planner_prompt")
prompt = planner_prompt_template.format(
schedule_block=schedule_block,
mood_block=mood_block,
time_block=time_block,
chat_context_description=chat_context_description,
chat_content_block=chat_content_block,
@@ -393,6 +426,7 @@ class ActionPlanner:
action_options_text=action_options_block,
moderation_prompt=moderation_prompt_block,
identity_block=identity_block,
bot_name=bot_name,
)
return prompt, message_id_list
except Exception as e: