Coverage for merco/sandbox/__init__.py: 85%
13 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
1"""沙箱系统"""
3from .guard import ToolGuard, GuardRule, _DEFAULT_RULES
6def create_tool_guard(config=None) -> ToolGuard:
7 """从 MercoConfig 加载 sandbox_rules 创建 ToolGuard"""
8 if config is None:
9 from merco.core.config import MercoConfig
10 config = MercoConfig.load()
12 mode = getattr(config, 'sandbox_mode', 'ask')
13 user_rules = getattr(config, 'sandbox_rules', []) or []
14 return ToolGuard(mode=mode, user_rules=user_rules)
17# 模块级单例(默认配置)
18try:
19 tool_guard = create_tool_guard()
20except Exception:
21 # 配置未初始化时用默认值
22 tool_guard = ToolGuard(mode='ask', user_rules=[])
24__all__ = [
25 "ToolGuard",
26 "GuardRule",
27 "tool_guard",
28 "create_tool_guard",
29]