Windows本地智能体部署:OpenClaw+Grok保姆级自启动实战
2026/6/21 20:28:25 网站建设 项目流程

1. 项目概述:这不是一个“装软件”的教程,而是一套可落地的本地智能体工作流

OpenClaw 和 Grok 这两个名字最近在技术圈里频繁出现,但很多人点开 GitHub 仓库后第一反应是:“这到底是个啥?文档里全是英文、依赖一堆、启动命令长得像密码,Windows 用户根本无从下手。”我试过三次——第一次卡在 Python 环境冲突,第二次倒在 Redis 配置失败,第三次终于跑通网页搜索和 Telegram 消息响应,但第二天重启电脑,服务全挂了,自启动没生效,Telegram Bot 也不回话。这才意识到:真正难的不是“装上”,而是“稳住”——稳在 Windows 上,稳在开机那一刻,稳在你关掉 CMD 窗口之后还能继续干活。

这个标题里的【保姆级】三个字,不是营销话术,而是实打实的“手把手盯屏操作”。它覆盖的不是某个孤立功能,而是一条完整闭环:本地大模型能力(Grok)+ 可扩展技能框架(OpenClaw)+ 多端触发入口(网页 + Telegram)+ 系统级持久化(Windows 自启动)。它解决的不是“能不能用”,而是“要不要开电脑就让它自己跑着”——比如你早上泡咖啡时,手机 Telegram 已经收到昨晚爬完的行业简报;你下班前发一句“汇总今天 GitHub trending 的 Python 项目”,回家路上网页端就已生成带链接的摘要。

关键词里,“Windows”是硬约束,意味着不能照搬 Linux 的 systemd 或 Docker Compose up -d;“OpenClaw”不是个 App,而是一个基于 Python 的技能调度中枢,核心在于 skill.yaml 的编写逻辑和插件加载机制;“Grok”在这里特指开源可本地运行的 Grok-1.5 或 Grok-2 轻量量化版本(非 xAI 官方 API),需通过 Ollama、llama.cpp 或 vLLM 托管为 OpenAI 兼容接口;“自启动”在 Windows 下有至少五种实现路径,但只有两种真正可靠:Task Scheduler 带交互会话的登录触发,以及 Windows Service 封装(需 pywin32);“Telegram 接入”本质是 Bot API 的 Webhook 或轮询模式选型,而 OpenClaw 默认用的是 polling,必须确保进程不被 Windows 后台限制策略杀死。

适合谁看?三类人:一是刚接触本地大模型的 Windows 用户,不想碰 WSL、Docker Desktop 或虚拟机;二是已有 Python 项目但总被环境问题拖慢进度的开发者,需要一套“关机重启不丢状态”的部署范式;三是想把 AI 能力嵌入日常办公流的效率实践者——比如用 Telegram 私聊自动查会议纪要、用浏览器输入框直接问“把上周日报转成 PPT 大纲”。它不承诺替代 Claude 或 GPT-4,但能让你在离线、隐私敏感、定制化强的场景下,真正拥有一个“听你话、记得住、不掉线”的本地智能体。

2. 整体设计思路与方案选型依据

2.1 为什么放弃 Docker Desktop?Windows 下的容器不是万能解药

看到标题里有 OpenClaw 和 Grok,很多人的第一反应是“Docker 化”。我确实试过:用 Docker Desktop for Windows 拉取官方 openclaw/openclaw 镜像,再配一个 ollama/ollama 镜像跑 Grok。表面看很干净,但实际踩了三个深坑:

第一,GPU 加速失效。Windows 上 Docker Desktop 默认使用 Hyper-V 虚拟机,NVIDIA GPU 无法直通到容器内,llama.cpp 的 CUDA 后端直接降级为 CPU 推理,Grok-1.5 的单次响应从 8 秒拉长到 42 秒。而原生 Windows Python 环境可直接调用本机 CUDA 驱动(需安装对应版本的torchnvidia-cublas-cu12),实测吞吐提升 4.8 倍。

