From 2a870c5a355ef022718f295439080a3784012084 Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Sat, 29 Aug 2026 15:17:42 +0800 Subject: [PATCH] =?UTF-8?q?fix(multi-agent):=20=E5=A4=9A=E6=99=BA=E8=83=BD?= =?UTF-8?q?=E4=BD=93=E5=AF=B9=E8=AF=9D=E5=88=9B=E5=BB=BA=E7=BB=A7=E6=89=BF?= =?UTF-8?q?=20work=5Fmode=EF=BC=8C/new=20=E5=88=87=E6=8D=A2=E5=90=8E?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E5=AF=B9=E8=AF=9D=E4=B8=8D=E5=86=8D=E5=9B=9E?= =?UTF-8?q?=E8=90=BD=E9=BB=98=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Astrion powered by DeepSeek-V4-Flash --- server/multi_agent.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/server/multi_agent.py b/server/multi_agent.py index bdc7bc3e..6a403b57 100644 --- a/server/multi_agent.py +++ b/server/multi_agent.py @@ -354,6 +354,18 @@ def create_multi_agent_conversation(): default_permission_mode = (prefs or {}).get("default_permission_mode") if default_permission_mode not in ("readonly", "approval", "auto_approval", "unrestricted"): 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) @@ -380,8 +392,10 @@ def create_multi_agent_conversation(): initial_messages=[], model_key=(prefs or {}).get("default_model") or getattr(terminal, "model_key", None), 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")(), + "work_mode": safe_work_mode, + "pre_plan_permission_mode": safe_pre_plan_permission, "multi_agent_mode": True, "reasoning_effort": ma_effort, },