[ai-agent]环境简介之沙盒e2b vs daytona
所谓的环境的就是agent运行在哪里,或者是agent和那里进行交互。
最常见的环境就是本地开发环境,也就是个人主机,但是存在问题就是没有办法出网和横向扩展。
在沙盒之前也是有其他选择的:
云服务器,
虚拟机,
docker都看起来是个是个不错的想法,而且我一开始的想法也是docker。
agent要么是运行在docker里面,要么是和docker里面的内容进行交互。
但是后来又发现了沙盒的概念,目前来看沙盒比docker还要轻量级。
常见的沙盒厂商有哪些?
e2b
e2b沙盒提供了http/websocket的端口访问
比如你开放了3000端口,那么可以通过一个http外网链接访问到这个端口服务。别小瞧这个特性,我认为这个特性很重要。
这个是e2b的架构图,不一定准,但是能辅助理解了。
daytona
daytona的沙盒好像也能外网访问。
getPreviewLink
e2b为什么能够通过外网访问sandbox的开放端口呢?
很显然,如果我的网络知识扎实一点就不会有这个疑问了。
端口之所以能够开放出来,显然是端口转发技术。
代码我看不懂,但是注释我看懂了,大概就是scan开放的tcp端口,然后使用socat进程进行流量转发
portf (port forward) periodaically scans opened TCP ports on the 127.0.0.1 (or localhost)
// and launches socat
process for every such port in the background.
// socat forward traffic from sourceIP
:port to the 127.0.0.1:port.
大概的意思是从,请求的host中提取出沙盒id和port端口号
大概流程:外部请求 → 负载均衡器 → Orchestrator代理 → 沙盒Host IP → 端口转发 → 沙盒内应用
关键词搜索和向量搜索
关键词搜索就是精确匹配
向量搜索可以实现语义匹配