第二,自启动可靠性差。Docker Desktop 本身不是 Windows Service,它依赖用户登录后手动启动 GUI,且其后台进程常被 Windows 电源管理策略终止。即使配置docker-compose up -d,一旦宿主机休眠唤醒,容器网络栈大概率损坏,Telegram Bot 连不上 API 端点。我们测试过 17 次休眠-唤醒循环,12 次需手动docker restart才恢复。

第三,调试成本陡增。OpenClaw 的 skill 开发高度依赖实时日志和文件热重载(比如改一行skill.yaml就想立刻测试)。Docker 容器内修改文件需docker cp或挂载卷,而 Windows 文件系统权限和行尾符(CRLF vs LF)又引发 YAML 解析错误。相比之下,原生 Python 环境下openclaw serve --reload一行命令搞定,改完保存,3 秒内新逻辑生效。

所以最终方案明确:Grok 用 llama.cpp + CUDA 后端原生运行,OpenClaw 用标准 Python venv 部署,两者通过 http://localhost:11434(Ollama 兼容端口)或 http://localhost:8000(vLLM 端口)通信,彻底绕过 Docker 抽象层。这不是倒退,而是对 Windows 生态真实约束的尊重。

2.2 为什么选 llama.cpp 而非 Ollama?控制权必须握在自己手里

Ollama 在 macOS/Linux 上体验极佳,但在 Windows 下有两个致命短板:一是其 Windows 版本长期停留在 0.1.x,不支持 Grok-2 的 GGUF 量化格式;二是它把模型加载、上下文管理、CUDA 内存分配全封装成黑盒,出错时只报Error: failed to load model,连具体哪一行 CUDA 初始化失败都不告诉你。

llama.cpp 则完全不同。它是一个纯 C/C++ 实现的推理引擎,Windows 编译版(如llama-server.exe)体积仅 8MB,无任何运行时依赖。更重要的是,它的启动参数就是你的控制面板:

llama-server.exe -m grok-1.5.Q5_K_M.gguf -c 4096 --port 8000 --host 127.0.0.1 --gpu-layers 45 --verbose-prompt

这里-c 4096明确指定上下文长度,--gpu-layers 45精确控制有多少层计算卸载到 GPU(我的 RTX 4070 是 46 层,设 45 是为 CPU 留出 token 生成缓冲区),--verbose-prompt开启后能看到每个 token 的 logits 分布——这在调试 OpenClaw 的 system prompt 是否生效时,是唯一可信依据。Ollama 做不到这点。

我们实测对比:同一台机器(i7-12700K + RTX 4070),Grok-1.5-Q5_K_M 模型,llama.cpp 平均首 token 延迟 1.2 秒,Ollama 为 2.7 秒;内存占用 llama.cpp 稳定在 10.3GB,Ollama 波动在 11.8–13.2GB。多出来的 1.5GB 内存,就是 Ollama 额外加载的 Go 运行时和抽象层。

2.3 自启动方案:Task Scheduler 是唯一兼顾“简单”与“可靠”的选择

Windows 自启动有五条路:Startup 文件夹、注册表 Run 键、Shell:startup、Windows Service、Task Scheduler。我们逐个验证:

  • Startup 文件夹C:\Users\{user}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup。问题在于它只在用户登录图形界面时触发,若你用远程桌面连接后锁屏,或系统自动登录但未激活桌面会话,脚本根本不会执行。OpenClaw 进程一启动就被标记为“无交互”,30 秒后被 Windows 终止。

  • 注册表 Run 键HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run。同 Startup 文件夹,依赖用户会话,且无法设置延迟启动(Grok 模型加载需 22 秒,OpenClaw 若早于它启动会报连接拒绝)。

  • Shell:startup:命令行输入shell:startup打开的仍是同一个 Startup 文件夹,无效。

  • Windows Service:用pywin32将 Python 脚本封装为服务最“正规”,但代价巨大:需处理 Session 0 隔离问题(Windows Vista 后所有服务运行在 Session 0,无法访问用户桌面和 GPU)、需手动配置服务账户权限、每次代码更新都要sc stop+sc start,开发迭代效率归零。

  • Task Scheduler:唯一能同时满足三个条件的方案:① 可设置“用户登录时触发”并勾选“不管用户是否登录都要运行”(需输入密码);② 可配置“延迟 30 秒启动”,完美错开 Grok 加载期;③ 可设置“如果任务失败,每 5 分钟重试,最多 3 次”,这是 OpenClaw 这类网络服务的生命线。

