fix(permission): 新建对话时优先加载个人空间偏好的默认权限模式
- core/web_terminal.py: create_new_conversation 中反转权限模式优先级, 优先使用 prefs.default_permission_mode,无效时再 fallback 到终端当前模式 - server/conversation.py: active_task 分支创建视图对话时同样使用用户偏好
This commit is contained in:
parent
bd338f7ad4
commit
a2a04b9529
@ -130,13 +130,14 @@ class WebTerminal(MainTerminal):
|
|||||||
logger.warning("忽略无效默认模型 %s: %s", preferred_model, exc)
|
logger.warning("忽略无效默认模型 %s: %s", preferred_model, exc)
|
||||||
|
|
||||||
preferred_mode = prefs.get("default_run_mode")
|
preferred_mode = prefs.get("default_run_mode")
|
||||||
preferred_permission_mode = None
|
preferred_permission_mode = prefs.get("default_permission_mode") or None
|
||||||
try:
|
if preferred_permission_mode not in ("readonly", "approval", "auto_approval", "unrestricted"):
|
||||||
preferred_permission_mode = self.get_permission_mode()
|
try:
|
||||||
except Exception:
|
preferred_permission_mode = self.get_permission_mode()
|
||||||
preferred_permission_mode = None
|
except Exception:
|
||||||
|
preferred_permission_mode = None
|
||||||
if not isinstance(preferred_permission_mode, str) or not preferred_permission_mode.strip():
|
if not isinstance(preferred_permission_mode, str) or not preferred_permission_mode.strip():
|
||||||
preferred_permission_mode = prefs.get("default_permission_mode") or "unrestricted"
|
preferred_permission_mode = "unrestricted"
|
||||||
if isinstance(preferred_mode, str) and preferred_mode.lower() in {"fast", "thinking", "deep"}:
|
if isinstance(preferred_mode, str) and preferred_mode.lower() in {"fast", "thinking", "deep"}:
|
||||||
try:
|
try:
|
||||||
self.set_run_mode(preferred_mode.lower())
|
self.set_run_mode(preferred_mode.lower())
|
||||||
|
|||||||
@ -482,6 +482,9 @@ def create_conversation(terminal: WebTerminal, workspace: UserWorkspace, usernam
|
|||||||
safe_run_mode = candidate if candidate in {"fast", "thinking", "deep"} else "fast"
|
safe_run_mode = candidate if candidate in {"fast", "thinking", "deep"} else "fast"
|
||||||
safe_thinking = bool(thinking_mode) if thinking_mode is not None else safe_run_mode != "fast"
|
safe_thinking = bool(thinking_mode) if thinking_mode is not None else safe_run_mode != "fast"
|
||||||
previous_cm_current = getattr(cm, "current_conversation_id", None)
|
previous_cm_current = getattr(cm, "current_conversation_id", None)
|
||||||
|
default_permission_mode = (prefs or {}).get("default_permission_mode")
|
||||||
|
if default_permission_mode not in ("readonly", "approval", "auto_approval", "unrestricted"):
|
||||||
|
default_permission_mode = None
|
||||||
conversation_id = cm.create_conversation(
|
conversation_id = cm.create_conversation(
|
||||||
project_path=str(workspace.project_path),
|
project_path=str(workspace.project_path),
|
||||||
thinking_mode=safe_thinking,
|
thinking_mode=safe_thinking,
|
||||||
@ -489,7 +492,7 @@ def create_conversation(terminal: WebTerminal, workspace: UserWorkspace, usernam
|
|||||||
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": getattr(terminal, "get_permission_mode", lambda: "unrestricted")(),
|
"permission_mode": default_permission_mode or getattr(terminal, "get_permission_mode", lambda: "unrestricted")(),
|
||||||
"execution_mode": getattr(terminal, "get_execution_mode", lambda: "sandbox")(),
|
"execution_mode": getattr(terminal, "get_execution_mode", lambda: "sandbox")(),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user