feat(proactive_thinking): 重构主动思考为由Planner直接决策
重构了主动思考的触发和决策流程。原有的通过生成特定prompt来启动思考循环的方式被移除,改为直接调用Planner的`PROACTIVE`模式。 - **Planner增强**: - 新增`PROACTIVE`聊天模式,用于处理主动思考场景。 - 为`PROACTIVE`模式设计了专用的prompt模板,整合了长期记忆、当前状态等信息。 - 引入`do_nothing`动作,允许Planner在分析后决定保持沉默。 - 增加从海马体(长期记忆)获取上下文的功能,为决策提供更丰富的背景。 - **ProactiveThinker简化**: - 移除了原有的prompt生成和调用`observe`的逻辑。 - 现在直接调用`action_planner.plan(mode=ChatMode.PROACTIVE)`来获取决策。 - 根据Planner返回的动作(如`do_nothing`或具体行动),决定是保持沉默还是执行计划。 - **CycleProcessor & Tracker调整**: - `CycleProcessor`新增`execute_plan`方法,用于执行一个已经由Planner预先制定好的计划。 - `CycleTracker`能够区分并标记由主动思考发起的循环(例如,cycle_id为 "1.p"),以便于追踪和分析。
This commit is contained in:
@@ -21,10 +21,13 @@ class CycleTracker:
|
||||
"""
|
||||
self.context = context
|
||||
|
||||
def start_cycle(self) -> Tuple[Dict[str, float], str]:
|
||||
def start_cycle(self, is_proactive: bool = False) -> Tuple[Dict[str, float], str]:
|
||||
"""
|
||||
开始新的思考循环
|
||||
|
||||
Args:
|
||||
is_proactive: 标记这个循环是否由主动思考发起
|
||||
|
||||
Returns:
|
||||
tuple: (循环计时器字典, 思考ID字符串)
|
||||
|
||||
@@ -34,8 +37,11 @@ class CycleTracker:
|
||||
- 生成唯一的思考ID
|
||||
- 初始化循环计时器
|
||||
"""
|
||||
self.context.cycle_counter += 1
|
||||
self.context.current_cycle_detail = CycleDetail(self.context.cycle_counter)
|
||||
if not is_proactive:
|
||||
self.context.cycle_counter += 1
|
||||
|
||||
cycle_id = self.context.cycle_counter if not is_proactive else f"{self.context.cycle_counter}.p"
|
||||
self.context.current_cycle_detail = CycleDetail(cycle_id)
|
||||
self.context.current_cycle_detail.thinking_id = f"tid{str(round(time.time(), 2))}"
|
||||
cycle_timers = {}
|
||||
return cycle_timers, self.context.current_cycle_detail.thinking_id
|
||||
|
||||
Reference in New Issue
Block a user