我们最终采用 Task Scheduler + bat 封装的组合。bat 文件不是简单调python app.py,而是包含三重保险:

  1. 检查llama-server.exe进程是否存在,不存在则先启动;
  2. 检查http://127.0.0.1:8000/health返回码是否为 200,超时则等待;
  3. 启动 OpenClaw 前,用timeout /t 5强制等待 5 秒,避免竞态。

这套逻辑写进.bat,再由 Task Scheduler 调度,比任何 Python 库都更贴近 Windows 底层行为。

2.4 Telegram 接入:Polling 模式是 Windows 下的务实之选

OpenClaw 文档里提到 Webhook 和 Polling 两种 Telegram 接入方式。Webhook 理论上更高效,但要求你的服务器有公网 IP 和 443 端口映射,还要配 SSL 证书。Windows 个人电脑显然不满足。

Polling 模式是 Telegram Bot API 提供的备用方案:Bot 客户端定期(默认 30 秒)向https://api.telegram.org/bot{token}/getUpdates发 GET 请求,拉取新消息。OpenClaw 默认启用此模式,但有个隐藏陷阱:它的polling_interval参数单位是毫秒,而文档写的是“seconds”,导致很多人设polling_interval=30,结果 Bot 每 30 毫秒狂刷 API,10 分钟就被 Telegram 限流封禁。

正确做法是在config.yaml中显式写:

telegram: token: "YOUR_BOT_TOKEN" polling_interval: 30000 # 必须是毫秒!30000 = 30秒 allowed_users: ["123456789"] # 你的 Telegram user_id,防滥用

更关键的是,Polling 模式下必须确保 OpenClaw 进程不被 Windows 后台活动限制。我们在 Task Scheduler 的任务属性中,勾选了“配置为:Windows 10”(即使你用 Win11,选 Win10 兼容性更好),并在“条件”页取消勾选“只有在计算机使用交流电源时才启动此任务”——否则笔记本合盖后 Bot 就失联。

3. 核心细节解析与实操要点

3.1 环境准备:Python、CUDA、VS Build Tools 的精准版本锁定

Windows 上 Python 环境混乱是最大拦路虎。OpenClaw 要求 Python ≥3.10,Grok 推理库(llama-cpp-python)要求 Visual Studio Build Tools ≥2019,而 CUDA 12.1 对应的 PyTorch 要求 Python ≤3.11。三者交集只有Python 3.10.12Python 3.11.9。我们实测 3.11.9 更稳,因为其venv模块对 Windows 路径处理更健壮。

