Openclaw 使用了 2 周,发现了很多问题,明明告诉过它怎么做,第二天又忘记了,很简单的事情,思考了很长时间,最终还不是自己想要的....

作为程序员出身的我,必须要想办法解决这些问题。
Openclaw 是一个开源项目,既然开源,咱就能看到它的代码,从代码中找问题答案,这是每个程序员都有的技能。
说干就干,计划从今天开始,开始阅读 Openclaw 的源码。除了openClaw开发之旅以外,准备再开发一个专题:OpenClaw源码学习,如果你是程序员出身,欢迎加入一起讨论。
说在前面:
在阅读源码前,需要先知道 Openclaw 项目的地址是什么?

克隆源码:
git clone https://github.com/openclaw/openclaw.git另外,因为openclaw 是依赖 pi-mono 开源项目的,而且这个项目才是很新项目,openclaw 实际是对 pi-mono 项目的一个产品化封装。所以我们在学习 opanclaw 源码前,要先去学习 pi-mono项目。

克隆源码:
git clone https://github.com/badlogic/pi-mono.git开始正式学习
我一般在看开源项目时,会借助 deepwiki 网站对项目有一个整体的了解。
首先通过deepwiki初步了解pi-mono项目情况,方法就是把 pi-mono项目在 github 上的地址,换成 deepwiki 地址。
https://deepwiki.com/badlogic/pi-mono.git
对于英语不好的小伙伴,推荐安装一下 google 的沉浸式翻译插件

可以快速将页面英文翻译对应的中文,便于阅读。
有了初步的了解后,在google搜索一下 pi-mono openclaw 看看有什么好的资料,当然也可以使用元宝、deepseek、豆包网站,再了解一下。当由于大模型介绍不是非常详细,有时可能还出现幻觉。我还是比较喜欢通过 google 进行精准搜索查询资料。

一般情况,如果第一个不是 github,那么一定是一个点记录比较高的链接,也从某种程度说明信息比较受欢迎,进去看看😎。

确实是一个不错的文章:
https://zhuanlan.zhihu.com/p/2009031121334207641我简单总计一下,有兴趣的小伙伴还是自己阅读一下,比较长,但干货满满。
作者用独特的视角阐述了软件工程的极简思路,写得非常有价值。
1. 详细介绍了pi-mono的四层架构
pi-coding-agent (会话管理、主题、上下文文件) ← CLI 工具层pi-tui (差分渲染、组件系统、不闪烁) ← 终端 UI 层pi-agent-core (工具执行、事件流、验证) ← Agent 逻辑层pi-ai (多提供商 API、上下文切换、成本跟踪) ← LLM 抽象层
有趣的设计思想:
整合了市场多家LLM提供商的API,磨平接口差异。
pi-mono 不只是保留聊天记录,还会把不同提供商专有的消息格式做转换。解决了终端闪烁问题。
设计了会话管理,通过树状结构管理session关系,并且可以从任何一个节点fork一个新方向。
需要计划就写到文件里就是计划。需要多任务并行就用tmux 开几个窗口就行。需要调用外部工具则使用bash 一行命令搞定。
2. OpenClaw 的成功更多是产品化封装的工程决策,它不是算法创新。
OpenClaw 的核心是一个 Gateway,但不是那种轻量的 API 网关,而是一个长生命周期的守护进程。
Gateway 做的事情包括:维护各渠道连接、暴露 typed WebSocket API、做 schema 校验、发事件流。
另外,解释了为什么不用python,因为openclaw要解决的是io并发的问题,这是node的天然能力。对于python来说,它更多是解决数据清洗和处理,或者向量检索等方面的问题。
不是说openclaw不要用python,在的沙盒中,是需要可以执行python脚本的。

设计
Gateway 架构:多渠道接入(飞书/Telegram等)+ typed WebSocket + schema 校验
串行队列(Lane Queue):保证复杂任务回复不乱序
文件化记忆:用 Markdown(USER.md/SOUL.md/MEMORY.md 等)实现可见、可改、可回滚记忆
Hooks + Git:自动注入、自动沉淀、版本可追踪,形成“可解释状态机”
价值
真正壁垒是大量“脏活累活”的产品完成度(渠道适配、重试、触发、容错等)。
Local First 击中企业隐私与可控诉求。
3. NanoClaw 是一个用python语言复刻openclaw的开源项目,信任优先,宁可少功能,也可审计与强隔离。
特点如下:
核心代码约千行,可快速通读
容器级隔离(Apple Container 做系统级容器隔离)
更偏“代码即配置”,弱化复杂配置体系

有了上面的了解,可以对pi-mono和openclaw有一个大概的认识,二者的关系,以及各自承担的任务。
这些对于后续学习源码会有很大的帮助,今天先写这么多,后面会持续更新我的学习源码过程,欢迎一起探讨,让你的小龙虾更好的服务你!

夜雨聆风