ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Memoh架构揭秘(下):容器内gRPC Bridge如何为每个Agent打造隔离云电脑

Memoh架构揭秘(下):容器内gRPC Bridge如何为每个Agent打造隔离云电脑 Memoh架构揭秘下容器内gRPC Bridge如何为每个Agent打造隔离云电脑【免费下载链接】Memoh✨ The open-source multi-agent platform. Every agent gets its own computer, desktop, network, and long-term memory. You can bring your own key, or host your coding agent like Claude Code, Codex and so on.项目地址: https://gitcode.com/gh_mirrors/me/MemohMemoh 是一个开源多智能体Multi-Agent平台它的核心卖点是为每个 Agent 配一台专属云电脑独立的容器计算机、桌面环境、网络和长期记忆。你既可以自带模型 Key也可以托管 Claude Code、Codex 这类编码 Agent。这篇文章作为架构揭秘的下篇聚焦 Memoh 里最精妙的一块基础设施——运行在容器内部的gRPC Bridge。它像一道安检门让宿主机上的调度系统能安全地读文件、跑命令、开隧道同时把每个 Agent 牢牢锁在自己的隔离环境里。一、每个 Agent 一台独立云电脑 ️在 Memoh 中每个 BotAgent对应一个独立的 workspace 容器。你可以在控制台里看到这台云电脑的完整画像容器 ID、镜像如debian:bookworm-slim、运行状态、CPU/内存/存储用量。容器是隔离的边界但隔离不等于失联——宿主机需要把文件传进去、把命令跑起来、把结果拿回来。这个跨墙沟通的通道就是 gRPC Bridge。二、gRPC Bridge容器内唯一的官方大门 每个 workspace 容器启动时会自动拉起一个 bridge 进程源码位于 cmd/bridge/main.go。它同时扮演三个角色gRPC 服务器监听本地 socket接收宿主机的所有操作指令显示监督者在容器内维持一个可随时远程观看的虚拟桌面工具代理Tools Proxy为 Agent 的工具调用提供 loopback HTTP 入口Bridge 暴露的 12 个 gRPC 能力协议定义在 internal/workspace/bridgepb/bridge.proto 中ContainerService服务覆盖了云电脑操作的全部场景能力RPC用途文件操作ReadFile/WriteFile/Stat/Mkdir/Rename/DeleteFile宿主机像操作本地盘一样管理容器文件系统目录浏览ListDir支持分页与递归超大目录可设置上限提前熔断命令执行Exec双向流式支持 stdin 输入、实时 stdout/stderr、退出码甚至 PTY 伪终端与终端缩放原始字节流ReadRaw/WriteRaw大文件分块传输写入失败可中途 abort保证不留半成品文件TCP 隧道Tunnel宿主机可直达容器内任意 TCP 端口无需暴露网络反向 HTTPReverseHTTP让容器内的 Agent 主动回调宿主机的 API可以看到Exec采用双向流stream ExecInput/stream ExecOutput设计——这正是 Agent 执行长时间任务、交互式调试的关键输出产生即推送stdin 随时可追加还能按心跳帧报告进程存活状态。双通道通信Unix Socket 与严格 mTLSBridge 支持两种监听方式安全模型各不相同Unix Domain Socket默认socket 文件挂载在容器内/run/memoh/bridge.sock对应宿主机上每个 Bot 专属的dataRoot/run/botID/bridge.sock见 internal/workspace/manager.go 中的socketPath。它走文件系统权限的本地信任模型天然不暴露到网络。TCP 模式只允许绑定 loopback 地址一旦启用强制strict mTLS——TLS 材料缺失或损坏会直接拒绝启动绝不静默回退明文。mTLS 的身份验证非常讲究实现见 cmd/bridge/tls.go每个实例拥有两套独立 CA一套签发给服务端客户端一套签发给Bridge 服务器防止被攻破的 Agent 容器冒充宿主机调用 Bridge证书内嵌SPIFFE URI身份握手时额外校验客户端证书的 URI SAN 必须精确匹配本实例的 Memoh Server 身份——即使证书链合法身份对不上也直接拒绝证书材料由仓库内置工具生成cmd/gen-bridge-mtls/main.go采用 ECDSA P-256 算法私钥只落盘、绝不经过环境变量一句话总结UDS 靠文件权限信任邻居TCP 靠 mTLS 验明正身两条路都不留后门。三、Bridge 的隐藏技能一台能看见的云电脑 除了 gRPC 服务Bridge 还是容器内虚拟桌面的管家cmd/bridge/display.go拉起Xvnc虚拟显示服务器默认分辨率 1280×960RFB 端口只监听127.0.0.1自动选择桌面环境优先 XFCE最小镜像下回退到轻量窗口管理器twm桌面上预置终端窗口和Chrome 浏览器开启 CDP 调试端口 9222Agent 可以直接操作电脑内置健康监督循环每 5 秒检查桌面会话掉线自动重启RFB 就绪后再校验一次配合TunnelRPC宿主机的 RFB 客户端只需穿过 gRPC 隧道就能连上容器内的 VNC 端口——用户于是可以在 Web 界面里实时看到并操作 Agent 的桌面就像远程桌面一样。这正是 Memoh 宣传语中每个 Agent 都有自己的电脑的技术落地。四、宿主机侧连接池让通信又快又稳 ⚡宿主机一侧的客户端封装在 internal/workspace/bridge/client.go 中几个工程细节值得一提按 Bot ID 缓存连接Pool同一个 Agent 的多次操作复用同一条 gRPC 通道自动驱逐坏连接检测到 Shutdown / TransientFailure / 长时间卡在 Connecting 状态的连接会被清掉重建30 秒空闲心跳保活16MB 单消息上限兼顾交互流与大文件传输客户端统一挂载 OpenTelemetry 追踪但 Bridge 侧刻意不导出指标——容器里没有 collector追踪在宿主侧闭环即可见 docs/observability.md五、写在最后为什么这样设计 把 Bridge 放进容器而不是用 Docker API 直接 execMemoh 换来了三个好处隔离即默认所有操作都收敛到一个可审计的 gRPC 协议上宿主机的文件路径、命令、网络访问全部经过 Bridge 这个单一入口能力可扩展新增看屏幕跑浏览器回调 API等功能时只需扩展 proto容器内外各司其职多运行时兼容Docker、containerd 乃至 macOS 原生容器internal/container/只要按约定挂载 socket 目录就能接入同一套 Bridge 协议对于想运行多 Agent 的团队来说这套一 Agent 一容器 容器内 gRPC 桥的架构是目前兼顾强隔离与易用性的干净答案。如果你想动手体验可以 clone 仓库https://gitcode.com/gh_mirrors/me/Memoh参考 docs/development.md 跑起来在控制台亲眼看看自己 Agent 的那台云电脑。【免费下载链接】Memoh✨ The open-source multi-agent platform. Every agent gets its own computer, desktop, network, and long-term memory. You can bring your own key, or host your coding agent like Claude Code, Codex and so on.项目地址: https://gitcode.com/gh_mirrors/me/Memoh创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表