从零部署你的专属 AI 助理,再到读懂它背后的优雅设计——这一篇就够了
最近 AI 助手圈刮起了一股“私人部署”风,厌倦了各大平台的限流和隐私担忧,我也折腾了一把,搭了个完全自己掌控的 AI 助手——OpenClaw。今天这篇文章,我会先把安装配置和技能扩展的完整流程讲清楚,然后带你深入它的架构设计与扩展哲学。不管你是想快速拥有一个属于自己的 AI 助理,还是想学习它背后的优雅设计,这篇都能满足你。
第一部分:从零搭建你的 OpenClaw
为什么选择 OpenClaw?
- 完全本地掌控
:所有数据都在你自己的服务器上,无隐私泄露,无内容审核(合法使用前提下)。 - 多通道支持
:WhatsApp、Telegram、Slack、Discord、飞书……你常用的聊天软件都能接入。 - 技能生态
:通过 ClawHub 一键安装天气、搜索、博客生成、浏览器自动化等技能。 - 开源免费
:MIT 协议,代码透明,可二次开发。 - 多模型支持
:OpenAI、Anthropic、火山引擎等主流大模型随意切换。
简单说,OpenClaw 就是一个自托管的 AI 助理控制中心,把大模型能力接入你的日常聊天工具,还能无限扩展技能。
环境准备
- 操作系统
:Ubuntu 22.04+(macOS 也可,Windows 推荐 WSL2) - Node.js
:Node 24 或 Node 22.16+(必须新版本) - 内存
:≥1GB(推荐 2GB+) - 网络
:能正常访问 AI 模型 API 即可
一键安装
OpenClaw 提供了非常友好的安装脚本,整个过程只需两条命令:
npm install -g openclaw@latest
openclaw onboard --install-daemon
为什么不用 Docker?官方也提供 Docker 镜像,但 npm 安装更简单,升级也方便。
--install-daemon会自动配置 systemd 用户服务,实现开机自启。
安装向导会交互式地问你几个问题:
- 模型配置
:选择 AI 模型,填写 API Key(推荐火山引擎,国内快且便宜)。 - 工作空间位置
:默认 ~/.openclaw/workspace,直接回车。 - 通道配置
:选择聊天平台(如飞书)。 - 后台服务
:确认安装开机启动服务。
跟着提示走就行,对新手非常友好。
部署后验证
openclaw gateway status # 查看状态
openclaw gateway start # 手动启动(若未启动)
openclaw doctor # 全面检查配置问题
doctor 命令会帮你检查 API Key、端口占用、权限安全等,一定要跑一遍。
远程访问配置(可选)
如果你把 OpenClaw 部署在 VPS 上,想用手机 APP 访问,推荐使用 Tailscale(官方方案):
// ~/.openclaw/openclaw.json
{
"gateway": {
"tailscale": { "mode": "serve" },
"bind": "loopback"
}
}
这样 Tailscale 会自动生成 HTTPS 地址,手机连上 Tailscale 网络就能访问,无需域名和 SSL 证书。如果需要公网访问,可将 mode 改为 funnel 并设置密码:
{
"gateway": {
"tailscale": { "mode": "funnel" },
"bind": "loopback",
"auth": { "mode": "password", "password": "你的密码" }
}
}
安装技能扩展
OpenClaw 最强大的就是技能系统,通过 ClawHub 一键安装:
npm i -g clawhub # 安装 CLI
clawhub search weather # 搜索技能
clawhub install weather # 安装天气技能
clawhub list # 列出已安装技能
clawhub update --all # 更新所有技能
推荐几个实用技能:
- weather
:每日自动推送天气预报。 - tavily-search
:让 AI 实时联网搜索。 - playwright
:浏览器自动化(截图、点击、提取数据)。 - healthcheck
:定期检查服务器 CPU/内存/磁盘。
安装后重启网关生效:
openclaw gateway restart
自定义 AI 助手的性格
工作空间下有四个关键文件:
AGENTS.md:权限与任务优先级(什么能做什么不能做)。 SOUL.md:AI 的风格和性格。 USER.md:关于你的信息(时区、技术栈、爱好等)。 TOOLS.md:环境信息(API Key、服务器地址等)。
例如我的 SOUL.md:
# SOUL.md —— 你的灵魂
我不是聊天机器人,我是助理。
## 核心原则
**真诚帮助,不表演。** 省略"好问题!"、"我很乐意帮你..." —— 直接干活。
**要有自己的观点。** 没有性格的助手就是带步骤的搜索引擎。
## 边界
- 隐私永远是隐私,绝不泄露
- 对外操作拿不准,先问再做
配置后,AI 回答问题干脆利落,效率极高。
常见问题解决
Node 版本过低:使用 nvm 安装 Node 24
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 24 && nvm use 24
npm install -g openclaw@latest端口被占用:默认端口 18789,查看并杀掉进程或修改配置
lsof -i :18789
kill <pid>技能安装失败:检查网络,或手动下载技能放到
~/openclaw/workspace/skills/
第二部分:深入理解 OpenClaw 的架构设计与扩展哲学
安装完成、跑起来之后,你可能会好奇:它为什么能这么灵活?背后的设计思想是什么?
重新理解 OpenClaw:它到底是什么?
很多人以为 OpenClaw 是另一个 ChatGPT 客户端,其实不然——它是一个个人 AI 助理的控制平面,是所有 AI 能力的“枢纽”。
WhatsApp / Telegram / Slack / Discord / 飞书 / ...
│
▼
┌───────────────────────────────┐
│ Gateway │ ← 唯一的长生命周期守护进程
│ (控制平面 + WS 网络) │
│ ws://127.0.0.1:18789 │
└──────────────┬────────────────┘
│
┌───────┼───────┐
│ │ │
Pi Agent CLI WebChat ← 各种客户端接入
│ │ │
macOS/iOS/Android Nodes ← 设备节点,执行本地能力
│ │ │
▼ ▼ ▼
Tools / Skills / Hooks ← 能力扩展体系
传统 AI 应用 = UI 界面 + 直接调用大模型 API
OpenClaw = 网关控制平面 + 多客户端接入 + 技能扩展体系
它把“接入通道”、“AI 推理”、“能力扩展”三个问题解耦了——你可以随时换模型、随时加通道、随时装新技能,互不干扰。
WebSocket 网关设计:为什么所有东西都走 WebSocket?
天生适合长连接:网关需要长时间保持和各通道的连接,同时接受客户端实时连接,WebSocket 比 HTTP 短连接高效,比 TCP 自定义协议简单。
统一的请求-响应+事件推送模型:
请求: {type:"req", id, method, params}响应: {type:"res", id, ok, payload|error}事件: {type:"event", event, payload}
一套协议通吃所有场景。类型安全的协议设计:用 TypeBox 定义协议,自动生成 JSON Schema 甚至 Swift 模型代码,保证跨平台类型安全。
// 真实的 OpenClaw 协议定义示例
export const ConnectRequest = Type.Object({
deviceId: Type.String(),
platform: Type.String(),
challenge: Type.String(),
signature: Type.Optional(Type.String()),
role: Type.Optional(Type.Union([Type.Literal('client'), Type.Literal('node')])),
})
只要你遵循协议,任何语言都可以写客户端——官方已支持 macOS/iOS/Android,你自己写个 Windows 客户端也完全没问题。
节点架构:为什么要把设备和网关分开?
设想一个场景:
网关部署在 VPS 上(稳定在线) 但你想让 Mac 执行截屏、拍照、本地通知 甚至让 Android 手机提供位置、摄像头能力
Node 模式 解决了这个问题:
VPS 服务器
┌──────────┐
│ Gateway │ ← 负责消息通道、AI 推理、技能执行
└────┬─────┘
│ WS over Tailscale
│
┌────▼─────┐ ┌──────────┐
│ macOS │ ... │ Android │ ← Node 节点,只提供本地能力
│ 节点 │ │ 节点 │
└──────────┘ └──────────┘
网关通过 WebSocket 将设备操作命令发给 Node 节点执行,结果返回。例如让 Android 拍照:
你在飞书发消息:“帮我拍一张客厅的照片” 网关知道 camera.*命令需要 Android 节点执行网关通过 WebSocket 发 node.invoke给 Android 节点Android 拍照并返回图片 网关把图片发回飞书
网关可以跑在云端,但仍然能使用各个本地设备的能力——你只需在手机上跑一个轻量级的 Node 节点,不用把整个网关塞进手机。
技能系统:为什么它的扩展能力这么强?
技能加载优先级(高优先级覆盖低优先级):
<workspace>/skills → 你的工作区技能(最高)
<workspace>/.agents/skills
~/.agents/skills
~/.openclaw/skills
bundled skills → 官方内置技能(最低)
skills.load.extraDirs → 额外目录(最低)
觉得官方技能不好用?直接在工作区 skills 目录放一个同名技能,就会自动覆盖,不用改任何核心代码。
配置覆盖机制:在 openclaw.json 里对每个技能做配置覆盖,技能作者只需声明需要的配置项。
{
"skills": {
"entries": {
"tavily-search": {
"enabled": true,
"apiKey": { "source": "env", "id": "TAVILY_API_KEY" }
},
"some-other-skill": { "enabled": false }
}
}
}
热重载技能:默认开启文件监听,修改 SKILL.md 或代码后,下次对话自动加载新逻辑,无需重启网关。
Agent Loop 设计:如何处理并发和排队?
- 每个会话一个队列
:同一会话的请求串行执行,不会乱序。 - 支持不同队列模式
:立即执行或收集批量处理。 - 全局并发控制
:避免服务器过载。
这个朴素的方案解决了会话状态一致性问题——两个工具调用不会同时修改会话历史。
钩子系统:在各个环节插入你的逻辑
OpenClaw 允许你在 Agent 执行循环的多个环节插入自定义逻辑:
before_model_resolve ← 模型解析前,可动态换模型
before_prompt_build ← Prompt 构建前,注入动态上下文
before_agent_start ← Agent 开始前
before_tool_call ← 工具调用前,可拦截或阻止
after_tool_call ← 工具调用后,处理结果
before_agent_reply ← Agent 回复前,可干掉回复自己返回
agent_end ← Agent 结束后,做日志或清理
session_start / session_end
gateway_start / gateway_stop
例如要给所有工具调用加审批流,只需在 before_tool_call 钩子里返回 { block: true } 即可,无需改核心代码。钩子是链式调用的,高优先级可提前终止。
安全模型:默认安全,而非事后补窟窿
配对认证:任何客户端连接网关都需配对。本地连接自动批准,非本地连接必须手动批准,且每次连接要挑战签名。
沙箱隔离:可配置让非主会话(如群聊里的其他人消息)跑在 Docker 沙箱中,默认禁用浏览器、Canvas 等敏感工具。
{
"agents": {
"defaults": {
"sandbox": { "mode": "non-main" }
}
}
}审批机制:执行敏感 shell 命令需要用户手动批准,防止模型幻觉执行危险操作。
Tailscale 集成:为什么官方这么推崇?
- 默认加密
:HTTPS 免证书。 - 身份认证
:只有你 Tailscale 网络内的设备能访问,无需额外用户系统。 - 内网穿透
:网关绑在 127.0.0.1,不暴露公网,从根源减少攻击面。 - Funnel 支持
:需要公网访问时一键开启,证书自动配置。
OpenClaw 甚至会自动帮你配置 Tailscale Serve/Funnel,你只需在配置里写个 mode。
设计哲学:小工具粘合,而非大而全
把复杂问题分解成简单问题,每个部分只做一件事,然后用清晰的接口把它们粘起来。
Gateway 只做控制平面和通信,不自己写推理。 技能只做能力扩展,每个技能聚焦一个领域。 Node 只提供设备能力,不干涉业务逻辑。 钩子只做扩展点,不强求你用什么方式扩展。
这种设计让项目非常容易理解和扩展:想加新通道?按通道接口实现就行。想加新技能?写个 SKILL.md 放对目录就行。
第三部分:进阶建议与使用心得
1. 善用工作区覆盖
想修改某个技能,直接复制到 <workspace>/skills 目录下修改,升级 OpenClaw 也不会覆盖你的改动。
2. 合理配置钩子
可以做很多有趣的事:每次对话结束自动备份、敏感操作短信审批、统计 token 用量、统一回复格式等。
3. 节点分层使用
网关放 VPS,各个手机电脑当节点接入——网关永远在线,设备提供本地能力,手机只跑轻量节点不费电。
4. 自定义 AGENTS / SOUL
花点时间写好 AGENTS.md 和 SOUL.md,定义好权限和风格。我自己的 SOUL.md 就一句话:“真诚帮助,不表演,直接干活”,用起来爽得不行。
实际使用体验
- 响应速度快
:网关在自己服务器上,比网页版 ChatGPT 还快。 - 稳定性好
:systemd 托管,进程掉了自动拉起。 - 可扩展性强
:想要什么功能就装什么技能,甚至可以自己写。 - 真正私人
:所有对话记录存在本地,不用担心被训练或泄露。
我现在每天早上,飞书群里已经自动推送天气预报、新闻摘要、每日口语练习——相当于一个私人秘书。
结语
OpenClaw 是目前个人部署 AI 助手的最佳方案之一:安装简单、生态丰富、完全开源免费。更难得的是,它的架构设计分而治之、清晰优雅——好的架构不是设计成什么都能做,而是设计好扩展点,让别人能轻易加上能力。
如果你还没用过,看完这篇文章,不妨花半小时动手搭一个。如果你已经在用,希望架构解析部分能让你对它有更深的理解,发掘出更多玩法。
项目源码:https://github.com/openclaw/openclaw
官方文档:https://docs.openclaw.ai
技能市场:https://clawhub.com
夜雨聆风