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

1"""沙箱系统""" 

2 

3from .guard import ToolGuard, GuardRule, _DEFAULT_RULES 

4 

5 

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() 

11 

12 mode = getattr(config, 'sandbox_mode', 'ask') 

13 user_rules = getattr(config, 'sandbox_rules', []) or [] 

14 return ToolGuard(mode=mode, user_rules=user_rules) 

15 

16 

17# 模块级单例(默认配置) 

18try: 

19 tool_guard = create_tool_guard() 

20except Exception: 

21 # 配置未初始化时用默认值 

22 tool_guard = ToolGuard(mode='ask', user_rules=[]) 

23 

24__all__ = [ 

25 "ToolGuard", 

26 "GuardRule", 

27 "tool_guard", 

28 "create_tool_guard", 

29]