OpenClaw 家庭AI助手完全指南
当你问天气时,它会根据训练数据里的模式生成一个"看起来合理"的回答,但这个回答是完全虚构的,这就是AI领域常说的"幻觉"(Hallucination)问题。这次搭建的最大收获,不只是拥有了一个AI助手,而是深刻理解了每个组件的工作原理:为什么WSL2需要端口转发、为什么entrypoint.sh会覆盖配置文件、为什么AI会产生幻觉……在没有配置天气工具的情况下,它会基于训练数据"猜测"一个看似合理

从零到一:在家用电脑上搭建私人AI助手
完整安装 · 错误排查 · Telegram集成 · GitHub集成 · 实时天气
版本 1.0 · 2026年3月
目录
1. 前言:为什么要搭建本地AI
2. 为什么选择本地AI而不是云端AI
3. 硬件与软件要求
4. 系统架构详解
5. 详细安装步骤
5.1. 克隆项目
5.2. 配置环境变量(.env)
5.3. 启动容器
5.4. WSL2 + Windows 专属配置
5.5. 信任HTTPS证书
5.6. 设置Windows端口转发
5.7. 批准浏览器设备
6. Telegram机器人集成
7. GitHub集成——用聊天管理代码
8. 实时天气功能配置
9. 常见错误与修复(10个真实案例)
10. 模型选择与切换指南
11. 实用命令速查表
12. 总结与展望
1. 前言:为什么要搭建本地AI
你是否曾经梦想过拥有一个像电影里一样的私人AI助手——随时回答问题、帮你处理工作、甚至在手机上直接和它聊天?这一切,现在都可以在你自己的家用电脑上实现,完全免费,数据永不离开你的机器。
本文将带你从零开始,一步一步地在家用PC(Windows + WSL2环境)上搭建一套完整的本地AI助手系统。我们使用的是 OpenClaw + Ollama 的组合方案——OpenClaw提供对话界面和工具集成,Ollama在你的NVIDIA GPU上运行大型语言模型。
这篇文章不仅是一份安装指南,更是一份"踩坑记录"。在搭建过程中我遇到了各种问题:SSL证书报错、端口无法访问、AI乱编天气数据……我会把每一个问题的原因和解决方案都详细记录下来,让你少走弯路。读完本文,你将真正理解每个组件的工作原理,而不只是复制粘贴命令。
2. 为什么选择本地AI而不是云端AI
在决定是否值得花时间搭建之前,先来看看本地AI和云端AI的核心区别:
|
对比项 |
云端AI(如ChatGPT) |
本地AI(本方案) |
|
数据隐私 |
❌ 数据上传到服务器 |
✅ 数据永不离开你的电脑 |
|
使用费用 |
❌ 按月/按量付费 |
✅ 一次配置,永久免费 |
|
网络依赖 |
❌ 必须联网 |
✅ 完全离线可用 |
|
响应速度 |
✅ 快(服务器算力) |
✅ 快(本地GPU) |
|
可定制程度 |
❌ 受平台限制 |
✅ 完全可控,自由定制 |
|
模型选择 |
❌ 只能用平台提供的 |
✅ 数百个开源模型任选 |
|
工具集成 |
部分支持(有限) |
✅ GitHub、Telegram、天气API等 |
|
审查限制 |
❌ 有内容过滤 |
✅ 无审查,完全自主 |
|
�� 核心理念 |
|
你的AI,你做主。没有订阅费,没有数据泄露,没有审查。 |
3. 硬件与软件要求
3.1 硬件要求
|
组件 |
最低要求 |
推荐配置 |
备注 |
|
操作系统 |
Windows 10 |
Windows 11 |
WSL2支持更稳定 |
|
显卡(GPU) |
NVIDIA RTX 3070 (8GB显存) |
RTX 4080/5080 (16GB+) |
必须支持CUDA |
|
内存(RAM) |
16 GB |
32 GB |
模型加载占用较多 |
|
硬盘空间 |
20 GB可用 |
50 GB可用 |
qwen3:14b约需9GB |
|
网络 |
普通宽带 |
百兆以上宽带 |
首次拉取模型约9GB |
3.2 软件要求
|
软件 |
版本要求 |
用途 |
获取方式 |
|
Windows |
10 / 11 |
宿主操作系统 |
系统自带 |
|
WSL2 |
2.x |
Linux子系统(运行Docker) |
wsl --install |
|
Ubuntu (WSL2内) |
22.04 LTS |
Linux发行版 |
Microsoft Store免费 |
|
Docker Desktop |
4.x 及以上 |
容器运行环境 |
docker.com |
|
NVIDIA 驱动 |
525 及以上 |
GPU驱动 |
nvidia.com |
|
NVIDIA Container Toolkit |
最新版 |
Docker GPU直通 |
docs.nvidia.com |
|
Git |
2.x 及以上 |
克隆项目代码 |
git-scm.com |
|
⚠️ 关键检查:验证Docker能否识别GPU |
|
在所有步骤开始之前,先运行以下命令确认GPU可用: |
4. 系统架构详解
整个系统由4个Docker容器组成,每个容器职责单一、分工明确。它们通过一个内部Docker网络(openclaw-net)互相通信,对外只暴露一个HTTPS端口(18790),安全且简洁。