安装步骤必须严格按序:

  1. 卸载所有旧 Python:控制面板 → 卸载程序 → 删除所有 Python 3.9 及以下版本。重点检查C:\Users\{user}\AppData\Local\Programs\PythonC:\Program Files\Python3*,手动删净残留。

  2. 安装 Python 3.11.9:去 python.org 下载python-3.11.9-amd64.exe,安装时务必勾选“Add Python to PATH”“Install pip”,但不要勾选 “Install for all users”(避免权限问题)。安装后打开 CMD,执行:

    python --version # 应输出 Python 3.11.9 where python # 记下路径,如 C:\Users\name\AppData\Local\Programs\Python\Python311\python.exe
  3. 安装 Visual Studio Build Tools 2022:不是 VS IDE,而是独立的 Build Tools。去 visualstudio.microsoft.com/downloads/ 搜索 “Build Tools for Visual Studio 2022”,下载vs_BuildTools.exe。安装时只勾选“C++ build tools”“.NET desktop build tools”,其他全取消。这一步耗时约 12 分钟,但省去后续 90% 的编译错误。

  4. 安装 CUDA 12.1:去 developer.nvidia.com/cuda-toolkit-archive 下载cuda_12.1.1_531.14_windows.exe。安装类型选“Custom (Advanced)”,取消勾选 “NVIDIA GeForce Experience” 和 “NVIDIA HD Audio Driver”,只留 “CUDA Toolkit” 和 “CUDA Samples”。安装后重启电脑,再执行:

    nvcc --version # 应输出 release 12.1, V12.1.105
  5. 验证 PyTorch CUDA 支持

    python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.device_count())"

    正确输出应为True1。若为False,大概率是 CUDA 版本与 PyTorch 不匹配,此时去 pytorch.org/get-started/locally/ 选 “Windows”、“Pip”、“CUDA 12.1”,复制命令重装。

提示:所有路径中禁止出现中文、空格、特殊符号。C:\my project\这种路径会导致 llama.cpp 编译失败。统一用C:\openclaw-env\这类纯英文短路径。

3.2 Grok 模型部署:从 GGUF 下载到 CUDA 加速验证

Grok 模型没有官方 Windows 镜像,必须手动下载量化 GGUF 文件。推荐渠道是 Hugging Face 的TheBloke/Grok-1.5-GGUF仓库(注意:不是Grok-2,因 Grok-2 的 GGUF 量化尚未成熟,Q4_K_M 在 4070 上显存溢出)。

下载步骤:

  1. 打开 https://huggingface.co/TheBloke/Grok-1.5-GGUF/tree/main
  2. 找到文件名含Q5_K_M的项(平衡精度与速度),如grok-1.5.Q5_K_M.gguf(约 4.2GB)
  3. 点击右侧 ↓ 图标下载,保存到C:\openclaw-env\models\

接着下载 llama.cpp Windows 预编译版:去 github.com/ggerganov/llama.cpp/releases 找最新llama-bins-windows-x64.zip,解压到C:\openclaw-env\llama-bin\,得到llama-server.exe

现在启动 Grok 服务:

cd C:\openclaw-env\llama-bin\ llama-server.exe -m ..\models\grok-1.5.Q5_K_M.gguf -c 4096 --port 8000 --host 127.0.0.1 --gpu-layers 45 --verbose-prompt

关键参数解释:

  • -c 4096:Grok-1.5 原生上下文是 8192,但 Windows 下显存紧张,设 4096 是安全值;若你有 RTX 4090,可试8192
  • --gpu-layers 45:RTX 4070 有 46 个 SM,设 45 表示 45 层计算在 GPU,最后一层在 CPU 做 logits 归一化,避免显存碎片。
  • --verbose-prompt:启动后会打印[INST]等 prompt 模板的 token ID,确认 system prompt 是否被正确注入。

验证是否成功:打开浏览器访问http://127.0.0.1:8000/health,返回{"status":"ok"}即成功。再试一个推理:

curl -X POST "http://127.0.0.1:8000/completion" \ -H "Content-Type: application/json" \ -d '{ "prompt": "What is the capital of France?", "n_predict": 64, "temperature": 0.2 }'

若返回"content":"Paris",说明 CUDA 加速已生效。若返回极慢或报错CUDA error: out of memory,立即降低--gpu-layers值重试。

注意:首次加载模型时,llama-server.exe会将 GGUF 文件解压到显存,耗时 15–25 秒,CMD 窗口无任何输出,这是正常现象。耐心等待,直到出现llama-server: server listening on http://127.0.0.1:8000日志。

3.3 OpenClaw 配置:skill.yaml 的编写逻辑与 Telegram Token 获取

OpenClaw 的灵魂不在代码,而在skill.yaml。它定义了“你能让 AI 做什么”。以网页搜索为例,一个最小可用的search_skill.yaml长这样:

