我把 Anthropic 的 sandbox-runtime 接进了自己的 Agent,才发现沙箱不是一个开关
上一篇我写过,为什么我最后选了 Anthropic 的 sandbox-runtime。 当时想得很简单。 我不想为了一个个人 AI 助手,一上来就搞 Docker、远程 VM、完整容器平台。 那套当然更强,但成本也更高。 我真正想要的是一个轻量边界:Agent 还能在本机干活,但不能随便摸到宿主机所有东西。 所以我选了 Anthropic 的 runtime。 但真正接进去以后,我很快发现一件事: 沙箱不是一个开关。它更像 Agent runtime 里的一条执行边界。 尤其是 Molibot 这种形态。 它不只是一个网页里的聊天框。 它同时服务 Web、Telegram、飞书、微信、QQ。 里面还有 subagent、工具调用、审批恢复、长任务、会话持久化。 这时候真正难的,已经不是“怎么把命令放进沙箱跑”。 真正难的是: 当沙箱挡住 Agent 时,runtime 接下来应该怎么办? 这篇就记录一下,我把 sandbox-runtime 接进 Molibot 时踩过的几个坑。 我一开始只想给 bash 套一层沙箱 Molibot 是我自己做的本地优先 AI 助手。 它的核心不是某个聊天入口,而是一套共享 runtime: Web Chat 可以对话、传文件、看运行状态; Telegram、飞书、微信、QQ 都接到同一套 Agent; Agent 可以调用 bash、MCP、图片生成、搜索、subagent; 会话、设置、审批记录、任务记录都落在本地 JSON/SQLite。 所以我最开始的目标很克制: 先只管 Agent 和内置 subagent 的 bash; Browser、MCP、渠道收发先不进沙箱; 普通 shell 默认在 sandbox 里跑; 文件系统、网络、环境变量从设置页控制; 真要用宿主机能力,再走人工审批。 听起来是一个挺正常的工程任务。 ...