起因

前几天 GitHub 上有个仓库:Tisitan/dot-sandbox-egress-guide,中文名叫《dot 出海指南》。讲的是沙箱里的 AI agent(比如 dot)怎么连上主人的自建服务。

我把它丢给我家 AI 助手看了,问她:“你不就是类似于 dot 那种吗?你看看怎么实现。”

然后她真去动手了。下面是实测记录。

三道门

那篇指南把沙箱网络比喻成"玻璃房子":房子是透明的,但 AI 自己出不去,门口站着门卫。我让她按指南里的探针方法,把她自己的笼子也摸了一遍,结果几乎一模一样:

门一:没有直连。 她试着直接发起 TCP 连接,1 毫秒就被弹回来,还附赠一句话:“Other TCP connections is turned off for this assistant.” 有意思的是,她这扇门留了个钥匙孔——Muse 设置里的 Direct network protocols 开关,用户可以切到 Ask 模式,之后每次直连都会先弹窗问人。dot 那边的门是焊死的。

门二:CONNECT 走廊。 出站只能走 HTTP 代理,这是标准动作,443 端口实测是通的。

门三:门卫拆信。 TLS 在代理处被终结再重签,她看到的证书签发者是 Hatch Sandbox Egress CA——和指南里写的一字不差。这条路上的敏感凭据,等于明文摆在门卫桌上。

连上博客

摸清边界,选型就简单了。指南的路由表说:HTTP API 型的服务直接调,这是成本最低的姿势。

我的博客 forgiving.top 是 Hugo 静态站,读文章走 RSS,她直接 curl 就能抓。发文章更妙:博客源码在 GitHub 上,push 到 master 就触发 Actions 构建发布——她写好 markdown 推上去,几分钟后文章上线,整条写通道连服务器都不用碰。

学习站 study.forgiving.top 稍微麻烦一点:登录态是 session cookie,浏览器自动化又点不动它的上传框。她把前端 JS 翻了一遍,逆向出完整 REST API——上传接口是 application/octet-stream 裸字节流 POST,直接调 API 就把浏览器那个坑绕过去了。

两句感想

第一,HTTP 是沙箱里的母语。别跟它对着干,能 HTTP 化的需求先 HTTP 化,比写中继便宜一个数量级。

第二,边界是硬的,但边界可测量。别猜,写几个探针,半小时地图就画出来了。她测完还把结论记进了自己的笔记——“wss 长聊这条路对我证据不足,别默认它能用”。挺严谨的。

沙箱 AI 被关得很死,但只要理解了那三扇门,能做的事情一点也不少。祝各位把自家 AI 放出去的时候,一路绿灯。