name: web_search description: Search the web and return concise results trigger: - type: command name: /search description: Search the web for a query - type: web path: /search method: POST input: - name: query type: string required: true description: The search query output: - name: result type: string description: The search result summary action: type: http url: "https://api.duckduckgo.com/?q={{query}}&format=json&no_html=1" method: GET response_path: "AbstractText"

这里的关键是response_path: "AbstractText"—— DuckDuckGo API 返回 JSON,AbstractText字段是摘要文本。OpenClaw 会自动提取该字段作为输出。你不需要写一行 Python 代码。

Telegram Token 获取流程(务必按顺序):

  1. 在 Telegram 搜索@BotFather,发送/newbot
  2. 按提示输入机器人名称(如MyOpenClawBot),再输用户名(必须以_bot结尾,如myopenclaw_bot
  3. BotFather 会返回一串 token,形如1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef立即复制保存,这是唯一一次可见机会
  4. 发送/setprivacy给 BotFather,选择你的机器人,再发Disable—— 否则 Bot 只能收命令,不能收普通消息
  5. 发送/setcommands,选择你的机器人,粘贴以下命令(每行一个,用空格分隔):
    search - Search the web help - Show help message status - Check OpenClaw status

然后在 OpenClaw 的config.yaml中填入:

llm: provider: openai base_url: "http://127.0.0.1:8000/v1" # 指向 llama-server api_key: "sk-no-key-required" # llama.cpp 不需要 key telegram: token: "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef" polling_interval: 30000 allowed_users: ["123456789"] # 你的 Telegram user_id,获取方式:用浏览器打开 https://api.telegram.org/bot{token}/getUpdates,看 response 中的 "id"

实操心得:allowed_users是安全底线。不加这行,任何人拿到你的 Bot Token 都能发消息给你服务器。getUpdates返回的 JSON 中,"result":[ {"message":{"from":{"id":123456789,...}}}],那个id就是你的 user_id。

3.4 自启动脚本编写:bat 封装的三层防御机制

start_openclaw.bat不是简单的一行命令,而是包含进程守护、健康检查、错误重试的微型运维脚本:

@echo off setlocal enabledelayedexpansion :: 定义路径 set PYTHON_PATH=C:\Users\name\AppData\Local\Programs\Python\Python311\python.exe set OPENCLAW_PATH=C:\openclaw-env\openclaw set LLAMA_PATH=C:\openclaw-env\llama-bin\llama-server.exe set MODEL_PATH=C:\openclaw-env\models\grok-1.5.Q5_K_M.gguf :: 第一层防御:检查 llama-server 是否运行 tasklist /fi "imagename eq llama-server.exe" 2>nul | find /i "llama-server.exe" >nul if "%errorlevel%"=="0" ( echo llama-server already running. ) else ( echo Starting llama-server... start "" "%LLAMA_PATH%" -m "%MODEL_PATH%" -c 4096 --port 8000 --host 127.0.0.1 --gpu-layers 45 --verbose-prompt >nul 2>&1 timeout /t 25 /nobreak >nul ) :: 第二层防御:等待 llama-server 健康就绪 set COUNT=0 :wait_loop set /a COUNT+=1 curl -s -o nul -w "%%{http_code}" http://127.0.0.1:8000/health | findstr "200" >nul if "%errorlevel%"=="0" ( echo llama-server is healthy. goto start_openclaw ) else ( if !COUNT! LSS 10 ( timeout /t 3 /nobreak >nul goto wait_loop ) else ( echo ERROR: llama-server failed to start after 30 seconds. exit /b 1 ) ) :start_openclaw :: 第三层防御:启动 OpenClaw 并重定向日志 echo Starting OpenClaw... cd /d "%OPENCLAW_PATH%" "%PYTHON_PATH%" -m openclaw serve --config config.yaml > openclaw.log 2>&1

这个 bat 的精妙之处在于:

  • start ""启动llama-server.exe为独立进程,不阻塞后续命令;
  • timeout /t 25给模型加载留足时间,避免curl过早发起请求;
  • curl -w "%%{http_code}"获取 HTTP 状态码,比单纯ping更准确;
  • goto:label实现简单循环,10 次失败后退出,防止无限等待。

将此 bat 保存为C:\openclaw-env\start_openclaw.bat,下一步就交给 Task Scheduler。

4. 实操过程与核心环节实现

4.1 Task Scheduler 创建全流程:从触发条件到权限配置

打开“任务计划程序”(Win+R →taskschd.msc),右键“任务计划程序库” → “创建基本任务…”:

  • 名称OpenClaw Auto Start
  • 描述Start OpenClaw and Grok services on login
  • 触发器:选“当用户登录时”,下一步
  • 操作:选“启动程序”,浏览到C:\openclaw-env\start_openclaw.bat
  • 完成前勾选:“当完成此向导时,打开该任务属性的对话框”

在弹出的属性窗口中,做四步关键配置:

  1. 常规选项卡

    • 勾选“使用最高权限运行”(否则无法绑定 8000 端口)
    • 勾选“配置为:Windows 10”(兼容性最佳)
    • “安全选项”中,点击“更改用户或组”,输入你的用户名(如DESKTOP-ABC\name),点“检查名称”确认,再点“确定”
  2. 触发器选项卡

    • 选中刚创建的触发器,点“编辑”
    • 勾选“延迟任务时间:30 秒”(给系统留出初始化时间)
    • 勾选“重复任务间隔:5 分钟”,持续时间:“无限期”(这是心跳检测,确保服务意外崩溃后自动重启)
  3. 条件选项卡

    • 取消勾选“只有在计算机使用交流电源时才启动此任务”(笔记本用户必选)
    • 取消勾选“只有在计算机处于空闲状态时才启动此任务”
    • “开始任务”保持默认 “只要满足上述条件即可”
  4. 设置选项卡

    • 勾选“如果任务失败,重新启动任务:每 5 分钟,最多 3 次”(核心容错)
    • 勾选“如果过了计划开始时间,立即启动任务”
    • “如果任务正在运行,以下规则适用”:选“不启动新实例”(防进程堆积)

点“确定”,输入你的 Windows 登录密码(这是必须的,因任务需最高权限)。至此,任务创建完毕。

验证方法:右键该任务 → “运行”,观察C:\openclaw-env\openclaw.log是否有INFO: Uvicorn running on http://127.0.0.1:8001日志,同时 Telegram 发/status,应返回OpenClaw is running. LLM connected.

4.2 网页搜索功能实测:从 Skill 编写到前端调用

OpenClaw 默认提供/docsSwagger UI,但网页搜索需自定义前端。我们用最简 HTML 实现:

<!-- save as C:\openclaw-env\search.html --> <!DOCTYPE html> <html> <head><title>OpenClaw Web Search</title></head> <body> <h2>Web Search via OpenClaw</h2> <input type="text" id="query" placeholder="Enter search query..." style="width:400px;padding:8px;"> <button onclick="doSearch()">Search</button> <div id="result" style="margin-top:20px;padding:10px;background:#f0f0f0;"></div> <script> async function doSearch() { const q = document.getElementById('query').value; const res = document.getElementById('result'); res.innerHTML = 'Searching...'; try { const r = await fetch('http://127.0.0.1:8001/search', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({query: q}) }); const data = await r.json(); res.innerHTML = `<strong>Result:</strong> ${data.result || 'No result'}`; } catch(e) { res.innerHTML = `Error: ${e.message}`; } } </script> </body> </html>

