feat(actions): 支持同时进行回复与其他动作

重构了动作执行流程,以支持更丰富的多动作组合,例如在发送文本回复的同时发送一个表情。

主要变更:
- **执行流程**: 在 `CycleProcessor` 中,将动作分为“回复”和“其他”两类。系统会先串行执行回复动作,再并行执行所有其他动作,确保了核心回复的优先性。
- **规划逻辑**: 在 `Planner` 中优化了提示词,并增加后处理步骤,以鼓励并确保在回复时触发补充性动作(如100%概率的emoji)。
- **emoji动作**: 重构了表情选择逻辑,现在会评估所有可用的表情,而不仅仅是随机抽样,提高了选择的准确性。
- **修复**: 修复了 `ActionModifier` 中随机激活概率为100%的动作可能不触发的bug。
This commit is contained in:
tt-P607
2025-09-09 15:37:49 +08:00
parent f6f6735691
commit 98a6cba33e
5 changed files with 120 additions and 82 deletions

View File

@@ -46,7 +46,7 @@ class SetEmojiLikeAction(BaseAction):
# === 基本信息(必须填写)===
action_name = "set_emoji_like"
action_description = "消息设置表情回应/贴表情"
action_description = "一个已存在的消息添加点赞或表情回应(也叫‘贴表情"
activation_type = ActionActivationType.ALWAYS # 消息接收时激活(?)
chat_type_allow = ChatType.GROUP
parallel_action = True
@@ -64,10 +64,9 @@ class SetEmojiLikeAction(BaseAction):
"set": "是否设置回应 (True/False)",
}
action_require = [
"当需要对消息贴表情时使用",
"当你想回应某条消息但又不想发文字时使用",
"不要连续发送,如果你已经贴表情包,就不要选择此动作",
"当你想用贴表情回应某条消息时使用",
"当需要对一个已存在消息进行‘贴表情’回应时使用",
"这是一个对旧消息的操作,而不是发送新消息",
"如果你想发送一个新的表情包消息,请使用 'emoji' 动作",
]
llm_judge_prompt = """
判定是否需要使用贴表情动作的条件: