我折腾这套“OpenClaw + cpolar + 蓝耘MaaS”的组合,起因特别朴素:年底项目赶工,经常人已经在地铁上,脑子里还在想刚才那段代码实现哪里有问题;晚上想看一下家里 NAS 里存的电影,却发现人在外面根本连不回去。最烦的是,家里那台机器明明性能不差,还跑着本地 AI 助手,可只要人一出门,它就成了个没人使唤的摆设。
后来我把这几个东西拼在一起,才真正体会到什么叫“随身数字员工”:OpenClaw 负责理解需求、拆解任务、操作文件系统和命令行,相当于家里那位能听你指挥的“员工”;cpolar 负责把家里的服务安全地送到公网,相当于给这个员工装了一条直达外界的专线;蓝耘MaaS 则在本地模型不够聪明时,从云端借一个更强的大脑过来补位。这套方案不需要买昂贵的云端服务器,也不强制把数据外传,几乎所有东西都跑在自己家里。
这篇文章适合谁看?如果你玩过或者听说过本地大模型、家里有 NAS、偶尔需要远程连回办公室或家里电脑,甚至只是单纯想把 AI 助手变成随时随地能用的小工具,都可以照着我的思路复现一遍。我会尽量说清楚每一步“为什么这么配”以及“踩过哪些坑”。
1. 先把这套东西的工作逻辑理清楚
1.1 为什么不是“纯云端”,而是“本地 AI + 远程通道 + 在线大模型”
最直接的方案其实是把 AI 放在云上:注册一个在线的大模型 API,开个网页聊天框,随时随地都能用。但真实需求没这么简单。我本地跑的 AI 并不只是一个聊天框,它要能够读取 NAS 里的文件,帮我整理照片,写代码时直接改工作目录里的源码,甚至定期检查家里服务器的运行状态。这些操作如果全放在云端,等于要把私有数据传到别人服务器上才能完成,中间还要做同步、授权、安全控制,过程繁琐,而且很多数据我压根不想外传。
所以我把主脑放在家里:OpenClaw 跑在本地,模型默认先用本地推理引擎加载,操作文件、执行命令都走局域网内部通道,既快又隐私。只有遇到特别吃智力的任务,比如让 AI 生成一段复杂脚本、解释一段很绕的代码、或者润色一篇长文,本地的小模型明显吃力时,才把请求转给蓝耘MaaS 的云端模型处理。这样平时响应速度快,关键时刻又有高端模型兜底,成本也控制在按量付费的范围内。
有人会问,为什么不干脆买一块顶级显卡,本地直接跑最大的模型?现实是,一张高端显卡的价格已经能租很多年云端 API 了,而且大模型对显存的需求几乎无底洞。用“本地小模型 + 云端大模型”的混合策略,性价比高得多。
1.2 三个组件怎么分工
如果用一句话概括,可以这样理解:
| 组件 | 充当的角色 | 核心职责 |
|---|---|---|
| OpenClaw | 数字员工的大脑和手脚 | 接收指令、拆解任务、调用工具、访问文件、执行代码 |
| cpolar | 外出的网线和门卫 | 把家里内网服务映射到公网,提供固定入口,并承担身份认证与加密传输 |
| 蓝耘MaaS | 外挂专家大脑 | 提供大模型 API,处理本地模型搞不定的高难度任务 |
这个分工不是拍脑袋定的,而是踩过坑之后才固定下来的。一开始我试过只部署本地模型,结果出门后完全访问不了;后来用简单的端口映射工具,把端口直接暴露到公网,没做任何认证,结果不出三天就被人扫描过,吓得我把所有端口关了。直到我把 cpolar 加进来,配合随机域名、访问令牌和 HTTPS,才解决了安全访问的问题。
蓝耘MaaS 是最后补上的。本地那个 7B 参数的小模型处理“帮我列出当前目录下最大的 5 个文件”这种指令非常顺手,但一旦让它写一段复杂的业务逻辑,输出经常跑偏。接入 MaaS 以后,我可以在 OpenClaw 里配置策略:轻量任务走本地,复杂任务自动切到云端。
1.3 实际跑起来的数据流是什么样
一整套流程,从头到尾大概是这样的:
- 你人在外面,用手机浏览器打开 cpolar 提供的 Web 地址。
- 请求先经过 cpolar 的公网入口,被转发到你家里 OpenClaw 绑定的端口上。
- OpenClaw 收到指令,先判断任务是简单还是复杂。
- 简单任务直接调用本地模型,马上执行;复杂任务则带着你的上下文,去请求蓝耘MaaS 的大模型 API。
- 模型返回结果后,OpenClaw 根据任务内容执行真正的动作:写代码、读文件、调命令行、操作 NAS 目录。
- 执行结果顺着同一条隧道返回给你的手机。
可以看到,cpolar 那条网线是“外面能进家”的关键,OpenClaw 是“谁接收指令、谁来办事”的大脑,蓝耘MaaS 则是“脑子不够用时请来的救兵”。三者扣在一起,才形成了完整的“随身数字员工”。
2. 三个核心点的深度拆解
2.1 OpenClaw 作为数字员工的大脑
很多朋友对 AI 助手的认知停留在“网页聊天”或者“手机语音助手”的程度——打开对话框,提问,它回答,完事。这类东西做得再好也只是“问答工具”。而 OpenClaw 这类开源 Agent 框架不一样,它更接近一个“能动手的雇员”:给它一个目标,它会自己规划步骤,找到合适的工具,调用来完成任务。
比如我对它说:“在这个项目里找到所有含 TODO 的文件,统计一下还剩多少待办事项,写一份汇总报告放到桌面。”OpenClaw 不是直接吐一段文字,而是真的会去搜索文件、读代码、统计关键词,然后生成文档放到你指定的位置。要实现这个效果,光有个大模型远远不够,还需要:
- 任务规划能力:把总目标拆成子任务。
- 工具调用接口:能执行 shell 命令、读写文件、连接外部服务。
- 上下文管理:每一步执行结果都要带进下一轮,让模型能根据实际情况调整方案。
OpenClaw 在这块的可贵之处是配置比较清楚。你可以给它定义工作区,告诉它哪些目录是它可以直接操作的;可以挂载自己的工具列表,让它知道这里有 shell 可用、有文件系统可用、有网络请求可用;还可以给它绑定一套提示词,比如“你是家庭网络管理员,所有涉及数据删除的操作必须先向用户确认”。
实际使用中,我会把它运行在一台常年开机的迷你主机上,用 Docker 方式部署,数据目录单独挂一块盘。好处是干净、可回滚,坏了删掉容器重建一个就行,不会污染宿主机系统。
2.2 cpolar 是那条“网线”
很多人家里用的是普通家庭宽带,你申请到的 IP 往往是运营商分配的动态内网地址,外面根本访问不进来。即使有公网 IP,也可能因为路由器没做端口映射、防火墙规则不对,导致服务只能在家里访问。cpolar 解决的问题就是“内网穿透”。
它的工作机理,可以理解成这样:你家里的 cpolar 客户端主动向外部的服务器建立一条长连接,外部服务器记下这条通道。然后外部服务器给你分配一个公网可访问的地址。外人访问这个地址时,数据会被顺着这条通道转发到你家里运行着的服务上。整个过程中,你家里不需要有公网 IP,也不需要路由器上设置复杂的转发规则。
使用时有几个点需要提前想清楚:
- HTTP 隧道适合 Web 页面、API 接口。我一般用它转发 OpenClaw 的 Web 管理界面。
- TCP 隧道适合 SSH、远程桌面这类非 HTTP 协议。我拿它转发 SSH 端口,用来在外面连接家里服务器。
- 免费随机域名会变,适合短时间调试;长期用最好绑定固定域名,不然 IP 变了或重连后地址一换,手机里存的入口就失效了。
关于安全,我建议所有隧道都要开启访问认证,哪怕是自家用的服务也绝不能裸奔。cpolar 面板里一般有 IP 白名单、访问令牌等选项。我自己的做法是:Web 服务一定开令牌,SSH 一定用密钥登录并关闭密码登录,远程桌面则套在高强度密码之上,绝不把 3389 裸开到公网。
2.3 蓝耘MaaS,给本地小模型外挂一个强脑
本地跑模型受限于硬件,我的那台主机只有 8G 显存,跑 7B 模型已经是极限,14B 参数以上的模型基本没戏。但实际写代码、分析脚本这种活,模型智商差一点结果就天差地别:小模型可能给你一段有语法问题的伪代码,大模型能直接给出可运行的正则表达式。
我的解决思路是引入 MaaS,也就是模型即服务平台。简单说,就是有一个平台把已经部署好的大模型做成标准 API,像调用普通接口一样把文本发过去,再拿文本结果回来,按 token 计费,不需要自己准备高端显卡。
蓝耘MaaS 在这里扮演的角色很明确:它不是一个长期并行运行的常驻服务,而是按需接入的专家。OpenClaw 里配置好它的 API 地址、密钥和默认模型后,我只需在提示词里定好规则:“复杂代码生成、长文总结、多步骤逻辑分析走远程模型;目录操作、文件读取、命令行查询走本地模型。”实际请求时,OpenClaw 会根据任务的模型路由策略自动切换,大多数场景用户甚至感知不到后端换了模型。
有人担心调用云端 API 会泄露隐私。这个顾虑确实值得重视。我的处理方式是:明文私人资料不要轻易发给云端;日常代码片段、文件清单、系统状态这类低敏感内容,交给 MaaS 处理问题不大。如果真的有非常敏感的本地数据,我就在提示词里要求本地模型处理,不外送。所谓“随身数字员工”,前提是得有清晰的边界意识。
3. 从零到一:把家庭环境改造成随身工位
3.1 部署前的硬件和系统准备
先说硬件,这套方案不是非得顶配机器才能跑。我用的是一台退役的魔改迷你主机,内存 32G,显卡是入门级专业卡,显存 8G。如果你家里有旧台式机、游戏本、或者性能过剩的 NAS,都可以拿来当底座。
系统我推荐用 Linux。理由很实际:Linux 上跑 Docker 最省资源,不会有各种系统更新弹窗打扰,SSH 连接也天然友好。如果你手里只有 Windows,倒也不是不行,但我建议用 WSL2,把服务装在子系统里,比直接在 Windows 上跑更干净。NAS 的话,大多数成品 NAS 都支持 Docker,直接在 NAS 管理界面里新建容器就行。
需要提前准备的几样东西:
- 一台常开机的 Linux/Docker 环境,内存建议至少 16G。
- 一个本地推理引擎,用来加载小模型,具体名字不限定,支持 OpenAI 兼容 API 的都行。
- 一个 cpolar 账号,用来管理隧道。
- 一个蓝耘MaaS 的 API 密钥,主要是在云端模型路由时使用。
- NAS 目录提前想好,Data 目录、Media 目录、代码目录分别准备。
我自己的目录约定是/data/work放工作资料,/data/media放电影和照片,/data/agent放 OpenClaw 的配置和运行日志。目录规划越早做,后面让 AI 读文件时越不容易跨权限出乱子。
3.2 用 Docker 装一个 OpenClaw 实例
安装 OpenClaw 的细节,不同版本会有差异,但思路是固定的:拉镜像、建数据目录、映射端口。下面这个是我在实际部署时用的模板:
mkdir -p /data/agent docker run -d \ --name openclaw \ --restart=unless-stopped \ -v /data/agent:/data \ -v /data/work:/workspace \ -v /data/media:/media \ -p 127.0.0.1:8080:8080 \ openclaw/openclaw:latest这里有一点特别关键:我用的是127.0.0.1:8080:8080,也就是端口只在本机回环地址上监听,外面的网络直接访问不到。真正对外的暴露,全部交给 cpolar 隧道去处理。这样即使 cpolar 出了什么意外,端口也不会直接裸奔在公网上。这个细节我强烈建议照抄。
容器起来以后,配置文件落在/data/agent里。我会修改它的主配置文件,把工作区、默认模型、工具开关都配好。参考如下:
workspace: /workspace channels: web: enabled: true port: 8080 auth_token: "替换成一长串随机口令" tools: shell: enabled: true file: enabled: true ssh: enabled: true models: local: provider: ollama model: qwen2.5-coder:7b remote: provider: lanyun-maas model: deepseek-coder api_key: ${LANYUN_API_KEY}注意那个auth_token,它就是访问 Web 界面时需要的钥匙。别用生日、别用 123456,直接用系统随机生成一个长串就行。后面手机访问时,第一件事就是输入这个 token。
3.3 让 Agent 能访问 NAS 的文件
OpenClaw 只是个容器,它默认只看得见/data/work和/data/media这两个映射目录。如果 NAS 里的文件不在这两个路径下,就得先把 NAS 目录挂载到宿主机,然后再把挂载目录映射进容器。
如果是 Linux 环境,挂载 SMB 共享最常用的命令长这样:
mount -t cifs //nas.local/media /data/media -o username=youruser,password=yourpass,vers=3.0但更推荐的方式是写在/etc/fstab里,这样重启后也会自动挂载。否则我在外面一重启服务器,AI 就读不到电影目录了。
挂载之后,在容器启动参数里加上-v /data/media:/media即可。要注意权限问题:SMB 挂载默认嵌入用户身份可能不是容器内用户的身份,导致 AI 读文件时报“Permission denied”。我的解决办法是在启动命令里用uid=1000,gid=1000指定容器内用户的 uid/gid,让它与宿主机挂载目录属性对齐。这个问题如果现在不处理,后面 Agent 写文件时会频繁翻车。
3.4 配置 cpolar 隧道,把服务送出去
cpolar 的安装过程不复杂。在服务器上装好以后,第一步是登录管理面板拿到自己的 authtoken,然后执行:
cpolar authtoken YOUR_AUTH_TOKEN接着就是建立隧道。我把 Web 界面映射成 HTTP 隧道:
cpolar http 8080执行完,终端里会输出一个公网地址,比如https://xxxx.cpolar.cn,手机上直接访问这个地址,就会看到 OpenClaw 的登录页面。同时我会在 cpolar 管理后台给这个隧道开启访问认证,设置一个单独的访问密码,这样即使地址泄露,没有密码也进不来。
如果还需要远程 SSH,那就单独开一条 TCP 隧道:
cpolar tcp 22它会给你一个公网 IP 和一个随机端口。所有人想 SSH 进来,连接这个 IP 和端口,数据就会被转发到自家服务器的 22 端口。端口不是常规 22,被爆破的概率本身就低很多,再配合密钥登录,安全性足够。
这里要提醒一点:免费版的隧道地址和端口可能会在服务重启后变化,所以我一般在 cpolar 网页后台里开启“固定入口”功能。虽然要花点小钱,但换来的是手机里的配置不用反复改,省下的时间远不止那点费用。
3.5 接入蓝耘MaaS,让 AI 更聪明
本地模型先跑通以后,我再把蓝耘MaaS 加进来。操作同样不复杂:去平台创建 API 密钥,然后在 OpenClaw 的配置文件里把密钥填上。
export LANYUN_API_KEY="sk-xxxxxxxx"OpenClaw 支持多模型路由,所以我会在配置里明确:默认模型是本地那个 7B 模型,复杂任务切到远程模型。比如这样:
model_routing: rules: - pattern: "写一段.*代码|解释.*脚本|分析.*日志" use: remote - pattern: ".*" use: local这个正则匹配写得有点粗糙,但思路是对的:越是“智力敏感型”任务,越应该交给远程大模型;越接近“机械操作”的任务,越要留在本地快速完成。我甚至会把“总结”“重构”“排查”这类动词都放进远程规则里,实测下来效果非常好。
值得留意的是,MaaS API 是按 token 计费的,OpenClaw 可能会因为一次复杂任务而调用多次模型,如果不在提示词里控制节奏,费用会肉眼可见地上涨。我通常会让 OpenClaw 先规划好,再一次性生成结果,而不是每一步都问大模型“下一步怎么办”,把不必要的大模型调用降到最低。
3.6 手机端实测过程
配置全部就绪后,我习惯做一次完整的移动端联调,确保没有遗漏。流程是:
- 手机开飞行模式并关闭 Wi-Fi,单纯用移动数据访问 cpolar 的 HTTPS 地址。
- 输入访问令牌,进入 OpenClaw 聊天界面。
- 先发一句“列出
/workspace目录下的文件”,验证隧道和本地模型链路通不通。 - 再发一句“帮我写一个 Python 脚本,批量重命名
/media下所有.mp4文件,把文件名中的空格替换成下划线”,验证远程模型路由是否生效。 - 最后用 SSH 隧道连接家里的服务器,执行一条
df -h,验证非 HTTP 隧道是否正常。
一次通过,基本就可以稳定使用了。如果哪一步卡住,直接看下一章的排查记录。
4. 翻车实录:常见问题与排查经验
我在搭建和使用过程中翻过的车,比顺利跑通的时候多得多。很多问题看起来五花八门,实际上换汤不换药,我列个速查表,方便你对照处理。
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 手机访问公网地址打不开 | cpolar 客户端没在运行 | 去服务器上执行cpolar status,看是否显示在线 |
| 一直提示密码错误 | cpolar 隧道开了访问认证,但你输入的是 OpenClaw 的 token | 分清两层认证:填 cpolar 访问密码,再用 token 登录 OpenClaw |
| 能打开页面但发消息没回复 | OpenClaw 端口绑定在 127.0.0.1,本地模型没启动 | 检查容器日志,确认推理引擎在运行 |
| Agent 提示没有权限读 NAS 文件 | SMB 挂载的 uid/gid 与容器内用户不一致 | 重新挂载,用uid=1000,gid=1000参数对齐 |
| 远程模型请求超时 | 网络不稳定或超时阈值太短 | 在 OpenClaw 配置中调大请求超时时间,比如 120 秒 |
| 费用消耗比预期快 | 简单任务走了远程模型 | 检查模型路由规则,把简单任务强制留在本地 |
| 远程桌面画面卡顿严重 | 使用的协议或编码不合适 | 优先 RDP,关闭壁纸,降低分辨率,必要时走 TCP 隧道而非 Web 网关 |
| 文件同步出现中文乱码 | SMB 挂载字符集设置不对 | 挂载命令加上iocharset=utf8参数 |
4.1 隧道连不上 / 经常断
这几乎是新手最容易卡的环节。最常见的原因是 cpolar 客户端只在你当时运行命令的终端窗口里工作,你一旦关掉窗口或者注销登录,进程就没了。解决方式是把 cpolar 注册成系统服务,让它开机自启、后台常驻:
sudo systemctl enable cpolar sudo systemctl start cpolar如果你还是经常断,去看一眼 cpolar 管理面板里的在线状态。如果客户端显示在线但没有流量,多半是隧道端口配错了。比如你 OpenClaw 监听在 8080,cpolar 转发却是 9090,那当然打不开。对这种问题,我建议一开始就把端口固定下来并写进笔记,不要凭记忆。
4.2 Agent 访问不到 NAS
这个坑主要出在权限和路径上。容器里的路径是/media,宿主机上的路径是/data/media,NAS 的路径又是一长串,阴差阳错经常让 AI 找不到文件。
我的习惯是,在 OpenClaw 配置里把工作区明确写成/workspace和/media两个根目录,并且在提示词里告诉它:“所有用户文件都在这两个目录下,不要在系统目录里找。”另外,在挂载时确定 uid/gid 也要引起重视。如果不确定怎么查,先执行id查看容器内用户的 uid/gid,再按这个值去挂载 SMB,基本就能解决问题。
4.3 模型请求超时与费用控制
测下来,OpenClaw 默认的模型请求超时时间偏短,而我通过 MaaS 调用的远程大模型,高峰期响应可能要几十秒。直接把超时调到 120 秒,就很少再出现“等待时间过长被中断”的情况了。但超时调长了,也会带来一个新问题:如果 MaaS 那边真的挂了,你会白等。所以我同时在规则里设置了连续失败三次后强制回退本地模型,保证服务不会瘫痪。
费用控制上,最有效的方法是给 OpenClaw 加上“预算意识”的提示词,让它遇到复杂任务时先拆解出需要远程模型的步骤,其余都用本地模型完成。每过一段时间,我会去 MaaS 平台看一次调用日志,如果发现大量“没必要”的远程调用,就调整路由规则,把这些模式改回本地。
4.4 远程桌面卡顿
远程桌面这个需求很实际:有时候就为了回家里机器上操作一个 GUI 程序,又不想专门跑一趟。我用过 VNC,效果不太理想,延迟高还容易花屏。后来换成 RDP,并且做了一轮优化:
- 关闭远程桌面壁纸、窗口动画。
- 分辨率降到 1920x1080 或更低。
- 如果远程网络一般,用 TCP 隧道直连,而不是走 Web 网关中转。
实测下来,只要本地服务器上行带宽不差,在外面看 1080P 分辨率的远程桌面是能接受的。看电影之类的高画质实时流媒体就别用远程桌面了,直接走 NAS 的流媒体服务更顺。
5. 再把应用场景往外铺
5.1 出门在外写代码
代码场景是我用到最多的。以前在外面临时改个小 Bug,要么开远程桌面连回家里,要么把项目仓库下载到笔记本上,改完再推上去。现在简单多了:
- 在外手机上直接打开 OpenClaw 对话窗口,让 AI 定位某个文件里的异常逻辑。
- 让 AI 把修复方案列出来。
- 确认无误后,让 AI 直接在项目目录里改文件、跑一次测试命令、把结果返回。
整个过程不需要庞大的 IDE,也不需要在本地拉代码,只是注意一点:让 AI 改动代码前必须先 diff,把改动内容给你确认,防止它一次性改太多,回头自己都说不清楚改了什么。这个习惯能避免很多不必要的返工。
5.2 随时随地看 NAS 电影
NAS 电影是我当初搭建这套体系的原始动力之一。家里 NAS 里存了不少电影,出门在外用流量直接访问 SMB 共享并不现实,体验也很差。正确做法是在 NAS 上装一个流媒体服务,把电影库整理好,然后把这个流媒体服务通过 cpolar HTTP 隧道发布出去。
出门后,手机上的播放器直接填 cpolar 的地址,就能在家里那台 NAS 上播放视频。Web 端流量经过一次转发,但只要家里上行带宽够,码率别拉太高,在外面看 1080P 电影完全可行。Jellyfin、Emby 这类服务还自带字幕和转码功能,比直接把共享文件夹暴露出去安全得多。
5.3 远程桌面遥控家里电脑
如果你家里有 Windows 机器,通过 cpolar 远程桌面回家是很容易实现的。Windows 自带的远程桌面服务在家庭网络里默认是关闭状态,需要先开启“允许远程连接”。然后确保 3389 端口通,再开一条 cpolar TCP 隧道指向 3389。
出于安全考虑,我强烈不建议把 3389 直接暴露在公网。通过 cpolar 的 TCP 隧道转发后,端口号是随机的高位端口,再配合 Windows 账户的强密码,安全性会好很多。更稳妥的做法是,只在需要远程时临时打开隧道,平时就不启用。别嫌麻烦,我试过长期开着,几天内就会被各种扫描器盯上。
5.4 把“数字员工”变成自动化管家
当这套链路稳定以后,我发现自己不再只是“远程控制”,而是真的在“远程委托”。我可以让 AI 定时归档下载目录、清理超过 90 天的临时文件、生成日报总结、监控磁盘空间并在快满的时候提醒我。这些任务即使人不在家,OpenClaw 也能按计划执行。
更有意思的是,OpenClaw 本身还支持外部消息接入。我把它接到常用的聊天软件机器人接口里,在外面发一句“看下家里服务器温度”,机器人会返回当前温度数值;收到一条带有“写完项目文档并备份到 NAS”的消息,它会自动按步骤处理。这种“把 AI 当成员工管理”的思路,比单纯远程桌面高一个层次。
6. 一点使用心得
整套方案前前后后磨合了两三周,我觉得最值得分享的心得是“边界意识”:边界指的是哪些任务交给本地、哪些送给云端、哪些端口真正对外开放、哪些数据绝不外传。这四条边界想清楚,系统用起来就很顺,不会天天担心安全或者账单超支。
另一个小事也提醒一下:cpolar 的隧道地址、OpenClaw 的令牌、MaaS 的 API Key,这三样东西一定要记在一个只有你能看到的地方。出门在外突然要连接,翻不到密码的感觉真的很难受。我自己会把它们放在密码管理器里,并且给每样东西设置不同的随机口令。
最后再给一个建议:刚开始不要贪多,先把“手机能连回 Web 页面并让 AI 读一个文件”跑通,再逐步加远程桌面、加 MaaS、加自动化任务。基础链路越稳,往上加东西越省心。这套组合不是一次装完就结束的项目,它会随着你的使用习惯不断变顺手,慢慢就会成为你真正离不开的“随身数字员工”。