先说个真实体验:网上 OpenClaw 的教程一抓一大把,但十篇里有八篇默认你是 Linux 或 macOS 用户,剩下两篇即便标题写着 Windows,点进去也是让你装个 WSL 然后照着 Ubuntu 的流程跑。我自己第一次在 Windows 上加装 OpenClaw 时,就因为这个"半吊子教程"的现状折腾了整整一个周末,踩的坑比装的组件还多。所以这篇我就专门聊 Windows 下的 OpenClaw 安装与初始化,把我实际验证过的步骤、踩过的坑、还有那些报错的真实含义都写清楚。如果你手里是台 Windows 电脑,又想把这个开源自动代理框架跑起来,这篇应该能帮你少走一大半弯路。
1. 为什么单独写一篇 Windows 安装教程:和 Linux 的差距在哪里
1.1 OpenClaw 到底是什么:一个被误读的开源自动代理框架
先花点时间把概念对齐。很多人第一次听到 OpenClaw,以为它是个聊天机器人客户端,装上就能像网页版助手一样对话。这个理解基本是错的。
OpenClaw 的定位更接近一个"会自己动手干活的自动代理框架":你可以给它配置不同的模型接入层(包括本地部署的 ollama)、挂载一堆可复用的技能包(skill),它再通过这些技能去操作文件、调用命令、访问网页接口、执行定时任务,甚至可以配合 rosclaw 之类的扩展去对接 ROS2 仿真环境。真正让它和普通聊天工具有本质区别的,是那套 skill 机制——相当于给代理装上了一双"手",而不只是给了一张"嘴"。
所以你会发现,围绕 OpenClaw 的搜索词里有大量和"部署""技能""模型对接"相关的组合,比如"ollama 部署 openclaw""openclaw skill""openclaw windows companion 怎么配置"。这说明大多数人已经意识到,装 OpenClaw 只是第一步,把它初始化成能干活的状态才是真正的重点。而这一步在 Windows 上偏偏最容易翻车。
1.2 Windows 上安装的主要卡点:虚拟环境、编译链与系统服务
为什么 OpenClaw 官方和社区都更偏爱 Linux?因为这套框架从设计之初就建立在 Unix 风格的环境假设上:管理进程靠 systemd,装依赖靠 apt,跑脚本靠 bash,日志往 /var/log 里写。Windows 没有这些东西,于是每个环节都要额外做一次"翻译"。
我实际安装下来,Windows 的卡点主要集中在四个地方,你提前知道心里就有底:
- Python 环境混乱。Windows 上经常同时存在微软商店版 Python、官网安装版 Python、还有 Anaconda 的 Python,三者互相抢占 PATH。OpenClaw 对 Python 版本有明确要求,装错版本会出现各种莫名其妙的导入错误。
- C++ 编译链缺失。如果你选择源码编译安装,Windows 上默认没有 make、gcc、cmake 这一套,需要单独装 Visual Studio Build Tools,而且版本选错照样编译失败。
- 路径分隔符与中文目录。Windows 的
\和空格路径会让很多配置文件里的路径解析出问题,尤其是放在C:\Users\你的名字\这种带中文和空格的目录下,坑一个接一个。 - 守护进程与服务注册。OpenClaw 的常驻组件(比如 Windows Companion)在 Linux 下用 systemd 一条命令就能托管,Windows 上你得手动注册成计划任务或 Windows 服务,还要处理权限问题。
正因为这些差异,直接在 Windows 原生环境装和在 WSL2 里装,完全是两条不同的路线。我自己最终是 Windows 原生环境为主、WSL2 为辅,后面我会把两条线的取舍都讲清楚。
2. 环境准备:装 OpenClaw 之前先把这几件事做掉
2.1 系统版本与账户权限
先说最基础的。OpenClaw 在 Windows 上的表现和系统版本关系很大,我自己测试过 Windows 10 22H2 和 Windows 11 23H2 之后的版本,整体稳定。如果你的系统还停在 Windows 10 初版或者更老的版本,建议先把系统更新做完再继续,否则有些系统 API 调用会直接失败。
账户权限这块,我的建议是:日常操作别用管理员账户跑,但装依赖时要有管理员权限。Windows 的 UAC 机制会拦截很多后台进程的写文件操作,OpenClaw 初始化时要往用户目录写入配置文件夹(一般是~/.openclaw/),权限不足会直接报写入失败。如果你看到类似 "Permission denied" 或 "Access is denied" 的报错,先别急着怀疑代码,检查一下你是不是在一个没有写权限的目录里操作。
另外,如果你同时装了 360、电脑管家之类的安全软件,注意观察安装过程中有没有弹窗拦截。后面我专门有一节讲杀毒软件引发的诡异问题,这里先提个醒:装 OpenClaw 的时候把项目目录加进白名单,能省很多事。
2.2 开发工具链:Git、Python、VS Code 与可选 Docker Desktop
我建议按下面这张表准备环境,每一样都有它存在的理由:
| 工具 | 版本要求 | 用途 | 安装注意事项 |
|---|---|---|---|
| Git for Windows | 2.40 以上 | 拉取源码、更新 skill 包 | 安装时选 "Git from the command line and also from 3rd-party software" |
| Python | 3.10 或 3.11 | 运行 OpenClaw 主程序 | 安装时务必勾选 Add python.exe to PATH |
| VS Code | 最新版 | 编辑配置、查看日志 | 无特殊要求 |
| Visual Studio Build Tools | 选 C++ 桌面开发工作负载 | 源码编译时用 | 只选这条路线的才需要 |
| Docker Desktop | 最新稳定版 | 走容器化部署路线 | 需要 Windows 10/11 专业版开启 WSL2 或 Hyper-V |
装完第一件事是打开 PowerShell,用命令验证环境,不要等报错了再回头查:
git --version python --version py --list-paths这里我想特别强调 Python 版本的问题。OpenClaw 的依赖列表里有一些包对新旧版本很敏感,Python 3.12 刚出来那会儿我试过,某些二进制依赖还没有对应的 wheel 包,pip 会现场编译然后报错。所以别追求最新版,老实按官方要求装 3.10 或 3.11。检查完版本之后,顺手把 pip 升级到最新:
python -m pip install --upgrade pip2.3 本地大模型引擎(可选但推荐):ollama 的安装与模型下载
OpenClaw 本身不内置大模型,它需要一个模型推理后端。你可以接云端 API,也可以接本地部署的 ollama。我比较推荐先接 ollama,原因就两条:一是调试的时候不用花钱,随便怎么折腾都不心疼;二是数据不出本机,配置错误最多是报错,不存在把私人对话内容传到外部接口的问题。
ollama 在 Windows 上的安装很友好,官网下一个安装包,双击装完就自带服务。装完打开一个新的 PowerShell,验证一下:
ollama --version ollama listollama list这时候应该显示空列表,因为还没下载任何模型。我个人建议从 qwen2.5:7b 起步,这个模型对中英文的支持都不错,而且原生支持工具调用(function calling),而工具调用能力恰恰是 OpenClaw 这类代理框架能不能正常工作的关键。下载命令:
ollama pull qwen2.5:7b这条命令会下载大概 4 到 5 个 GB 的模型文件,取决于你的网速可能要等一阵。下载完成后再次ollama list,能看到模型条目就说明后端准备就绪。注意,ollama 的默认服务地址是http://127.0.0.1:11434,后面配置 OpenClaw 时会用到这个地址。
3. 正式安装:两条路线与各自的取舍
3.1 路线A:pip 安装发布包(推荐给绝大多数人)
如果只是想把 OpenClaw 用起来,不做二次开发,我强烈建议走这条路线,省时省力。
**第一步,建虚拟环境。**这一步不是可选项,是必选项。Windows 上全局装包的后果就是过两个月你根本不知道哪个包是哪个项目在用的,冲突起来能让人崩溃。在你想放项目的目录里执行:
mkdir D:\openclaw cd D:\openclaw py -3.11 -m venv .venv**第二步,激活虚拟环境。**注意 PowerShell 里激活脚本路径是.venv\Scripts\Activate.ps1,不是 Linux 那种.venv/bin/activate:
.\.venv\Scripts\Activate.ps1如果提示无法加载脚本,说明 PowerShell 执行策略默认禁止运行脚本,先放开当前用户权限:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser激活成功后,命令行前面会出现(.venv)前缀,一眼就能确认。
**第三步,安装 OpenClaw。**如果你是全局用 pip 装,直接执行pip install openclaw;如果你是从 GitHub 发布页下载了预构建的安装包,就按官方说明执行安装。我在虚拟环境里用的命令是:
pip install openclaw装完顺手把常用的依赖也补齐。这一步容易漏——很多教程默认你装的是完整包,但如果你下载的是精简版,可能连openclaw命令行工具都没有。装完后先别急着启动,验证一下版本:
openclaw --version如果提示'openclaw' 不是内部或外部命令,说明脚本目录没进 PATH。虚拟环境的话检查.venv\Scripts\里有没有openclaw.exe,有的话手动把路径加进 PATH,或者直接用.\.venv\Scripts\openclaw.exe --version。
3.2 路线B:源码编译安装(适合二次开发)
如果你计划改 OpenClaw 源码,或者想装最新的开发分支功能,就得走源码编译。这条路在 Windows 上麻烦指数直接翻倍,但搞完之后你对整个项目的掌控感是完全不一样的。
先用 Git 把仓库克隆下来:
git clone https://github.com/你的目标仓库地址/openclaw.git cd openclaw克隆完先看子模块。很多开源项目把核心组件放在 submodule 里,漏了这步会导致编译时文件缺失:
git submodule update --init --recursive接下来建虚拟环境并安装开发模式:
py -3.11 -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt pip install -e .如果是含 Rust 扩展的版本,还需要先装 Rust 工具链——去官网下载 rustup-init.exe,安装时选默认配置就行。装完验证:
rustc --version cargo --version然后按项目文档执行编译。这一步通常很慢,十几分钟到半小时都是正常的,不要看到终端半天没输出就以为卡死了,实际是在编译依赖。
源码路线最大的坑是依赖版本冲突。Windows 上如果之前装过别的机器学习库,requirements.txt里的某个包可能和现有的 numpy、torch 版本打架。真遇到这种情况,我建议直接在虚拟环境里从零装,不要图省事复用全局 site-packages。
3.3 安装后的验证:版本号、目录结构与自检命令
装完先别急着配置,运行一次自检命令确认核心组件都在。不同版本的自检命令可能不太一样,常见的是:
openclaw doctor这个命令会检查 Python 版本、关键依赖、网络连通性、模型后端可达性等,输出一串 OK 或 FAIL。看到 FAIL 不用慌,后面我会讲怎么逐项排查。另一个快速验证方式是直接问一句:
openclaw ask "你好,简要介绍一下你自己"如果走了 ollama 路线,而 ollama 服务没启动,这一步会报连接错误。所以顺序很重要:先确保ollama serve在运行(Windows 安装版一般会自动作为后台服务跑着),再调 OpenClaw。
4. 首次初始化:配置文件、工作目录与 Skill 技能体系
4.1 初始化命令与生成目录结构
安装完成后,OpenClaw 还不能直接用,它需要先初始化一个工作目录。初始化命令一般是这样:
openclaw init执行到这个环节,它会在你的用户目录下生成~/.openclaw/文件夹,整体结构类似这样:
~/.openclaw/ ├── config.yaml ├── credentials.yaml ├── skills/ │ └── example_skill/ │ ├── skill.yaml │ └── run.py ├── profiles/ ├── storage/ └── logs/第一次看到这个结构,你可能以为 config.yaml 就是全部,其实 credentials.yaml 同样重要——它专门存各种密钥令牌,和主配置分离是为了方便你备份和分享配置时不泄露敏感信息。storage 目录才是 OpenClaw 真正干活的"记忆仓库",它会往这里写入会话状态、缓存数据、任务记录。logs 就不用说了,排错全靠它。
4.2 核心配置文件逐项拆解
打开 config.yaml,默认内容通常是一堆注释加上少量配置项。我捡几个关键的逐项说,这些是初始化阶段一定会碰到的:
model: provider: ollama base_url: http://127.0.0.1:11434/v1 model: qwen2.5:7b storage: type: local path: ~/.openclaw/storage skills: path: ~/.openclaw/skills auto_load: true companion: enabled: false auto_start: false log: level: info path: ~/.openclaw/logsmodel.provider:模型提供方。填ollama表示接本地模型,填openai之类的表示接云端兼容接口。model.base_url:OpenClaw 走的是 OpenAI 兼容协议,所以 ollama 的地址后面要带/v1,少这个后缀很多版本直接连不上。storage.type和path:本地存储的会话数据放哪。skills.path:技能包目录。auto_load: true表示启动时自动加载里面所有技能。companion.enabled:Windows Companion 组件的总开关。默认 false,我们后面单独配。log.level:日志级别。调试阶段建议改成debug,跑稳定了再改回info。
改完配置文件,建议先验证一下语法和路径解析有没有问题:
openclaw config check这个命令会帮你检查 YAML 格式和路径是否存在。如果路径写错,报错会告诉你哪一行有问题,非常好用。
4.3 配置 Skill:让 OpenClaw 学会你的工作流
Skill 是 OpenClaw 最核心的扩展机制,你可以把它理解成"技能插件":每个技能是一个文件夹,描述一件事怎么做,代理在对话中发现需要这个技能时就会加载并执行。
我拿一个最朴素的例子说明。假设你要让 OpenClaw 帮你自动整理下载文件夹里的文件,可以创建一个技能:
~/.openclaw/skills/file_organizer/ ├── skill.yaml └── run.pyskill.yaml 描述技能的元信息和触发条件,内容大概长这样:
name: file_organizer description: 按扩展名整理指定目录下的文件 triggers: - 整理文件 - 归类下载run.py 则是实际执行逻辑,这里示意一个最小结构:
import shutil from pathlib import Path def run(directory: str) -> str: """将 directory 目录下的文件按扩展名移动到子目录。""" base = Path(directory) if not base.exists(): return f"目录不存在: {directory}" for file in base.iterdir(): if file.is_file(): ext = file.suffix.lstrip(".").lower() or "no_ext" ext_dir = base / ext ext_dir.mkdir(exist_ok=True) shutil.move(str(file), str(ext_dir / file.name)) return f"整理完成,请查看目录: {base}"写完后运行openclaw skill list,如果能看到file_organizer,说明技能已经被代理识别。这时你问"帮我整理一下 D:\downloads",代理就会自动匹配这个技能并执行。
我在这个环节的实操经验是:别一上来就写复杂技能,先从"读文件内容""发一条通知"这种小功能练手,摸清技能和代理之间的数据传递规则,再去写多步骤工作流。Windows 上的中文路径在技能里尤其小心,Python 的 Path 对象对中文兼容还不错,但用字符串拼接路径时经常翻车。
5. 对接本地模型:ollama 部署 OpenClaw 的完整配置
5.1 为什么要优先选本地模型
我知道有人一上来就想接付费的云端大模型 API,觉得效果更好。但我的建议是,初学阶段一定要优先用本地模型。理由不光是省钱,更重要的是调试体验。
OpenClaw 这类代理框架的报错信息经常很含糊,一个问题可能是模型响应格式不对,也可能是网络超时,还可能是本地代码 bug。如果你接的是云端 API,每次调试都带着网络延迟和费用焦虑,心态很容易崩。本地模型把"网络"这个变量几乎降为零,出问题就用 Wireshark 看本地回环流量,或者直接看 ollama 的日志,排查链很干净。
5.2 Ollama 配置项与验证过程
回到 config.yaml 的 model 配置段,按照前面说的填好这三个关键项:
model: provider: ollama base_url: http://127.0.0.1:11434/v1 model: qwen2.5:7b配置完先确认 ollama 服务真的在跑。在浏览器或 PowerShell 里访问一下:
Invoke-RestMethod -Uri http://127.0.0.1:11434/api/tags -Method Get如果能返回一个包含 models 列表的 JSON,说明服务正常。如果报连接失败,就去启动 ollama 服务——Windows 上通常在系统托盘有 ollama 图标,右键确认它是运行状态。
确认服务没问题后,再跑一次 OpenClaw 的对话验证:
openclaw ask "你好,请用一句话介绍你自己"正常情况下你应该能在几秒内看到模型的回复。如果这里超时或报错,优先检查两件事:一是 config.yaml 里 base_url 的末尾到底有没有/v1,二是 ollama 拉取的模型名是不是和 config 里完全一致。模型名经常有人填错,qwen2.5:7b写成qwen2.5-7b就对接不上。
5.3 切换模型时的注意点
用一段时间后,你可能会想换更大的模型,比如 qwen2.5:32b,或者试试带 vision 的多模态模型。切换本身很简单,ollama pull新模型,改 config.yaml 里的 model 名,重启 OpenClaw 就行。但有几个点必须注意。
第一,工具调用能力不是所有模型都有。OpenClaw 依赖模型输出特定格式的函数调用指令,像 qwen2.5、llama3.1 这些专门优化过工具调用的模型没问题,但某些早期模型或量化过度的小模型在这方面的能力很弱,表现为代理"听懂了但不动手"。遇到这种情况先别怀疑配置,换个主力模型试试。
第二,上下文长度和本地显存强相关。任务复杂度越高,需要的上下文越长,显存占用也越大。7B 模型在 8GB 显存的显卡上跑中等任务还行,一旦任务涉及大量文件内容注入,很容易触发显存溢出。我的建议是先在ollama run里实测模型能不能稳定处理你的典型任务,再切到 OpenClaw 里投产。
6. Windows Companion 配置:后台服务与系统桥接
6.1 Companion 是干什么的
如果你只把 OpenClaw 当命令行问答工具,上一步就够用了。但要想让它做更贴近"自动代理"的事——监听剪贴板、发送系统通知、定时触发任务、和本地文件交互——就需要 Windows Companion 这个组件。
Companion 的本质是一个常驻后端进程,负责把 OpenClaw 的指令翻译成 Windows 系统调用。它解决的问题很现实:主程序如果开着 GUI 终端,关掉窗口代理就死了;有了 Companion 常驻系统层,代理的触发逻辑就可以脱离终端独立运行,类似 Linux 上的 systemd 服务。
6.2 注册成 Windows 服务并设置开机自启
Companion 的安装命令因版本而异,常见的做法是:
openclaw companion install这条命令通常会帮你创建 Windows 服务或计划任务。如果命令不支持自动注册服务,就手动用 Windows 的服务管理工具注册。先确认服务名:
sc query openclaw-companion如果返回服务不存在,可以用New-Service注册指向openclaw.exe的服务。注册完在配置里打开开关:
companion: enabled: true auto_start: true然后启动服务:
Start-Service openclaw-companion启动后查看服务状态,确认不是 Pending 或 Stopped 状态。
这里有个 Windows 特有的坑:服务属于 Session 0,不能直接访问当前用户的桌面环境,所以如果 Companion 要读剪贴板或弹通知,可能需要以"交互式服务"方式运行,或者在计划任务里勾选"只在用户登录时运行"。我在测试时发现,计划任务的"登录时触发"模式比服务模式更稳,因为它跑在用户会话里。追求稳定的朋友可以直接用任务计划程序手动建一个"登录时启动 openclaw companion"的计划任务。
6.3 非提升终端启动守护进程的报错处理
我在搜索热词里看到一条很典型的报错:error: start the windows daemon from a non-elevated terminal; shared clients。这条报错虽然不是 OpenClaw 独有的,但 Windows 用户很容易撞上,而且很容易误以为是自己 OpenClaw 配错了。
真实原因是:某些带守护进程的组件(比如 Docker Engine 的 CLI),在管理员权限终端里启动时反而会因为"共享客户端"的模式限制而失败。它背后涉及的 Windows 机制是用户账户控制(UAC):提升权限的进程和普通权限进程在命名管道、进程通信上存在会话隔离,守护进程为了能被普通权限的客户端访问,反而要求你在非提升的终端里启动。
所以解决办法恰恰是反直觉的——关掉管理员终端,改用普通 PowerShell 启动。启动完成后,再用管理员终端执行需要提权的管理操作,两者分开。这个原则对 OpenClaw Companion 同样适用:你安装服务时需要管理员权限,但日常启动调试一定用普通终端。
7. Windows 踩坑实录:高频错误的完整排查链路
7.1 杀毒软件静默拦截与长路径策略
我在实际安装中遇到的第一个大坑是 Windows Defender 的静默拦截。表现很诡异:启动 OpenClaw 时没有任何报错,但过几秒进程就消失了,日志文件夹里只有启动瞬间的写入记录。排查链是这样的:
先看进程是否存在:
Get-Process -Name openclaw发现刚启动就被杀掉,于是查 Windows 事件日志里的程序兼容性目录:
Get-WinEvent -LogName Application -MaxEvents 50 | Where-Object { $_.Message -match "openclaw" }果然,事件里有一条"Windows Defender 已阻止运行"的记录。原因是 OpenClaw 的技能运行时动态生成 Python 脚本,这种"程序启动后自己写脚本再执行"的行为很容易被安全软件标记为可疑。解决方案不是关掉 Defender,而是把~/.openclaw/目录和项目目录加进 Defender 的排除列表:
Add-MpPreference -ExclusionPath "$env:USERPROFILE\.openclaw"另一个容易被忽略的是 Windows 的文件名和路径长度限制。OpenClaw 的依赖安装时会生成很深的目录结构,如果路径总长度超过 260 字符,npm 或者 pip 的解压步骤就会报错。Git 在克隆源码时先把这个限制放开:
git config --global core.longpaths true并且把 Windows 的注册表项 LongPathsEnabled 改成 1,改完重启生效。这个坑在你用中文用户名、目录嵌套又深的情况下特别容易触发。
7.2 常见报错速查表
下面这张表是我根据自己的踩坑经历和社区常见问题整理的高频报错,按"症状→原因→解法"的顺序写,收藏起来能省不少时间:
| 症状 | 根因 | 解法 |
|---|---|---|
'openclaw' 不是内部或外部命令 | 脚本目录未加入 PATH | 检查虚拟环境.venv\Scripts\,手动加 PATH 或使用完整路径执行 |
ModuleNotFoundError: No module named 'openclaw' | 未在虚拟环境中安装,或没激活虚拟环境 | 确认终端前缀有(.venv),重新执行pip install openclaw |
| 连接 ollama 超时 | ollama 服务未启动,或 base_url 写错 | 访问http://127.0.0.1:11434/api/tags验证服务;检查地址末尾是否为/v1 |
start the windows daemon from a non-elevated terminal | 在管理员终端启动守护进程导致共享客户端受限 | 改用普通 PowerShell 启动,管理操作用另一个提权终端 |
| 进程启动后自动消失 | 安全软件静默拦截,或端口被占用 | 查事件日志,加 Defender 排除目录;用netstat -ano查端口占用 |
Path too long或文件名超长 | Windows 260 字符路径限制 | 开启 longpaths,git config --global core.longpaths true,改注册表并重启 |
| 中文路径加载技能失败 | 编码问题或路径解析分隔符不兼容 | 技能内统一用pathlib.Path()处理路径,不要用字符串拼接 |
7.3 日志这么查才对:日志级别与关键信息定位
排查到最后,一切问题都要回到日志。Windows 上 OpenClaw 的日志默认在~/.openclaw/logs/,按日期生成文件。调试阶段建议把 log level 从 info 改成 debug:
log: level: debug改完重启,然后复现一次问题,再看日志文件。定位问题有个小技巧:不要从头读日志,直接搜关键词。
- 搜
error或failed,定位第一个报错点。 - 搜
ollama或model,确认模型调用是否成功。 - 搜
skill,确认技能加载和触发链路是否正常。
有一次我的代理在调用技能时反复失败,从日志里看错误信息只有一行Permission denied,但根本不知道是哪个文件没权限。后来把技能脚本里加了详细日志,打印每一步操作的目录和文件名,才发现是技能尝试往C:\Program Files写配置文件,被系统保护拦住了。这个经验说明:OpenClaw 的日志反映的是框架层面的运行状态,你自己的技能逻辑有问题的话,最好在技能代码里自己打日志,双管齐下排查才快。
另外备份配置的习惯值得养成。每次初始化完、调通一个技能,就把~/.openclaw/下的 config.yaml 和 credentials.yaml 备份一份。我一般是复制到项目目录下带日期后缀,规则很简单:config-20240101.yaml。这样哪次改坏了配置,一条命令就能回滚,不用重新初始化整个环境。
最后再分享一个小技巧:如果你和我一样,电脑上同时装了 Docker Desktop 和 ollama,注意这两个服务的默认端口不冲突(Docker 是 2375/2376,ollama 是 11434),但它们都依赖后台守护进程。Windows 上跑 OpenClaw 时,尽量把非必要的守护进程关掉,只留当前要用的,能明显减少那种"莫名其妙连接被拒"的概率。我自己在 Windows 上把 OpenClaw 从装不上到跑通完整技能流程,前前后后折腾了三天,现在回头看,绝大多数时间其实是花在了环境和权限的磨合上,真正框架本身的问题反而很少。把这套流程理顺之后,不管是继续研究 skill、对接 ollama 换模型,还是把整套东西部署到别的 Windows 机器上,都是一马平川的事。