🚀 龙虾新手指南

OpenClaw源码级解析:3大核心模块实现跨平台AI Agent快速搭建

发布时间:2026-09-08 分类: 龙虾新手指南
摘要:OpenClaw源码级拆解:3个核心模块,5分钟搭出跨平台AI Agent卡点在哪用AutoGen写一个“查天气+发微信通知”的Agent,光是配LLM、定义角色、处理消息循环、适配不同系统命令,就容易卡在TypeError: 'NoneType' object is not callable。换台Mac或Linux机器,脚本直接崩——路径分隔符、shell调用方式、权限...

OpenClaw源码级解析:3大核心模块

OpenClaw源码级拆解:3个核心模块,5分钟搭出跨平台AI Agent

卡点在哪

用AutoGen写一个“查天气+发微信通知”的Agent,光是配LLM、定义角色、处理消息循环、适配不同系统命令,就容易卡在TypeError: 'NoneType' object is not callable。换台Mac或Linux机器,脚本直接崩——路径分隔符、shell调用方式、权限模型全得重改。

它怎么解

OpenClaw(yitb.com/openclaw)不堆封装。它把AI Agent最常卡住的三件事,拆成三个可读、可改、可替换的模块:

  • 消息路由层:不用if/elif硬编码,靠规则引擎自动分发消息
  • 插件系统:像插USB设备一样加功能(天气、微信、截图、Shell执行)
  • OS抽象层:同一段代码,在Windows/Mac/Linux上自动调用对应API

它不追求全能,但保证:你写的第一个Agent,就能跨平台跑起来


从零启动一个“自动截图+OCR+存为Markdown”的Agent

1. 安装并跑通最小实例

pip install openclaw
openclaw init my-agent
cd my-agent
openclaw run

✅ 关键在这:openclaw init生成的agent.py里,已经预置了OS抽象层初始化代码:

from openclaw.os import OS
os_layer = OS()  # 自动检测当前系统,返回 WindowsOS / DarwinOS / LinuxOS 实例

不用手写platform.system(),也不用操心os.path.join()在Windows下拼错路径。

2. 添加截图+OCR插件(3行代码)

编辑 plugins/__init__.py,加入:

from openclaw.plugins.screenshot import ScreenshotPlugin
from openclaw.plugins.ocr import OCRPlugin

# 注册插件(自动注入到所有Agent上下文)
register_plugin(ScreenshotPlugin())
register_plugin(OCRPlugin())

✅ 安全点在这:每个插件都继承BasePlugin,必须实现is_compatible()方法——OCR插件在没装Tesseract的机器上会静默禁用,不抛错。

3. 定义消息路由规则(非硬编码)

修改 routes.yaml

- when: "用户说'截当前屏幕'"
  then: 
    - plugin: screenshot
    - plugin: ocr
    - action: save_as_markdown

✅ 比AutoGen灵活在哪?OpenClaw的路由引擎基于ruamel.yaml解析+正则匹配,不依赖LLM输出格式。哪怕LLM返回“帮我截个图!”,也能被.*截.*屏.*规则捕获。

4. 写业务逻辑(跨平台安全)

actions/save_as_markdown.py 中:

from openclaw.os import OS
import time

def save_as_markdown(image_path: str, text: str):
    # OS层自动处理路径和文件操作
    safe_path = OS().join("outputs", f"note_{int(time.time())}.md")
    with OS().open(safe_path, "w") as f:
        f.write(f"# 截图OCR结果\n![]({image_path})\n\n{text}")
    return f"已保存至 {safe_path}"

✅ 关键点:OS().open() 在Windows下用codecs.open()防乱码,在Mac/Linux下用io.open()保Unicode,你完全无感。


真机验证效果

运行后对Agent说:“截当前屏幕” → 瞬间生成outputs/note_171xxxx.md,内容含截图链接和识别文字。
在同事的Mac上git clone项目,pip install -e .后直接openclaw run——无需改一行代码,照样工作

对比AutoGen:同样需求需手动写3个ConversableAgent、自定义register_function、为每个OS重写subprocess.run()调用方式。


👉 Binance · OKX · Gate.io · HTX · Bitget

常见问题

Q:插件怎么自己写?比如加个“发钉钉通知”?
A:新建plugins/dingtalk.py,继承BasePlugin,实现execute()方法。调用self.config.get("webhook_url")读配置,用requests.post()发消息。注册后,routes.yaml里就能写plugin: dingtalk

Q:路由规则能支持LLM动态生成吗?
A:可以。OpenClaw预留LLMRouter类,把routes.yaml换成routes.py,用@llm_route("分析日志错误")装饰函数即可,不影响现有规则。

Q:OS抽象层能覆盖哪些差异?
A:已覆盖:路径拼接、文件编码、剪贴板读写(OS().clipboard_get())、后台进程启动(OS().spawn_background())、甚至Windows的PowerShell vs Mac的zsh默认shell切换。


下一步

你现在已掌握OpenClaw的“心脏结构”。下一步建议:

代码永远比文档诚实。打开你的终端,输入openclaw init demo && cd demo——这次,Agent该听你的了。

返回首页