|
容器名称 |
基础镜像 |
核心职责 |
对外端口 |
|
openclaw-ollama |
ollama/ollama:latest |
运行LLM,NVIDIA GPU加速推理 |
11434(内部) |
|
openclaw-model-init |
ollama/ollama:latest |
首次拉取模型,完成后自动退出 |
无 |
|
openclaw-gateway |
自定义构建 |
聊天界面 + 工具集成(GitHub/Telegram/天气) |
18789(内部) |
|
openclaw-caddy |
caddy:latest |
HTTPS反向代理,自动管理TLS证书 |
18790(对外) |
5. 详细安装步骤
5.1 克隆项目
打开WSL2终端(在Windows开始菜单中搜索"Ubuntu"),执行以下命令:
|
# 进入你的工作目录(可以改成你喜欢的路径) cd ~ # 克隆项目 git clone https://github.com/CloudsDocker/home-ai-stack.git cd OpenClaw # 确认文件结构 ls -la |
正确的项目结构应如下所示:
|
OpenClaw/ ├── docker-compose.yml # 核心配置:编排所有容器 ├── Caddyfile # HTTPS反向代理配置 ├── .env.example # 环境变量模板(需复制为.env) ├── install-tools.sh # 安装辅助脚本 ├── openclaw-approve # 批准浏览器设备的工具脚本 └── openclaw/ ├── Dockerfile # 自定义容器镜像构建配置 └── entrypoint.sh # 容器启动时的自动配置脚本 |
5.2 配置环境变量(.env)
这是最关键的一步。.env 文件控制整个系统的认证、集成和行为。配置错误会导致服务无法启动或功能缺失。
|
# 复制模板 cp .env.example .env # 编辑配置 nano .env |
.env 配置项详细说明:
|
# ────────────────────────────────────────────────────── # 必填项 # ────────────────────────────────────────────────────── # 网关认证Token(用于浏览器登录,务必设置为强随机值) # 生成方法:openssl rand -hex 24 OPENCLAW_GATEWAY_TOKEN=your_strong_random_token_here # ────────────────────────────────────────────────────── # 可选项:AI模型选择 # ────────────────────────────────────────────────────── # 默认使用qwen3:14b-fast(快速版,适合日常使用) OPENCLAW_MODEL=ollama/qwen3:14b-fast # ────────────────────────────────────────────────────── # 可选项:Telegram机器人 # ────────────────────────────────────────────────────── # 从 Telegram 的 @BotFather 获取 TELEGRAM_BOT_TOKEN=123456789:ABCdef_your_bot_token # 你的 Telegram 用户ID(从 @userinfobot 获取) TELEGRAM_ALLOWED_USER_ID=987654321 # ────────────────────────────────────────────────────── # 可选项:GitHub集成 # ────────────────────────────────────────────────────── GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx GITHUB_REPO=yourusername/yourrepo GITHUB_USERNAME=yourusername GITHUB_BASE_BRANCH=master # ────────────────────────────────────────────────────── # 可选项:Brave网络搜索 # ────────────────────────────────────────────────────── BRAVE_API_KEY=BSAxxx... |
|
�� 如何生成安全Token |
|
在WSL2终端中运行: |
5.3 启动容器
配置完成后,执行以下命令启动所有服务。第一次运行时系统会自动下载AI模型(约9GB),请保持网络通畅并耐心等待。
|
# 后台启动所有容器 docker compose up -d # 实时查看启动日志(推荐开另一个终端窗口运行) docker compose logs -f # 也可以只看AI网关的日志 docker compose logs -f openclaw # 查看各容器运行状态 docker compose ps |
当日志中出现以下内容时,说明系统已完全就绪:
|
[openclaw] Ollama is ready. [openclaw] Model qwen3:14b is ready. [openclaw] TOOLS.md written with GitHub access config [openclaw] Registered 2 Ollama model(s): ['qwen3:14b', 'qwen3:14b-fast'] [openclaw] Starting gateway — model: ollama/qwen3:14b-fast bind: lan port: 18789 listening on ws://0.0.0.0:18789 |
|
⏱️ 首次启动需要时间 |
|
模型下载容器(openclaw-model-init)需要从网络下载约9GB的模型文件。 |
5.4 WSL2 + Windows 专属配置
如果你在Windows上通过WSL2运行Docker,需要额外的网络配置。这是因为WSL2有自己独立的网络空间,IP地址与Windows不同。
|
WSL2网络访问原理图 Windows浏览器 Windows网络层 WSL2网络空间 (Chrome/Edge) (portproxy转发) (Docker容器) │ │ │ │ https://localhost │ netsh portproxy │ │ :18790 │ 127.0.0.1:18790 ───────────▶│ 172.x.x.x:18790 │ ──────────────────────▶│ ────────────────────────────▶ │ openclaw-caddy │ │ │ 问题根源:浏览器访问 Windows 的 localhost,但服务运行在 WSL2 虚拟机的私有 IP(172.x.x.x)上,直接无法访问。 解决方案:用 Windows 的 netsh portproxy 命令建立端口映射。 |
5.5 信任HTTPS证书
Caddy会自动生成一个本地根CA证书,用于给localhost签发HTTPS证书。Windows和浏览器默认不信任未知CA,需要手动导入才能正常访问。
|
# 第一步:将证书从容器导出到Windows文件系统 docker exec openclaw-caddy cat /data/caddy/pki/authorities/local/root.crt > /mnt/c/Users/Public/caddy-root.crt # 验证文件已创建 ls -lh /mnt/c/Users/Public/caddy-root.crt |
第二步:在Windows中导入证书(按顺序操作):
- 按 Win+R,输入 certmgr.msc,按回车,打开"证书管理器"
- 在左侧树形菜单中,展开"受信任的根证书颁发机构",点击"证书"
- 在右侧空白区域右键 → "所有任务" → "导入"
- 点击"下一步",浏览文件,选择 C:\Users\Public\caddy-root.crt
- 确保证书存储位置是"受信任的根证书颁发机构"
- 完成导入后,完全关闭并重新打开Chrome或Edge(必须关闭所有窗口)
5.6 设置Windows端口转发
以管理员身份打开PowerShell(右键开始菜单 → "Windows PowerShell(管理员)"):
|
# 第一步:在WSL2终端中获取当前IP hostname -I | awk '{print $1}' # 示例输出(你的IP会不同):172.x.x.x # 第二步:在 PowerShell(管理员)中执行(将IP替换为上面获取的值) netsh interface portproxy add v4tov4 listenport=18790 listenaddress=127.0.0.1 connectport=18790 connectaddress=172.x.x.x netsh interface portproxy add v6tov4 listenport=18790 listenaddress=::1 connectport=18790 connectaddress=172.x.x.x # 验证配置是否生效 netsh interface portproxy show all |
|
⚠️ 重要:重启后WSL2的IP会改变! |
|
每次重启电脑后,WSL2会获得新的IP地址,端口转发会失效。 |
5.7 批准浏览器设备(首次访问)
第一次用浏览器访问时,OpenClaw需要确认这是受信任的设备。这是一次性操作,之后无需重复。
|
# 安装辅助脚本(只需运行一次) bash install-tools.sh # 打开浏览器访问(先访问,触发配对请求): # https://localhost:18790/#token=<你的OPENCLAW_GATEWAY_TOKEN> # 然后在WSL2终端运行批准命令: openclaw-approve # 期望看到: # Approving xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ... # Approved <device-id> # 刷新浏览器,即可正常使用 |
|
�� 安装完成! |
|
如果你能看到OpenClaw的聊天界面,说明安装成功! |
6. Telegram机器人集成
Telegram集成是这套系统最实用的功能之一。配置完成后,你可以随时随地从手机发消息给AI,就像和朋友聊天一样自然。
配置步骤
- 步骤1:在Telegram中搜索 @BotFather,发送 /newbot 命令
- 步骤2:为机器人起一个名字(如"我的AI助手")和用户名(必须以bot结尾,如"myai_assistant_bot")
- 步骤3:BotFather会返回一个Token,格式如:123456789:ABCdef_GHIjkl...
- 步骤4:搜索 @userinfobot,发送任意消息,它会告诉你自己的用户ID(纯数字)
- 步骤5:将Token和用户ID填入 .env 文件,重建容器
|
# 在 .env 中填写 TELEGRAM_BOT_TOKEN=123456789:ABCdef_your_real_token_here TELEGRAM_ALLOWED_USER_ID=987654321 # 重建并重启AI网关容器 docker compose build --no-cache openclaw docker compose up -d openclaw # 验证:在Telegram中找到你的机器人,发送一条消息测试 |
|
Telegram消息处理流程 你的手机 Telegram服务器 OpenClaw容器(家里的电脑) (Telegram App) (telegram.org) (openclaw-gateway) │ │ │ │ "明天天气怎么样" │ 通过HTTPS长轮询 │ │ ───────────────────▶│ ───────────────────────▶│ │ │ │ 执行天气API查询 │ │ │ (Open-Meteo) │ "明天晴天,25-32°C" │ 返回AI回复 │ │ ◀───────────────────│ ◀───────────────────────│ |
|
�� 安全说明 |
|
TELEGRAM_ALLOWED_USER_ID 是白名单机制——只有你自己的用户ID才能与AI交互。 |
7. GitHub集成——用聊天管理代码
配置GitHub集成后,你可以直接在聊天中让AI查看你的Pull Request、创建PR、查找最新分支——完全不需要打开浏览器或记复杂的Git命令。
获取GitHub Personal Access Token
- 登录 GitHub → 点击右上角头像 → Settings
- 左侧菜单滚到底部:Developer settings → Personal access tokens → Tokens (classic)
- 点击 "Generate new token (classic)"
- 选择权限:至少勾选 repo(全部子选项)
- 点击生成,立即复制Token(页面刷新后无法再看到!)
|
# 在 .env 中配置(替换为你的实际值) GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx GITHUB_REPO=yourusername/yourrepo GITHUB_USERNAME=yourusername GITHUB_BASE_BRANCH=master # 重建容器使配置生效 docker compose build --no-cache openclaw docker compose up -d openclaw |
配置成功后,你可以用自然语言与AI交互:
|
你说:"帮我看看我有哪些还没合并的PR" AI做:立即执行Python代码调用GitHub API,列出所有open PR 你说:"帮我从 feature/login-fix 分支创建一个PR到master" AI做:自动创建PR,返回PR链接和编号 你说:"我最近提交的分支是哪个?" AI做:查询所有分支,按提交时间排序,告诉你最新的分支名 |
8. 实时天气功能配置
8.1 问题:AI为什么会乱编天气?
大语言模型(LLM)本质上是一个"概率预测机器"——它根据训练数据预测下一个词,而不是真的去查询互联网。当你问天气时,它会根据训练数据里的模式生成一个"看起来合理"的回答,但这个回答是完全虚构的,这就是AI领域常说的"幻觉"(Hallucination)问题。
|
❌ 未配置天气工具时的典型错误 |
|
用户:我所在城市明天天气怎么样? |
8.2 根本原因:entrypoint.sh覆盖了配置文件
你可能会想:直接修改 workspace/TOOLS.md 加上天气工具说明不就行了?但这里有一个重要的"陷阱":entrypoint.sh 每次容器启动时都会用Python脚本重新生成并覆盖 TOOLS.md!
|
TOOLS.md覆盖问题示意图 容器每次启动时(包括 docker compose restart): entrypoint.sh │ │ python3写入(覆盖!) ▼ ~/.openclaw/workspace/TOOLS.md ←── AI实际读取的文件 workspace/TOOLS.md(项目目录) ──✗── 被忽略!仅在首次创建卷时使用 结论:直接修改 workspace/TOOLS.md 对已运行的容器无效! 正确做法:修改 entrypoint.sh 中的Python代码字符串。 |
8.3 正确修复方法
打开 openclaw/entrypoint.sh,找到 Python 的 content = """...""" 字符串,在结束的三引号之前加入天气工具说明:
|
# 在 entrypoint.sh 的 TOOLS.md 内容字符串末尾(结束"""之前)添加: ## Weather **你的位置:** 你的城市,你的省/州,你的国家 (填入你实际所在位置的经纬度) **重要规则:** 询问天气时,必须使用exec python3执行以下代码, 禁止猜测或编造天气数据! ```python import urllib.request, json lat, lon = 你的纬度, 你的经度 # 替换为你的实际经纬度 url = ( "https://api.open-meteo.com/v1/forecast" f"?latitude={lat}&longitude={lon}" "&daily=weather_code,temperature_2m_max,temperature_2m_min," "precipitation_sum,wind_speed_10m_max,uv_index_max" "¤t=temperature_2m,weather_code,wind_speed_10m,relative_humidity_2m" "&timezone=你的时区&forecast_days=7" ) data = json.load(urllib.request.urlopen(url)) # ... 解析并打印结果 ``` |
如何获取你所在地的经纬度:
- 打开 maps.google.com,搜索你的城市或小区名称
- 右键点击地图上的位置,选择"这是哪里?"
- 屏幕下方会显示经纬度,例如:-33.7, 151.1(纬度在前,经度在后)
|
# 修改完 entrypoint.sh 后,重建容器使修改生效: docker compose build --no-cache openclaw docker compose up -d openclaw # 测试:在聊天中问"明天天气怎么样?" # AI应该立即执行Python代码,返回真实数据 |
|
✅ 修复后的效果 |
|
用户:明天天气怎么样? |
9. 常见错误与修复(10个真实案例)
以下是我在实际搭建过程中遇到的所有错误,每个都经过验证,附有根因分析和可直接使用的修复命令。
|
编号 |
错误现象 |
根本原因 |
严重程度 |
|
E1 |
ERR_CONNECTION_REFUSED (localhost:18790) |
Windows端口转发未设置 |
�� 阻塞性 |
|
E2 |
ERR_SSL_PROTOCOL_ERROR |
Caddy根证书未导入Windows |
�� 阻塞性 |
|
E3 |
"pairing required" / "origin not allowed" |
设备未批准 或 使用http而非https |
�� 阻塞性 |
|
E4 |
GPU未被检测到 / CUDA错误 |
NVIDIA Container Runtime未正确配置 |
�� 阻塞性 |
|
E5 |
模型回复极慢(每秒不到2个字) |
GPU初始化失败,退回CPU推理 |
�� 性能问题 |
|
E6 |
AI编造虚假天气数据 |
AI无实时天气工具,产生幻觉 |
�� 功能错误 |
|
E7 |
修改TOOLS.md不生效 |
entrypoint.sh每次启动覆盖此文件 |
�� 配置陷阱 |
|
E8 |
exec工具在Telegram中不可用 |
Telegram通道未配置exec权限 |
�� 功能缺失 |
|
E9 |
GitHub API返回401错误 |
Token无效、过期或权限不足 |
�� 功能缺失 |
|
E10 |
重启后浏览器又无法访问 |
WSL2每次重启分配新IP,端口转发失效 |
�� 常规维护 |
E1: ERR_CONNECTION_REFUSED
|
错误现象 |
|
Chrome显示:ERR_CONNECTION_REFUSED |
根本原因:
Docker容器运行在WSL2的网络空间(IP如172.x.x.x),而浏览器访问的是Windows的localhost。两者是隔离的网络空间,没有端口转发就无法互通。
修复步骤:
|
# 在WSL2中获取当前IP hostname -I | awk '{print $1}' # 假设输出: 172.x.x.x # 在PowerShell(管理员)中执行(替换IP): netsh interface portproxy add v4tov4 listenport=18790 listenaddress=127.0.0.1 connectport=18790 connectaddress=172.x.x.x netsh interface portproxy add v6tov4 listenport=18790 listenaddress=::1 connectport=18790 connectaddress=172.x.x.x # 刷新浏览器 |
E2: ERR_SSL_PROTOCOL_ERROR
|
错误现象 |
|
Chrome显示:ERR_SSL_PROTOCOL_ERROR 或 NET::ERR_CERT_AUTHORITY_INVALID |
根本原因:
Caddy使用自签名本地CA证书。Windows和Chrome不信任未知CA,需要手动将其加入系统信任列表。
修复步骤:
|
# 导出Caddy根证书 docker exec openclaw-caddy cat /data/caddy/pki/authorities/local/root.crt > /mnt/c/Users/Public/caddy-root.crt # Windows操作(图形界面): # Win+R → 输入 certmgr.msc → 回车 # 展开"受信任的根证书颁发机构" → 右键"证书" → 所有任务 → 导入 # 选择上面导出的 caddy-root.crt 文件 # 完全重启Chrome(关闭所有窗口后重新打开) |
E3: "Pairing Required" / "Origin Not Allowed"
|
错误现象 |
|
OpenClaw界面显示 "Device pairing required" |
根本原因:
"Pairing required":每台新浏览器第一次访问都需要设备授权,这是安全机制。
"Origin not allowed":使用了http://而不是https://,或浏览器不在安全上下文中。
修复步骤:
|
# 修复 "pairing required": openclaw-approve # 然后刷新浏览器 # 修复 "origin not allowed": # 确保URL使用 https:// 开头 # 正确格式:https://localhost:18790/#token=<你的token> |
E4: GPU未被检测到
|
错误现象 |
|
docker compose logs ollama 显示: |
根本原因:
NVIDIA Container Runtime未正确安装,或Docker Desktop未启用GPU支持,导致容器无法访问GPU。
修复步骤:
|
# 第一步:验证GPU可用性 docker info | grep -i nvidia # 期望输出包含: Runtimes: ... nvidia ... # 第二步:测试GPU访问 docker run --rm --gpus all nvidia/cuda:12.0-base-ubuntu22.04 nvidia-smi # 应该显示你的GPU信息 # 如果不可用,需要: # 1. 安装 NVIDIA Container Toolkit(参考官方文档) # 2. Docker Desktop → Settings → Resources → WSL Integration → 启用你的Ubuntu |
E5: 模型回复极慢(CPU模式)
|
错误现象 |
|
AI每次回复需要几分钟,明显不正常(正常GPU推理应是流畅的字流输出) |
根本原因:
14B参数模型在CPU上每秒约生成1-3个token,而GPU上可达30-60 token/s。GPU初始化失败后,Ollama会静默回退到CPU模式,不报错但速度极慢。
修复步骤:
|
# 检查Ollama是否在用GPU docker compose logs ollama | grep -E "gpu|cuda|CUDA|GPU" # 期望看到: "CUDA: 1" 或 "GPU layers: 33/33" # 实时查看GPU使用率(在WSL2中运行) nvidia-smi -l 1 # 如果AI在推理时GPU利用率接近0%,说明在用CPU # 解决:重新安装NVIDIA Container Toolkit,重启Docker |
|
�� 提示 |
|
14B模型在RTX 3080以上显卡上运行流畅(30+ token/s)。如果显存不足,可改用qwen3:8b(6GB显存)。 |
E6: AI编造虚假天气数据
|
错误现象 |
|
询问天气时,AI给出的温度、天气情况与实际完全不符 |
根本原因:
AI模型没有实时数据获取能力。在没有配置天气工具的情况下,它会基于训练数据"猜测"一个看似合理的回答,这就是所谓的"幻觉"(Hallucination)。答案可能听起来合理,但数据是假的。
修复步骤:
|
# 解决方案:在 entrypoint.sh 中添加天气工具(详见第8章) # 然后重建: docker compose build --no-cache openclaw docker compose up -d openclaw # 使用免费的 Open-Meteo API(无需注册,无需API Key): # https://api.open-meteo.com/v1/forecast?latitude=纬度&longitude=经度&... |
E7: TOOLS.md修改不生效
|
错误现象 |
|
直接修改了 workspace/TOOLS.md,重启容器后AI行为没有任何变化 |
根本原因:
entrypoint.sh 在每次容器启动时都会用Python脚本重新生成并写入 TOOLS.md,完全覆盖你的修改。workspace/TOOLS.md 只在第一次创建Docker卷时作为种子文件使用。
修复步骤:
|
# ❌ 错误做法(会被覆盖): vim workspace/TOOLS.md # ✅ 正确做法: vim openclaw/entrypoint.sh # 找到 content = """...""" 字符串 # 在结束的 """ 之前添加你的内容 # 然后重建: docker compose build --no-cache openclaw docker compose up -d openclaw |
E8: exec工具在Telegram中不可用
|
错误现象 |
|
在Telegram中请AI执行代码时,AI说"我没有执行工具"或只描述步骤而不实际执行 |
根本原因:
OpenClaw按通道(channel)管理工具权限。Telegram DM通道默认不启用exec工具,需要在配置中显式开启。
修复步骤:
|
# 确认 entrypoint.sh 中包含以下配置: # 1. exec工具全局配置 openclaw config set tools.exec.security allowlist openclaw config set tools.exec.safeBins '["curl","python3"]' openclaw config set tools.exec.ask off # 2. Telegram DM通道的系统提示中包含工具权限: # dm_direct["tools"] = {"alsoAllow": ["exec"]} # 修改后重建: docker compose build --no-cache openclaw && docker compose up -d openclaw |
E9: GitHub API 401错误
|
错误现象 |
|
AI在执行GitHub操作时返回: |
根本原因:
Personal Access Token无效(格式错误、含多余空格)、已过期、或未授予足够权限(需要repo scope)。
修复步骤:
|
# 检查Token是否正确(应以 ghp_ 开头,无空格) grep GITHUB_TOKEN .env # 用Token直接测试API(替换YOUR_TOKEN) curl -H "Authorization: token YOUR_TOKEN" https://api.github.com/user # 正常应返回你的用户信息JSON,而不是401 # 如果Token无效,在GitHub重新生成: # GitHub.com → Settings → Developer settings → Personal access tokens → 生成新Token # 需要的权限:repo(全部子项) |
E10: 重启后浏览器又无法访问
|
错误现象 |
|
重启电脑或WSL2后,浏览器再次显示 ERR_CONNECTION_REFUSED |
根本原因:
WSL2使用动态IP分配——每次重启都会获得新的IP地址,之前设置的端口转发规则还指向旧IP,因此失效。
修复步骤:
|
# 获取新的WSL2 IP NEW_IP=$(hostname -I | awk '{print $1}') echo "当前WSL2 IP: $NEW_IP" # 在PowerShell(管理员)中更新转发规则: netsh interface portproxy delete v4tov4 listenport=18790 listenaddress=127.0.0.1 netsh interface portproxy add v4tov4 listenport=18790 listenaddress=127.0.0.1 connectport=18790 connectaddress=<新IP> |
|
�� 提示 |
|
建议创建一个PowerShell脚本放在启动项中,每次开机自动更新端口转发。 |
10. 模型选择与切换指南
选择合适的模型取决于你的显卡显存和使用场景:
|
模型名称 |
所需显存 |
推理速度 |
回答质量 |
推荐使用场景 |
|
qwen3:14b-fast |
~10 GB |
⭐⭐⭐⭐⭐ 极快 |
⭐⭐⭐⭐ 优秀 |
日常对话、工具调用(默认推荐) |
|
qwen3:14b |
~10 GB |
⭐⭐⭐ 中等 |
⭐⭐⭐⭐⭐ 最佳 |
复杂推理、代码分析、深度问答 |
|
qwen3:8b |
~6 GB |
⭐⭐⭐⭐⭐ 极快 |
⭐⭐⭐ 良好 |
显存不足时的轻量替代方案 |
|
llama3.1:latest |
~5 GB |
⭐⭐⭐⭐ 快 |
⭐⭐⭐ 良好 |
英文任务为主的轻量场景 |
|
phi4 |
~9 GB |
⭐⭐⭐ 中等 |
⭐⭐⭐ 良好 |
⚠️ 不支持工具调用,不推荐 |
|
# 下载新模型 docker exec openclaw-ollama ollama pull qwen3:8b # 切换默认模型 docker exec openclaw-gateway openclaw models set ollama/qwen3:8b docker compose restart openclaw # 查看已下载的模型列表 docker exec openclaw-ollama ollama list |
11. 实用命令速查表
|
# ────────────────────────────────────────────────────────────────────── # 日常启动与管理 # ────────────────────────────────────────────────────────────────────── docker compose up -d # 启动所有服务(后台运行) docker compose down # 停止并移除所有容器 docker compose restart openclaw # 只重启AI网关(不重新下载模型) docker compose ps # 查看所有容器状态 # ────────────────────────────────────────────────────────────────────── # 日志查看 # ────────────────────────────────────────────────────────────────────── docker compose logs -f # 所有容器实时日志 docker compose logs -f openclaw # 只看AI网关 docker compose logs -f ollama # 只看Ollama(模型服务) docker compose logs --tail=50 openclaw # 最近50行日志 # ────────────────────────────────────────────────────────────────────── # 配置修改后重建 # ────────────────────────────────────────────────────────────────────── docker compose build --no-cache openclaw && docker compose up -d openclaw # ────────────────────────────────────────────────────────────────────── # 数据重置(保留已下载的AI模型,重置聊天记录和配置) # ────────────────────────────────────────────────────────────────────── docker compose down docker volume rm openclaw_openclaw-data docker compose up -d # ────────────────────────────────────────────────────────────────────── # 完全重置(慎用!会删除所有数据包括已下载的9GB模型) # ────────────────────────────────────────────────────────────────────── docker compose down docker volume rm openclaw_ollama-data openclaw_openclaw-data openclaw_caddy-data openclaw_caddy-config docker compose up -d # ⚠️ 完全重置后需重新导入HTTPS证书 |
12. 总结与展望
经过完整的搭建和踩坑,我们最终实现了一套功能完整的本地AI助手系统:
- ✅ 完全本地运行:数据永不离开你的机器,隐私100%保护
- ✅ GPU加速推理:qwen3:14b在NVIDIA显卡上流畅运行,响应迅速
- ✅ HTTPS安全访问:Caddy自动管理证书,浏览器访问安全无警告
- ✅ 手机随时使用:Telegram机器人随时随地,像聊天一样自然
- ✅ GitHub代码助手:用自然语言管理PR和分支,无需记命令
- ✅ 真实天气数据:Open-Meteo API实时查询,不再依赖AI编造
- ✅ 永久免费使用:一次配置,长期使用,无任何订阅费
这次搭建的最大收获,不只是拥有了一个AI助手,而是深刻理解了每个组件的工作原理:为什么WSL2需要端口转发、为什么entrypoint.sh会覆盖配置文件、为什么AI会产生幻觉……这些理解让你能够真正驾驭和自定义这套系统。
展望未来,这套系统还可以进一步扩展:
- 接入邮件:让AI监控并摘要重要邮件
- 日历集成:提醒即将到来的会议和任务
- 智能家居:通过Telegram控制家里的智能设备
- 私人知识库:上传文档,让AI基于你的私人资料回答问题
如果这篇文章对你有帮助,欢迎给 GitHub 项目点个 ⭐ Star,也欢迎把文章分享给同样对本地AI感兴趣的朋友!
|
GitHub: https://github.com/CloudsDocker/home-ai-stack |
更多推荐

所有评论(0)