feat(v3): T26 两级智能体(大模型规划/审查 + 本地小模型执行,D7)
- run_dual 编排:规划者两阶段 JSON(plan/review,失败回喂重试一次再降级),
redo 时裁决意见回喂执行者,交接上限 agent.max_handoffs(默认 2)
- 交接文档 agent_runs/{id}/handoff.json(智能体版交流文本:instructions/acceptance/exchanges)
- /agent 新增 executor_pool_id;规划者==执行者条目拒绝;整体 token_cap 覆盖两级调用
- ToolLoop 增 emit_final 开关(内层循环不发终态,防前端 SSE 提前收口)
- 前端:执行者选择器 + phase/message 事件渲染(阶段徽标 + 双色消息卡)
- 测试 +3(done/redo/执行者故障),全量 277 passed
- fix(tests): test_config_get_put_reset 增加设置备份/恢复隔离,防止清掉用户真实配置
This commit is contained in:
@@ -413,6 +413,7 @@ class ToolLoop:
|
||||
token_cap: int = 0,
|
||||
on_event: Optional[Callable[[Dict[str, Any]], None]] = None,
|
||||
result_preview_chars: int = MAX_RESULT_CHARS,
|
||||
emit_final: bool = True,
|
||||
):
|
||||
self.tools = tools
|
||||
self.chat_fn = chat_fn
|
||||
@@ -420,8 +421,11 @@ class ToolLoop:
|
||||
self.token_cap = int(token_cap) # 0 = 不限
|
||||
self.on_event = on_event
|
||||
self.result_preview_chars = result_preview_chars
|
||||
self.emit_final = emit_final # 两级模式内层循环置 False,由外层统一收尾
|
||||
|
||||
def _emit(self, ev: Dict[str, Any]) -> None:
|
||||
if ev.get("type") == "final" and not self.emit_final:
|
||||
return # 内层循环不发终态事件(外层编排负责)
|
||||
if self.on_event is not None:
|
||||
try:
|
||||
self.on_event(ev)
|
||||
|
||||
Reference in New Issue
Block a user