safety.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. """
  2. agent67.tools.safety — 安全机制
  3. """
  4. DANGEROUS_PATTERNS = [
  5. "rm -rf /", "rm -rf ~", "rm -rf .", "sudo rm -rf",
  6. "dd if=", "mkfs", "format c:",
  7. "> /dev/sd", ":(){ :|:& };:", # fork bomb
  8. "chmod -R 777 /", "wget -O- | sh", "curl | sh",
  9. "shutdown", "reboot", "halt",
  10. "diskutil eraseDisk", "diskutil partitionDisk",
  11. "launchctl unload", "csrutil disable",
  12. "defaults delete /",
  13. ]
  14. HIGH_RISK_KEYWORDS = [
  15. "sudo", "rm ", "kill ", "pkill", "killall",
  16. "mv /", "chmod", "chown",
  17. "brew uninstall", "pip uninstall",
  18. "npm uninstall -g",
  19. ]
  20. def is_dangerous(cmd: str) -> bool:
  21. """检查命令是否危险(绝对禁止执行)"""
  22. cmd_lower = cmd.lower().strip()
  23. for pattern in DANGEROUS_PATTERNS:
  24. if pattern.lower() in cmd_lower:
  25. return True
  26. return False
  27. def needs_confirmation(cmd: str) -> bool:
  28. """检查命令是否需要用户确认"""
  29. cmd_lower = cmd.lower().strip()
  30. for keyword in HIGH_RISK_KEYWORDS:
  31. if keyword.lower() in cmd_lower:
  32. return True
  33. return False
  34. def ask_user_confirm(action_desc: str) -> bool:
  35. """请求用户确认高风险操作"""
  36. print(f"\n⚠️ 高风险操作: {action_desc}")
  37. response = input(" 确认执行?(y/N): ").strip().lower()
  38. return response in ("y", "yes", "是")