@@ -39,7 +39,7 @@ async def modify_actions_task():
3939
4040** 处理内容:**
4141- 传统观察处理(循环历史分析、类型匹配等)
42- - 激活类型判定(ALWAYS, RANDOM, LLM_JUDGE, KEYWORD )
42+ - 双激活类型判定(Focus模式和Normal模式分别处理 )
4343- 并行LLM判定
4444- 智能缓存
4545- 动态关键词收集
@@ -94,41 +94,123 @@ for action_name, action_info in llm_judge_actions.items():
9494 # 检查消息中的关键词匹配
9595```
9696
97+ ## 双激活类型系统 🆕
98+
99+ ### 系统设计理念
100+ ** Focus模式** 和 ** Normal模式** 采用不同的激活策略:
101+ - ** Focus模式** : 智能化优先,支持复杂的LLM判定
102+ - ** Normal模式** : 性能优先,使用快速的关键词和随机触发
103+
104+ ### 双激活类型配置
105+ ``` python
106+ class MyAction (BaseAction ):
107+ action_name = " my_action"
108+ action_description = " 我的动作"
109+
110+ # Focus模式激活类型(支持LLM_JUDGE)
111+ focus_activation_type = ActionActivationType.LLM_JUDGE
112+
113+ # Normal模式激活类型(建议使用KEYWORD/RANDOM/ALWAYS)
114+ normal_activation_type = ActionActivationType.KEYWORD
115+ activation_keywords = [" 关键词1" , " keyword" ]
116+
117+ # 模式启用控制
118+ mode_enable = ChatMode.ALL # 在所有模式下启用
119+
120+ # 并行执行控制
121+ parallel_action = False # 是否与回复并行执行
122+ ```
123+
124+ ### 模式启用类型 (ChatMode)
125+ ``` python
126+ from src.chat.chat_mode import ChatMode
127+
128+ # 可选值:
129+ mode_enable = ChatMode.FOCUS # 仅在Focus模式启用
130+ mode_enable = ChatMode.NORMAL # 仅在Normal模式启用
131+ mode_enable = ChatMode.ALL # 在所有模式启用(默认)
132+ ```
133+
134+ ### 并行动作系统 🆕
135+ ``` python
136+ # 并行动作:可以与回复生成同时进行
137+ parallel_action = True # 不会阻止回复生成
138+
139+ # 串行动作:会替代回复生成
140+ parallel_action = False # 默认值,传统行为
141+ ```
142+
143+ ** 并行动作的优势:**
144+ - 提升用户体验(同时获得回复和动作执行)
145+ - 减少响应延迟
146+ - 适用于情感表达、状态变更等辅助性动作
147+
97148## 四种激活类型
98149
99150### 1. ALWAYS - 始终激活
100151``` python
101- activation_type = ActionActivationType.ALWAYS
152+ focus_activation_type = ActionActivationType.ALWAYS
153+ normal_activation_type = ActionActivationType.ALWAYS
102154# 基础动作,如 reply, no_reply
103155```
104156
105157### 2. RANDOM - 随机激活
106158``` python
107- activation_type = ActionActivationType.RANDOM
159+ focus_activation_type = ActionActivationType.RANDOM
160+ normal_activation_type = ActionActivationType.RANDOM
108161random_probability = 0.3 # 激活概率
109162# 用于增加惊喜元素,如随机表情
110163```
111164
112165### 3. LLM_JUDGE - 智能判定
113166``` python
114- activation_type = ActionActivationType.LLM_JUDGE
115- llm_judge_prompt = " 自定义判定提示词"
167+ focus_activation_type = ActionActivationType.LLM_JUDGE
168+ # 注意:Normal模式不建议使用LLM_JUDGE,会发出警告
169+ normal_activation_type = ActionActivationType.KEYWORD
116170# 需要理解上下文的复杂动作,如情感表达
117171```
118172
119173### 4. KEYWORD - 关键词触发
120174``` python
121- activation_type = ActionActivationType.KEYWORD
175+ focus_activation_type = ActionActivationType.KEYWORD
176+ normal_activation_type = ActionActivationType.KEYWORD
122177activation_keywords = [" 画" , " 图片" , " 生成" ]
123178# 明确指令触发的动作,如图片生成
124179```
125180
181+ ## 推荐配置模式
182+
183+ ### 模式1:智能自适应
184+ ``` python
185+ # Focus模式使用智能判定,Normal模式使用关键词
186+ focus_activation_type = ActionActivationType.LLM_JUDGE
187+ normal_activation_type = ActionActivationType.KEYWORD
188+ activation_keywords = [" 相关" , " 关键词" ]
189+ ```
190+
191+ ### 模式2:统一关键词
192+ ``` python
193+ # 两个模式都使用关键词,确保一致性
194+ focus_activation_type = ActionActivationType.KEYWORD
195+ normal_activation_type = ActionActivationType.KEYWORD
196+ activation_keywords = [" 画" , " 图片" , " 生成" ]
197+ ```
198+
199+ ### 模式3:Focus专享
200+ ``` python
201+ # 仅在Focus模式启用的智能功能
202+ focus_activation_type = ActionActivationType.LLM_JUDGE
203+ normal_activation_type = ActionActivationType.ALWAYS # 不会生效
204+ mode_enable = ChatMode.FOCUS
205+ ```
206+
126207## 性能提升
127208
128209### 理论性能改进
129210- ** 并行LLM判定** : 1.5-2x 提升
130211- ** 智能缓存** : 20-30% 额外提升
131- - ** 整体预期** : 2-3x 性能提升
212+ - ** 双模式优化** : Normal模式额外1.5x提升
213+ - ** 整体预期** : 3-5x 性能提升
132214
133215### 缓存策略
134216- ** 缓存键** : ` {action_name}_{context_hash} `
@@ -137,19 +219,43 @@ activation_keywords = ["画", "图片", "生成"]
137219
138220## 向后兼容性
139221
140- ### 废弃方法处理
222+ ### ⚠️ 重大变更说明
223+ ** 旧的 ` action_activation_type ` 属性已被移除** ,必须更新为新的双激活类型系统:
224+
225+ #### 迁移指南
141226``` python
142- async def process_actions_for_planner (...):
143- """ [已废弃] 此方法现在已被整合到 modify_actions() 中"""
144- logger.warning(" process_actions_for_planner() 已废弃" )
145- # 仍然返回结果以保持兼容性
146- return current_using_actions
227+ # 旧的配置(已废弃)
228+ class OldAction (BaseAction ):
229+ action_activation_type = ActionActivationType.LLM_JUDGE # ❌ 已移除
230+
231+ # 新的配置(必须使用)
232+ class NewAction (BaseAction ):
233+ focus_activation_type = ActionActivationType.LLM_JUDGE # ✅ Focus模式
234+ normal_activation_type = ActionActivationType.KEYWORD # ✅ Normal模式
235+ activation_keywords = [" 相关" , " 关键词" ]
236+ mode_enable = ChatMode.ALL
237+ parallel_action = False
147238```
148239
149- ### 迁移指南
150- 1 . ** 主循环** : 使用 ` modify_actions(observations, messages, context, extra) `
151- 2 . ** 规划器** : 直接使用 ` ActionManager.get_using_actions() `
152- 3 . ** 移除** : 规划器中对 ` process_actions_for_planner() ` 的调用
240+ #### 快速迁移脚本
241+ 对于简单的迁移,可以使用以下模式:
242+ ``` python
243+ # 如果原来是 ALWAYS
244+ focus_activation_type = ActionActivationType.ALWAYS
245+ normal_activation_type = ActionActivationType.ALWAYS
246+
247+ # 如果原来是 LLM_JUDGE
248+ focus_activation_type = ActionActivationType.LLM_JUDGE
249+ normal_activation_type = ActionActivationType.KEYWORD # 需要添加关键词
250+
251+ # 如果原来是 KEYWORD
252+ focus_activation_type = ActionActivationType.KEYWORD
253+ normal_activation_type = ActionActivationType.KEYWORD
254+
255+ # 如果原来是 RANDOM
256+ focus_activation_type = ActionActivationType.RANDOM
257+ normal_activation_type = ActionActivationType.RANDOM
258+ ```
153259
154260## 测试验证
155261
@@ -159,11 +265,12 @@ python test_corrected_architecture.py
159265```
160266
161267### 测试内容
162- - 架构正确性验证
268+ - 双激活类型系统验证
163269- 数据一致性检查
164270- 职责分离确认
165271- 性能测试
166272- 向后兼容性验证
273+ - 并行动作功能验证
167274
168275## 优势总结
169276
@@ -175,15 +282,18 @@ python test_corrected_architecture.py
175282### 2. 高性能
176283- ** 并行处理** : 多个LLM判定同时进行
177284- ** 智能缓存** : 避免重复计算
285+ - ** 双模式优化** : Focus智能化,Normal快速化
178286
179287### 3. 智能化
180288- ** 动态配置** : 从动作配置中收集关键词
181289- ** 上下文感知** : 基于聊天内容智能激活
182290- ** 冲突避免** : 防止重复激活
291+ - ** 模式自适应** : 根据聊天模式选择最优策略
183292
184293### 4. 可扩展性
185294- ** 插件式** : 新的激活类型易于添加
186295- ** 配置驱动** : 通过配置控制行为
187296- ** 模块化** : 各组件独立可测试
297+ - ** 双模式支持** : 灵活适应不同使用场景
188298
189- 这个修正后的架构实现了正确的职责分工,确保了主循环负责动作管理,规划器专注于决策,同时集成了并行判定和智能缓存等优化功能 。
299+ 这个修正后的架构实现了正确的职责分工,确保了主循环负责动作管理,规划器专注于决策,同时集成了双激活类型、并行判定和智能缓存等优化功能 。
0 commit comments