fix: stop per-turn todo and permission system injections
This commit is contained in:
parent
ccb7128867
commit
fa81585fe8
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user