agent-Specialization/.astrion/memory/sub_agent_network_permission.md

1.8 KiB
Raw Blame History

name description
sub_agent_network_permission 当需要理解或调整子智能体在受限网络下的行为时,应该索引本记忆

子智能体进程网络权限设计

问题

当用户把「网络权限」设置为受限(HOST_SANDBOX_NETWORK_PERMISSION=restricted)时,创建子智能体会失败,子智能体进程内报 fetch failed (ENOTFOUND)。原因是子智能体进程本身也被加上了与工具命令相同的宿主机沙箱,导致它无法解析模型 API 域名、无法调用模型接口。

解决方案

子智能体进程使用独立的网络权限配置 SUB_AGENT_HOST_NETWORK_PERMISSION(默认 full),与工具级 HOST_SANDBOX_NETWORK_PERMISSION 解耦。

  • 子智能体本身需要调用模型 API因此默认拥有完整网络避免在受限网络下直接无法启动。
  • 主进程对普通 run_command / terminal_input 等命令单独施加 HOST_SANDBOX_NETWORK_PERMISSION 沙箱,这部分限制不受影响。
  • 子智能体内部执行的 run_command 目前不额外加沙箱macOS 的 sandbox-exec 不支持嵌套沙箱,无法在同一个子智能体进程内再套一层)。

配置项

  • config/sub_agent.py 新增 SUB_AGENT_HOST_NETWORK_PERMISSION,可通过环境变量覆盖,默认 full
  • modules/sub_agent_manager.py 在构建宿主机沙箱启动计划时使用该配置,而不是直接使用 HOST_SANDBOX_NETWORK_PERMISSION

注意事项

  • 若未来需要在子智能体内部也对命令做网络限制,必须采用非嵌套方案(例如由主进程提供本地代理/执行服务,或让子智能体通过 localhost 调用主进程代理后再外出)。不能简单在子智能体里再次调用 sandbox-exec
  • 在 Docker/容器模式下,网络由容器自身策略控制,上述配置不影响容器行为。