OpenClaw 零基础入门:给AI装上"双手"和"眼睛"
一、引言:当AI不再"纸上谈兵"
你是否有过这样的幻想:对电脑说一句"帮我整理桌面文件",它就真的操控鼠标拖动图标;说一句"在浏览器里订下周三的机票",它就自动打开网页、填写日期、点击搜索?大语言模型(LLM)虽然聪明,但一直被困在"文本对话框"里,无法触碰真实的操作系统。
OpenClaw 正是为此而生的开源框架。它的名字灵感源于"爪子"(Claw)------象征AI主动抓取、操控数字世界的能力。简单来说,OpenClaw 是一套"AI计算机使用(Computer Use)"的标准化工具箱,它让大模型能够"看见"屏幕截图、规划鼠标与键盘动作,并通过代码执行这些操作,从而像人类一样使用电脑。
本文将带你从零开始,理解 OpenClaw 的核心原理,搭建开发环境,并编写第一个能真正移动鼠标、打开网页的 Python 脚本。无需AI底层数学知识,也无需复杂的深度学习背景,只要你懂一点 Python 基础,就能跟着上手。
二、OpenClaw 核心原理:用"三步循环"操控一切
抛开复杂的源码,OpenClaw 工作的底层逻辑极其简单,它模拟了人类操作电脑的感知-决策-行动闭环:
| 步骤 | 人类行为类比 | OpenClaw 技术实现 |
|---|---|---|
| 1. 感知(Perceive) | 看屏幕,观察图标和文字位置 | 截取屏幕截图,编码为Base64传给多模态大模型(如GPT-4o、Qwen-VL、Claude 3.5) |
| 2. 决策(Decide) | 大脑思考下一步:该点哪里?输入什么? | LLM分析截图,输出结构化动作指令 (JSON格式),如 {"action": "click", "x": 150, "y": 300} |
| 3. 行动(Act) | 手移动鼠标、敲键盘 | 解析JSON,调用底层库(PyAutoGUI / Playwright)执行系统级操作 |
这三步构成一个循环(Loop),直到AI认为任务完成(输出 action: "finish")。OpenClaw 的工程精髓,在于将LLM混乱的自然语言"翻译"为稳定的操作系统API调用。
三、零基础环境搭建(Windows / macOS)
开始之前,请确保你的电脑满足最低要求:Python 3.10 及以上 ,以及至少4GB空闲内存(用于加载模型或调用云端API)。
3.1 安装 Python 和虚拟环境(新手必看)
如果你从未接触过Python,请先去官网(python.org)下载安装包,安装时务必勾选 "Add Python to PATH" 。随后打开终端(Terminal / CMD),执行:
bash
# 创建项目文件夹
mkdir my_openclaw_project && cd my_openclaw_project
# 创建虚拟环境(隔离依赖,避免冲突)
python -m venv venv
# 激活虚拟环境(Windows)
venv\Scripts\activate
# 激活虚拟环境(macOS/Linux)
source venv/bin/activate
3.2 安装 OpenClaw 核心库
OpenClaw 官方推荐安装方式(假设项目已发布至PyPI,实际操作中可能需从GitHub克隆,此处以标准pip流程示例):
arduino
pip install open-claw
注意 :因操作系统权限限制,Windows用户需额外安装
pygetwindow和pyautogui的依赖:pip install pyautogui pygetwindow pynput。macOS用户需在"系统设置-隐私与安全性"中为终端开启辅助功能(Accessibility) 权限,否则无法模拟鼠标点击。
3.3 准备大模型API密钥(二选一)
OpenClaw 本身不包含大模型,它需要调用外部AI接口来"思考"。新手推荐使用云端API(效果最好):
- 方案A(OpenAI) :获取
OPENAI_API_KEY,使用gpt-4o模型(成本较高,但视觉识别最准)。 - 方案B(国产平替) :获取
DASHSCOPE_API_KEY(通义千问)或ZHIPUAI_API_KEY(智谱清言),它们支持视觉模型且对中文UI界面识别友好。
将密钥配置到环境变量(或在代码中直接赋值,但生产环境切勿硬编码):
ini
# Windows(CMD)
set OPENAI_API_KEY=sk-你的密钥
# macOS/Linux
export OPENAI_API_KEY="sk-你的密钥"
四、第一个"Hello World":让AI自动打开记事本并打字
下面,我们将编写一个真正可运行的 Python 脚本。它的任务是:打开系统记事本(Notepad),输入"Hello OpenClaw",然后保存文件。
4.1 基础脚本:感知 + 单次动作
ini
# 文件名: first_claw.py
import open_claw as claw
import pyautogui # 底层鼠标键盘控制
import time
# 1. 初始化OpenClaw的"执行器"(负责把动作指令变成真实操作)
executor = claw.Executor()
# 2. 定义我们要完成的任务(自然语言描述)
task = "请打开Windows记事本(或macOS的文本编辑),在空白区域输入'Hello OpenClaw,我成功了!',然后不要关闭。"
# 3. 获取当前屏幕截图(AI的"眼睛")
screenshot = claw.capture_screen() # 返回PIL Image对象
# 4. 调用多模态大模型进行决策(新手模式:单次推理)
prompt = f"""
你正在操控一台电脑。当前屏幕截图已附上。
用户任务:{task}
请根据截图,输出下一步最关键的鼠标/键盘操作指令。
必须以JSON格式输出:{{"action": "click"|"type"|"hotkey"|"finish", ...}}
如果还没找到目标,就输出 "action": "observe" 再描述原因。
"""
# 调用LLM(此处封装了API调用)
response = claw.ask_llm(
prompt=prompt,
image=screenshot,
model="gpt-4o" # 如果使用通义千问,替换为 "qwen-vl-max"
)
# 解析LLM返回的动作
action_data = claw.parse_action(response)
print(f"🤖 AI决定执行:{action_data}")
# 5. 执行动作(这就是"Claw"的爪子)
if action_data['action'] == 'click':
# 移动到指定坐标并点击
pyautogui.moveTo(action_data['x'], action_data['y'], duration=0.5)
pyautogui.click()
elif action_data['action'] == 'type':
pyautogui.write(action_data['text'], interval=0.05) # 逐字输入,像真人
elif action_data['action'] == 'hotkey':
pyautogui.hotkey(*action_data['keys']) # 例如 ['ctrl', 's'] 保存
else:
print("任务未完成或需要更多步骤。")
4.2 进阶:自动化闭环(让AI自己循环直到成功)
上面代码只运行了一次AI推理,如果AI说"没找到记事本图标",程序就停了。真正的智能体需要循环(Loop) 机制:
python
# 完整的循环式智能体(简化版)
def run_agent(task, max_steps=10):
for step in range(max_steps):
print(f"\n--- 第 {step+1} 步 ---")
screenshot = claw.capture_screen()
# 构建包含历史信息的上下文(为了让AI不重复犯错)
context = f"任务:{task}。当前是第{step+1}步,已执行动作历史:{history}"
response = claw.ask_llm(context, screenshot)
action = claw.parse_action(response)
# 执行
if action['action'] == 'finish':
print("✅ 任务完成!")
return True
elif action['action'] == 'observe':
print(f"👀 AI正在观察:{action.get('reason','...')}")
history.append(f"第{step+1}步观察:{action.get('reason')}")
else:
# 执行动作(调用系统API)
executor.do(action)
history.append(f"执行了{action}")
time.sleep(1) # 等待界面响应
print("❌ 达到最大步骤限制,任务可能失败。")
return False
# 启动你的第一个AI电脑助手!
if __name__ == "__main__":
# 注意:如果是Windows,请确保桌面有记事本快捷方式,或者提前手动打开记事本
run_agent("打开记事本程序,输入今天日期,然后最大化窗口。")
五、核心代码拆解(新手常问的"黑盒"解析)
5.1 OpenClaw 如何"看懂"坐标?
LLM看到的是像素图片,输出的是 {"x": 200, "y": 450}。OpenClaw 内部使用了一个关键技巧:屏幕坐标归一化 。它将屏幕分为100x100的网格,LLM输出网格坐标(0-100),然后由 Executor 根据当前屏幕分辨率(如1920x1080)等比放大为真实像素。这让AI无论在哪台电脑上都能精确指路。
5.2 安全性设计("防脱缰"机制)
为了防止AI误操作删除重要文件,OpenClaw 内置了动作白名单 和人工确认模式 。新手务必开启 safe_mode=True:
ini
executor = claw.Executor(safe_mode=True) # 执行高风险动作(如删除、格式化)前会暂停询问
5.3 如何让AI"打字"不出错?
中文输入常常因为输入法切换(中/英文)而失败。推荐代码强制使用剪贴板粘贴(Ctrl+V)替代逐字 write():
python
import pyperclip
def safe_type(text):
pyperclip.copy(text) # 复制到剪贴板
pyautogui.hotkey('ctrl', 'v') # 模拟粘贴,避开输入法干扰
六、实战小项目:自动整理桌面杂乱图标
掌握了基础,我们来做一个真正实用的任务:让AI将桌面(Desktop)上所有文件按"图片"、"文档"、"压缩包"分类放入对应文件夹。
这个任务不需要AI"看图"识别图标,而是需要AI调用系统命令(
os.listdir)。OpenClaw 的强大之处在于允许LLM自主决定是"点鼠标"还是"执行代码" 。这被称为 混合工具(Hybrid Tools) 模式。
python
import open_claw as claw
from open_claw.tools import register_tool # 自定义工具装饰器
# 1. 注册一个Python函数给AI调用(AI会像调用API一样调用它)
@register_tool(description="获取桌面上所有文件的名称列表")
def get_desktop_files():
import os
desktop = os.path.join(os.path.expanduser("~"), "Desktop")
return [f for f in os.listdir(desktop) if os.path.isfile(os.path.join(desktop, f))]
@register_tool(description="创建文件夹,如果已存在则忽略")
def create_folder(folder_name):
import os
desktop = os.path.join(os.path.expanduser("~"), "Desktop")
os.makedirs(os.path.join(desktop, folder_name), exist_ok=True)
return f"文件夹 {folder_name} 已就绪"
@register_tool(description="移动文件到指定文件夹")
def move_file(filename, target_folder):
import os, shutil
desktop = os.path.join(os.path.expanduser("~"), "Desktop")
src = os.path.join(desktop, filename)
dst = os.path.join(desktop, target_folder, filename)
if os.path.exists(src):
shutil.move(src, dst)
return f"移动成功:{filename}"
return "文件不存在"
# 2. 启动智能体,赋予它调用上述工具的权限
agent = claw.Agent(
tools=[get_desktop_files, create_folder, move_file], # 工具列表
instruction="你是一个桌面整理助手。请按扩展名分类:图片(jpg/png)归入'图片',文档(pdf/doc)归入'文档',zip/rar归入'压缩包'。"
)
# 3. 运行任务(这次全程鼠标不需要动,AI通过代码逻辑完成)
agent.run("请立即整理我的桌面。")
运行这段代码,你会发现AI全程没碰鼠标 ,纯靠逻辑判断就完成了整理。这便是 OpenClaw 的进阶魅力:Agent 能根据任务难度,自动在"图形界面操控"和"命令行/代码执行"之间选择最优路径。
七、常见踩坑与解决方案(来自生产环境的经验)
| 现象 | 根本原因 | 解决方案 |
|---|---|---|
| AI总是点偏按钮 | 截图分辨率与实际DPI缩放不一致(Windows缩放125%/150%) | 在初始化时强制设定屏幕缩放因子:claw.set_dpi_aware(True) |
| 循环中重复报错 | 每次传给AI的截图没有标注"之前动作的结果" | 在Prompt中加入上一步的反馈(如"上一步点击后窗口未弹出,请尝试双击") |
| API费用过高 | 每步都传完整大图(约1MB),GPT-4o计费昂贵 | 使用小图模式 :将截图压缩为512x512再传输;或切换至便宜的 qwen-vl-turbo |
| macOS权限弹窗 | 系统安全策略拦截鼠标控制 | 打开"系统设置-隐私-辅助功能",将终端/Python IDE加入白名单 |
八、学习路线图:从"能用"到"用好"
- 第1周(模仿) :跑通本文所有示例,理解
Perceive-Decide-Act循环。 - 第2周(改造) :将
ask_llm后端替换为本地开源的 MiniCPM-V 或 InternVL(零成本,但需GPU)。 - 第3周(场景化) :编写专门针对"浏览器自动化"的Prompt模板,结合
playwright库,让AI帮你自动填表、抢票(注意合法合规)。 - 第4周(稳定化) :加入异常重试 (Retry)和人类反馈(Human-in-the-loop) 机制,构建一个24小时运行的RPA(机器人流程自动化)看板。
九、结语:你正在打开"数字替身"的大门
OpenClaw 并不神秘,它不过是把"截图"、"调API"、"点鼠标"这三件事无缝粘合在了一起。但正是这简单的组合,第一次让大语言模型挣脱了文本牢笼,成为了能在真实操作系统中游走的"数字替身"。
作为初学者,你不需要成为AI专家,也不需要精通底层Transformer。你只需要像一个"驯兽师"一样,用清晰的 Prompt 告诉AI你要什么,用安全的沙箱环境约束它,用本文的代码模板驱动它。随着多模态模型能力的指数级提升,半年后,你的 OpenClaw 智能体或许真能独立完成"帮我做一份PPT"或"帮我修一下这张图"这样的复杂任务。
你的第一个任务:现在就把代码复制过去,看看它能不能帮你打开音乐软件放首歌。如果失败了,别灰心------调整Prompt中的描述词(例如把"打开音乐软件"改为"双击桌面的网易云音乐图标"),AI的理解力会大幅提升。这就是驯服"Claw"的乐趣所在!