OpenClaw核心源码解读:从Gateway到Pi-embedded的完整调用链分析
关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集
这篇文章不打算聊那些虚头巴脑的 Agent 概念,我们直接进代码。
如果你最近在折腾 OpenClaw,你一定会发现它的调用链路长得离谱。从前端下达一个指令,到最终在你的本地环境(甚至是一个嵌入式设备)执行,中间绕过了复杂的 Gateway 协议转换和 Pi-embedded 的环境隔离。
很多开发者反馈“明明配置了 Skill,但 Agent 就是不调”,或者“调用了但回显超时”。这大多是因为没搞清楚 OpenClaw 的三层解耦架构。
核心架构:不仅仅是 RPC 调用
OpenClaw 异于传统 Agent 框架(如 LangChain)的地方在于:它是一个“云端大脑+本地肢体”的结构。
-
Orchestrator (大脑): 通常部署在 GPU 集群或云端,负责 LLM 推理和任务拆解。 -
Gateway (协议桥): 负责鉴权、流量整形以及将 LLM 生成的 JSON 指令翻译成特定环境的指令集。 -
Pi-embedded (执行端): 运行在你的 Mac/Linux 或树莓派上,真正去跑 Python 脚本、截图或点按鼠标。
1. Gateway 层:指令的“净化器”
当你通过 API 或 Web UI 发送一条指令时,最先承接压力的是 src/gateway/server.py。
在源码中,你会看到一个关键的装饰器 @route_to_executor。Gateway 在这里做了一件极其重要的事:上下文压缩(Context Pruning)。
# 伪代码片段:gateway/dispatcher.pydefdispatch_task(payload):# 提取意图,过滤掉无用的对话历史 intent = extractor.analyze(payload.content)# 匹配最合适的 Pi 节点(可能有多个执行端) node_id = registry.get_active_node(payload.affinity)return forward_to_node(node_id, intent)
工程避坑点: 很多时候你的指令没响应,是因为 Gateway 层的 registry 没更新。OpenClaw 默认使用 Redis 维护节点心跳,如果你的 Redis 挂了或网络存在大延迟,指令就会在 Gateway 堆积。
2. 深入 Pi-embedded:它是如何“接管”电脑的?
这是 OpenClaw 最硬核的部分。进入 packages/pi-embedded/runtime,你会发现它并没有直接调用系统的 subprocess。
为了安全,它实现了一套名为 “Cell Isolation” 的沙箱机制。
核心逻辑:executor.py
Pi-embedded 接收到 Gateway 传来的二进制流后,会触发 ExecutionEngine。它包含两个核心模块:
-
Environment Snapshot: 在执行前先快照当前环境变量。 -
Skill Loader: 动态加载 .ocskill文件。
注意: 很多开发者在写自定义 Skill 时发现找不到第三方库。这是因为 Pi-embedded 默认在独立的 venv 中运行。你需要在项目的
claws.yaml中明确定义dependencies,由执行端在启动时自动静默安装。
3. 完整调用链追踪(Trace Log)
我们以“帮我查一下 CPU 温度并生成图表”为例,看看数据是怎么流转的:
-
Orchestrator: 识别出需要 System_Monitor技能,生成 JSON:{"action": "get_cpu_metrics", "format": "chart"}。 -
Gateway: 验证该指令的签名,查找在线的 Pi 节点,封装成 Protobuf 协议通过 WebSocket 发送。 -
Pi-embedded (Receiver): 收到消息,解包。 -
Sandbox: 启动一个临时 Python 进程,将本地传感器权限挂载进去。 -
Skill Execution: 执行 get_temp.py。 -
Callback: 结果(图片二进制流)顺着原路返回。
人工智能技术学习交流群
伙伴们,对AI测试、大模型评测、质量保障感兴趣吗?我们建了一个 「人工智能测试开发交流群」,专门用来探讨相关技术、分享资料、互通有无。无论你是正在实践还是好奇探索,都欢迎扫码加入,一起抱团成长!期待与你交流!👇

4. 源码中隐藏的“彩蛋”与坑
在阅读 core/utils/telemetry.py 时,你会发现 OpenClaw 默认开启了性能上报。虽然它是开源的,但在企业级部署时,务必将 OC_ANONYMOUS_REPORT 设为 false。
另外,长连接抖动是目前该框架最大的痛点。如果你的 Pi 节点在内网,建议在 Gateway 前置一个 Nginx,并开启 proxy_set_header Upgrade $http_upgrade;,否则你会遇到没完没了的 1006 错误。
总结
OpenClaw 并不是一个简单的包装层,它的 Gateway-Pi 架构解决的是 Agent 在现实物理世界落地的“最后一公里”问题。
如果你想深入研究,我建议先从 packages/pi-embedded 里的 protocol.py 看起,那里定义了万物互联的语言。
推荐学习
AI Agent进阶 OpenClaw + Claude Code公开课,手把手带你掌握 从“网页操控”到“终端自主编程”的执行力。
扫码进群,报名学习。

关于我们
霍格沃兹测试开发学社,隶属于 测吧(北京)科技有限公司,是一个面向软件测试爱好者的技术交流社区。
学社围绕现代软件测试工程体系展开,内容涵盖软件测试入门、自动化测试、性能测试、接口测试、测试开发、全栈测试,以及人工智能测试与 AI 在测试工程中的应用实践。
我们关注测试工程能力的系统化建设,包括 Python 自动化测试、Java 自动化测试、Web 与 App 自动化、持续集成与质量体系建设,同时探索 AI 驱动的测试设计、用例生成、自动化执行与质量分析方法,沉淀可复用、可落地的测试开发工程经验。
在技术社区与工程实践之外,学社还参与测试工程人才培养体系建设,面向高校提供测试实训平台与实践支持,组织开展 “火焰杯” 软件测试相关技术赛事,并探索以能力为导向的人才培养模式,包括高校学员先学习、就业后付款的实践路径。
同时,学社结合真实行业需求,为在职测试工程师与高潜学员提供名企大厂 1v1 私教服务,用于个性化能力提升与工程实践指导。
夜雨聆风
