所謂的環境的就是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 → 端口轉發 → 沙盒內應用
關鍵詞搜索和向量搜索
關鍵詞搜索就是精確匹配
向量搜索可以實現語義匹配