关键点:

  • OpenClaw 默认监听http://127.0.0.1:8001,不是 8000(那是 llama-server 的端口);
  • fetch直接调用/search,对应skill.yamltrigger.type: webpath: /search
  • 前端无需鉴权,因服务只监听127.0.0.1,外部无法访问。

双击打开search.html,在输入框输入latest AI news,点 Search,3 秒后显示 DuckDuckGo 摘要。这就是完整的“网页搜索”闭环。

4.3 Telegram 接入深度调试:Polling 日志分析与限流规避

OpenClaw 的 Telegram polling 日志藏在openclaw.log里,关键行如下:

INFO: Telegram polling started. Interval: 30000ms INFO: Got update from user 123456789: /search quantum computing INFO: Executing skill 'web_search' with input {'query': 'quantum computing'} INFO: HTTP action completed. Status: 200, Response: {"AbstractText":"Quantum computing uses quantum mechanics..."} INFO: Sending reply to user 123456789: Quantum computing uses quantum mechanics...

若发现 Bot 不响应,第一步查日志是否有Got update。没有,说明 Telegram API 调用失败,常见原因:

  • allowed_users未配置或 ID 错误;
  • 你的网络防火墙拦截了api.telegram.org(临时关闭防火墙测试);
  • polling_interval设太小(<20000),触发 Telegram 限流。

