有一类用户不是偏好本地 AI,而是必须本地。处理特权通信的律师。处理患者数据的医疗机构。在涉密环境工作的政府承包商。合规团队否决了云端 AI 服务的公司。以及大量单纯不想对话数据存在别人服务器上的个人。
对这些用户来说,"大部分本地"是不够的。他们需要一套拔掉网线也能用的方案。下面是搭建方法。
架构
三个组件,各负其责:
- •Ollama 管理模型下载、量化,在 localhost 提供兼容 OpenAI 的 API
- •ZeroClaw 提供智能体运行时——记忆、频道、工具、人设和编排
- •Open WebUI 提供一个精致的浏览器聊天界面,类似 ChatGPT 的 UI
三个都跑在本地。Ollama 和 ZeroClaw 通过 localhost 通信。Open WebUI 连接 Ollama 的本地 API。初次设置之后,什么都不碰互联网。
第一步:安装 Ollama
```bash curl -fsSL https://ollama.com/install.sh | sh ```
Windows 从 ollama.com/download 下载安装包。macOS 上 `brew install ollama` 可以。
趁还有网的时候把模型拉下来:
```bash ollama pull llama3.1:8b ollama pull qwen2.5-coder:7b ollama pull gemma3:4b ```
模型只下载一次,存在本地。这一步之后,Ollama 再也不需要联网。
选模型: 如果你有 16GB+ 内存或 8GB+ 显存的 GPU,从 llama3.1:8b 开始——同尺寸里最全面的。如果只有 8GB 内存没有 GPU,用 gemma3:4b。专门写代码的话,qwen2.5-coder:7b 在代码生成基准测试上超过了两倍大小的模型。
第二步:安装 ZeroClaw
```bash curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/bootstrap.sh | bash ```
配置 ZeroClaw 使用 Ollama 作为后端。编辑 `~/.zeroclaw/config.toml`:
```bash [provider] type = "openai-compatible" base_url = "http://localhost:11434/v1" model = "llama3.1:8b" api_key = "not-needed"
[agent] name = "LocalAssistant" personality = "Helpful, concise assistant running entirely on local hardware. Prioritize accuracy over speed."
[memory] type = "sqlite" path = "~/.zeroclaw/memory.db" ```
启动 ZeroClaw:
```bash zeroclaw start ```
测试一下:
```bash zeroclaw chat "What can you help me with?" ```
第三步:安装 Open WebUI
Open WebUI 提供熟悉的聊天界面。用 Docker 部署:
```bash docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main ```
浏览器打开 http://localhost:3000。创建一个本地管理员账号(存在 Docker 卷里,不会发送到任何地方)。Open WebUI 自动检测本地 Ollama 实例并列出你下载的模型。
现在你有了一个完全跑在自己硬件上的 ChatGPT 风格界面。
第四步:断网
这是测试。拔掉网线或关掉 WiFi。Open WebUI 应该还能在 localhost:3000 正常加载。输入一条消息。你应该在几秒内从本地模型得到回复。
如果断网后能用,你的技术栈就是完全离线可用的。重新联网不会改变任何东西——无论网络状态如何,技术栈继续本地运行。
按硬件选模型
能跑什么模型取决于你的内存和 GPU:
- •gemma3:4b——快,基础任务够用
- •qwen2.5:3b——更小但出乎意料地能打
- •llama3.1:8b——这个档位最好的通用模型
- •qwen2.5-coder:7b——开发用
- •跟上面一样的模型,但推理快 3-5 倍
- •响应时间从 5-8 秒降到 1-2 秒
- •deepseek-v3.2:32b——比 8B 模型质量大幅提升
- •qwen2.5-coder:32b——软件开发很好用
加入 ZeroClaw 的智能体功能
基础的 Ollama + Open WebUI 给你一个聊天界面。加入 ZeroClaw 给你一个智能体——能记住之前的对话、使用工具、连接消息平台。
记忆持久化: ZeroClaw 用 SQLite 混合搜索(FTS5 + 向量)存储对话。你的智能体记得昨天、上周或上个月讨论的内容。单独的 Open WebUI 不提供跨会话记忆。
工具使用: 配置 ZeroClaw 工具来处理文件操作、计算或自定义脚本。智能体可以读取系统文件、执行白名单命令、与本地服务交互——全部离线。
多频道接入: 在线时连接 Telegram、Discord 或其他消息平台,而实际推理保持本地。消息平台只看到文字消息;AI 处理从不离开你的机器。
安全加固
对于因合规或安全原因需要这套方案的用户,额外的加固步骤:
- 1.**只绑定 localhost。** Ollama 和 ZeroClaw 都应该监听 127.0.0.1 而不是 0.0.0.0。ZeroClaw 默认如此;Ollama 用 `OLLAMA_HOST=127.0.0.1 ollama serve` 来确认。
- 2.**关掉遥测。** Open WebUI 有可选的遥测功能,气隙部署应该关掉:在 Docker 环境变量中设置 `ENABLE_TELEMETRY=false`。
- 3.**用 ZeroClaw 的白名单。** 配置文件路径和网络白名单,限制智能体在本地机器上能访问的范围。
- 4.**加密记忆数据库。** 对于敏感对话,为 ZeroClaw 的记忆文件使用 SQLite 加密(SQLCipher)。
你放弃了什么
诚实面对取舍很重要。完全离线意味着:
- •模型质量天花板。 本地模型(8B-32B 参数)不错但不是前沿水平。Claude 3.5 Opus 或 GPT-5 这样的云端模型在复杂推理任务上产出更好。
- •没有联网工具。 网页搜索、实时数据获取和外部 API 调用在离线时不工作。智能体局限于本地知识和工具。
- •硬件投入。 需要专用硬件。持续成本是电费而不是 API 费用,但前期投入是实实在在的。
大多数用户的实际做法是混合方案:默认跑本地,需要前沿质量时路由到云端,保留离线能力作为网络不可用或任务敏感时的后备。
ZeroClaw 原生支持这个——配置本地后端(Ollama)和云端后端,设置路由规则,智能体根据每个查询自动选择合适的后端。你的私密对话留在本地。复杂的研究问题走云端。边界由你控制。