Skip to content

Commit 97ffbe5

Browse files
committed
feat:动作现在区分focus和normal,并且可选不同的激活策略
1 parent 2ce5114 commit 97ffbe5

25 files changed

Lines changed: 1180 additions & 855 deletions

CORRECTED_ARCHITECTURE.md

Lines changed: 129 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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
108161
random_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
122177
activation_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

Comments
 (0)