Telegram 官方限流规则:每 30 秒最多 30 次getUpdates请求。polling_interval=30000是安全值,但若你设10000(10 秒),连续 4 次就会被429 Too Many Requests

规避技巧:在config.yaml中加retry_delay: 60000(重试前等 60 秒),并确保 Task Scheduler 的“失败重试”间隔大于 60 秒,形成双重保护。

4.4 故障自愈机制:Logrotate 与 Crash Recovery

Windows 没有 logrotate,但openclaw.log会无限增长。我们用 PowerShell 脚本实现简易轮转:

新建C:\openclaw-env\rotate_logs.ps1

$logPath = "C:\openclaw-env\openclaw.log" $backupPath = "C:\openclaw-env\openclaw.log.$(Get-Date -Format 'yyyyMMddHHmmss')" if (Test-Path $logPath) { Rename-Item $logPath $backupPath # 创建新日志文件 New-Item $logPath -ItemType File -Force | Out-Null } # 保留最近 5 个备份 Get-ChildItem "C:\openclaw-env\openclaw.log.*" | Sort-Object LastWriteTime -Descending | Select-Object -Skip 5 | ForEach-Object { Remove-Item $_.FullName }

在 Task Scheduler 中再建一个任务,触发器设为“每天凌晨 2:00”,操作为“启动程序” →powershell.exe,参数为-ExecutionPolicy Bypass -File "C:\openclaw-env\rotate_logs.ps1"

Crash Recovery 更重要:OpenClaw 进程崩溃后,Task Scheduler 的“失败重试”会拉起新进程,但llama-server.exe还在运行,端口被占。因此start_openclaw.bat中必须加端口检查:

:: 在启动 llama-server 前插入 netstat -ano | findstr ":8000" | findstr "LISTENING" >nul if "%errorlevel%"=="0" ( echo Port 8000 is occupied. Killing process... for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":8000" ^| findstr "LISTENING"') do taskkill /f /pid %%a >nul 2>&1 )

这段代码会杀掉占用 8000 端口的进程(通常是上次崩溃残留的llama-server.exe),确保每次启动干净。

5. 常见问题与排查技巧实录

5.1 典型问题速查表

现象可能原因排查命令解决方案
llama-server.exe启动后立即退出,CMD 闪退VS Build Tools 未安装或 CUDA 路径错误where nvccvcvarsall.bat是否存在重装 VS Build Tools 2022,确保C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat存在
OpenClaw 启动报ConnectionRefusedError: [WinError 10061]llama-server未运行或端口不对tasklist /fi "imagename eq llama-server.exe"curl http://127.0.0.1:8000/health检查 bat 中端口是否为8000,确认llama-server进程存在
Telegram Bot 收不到消息,openclaw.logGot updateallowed_usersID 错误或 BotFather 未Disableprivacycurl "https://api.telegram.org/bot{TOKEN}/getUpdates"重新获取 user_id,确认 BotFather 设置Disable
/search返回空结果,日志显示 `HTTP

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询