From fa81585fe8648b544d525493ba5ff7ae644a9dbc Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Sun, 12 Apr 2026 17:10:54 +0800 Subject: [PATCH] fix: stop per-turn todo and permission system injections --- core/main_terminal_parts/context.py | 53 ----------------------------- 1 file changed, 53 deletions(-) diff --git a/core/main_terminal_parts/context.py b/core/main_terminal_parts/context.py index 48480de..7020e71 100644 --- a/core/main_terminal_parts/context.py +++ b/core/main_terminal_parts/context.py @@ -19,8 +19,6 @@ try: TERMINAL_SANDBOX_MEMORY, PROJECT_MAX_STORAGE_MB, CUSTOM_TOOLS_ENABLED, - READONLY_RUN_COMMAND_ALLOWED, - READONLY_RUN_COMMAND_ALLOWED_GIT_SUBCOMMANDS, ) except ImportError: import sys @@ -41,8 +39,6 @@ except ImportError: TERMINAL_SANDBOX_MEMORY, PROJECT_MAX_STORAGE_MB, CUSTOM_TOOLS_ENABLED, - READONLY_RUN_COMMAND_ALLOWED, - READONLY_RUN_COMMAND_ALLOWED_GIT_SUBCOMMANDS, ) from modules.file_manager import FileManager @@ -171,11 +167,6 @@ class MainTerminalContextMixin: if workspace_system: messages.append({"role": "system", "content": workspace_system}) - if self.tool_category_states.get("todo", True): - todo_prompt = self.load_prompt("todo_guidelines").strip() - if todo_prompt: - messages.append({"role": "system", "content": todo_prompt}) - if self.tool_category_states.get("sub_agent", True): sub_agent_prompt = self.load_prompt("sub_agent_guidelines").strip() if sub_agent_prompt: @@ -298,56 +289,12 @@ class MainTerminalContextMixin: # 当前用户输入已经在conversation中了,不需要重复添加 - todo_message = self.context_manager.render_todo_system_message() - if todo_message: - messages.append({ - "role": "system", - "content": todo_message - }) - disabled_notice = self._format_disabled_tool_notice() if disabled_notice: messages.append({ "role": "system", "content": disabled_notice }) - permission_mode = "unrestricted" - try: - permission_mode = self.get_permission_mode() - except Exception: - permission_mode = str(getattr(self, "current_permission_mode", "unrestricted") or "unrestricted") - permission_label_map = { - "readonly": "只读", - "approval": "批准", - "unrestricted": "无限制", - } - permission_rules_map = { - "readonly": "", - "approval": "可调用全部工具,但对工作区文件进行修改的工具需经用户批准后执行;若 run_command/terminal_input 属于只读白名单命令则可直接执行;若用户拒绝,工具循环会停止。", - "unrestricted": "工具按常规流程执行,不额外拦截。", - } - readonly_cmds = [cmd for cmd in (READONLY_RUN_COMMAND_ALLOWED or ()) if cmd not in {"git"}] - readonly_cmds_text = "/".join(readonly_cmds) if readonly_cmds else "grep/find" - git_readonly_text = "/".join(READONLY_RUN_COMMAND_ALLOWED_GIT_SUBCOMMANDS or ()) - permission_rules_map["readonly"] = ( - "只允许读取/检索类工具;修改工作区的工具将被拒绝。" - f"run_command 仅允许只读命令({readonly_cmds_text}," - f"以及 git {git_readonly_text}),且禁止多指令拼接。" - ) - permission_prompt = self.load_prompt("permission_mode") - if permission_prompt: - try: - rendered_permission = permission_prompt.format( - permission_mode=permission_mode, - permission_mode_label=permission_label_map.get(permission_mode, permission_mode), - permission_rules=permission_rules_map.get(permission_mode, permission_rules_map["unrestricted"]), - ) - messages.append({ - "role": "system", - "content": rendered_permission, - }) - except Exception: - pass if shallow_replace_enabled: print(f"[ContextCompression] build_messages 替换tool占位符: {replaced_tool_count} 条") return messages