先说个结论:OpenClaw(前身叫 Clawdbot,社区里也有人直接叫它 Clawd)这玩意儿,是我最近小半年折腾过最上头的一个开源智能体框架。它本质上是一个跑在你本地的 AI 代理(Agent),你能给它接上 DeepSeek、Ollama 或者任意主流大模型,然后它就变成了一个能自己写代码、改文件、跑命令、调 API 的“数字员工”。而真正让它从“玩具”变成“生产力工具”的关键,就是接入 skills——也就是给这个智能体安装各种专项技能包。
这篇博文我不讲虚的,直接把我从零开始在 Windows 11 上完整部署 OpenClaw、再把 skills 跑通的整个过程,包括每一步的命令、每一个配置文件的写法、踩过的坑,全部拆开揉碎写给你。目标人群就两类:一类是刚接触 AI 智能体、想在本地搭一套自己玩的小白;另一类是已经在用 Claude Code 之类的工具、想换个更开放更自由的开源方案的老手。你只要照着抄,基本能一次跑通。
1. 部署前的完整认知:OpenClaw、Clawdbot 和 skills 的关系
1.1 OpenClaw 到底是什么,别被名字绕晕
你可能会在 GitHub 上搜到两个名字:Clawdbot 和 OpenClaw。先说清楚,这俩其实是同一个项目在不同阶段的名字。早期项目叫 Clawdbot,后面因为社区生态扩展、作者把它重构成一个更通用的智能体框架,就改名叫 OpenClaw 了。所以你看到旧教程里写 Clawdbot,新教程里写 OpenClaw,不用疑惑,操作基本通用。
从技术架构上看,OpenClaw 的核心是一个Agent Runtime(智能体运行时),它负责三件最重要的事:
- 连接大模型后端:它可以对接 Anthropic 的 Claude、DeepSeek、通义千问,也可以通过 Ollama 接本地跑的开源模型(比如 Qwen、Llama 系列)。
- 提供工具调用循环(Agentic Loop):智能体不是只回你一段话,而是能反复调用工具、观察工具结果、决定下一步动作,直到完成你的指令。
- 管理 Skills 与 MCP 工具:skills 是“技能”,MCP(Model Context Protocol)是“工具插槽”,两者配合,让智能体拥有操作真实世界的能力。
我打个比方:OpenClaw 就像一个拥有驾照的司机,大模型是发动机,而 skills 是车上的各种装备。没有 skills 的裸车也能开,装上 skills 之后才能拉货、越野、跑赛道。
1.2 为什么一定要折腾 skills,裸用根本不是一个量级
很多人刚接触 OpenClaw 的时候,第一反应是“我直接聊不就行了吗?干嘛要装 skills”。其实这个想法我一开始也有,直到我对比了一次,才发现差距有多大。
裸用状态的 OpenClaw,你让它“写一个爬虫脚本”,它能写,但只会给你一段代码,然后让你自己复制、保存、运行。它没有“操作文件系统”的能力,也不知道你的项目目录结构长什么样。
装上 skills 之后,事情完全变了。你给它一个任务,它会自己读目录、创建文件、写代码、执行命令、看到报错再修复、跑测试,整个过程就像旁边坐了个真的程序员。
skills 本质是一组指令包,每个 skill 都有一个SKILL.md文件,里面写清楚“这个技能是干什么的、在什么场景下触发、步骤是什么、有什么约束”。OpenClaw 会根据你当前的任务描述,自动匹配并加载相关的 skill,然后按里面的 SOP 来完成任务。
现在社区里已经有大量现成 skills 可以用,比如:
- baoyu 技能包:博主 baoyu 整理的中文开发技能合集,包含前端开发、写作辅助、数据分析等多个方向,中文用户起步首选。
- superpower skills:英文社区非常火的超能力合集,里面是一整套工程化的 skill 规范,适合进阶用户自己改。
- 数学建模 skills:专门面向数学建模比赛场景,能自动生成 LaTeX 公式、绘制图表、输出建模论文框架。
- 渗透测试 skills:安全方向的专项技能,包含信息收集、漏洞扫描等流程化操作(仅限合规授权场景使用)。
可以这么说:skills 生态就是 OpenClaw 的灵魂。装好一个高质量 skill,等于给你的智能体请了一个专业领域的老师傅。
2. 部署前的准备工作与环境检查
2.1 Windows 11 环境必须装哪些基础组件
我默认你的电脑是 Windows 11 系统,且之前没有折腾过任何开发环境。如果你现在是一个全新系统,需要按顺序装好下面这些东西:
| 组件 | 版本建议 | 作用 | 安装方式 |
|---|---|---|---|
| Git | 2.40 以上 | 拉取 OpenClaw 源码和 skills 仓库 | 官网安装包,一路 Next |
| Node.js | 18 或 20 LTS | OpenClaw 运行依赖的 JS 运行时 | 官网安装包,注意勾选 Add to PATH |
| Docker Desktop | 4.30 以上 | 部分 skills 需要容器环境(比如数据库类) | 官网安装包,安装后需开启 WSL2 后端 |
| Python | 3.10 以上 | 大量 skills 脚本由 Python 编写 | 微软商店直接装,省去配 PATH 的麻烦 |
| VS Code | 最新版 | 编辑配置文件和 SKILL.md | 微软商店或官网 |
这里我说一个我踩过的坑:很多人装 Node.js 的时候,习惯性地一路点下一步,结果忽略了安装程序里“Add to PATH”的选项,导致后面在 PowerShell 里输入node -v永远提示“不是内部或外部命令”。装完 Node 之后,务必先打开一个全新的 PowerShell 窗口,输入下面两个命令验证:
node -v npm -v能正常输出版本号,才说明安装成功。Docker 的话,我建议安装完先打开一次,把 WSL2 的后端初始化流程走完,避免后面 OpenClaw 执行容器类 skill 时报 Docker 未启动的错。
2.2 模型接入方案选型:DeepSeek 还是本地 Ollama
OpenClaw 本身不携带模型能力,它必须外接一个大模型作为大脑。目前主流的接入方案有两条路,我建议你根据自己的电脑配置和预算来选。
方案 A:云端 API(推荐新手首选)
用 DeepSeek 的 API,注册一个账号,充值几十块钱,拿到一个sk-开头的 Key。这个方案的优点是:模型能力强、响应速度快、本地零负载。缺点是:需要联网,且是付费的,虽然 DeepSeek 的价格非常便宜,但对于完全零基础的玩家,还是需要走一次支付流程。
方案 B:Ollama 本地模型(适合有显卡的朋友)
如果你手头有 NVIDIA 显卡,且显存在 8GB 以上,那么强烈建议装 Ollama,拉一个qwen2.5-coder:14b或者deepseek-r1:14b的模型下来。这个方案的好处是:完全免费、数据不出本机、响应不受网络影响。缺点也很明显,就是你笔记本风扇会转得飞起,生成速度相比云端 API 有明显差距。
我个人的建议是:如果你只是学习、折腾,先用 DeepSeek API,等把 OpenClaw 各个功能玩明白之后,再折腾 Ollama 本地部署。因为本地模型在指令遵循能力上弱一些,你排查问题的难度会急剧上升。
关于模型选型,还有一点要提醒你:OpenClaw 的官方文档里明确写了,它对 Claude 系列模型的支持最好,因为项目早期就是围绕 Claude 的 tool use 能力开发的。但现在对 DeepSeek 的适配也已经非常成熟了,我自己 80% 的场景都是 DeepSeek 在跑,稳得很。
2.3 目录规划与安装路径选择
很多新人上来就直接在默认目录里装,后面技能包、配置文件散落一地,想卸载都找不全。我建议你在一开始就规划一个干净的目录结构。
我的做法是在 D 盘根目录建一个OpenClaw文件夹,然后在里面分三个子目录:
D:\OpenClaw ├── app # OpenClaw 主程序 ├── skills # 所有技能包统一放这里 └── workspace # 智能体日常干活的工作区这里需要专门回应一个社区里问得特别多的点:PowerShell 安装 OpenClaw 能不能指定目录?
答案是:能,而且非常简单。不管你用 npm 全局安装还是 Git 克隆源码,都可以指定。如果你用 npm 装,默认会装到 Node.js 的全局目录,但你可以通过设置环境变量NPM_CONFIG_PREFIX来改变;如果你用 Git 克隆仓库的方式(这种方式我更推荐,因为后面升级方便),直接cd D:\OpenClaw之后再执行克隆命令,源码自然就落在D:\OpenClaw\app里了。
3. 完整部署实操:Windows 11 下一步一步执行
3.1 拉取 OpenClaw 项目并安装依赖
打开 PowerShell,先切换到我们规划的目录,然后执行克隆命令。官方仓库现在用的主分支名是main,不要用老的master。
cd D:\OpenClaw git clone https://github.com/openclaw/openclaw.git app cd app仓库拉下来之后,执行依赖安装。这个过程耗时较长,可能要几分钟,取决于你的网速和电脑性能。你耐心等着就行,不要中途 Ctrl+C。
npm install如果你用的是 npm 自带的装包源,速度慢的话,可以把包源切到淘宝镜像,速度会快很多:
npm config set registry https://registry.npmmirror.com npm install依赖装完之后,你可以先看一下目录结构,确认核心入口文件存在:
ls正常情况下你会看到src/、config/、docs/等目录,以及一个package.json。到这里,OpenClaw 的程序本体就装好了。
3.2 初始化配置文件:provider、模型与系统提示词
OpenClaw 的运行依赖一个配置文件。新版项目用的是clawd.config.json这个文件名,放在程序根目录下。第一次启动时,系统会自动帮你生成一个默认的,但也可能因为网络原因或配置缺失而初始化失败。我建议你手动创建,一劳永逸。
在D:\OpenClaw\app目录下新建一个clawd.config.json,写入以下内容:
{ "provider": "deepseek", "model": "deepseek-chat", "apiKeyEnvVar": "DEEPSEEK_API_KEY", "maxTokens": 4096, "temperature": 0.3, "skillsPath": ["D:\\OpenClaw\\skills"], "workspace": "D:\\OpenClaw\\workspace", "systemPrompt": "你是一个严谨的资深工程师助手,擅长代码开发、文件操作与数据分析。" }几个字段我给你解释一下,避免你瞎改:
provider:模型服务商,支持deepseek、anthropic、ollama、openai等。model:模型名。DeepSeek 官方 API 现在推荐用deepseek-chat(通用对话)和deepseek-reasoner(推理增强)。日常开发用deepseek-chat性价比最高。apiKeyEnvVar:OpenClaw 的设计原则是不直接在配置文件里写密钥,而是读取环境变量。所以你要在 PowerShell 里设置环境变量,或者用 Windows 系统环境变量面板。
设置环境变量的命令:
[Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY", "你的key", "User")注意这里设置的是用户级环境变量,设置完之后,必须关闭当前 PowerShell 窗口再重新打开,环境变量才能生效。顺便多说一句,这个设计非常值得点赞,因为很多人会把配置文件传到 GitHub 上,如果直接硬编码 API Key,你的钱分分钟就被人薅光了。
3.3 配置 Ollama 本地模型的替代方案
如果你选的是 Ollama 本地模型方案,配置文件则长这样:
{ "provider": "ollama", "model": "qwen2.5-coder:14b", "ollamaHost": "http://localhost:11434", "maxTokens": 4096, "temperature": 0.2, "skillsPath": ["D:\\OpenClaw\\skills"], "workspace": "D:\\OpenClaw\\workspace" }前提是你要先确保 Ollama 服务已经启动,并且在命令行里能正常拉取到模型:
ollama pull qwen2.5-coder:14b ollama list看到模型列表里有你拉下来的模型,就可以继续了。这里有一个调参经验:本地模型的temperature建议设低一点,我日常设 0.2,因为本地模型本来就容易天马行空,温度设高了更不靠谱。
3.4 启动 OpenClaw 并验证基础对话
一切配置就绪后,在D:\OpenClaw\app目录下执行:
node src/index.js看到终端出现如下图所示的信息,说明启动成功(文字可能略有差异,以你实际版本为准):
OpenClaw is running... Provider: deepseek Model: deepseek-chat Skills loaded: 0 Type your command or 'exit' to quit:先不急着装 skills,我们先做一个基础对话测试。随便输入一个简单问题,比如:
你好,请用一句话介绍你自己。如果模型正常回答,说明整个链路是通的了。如果这里就报错,后面的 skills 就别折腾了,先排查。
启动过程中我见过最多的报错是端口被占用。如果提示端口冲突,你可以在启动命令后面加一个--port 3001之类的参数换一个端口。
3.5 如何升级 OpenClaw 版本,避免踩坏配置
OpenClaw 的迭代速度真的很快,基本一两周就有新版本。升级的时候千万别直接删除整个目录,否则你的配置文件(clawd.config.json)也没了。正确做法是:保留配置文件,只更新程序源码。
cd D:\OpenClaw\app git pull origin main npm install如果你之前把 skills 放在程序目录内部,升级的时候大概率会被 git 覆盖,所以我前面才特别强调:skills 和 workspace 一定要放到程序目录之外。这是我从删除技能包无数次的教训里总结出来的。
4. skills 接入全流程:从下载到自制的完整实操
4.1 理解 SKILL.md 的核心结构(这是关键)
skills 的运作机制其实特别朴素。OpenClaw 启动时会扫描skillsPath指向的目录,逐个读取子文件夹里的SKILL.md文件。每个 skill 的目录结构长这样:
my-skill/ ├── SKILL.md ├── script.py └── assets/ └── template.txtSKILL.md是技能的灵魂,它决定了这个技能何时被触发、触发后怎么执行。一个标准的SKILL.md,核心由三块组成:
- YAML frontmatter:在这个文件最顶部,用
---包裹,里面写name、description两个字段。description极其重要,OpenClaw 靠它来决定要不要加载这个技能。描述写得越具体,触发准确率越高。 - Instructions(执行指导):告诉 OpenClaw 拿到这个技能后,按照什么步骤做事。可以分步骤、给示例、给规则。
- 参考脚本与资源:
SKILL.md里可以引用同目录下的脚本文件,用相对路径即可。
简单举个例子,一个“批量重命名文件”的技能,它的SKILL.md可能是这样的:
--- name: bulk_file_renamer description: 当用户需要对某个目录下的多个文件进行批量重命名,或者要求批量修改文件名前缀/后缀时使用。 --- # 批量重命名步骤 1. 使用 `list_files` 工具列出目标目录下的所有文件。 2. 与用户确认重命名规则,包括前缀、后缀或替换的文本。 3. 使用 Python 脚本 `scripts/rename.py` 执行重命名操作。 4. 输出重命名前后的对照表。你注意看,这个技能包并没有规定 OpenClaw 必须调用某个具体的 API,它只是在告诉 OpenClaw:遇到“批量重命名”任务时,你怎么拆解动作。OpenClaw 读到之后,会自行决定使用内置的文件操作工具还是运行 Python 脚本。
4.2 下载现成 skills:baoyu 技能包与 superpower 实战
最省事的玩法是直接克隆社区现成的技能仓库。比如你直接用 git 把 baoyu 的技能包克隆到你配置好的 skills 目录下:
cd D:\OpenClaw\skills git clone https://github.com/baoyuai/openclaw-skills.git baoyu-skills克隆下来之后,你会看到里面有很多子文件夹,每个子文件夹就是一个独立的 skill。它们有各自的名字,比如web-developer、>D:\OpenClaw\skills ├── baoyu-web # 从 baoyu-skills 目录里抽出来的 web 开发技能 ├── superpower # superpower 技能合集 └── my-own-skill # 我自制的技能
每个子目录下都直接放着SKILL.md。
superpower skills的安装方式同理。它仓库里的结构设计得比较好,基本上克隆下来就能被 OpenClaw 直接读取。装好之后重启 OpenClaw,你会发现启动日志里多了一行:
Skills loaded: 15这说明 15 个技能包全部被成功加载。
4.3 skills 与 MCP 工具的联动原理
很多小白看到“skills 如何调用 MCP 工具”这个问题就头大了,这里我用最直白的方式讲清楚。
MCP 的全称是 Model Context Protocol,通俗理解就是一个统一插头标准。不同软件都有各自的接口,如果没有统一标准,每接一个工具就要写一套定制代码。MCP 出现之后,任何符合 MCP 规范的工具,OpenClaw 都可以通过 MCP 客户端直接连接。
而 skills 和 MCP 的关系是这样的:
- MCP 工具是“手”:它提供具体的能力,比如操作浏览器、查询数据库、发 HTTP 请求。
- skills 是“大脑中的操作手册”:它不直接执行动作,它规定遇到什么场景用什么顺序调哪个 MCP 工具。
举例来说,如果 OpenClaw 的环境里配置了一个playwright的 MCP 服务(浏览器自动化工具),然后你有一个“前端开发 skill”,这个 skill 的SKILL.md里写着“遇到需要调试页面时,调用 playwright 打开浏览器、截取报错信息、返回页面状态”。OpenClaw 读到这个指引,就会去调用 MCP 服务里的工具接口,完成浏览器操作。
配置 MCP 服务,是在clawd.config.json里增加一个mcpServers字段。以 Playwright 为例:
{ "mcpServers": { "playwright": { "command": "npx", "args": ["@playwright/mcp@latest"] } } }配置好之后重启,OpenClaw 就会自动拉起这个 MCP 服务。当你发出的任务被某个 skill 命中,而这个 skill 又需要浏览器能力时,它就可以直接调用了。
4.4 自己动手做一个 skill:以“PPT 生成”为例
官方 skills 库生态虽然已经很丰富,但很多时候你自己的使用场景需要量身定制。我这里用一个“PPT 生成”技能做演示,手把手带你走一遍完整流程。
第一步:创建目录与文件
cd D:\OpenClaw\skills mkdir ppt-maker cd ppt-maker New-Item SKILL.md New-Item generate_ppt.py第二步:编写 SKILL.md
--- name: ppt_maker description: 当用户要求制作 PPT、幻灯片、演示文稿,或者需要把 Markdown 大纲转为 PPT 时使用。同时适用于生成数学建模汇报稿、项目总结汇报等场景。 --- # PPT 生成流程 1. 确认用户需求:主题、页数、风格、是否需要图片。 2. 使用 generate_ppt.py 脚本生成 .pptx 文件。 3. 脚本输入参数:--title "标题" --pages 10 --output 输出路径 4. 将生成的 PPT 文件路径返回给用户。第三步:编写 Python 生成脚本
这里用python-pptx库,先确保它已经安装:
pip install python-pptxgenerate_ppt.py的内容可以写得很简单,核心逻辑是根据命令行参数生成一个带标题和各页内容的 pptx 文件:
import argparse from pptx import Presentation from pptx.util import Inches parser = argparse.ArgumentParser() parser.add_argument("--title", required=True) parser.add_argument("--pages", type=int, default=5) parser.add_argument("--output", required=True) args = parser.parse_args() prs = Presentation() title_layout = prs.slide_layouts[0] slide = prs.slides.add_slide(title_layout) slide.shapes.title.text = args.title for i in range(2, args.pages + 1): layout = prs.slide_layouts[1] slide = prs.slides.add_slide(layout) slide.shapes.title.text = f"第 {i} 页" slide.placeholders[1].text = f"这一页的内容由 OpenClaw 根据用户需求自动填充。" prs.save(args.output)第四步:重启并验证
保存文件后重启 OpenClaw,输入:“帮我做一个 10 页的项目总结 PPT,标题是‘AI 自动化的实践’”。它应该会命中ppt_maker这个 skill,自动运行脚本,然后在工作区输出一个.pptx文件。整个过程你观察它输出的日志,能清楚地看到它是如何加载 skill、调用脚本的。
5. 常见问题与排查技巧实录
5.1 部署阶段的高频报错与解决方案
问题 1:npm install报权限错误(Node 的 EPERM 系列报错)
这个在 Windows 上非常常见,通常是因为当前 PowerShell 没有以管理员身份运行,或者杀毒软件锁定了 node_modules 目录。解决办法:右键 PowerShell 选择“以管理员身份运行”,然后重新执行npm install。如果还不行,就把 Windows Defender 的“文件夹受控访问”里临时放行项目目录。
问题 2:启动时报Cannot find module '@modelcontextprotocol/sdk'
如果出现这种“找不到模块”的报错,说明依赖没有装全,或者装到一半中断了。单独安装这个依赖即可:
npm install @modelcontextprotocol/sdk问题 3:git pull更新代码后启动报错,clawd.config.json被重置
这种情况基本是官方在新版本里改了配置字段名。你去项目的docs/目录里看一下最新的配置样例,把老字段映射到新字段上就行。注意:升级前先手动备份你自己的配置文件,放到项目目录之外。
5.2 skills 不生效的排查步骤
这是最多人问的问题:“我明明把 skills 放进去了,为什么启动日志里显示 0”?用排除法一步步查:
- 先检查
clawd.config.json里的skillsPath是否是绝对路径,是否指向了正确目录。注意 Windows 路径在 JSON 里要写成D:\\OpenClaw\\skills,而不是D:\OpenClaw\skills。 - 再检查每个 skill 子目录下的文件名是否叫
SKILL.md,注意大小写和扩展名。如果是skill.md或SKILL.MD,OpenClaw 是不认的。 - 然后检查
SKILL.md的 frontmatter 格式。description字段必须存在,且name和description必须是 YAML 合法的字符串,冒号后面要跟空格。
如果你配置好之后是热更新模式,OpenClaw 不一定每次都能扫到新加的技能。稳妥的做法是把 skills 目录改个名字再改回来,或者直接重启 OpenClaw。
5.3 模型响应异常的调优心得
我用 DeepSeek 和 Ollama 本地模型跑了大概两个月,明显感觉响应质量受temperature、maxTokens和系统提示词的影响,而且是剧烈影响。
- 如果你想让 OpenClaw 表现出“严谨工程师”的风格,
temperature设在 0.2 到 0.4 之间,任务完成度高,很少跑偏。 - 如果你拿它做创意写作,比如让 skill 帮你写文案、生成脚本台词,
temperature可以拉到 0.8 以上。 maxTokens别设太小,默认 4096 够用,但如果你让它生成长文章,可能不够,改成 8192 更稳。
另外还有一个非常影响体验的细节:如果模型返回内容出现格式崩塌,优先检查系统提示词。不要小看那几句 system prompt 的作用,OpenClaw 整个工具调用的稳定性,有一半靠 prompt 压着。
5.4 常见问题速查表
| 症状 | 可能原因 | 解决方式 |
|---|---|---|
| 启动即闪退 | 缺少 Node 依赖 | 重新执行npm install |
| 每次对话完就超时 | 云端模型响应慢 | 调大maxTokens,或换deepseek-chat模型 |
| 技能包加载数始终为 0 | 路径层级不对或 SKILL.md 格式错误 | 按 5.2 节逐项排查 |
| 执行技能时报 Python no module | 缺少 Python 库 | pip install对应库,或用项目自带 requirements.txt |
| 刷新技能后不生效 | 技能缓存未刷新 | 直接重启应用最省事 |
| 系统提示词不生效 | 配置文件没保存 | 确认 JSON 语法无误,再重启 |
6. 我的一些实操心得与建议
这几个月折腾下来,我最大的感受是:OpenClaw 这类工具的想象力边界,完全取决于你喂给它的“技能”有多精细。官方文档里给出的是骨架,真正让整个系统变得顺手的是你自己不断沉淀的 skills。
我在实际使用中最常干的事情,就是把平时工作里那些重复性的操作逐步做成技能包。比如每周要写项目周报,我就做了一个weekly-report技能,和我本地的工作目录绑定,让它自动扫描这周改过哪些文件、提交过哪些 commit,然后按模板生成周报。一个月下来,至少帮我节省了三个小时。
如果你想把这个项目继续往深了玩,我建议你的下一步探索路线是:先弄懂SKILL.md里的 frontmatter 对触发率的影响,学会写精准的 description;再尝试配置三四个常用的 MCP 服务,让智能体真正拥有操作外部工具的能力;最后尝试自己做一两个解决自己实际问题的 skills,你会上瘾的。
最后再分享一个小技巧:OpenClaw 的技能编排能力虽然强,但它给 AI 的发挥空间也大,所以一定要把SKILL.md里的步骤写清楚、写具体,最好每一步都带上验证标准。否则你会经常遇到“AI 以为自己干完了,实际文件根本没生成”的尴尬局面。我在最初踩过几次坑之后学乖了,每个技能的最后一步都会写上“必须确认文件成功生成,若失败则排查原因并重试”。这个小细节,能让你的 OpenClaw 使用体验直接上一个台阶。