目标
用最小原型验证核心假设:agent 通过 Supabase Realtime 远程操控用户电脑上的 sandbox,延迟和体验是否可接受。
背景
当前 agent runtime 和 sandbox 强耦合在同一进程。若要支持云端 sandbox 或用户本机 sandbox,需要通过网络通信。本 PoC 验证 Supabase Realtime broadcast channel 作为通信层的可行性。
架构
┌─────────────────┐ Supabase Realtime ┌──────────────────┐
│ Server │ (WebSocket) │ 用户电脑 │
│ │ │ │
│ LangChain Agent │◄═══════════════════►│ Electron App │
│ - LLM 调用 │ channel: │ - 执行 shell │
│ - tool 决策 │ sandbox:{session} │ - 读写文件 │
│ - 结果推理 │ │ - 返回结果 │
└─────────────────┘ └──────────────────┘
通信协议(JSON over Supabase Realtime broadcast)
延迟预估
| 场景 |
WebSocket RTT |
50 次 fs 操作总开销 |
占 agent run 比例 |
| 同机 localhost |
~0.1ms |
~5ms |
<0.01% |
| 云内网 |
~1-2ms |
~100ms |
<0.5% |
| 用户本机(公网) |
~10-50ms |
~2.5s |
~5% |
可进一步优化:批量 fs 操作、目录树 prefetch、文件缓存。
优势(对比 OpenClaw "agent-inside-sandbox" 模式)
|
Agent inside sandbox |
Agent remote + daemon |
| 安全 |
LLM API key 暴露给 sandbox |
key 留在中心服务器 |
| sandbox 端重量 |
需要完整 Python + agent 依赖 |
极轻量 daemon(几百行) |
| 升级 |
每个 sandbox 都要更新 agent |
中心更新一处 |
| 监控 |
分散 |
集中 |
三个组件
| 组件 |
技术栈 |
预估代码量 |
| Agent 端 |
LangChain + 自定义 Tool(read_file / write_file / shell_exec),Tool 内部 publish 到 Realtime channel 并 await 结果 |
~200 行 Python |
| Electron 端(sandbox-daemon) |
Supabase JS client 监听 channel,收到命令后 fs.* / child_process.exec,结果 broadcast 回去 |
~200 行 TypeScript |
| 通信层 |
Supabase Realtime broadcast channel(已部署,零额外基础设施) |
0 |
验证指标
不在 PoC 范围
- 生产级错误处理、权限控制
- sandbox 生命周期管理(mycel-container)
- 多 sandbox 并发
- 文件传输优化(大文件、二进制文件)
目标
用最小原型验证核心假设:agent 通过 Supabase Realtime 远程操控用户电脑上的 sandbox,延迟和体验是否可接受。
背景
当前 agent runtime 和 sandbox 强耦合在同一进程。若要支持云端 sandbox 或用户本机 sandbox,需要通过网络通信。本 PoC 验证 Supabase Realtime broadcast channel 作为通信层的可行性。
架构
通信协议(JSON over Supabase Realtime broadcast)
延迟预估
可进一步优化:批量 fs 操作、目录树 prefetch、文件缓存。
优势(对比 OpenClaw "agent-inside-sandbox" 模式)
三个组件
fs.*/child_process.exec,结果 broadcast 回去验证指标
不在 PoC 范围