fix(multi-agent): 多智能体对话创建继承 work_mode,/new 切换后新建对话不再回落默认

Co-authored-by: Astrion powered by DeepSeek-V4-Flash <astrion-agent@users.noreply.github.com>
This commit is contained in:
JOJO 2026-08-29 15:17:42 +08:00
parent 69c5953fe7
commit 2a870c5a35

View File

@ -354,6 +354,18 @@ def create_multi_agent_conversation():
default_permission_mode = (prefs or {}).get("default_permission_mode") default_permission_mode = (prefs or {}).get("default_permission_mode")
if default_permission_mode not in ("readonly", "approval", "auto_approval", "unrestricted"): if default_permission_mode not in ("readonly", "approval", "auto_approval", "unrestricted"):
default_permission_mode = None default_permission_mode = None
# 运行模式work_mode沿用 terminal 当前值(与正常创建路径一致,
# /new 页面切换后新对话继承plan 档不变量 ⇒ 权限必须只读,
# 同时记录进入前权限供离开 plan 恢复
safe_work_mode = getattr(terminal, "get_work_mode", lambda: "plan")()
if safe_work_mode not in ("plan", "ask", "execute"):
safe_work_mode = "plan"
safe_permission_mode = default_permission_mode or getattr(terminal, "get_permission_mode", lambda: "unrestricted")()
safe_pre_plan_permission = None
if safe_work_mode == "plan":
if safe_permission_mode != "readonly":
safe_pre_plan_permission = safe_permission_mode
safe_permission_mode = "readonly"
previous_cm_current = getattr(ctx_manager, "current_conversation_id", None) previous_cm_current = getattr(ctx_manager, "current_conversation_id", None)
@ -380,8 +392,10 @@ def create_multi_agent_conversation():
initial_messages=[], initial_messages=[],
model_key=(prefs or {}).get("default_model") or getattr(terminal, "model_key", None), model_key=(prefs or {}).get("default_model") or getattr(terminal, "model_key", None),
metadata_overrides={ metadata_overrides={
"permission_mode": default_permission_mode or getattr(terminal, "get_permission_mode", lambda: "unrestricted")(), "permission_mode": safe_permission_mode,
"execution_mode": getattr(terminal, "get_execution_mode", lambda: "sandbox")(), "execution_mode": getattr(terminal, "get_execution_mode", lambda: "sandbox")(),
"work_mode": safe_work_mode,
"pre_plan_permission_mode": safe_pre_plan_permission,
"multi_agent_mode": True, "multi_agent_mode": True,
"reasoning_effort": ma_effort, "reasoning_effort": ma_effort,
}, },