个人AI工作平台搭建全记录
从零搭建一套属于自己的AI驱动工作平台 —— Nextcloud云同步 + AI管家(Openclaw/CC/Codex) + Agent管理(cc-switch)
作者:Mogreach | 2026年6月
写在前面
作为一个泛电子类的工科研究生,日常工作涉及大量的代码、文档、仿真数据和项目管理。同时我也在研究AI算法和FPGA/IC,涉及软硬协同工作,工作平台横跨Windows主力机、Linux工作站、Linux服务器和iPad等多台设备,出门在外不易随时随地开展工作,文件管理方式是U盘+微信传输助手+邮箱附件——混乱、碎片化、没有版本管理。而AI工具的爆发让我看到了新的可能性:如果能有一个统一的云同步空间把数据串起来,再有一个AI管家帮我处理日常事务,最后通过Agent工具远程调度工作设备,那效率将完全不一样。
这篇文章记录了我搭建个人AI工作平台的完整过程,包括架构设计、配置要点和踩坑经验。
整体架构
┌─────────────────────────────────────────────────────────────┐
│ 腾讯云 LightHouse │
│ SA2.MEDIUM2 (2核2GB) │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ OpenClaw (AI 网关) │ │
│ │ 对接 QQ / 飞书 / 微信 → 统一的AI助手入口 │ │
│ └──────────────────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ NextCloud (个人私有云) │ │
│ │ ├─ Primary Objectstore → COS 存储桶 │ │
│ │ ├─ /Work-Local-Server → 本地硬盘加速 │ │
│ │ └─ /COS备份 → COS 存储桶 (冷数据备份) │ │
│ └──────────────────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Happy Server (中转服务) │ │
│ │ WebSocket 中继 → PostgreSQL + Redis │ │
│ │ → 移动端 ↔ 桌面端双工实时通信 │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │ │
│ ┌────┴──┐ │
│ │ │ │
┌─────┴────┐ ┌────┴────┐ │ ┌─────┴─────┐
│ Windows │ │ Linux │ │ │ iPad/手机 │
│ 主力机 │ │ 工作站 │ │ │ 移动办公 │
│ │ │ │ │ │ │
│ ccswitch │ │ 仿真 │ │ │ Happy 客户端│
│ Claude │ │ │ │ │ │
│ Code │ │ │ │ └───────────┘
│ Codex │ │ │ │
└──────────┘ └─────────┘ └──────────────────────────
│ │ │
└─────────────┴───────────────┘
┌──────────┐
│NextCloud │
│同步目录 │
│(项目文件) │
└──────────┘
工作流:手机/平板 → Happy Server (云端) → 桌面端 Happy daemon → ccswitch → Claude Code / Codex
所有 Agent 工作目录均设在 NextCloud 同步空间,代码/文档修改后实时同步到所有设备。
核心理念 ALl in one
- 数据统一 — 所有工作文件、代码、文档通过 NextCloud 在不同设备间无缝同步
- AI无处不在 — 通过 QQ/飞书/微信随时随地呼叫AI助手
- 远程开发 — 手机/平板通过自建 Happy Server 中转发指令,经桌面端 ccswitch 调用 Claude Code / Codex 自动执行开发任务,项目文件跑在 NextCloud 同步目录中,结果实时同步到所有设备
- 配置一致 — 所有工具的配置通过WebDAV同步到云,换设备即用
云服务器篇
硬件规格
| 项目 | 配置 |
|---|---|
| 机型 | 腾讯云 LightHouse SA2.MEDIUM2 |
| 规格 | 2核 vCPU |
| 内存 | 2GB |
| 系统盘 | 50GB 云硬盘 |
| 带宽 | 峰值 5Mbps,300G公网下行流量/月 |
| 地域 | 广州(ap-guangzhou) |
| 公网IP | [你的公网IP] |
| 域名 | 你的域名(已备案) |
| 操作系统 | Ubuntu 24.04 LTS |
| 运行时长 | 109+ 天 |
成本分析
| 项目 | 费用 | 说明 |
|---|---|---|
| LightHouse 服务器 | ~¥99/年 | SA2.MEDIUM2,2核2GB,包年更优惠 |
| COS 存储(主存储桶) | ~¥29/年 | 100G,按量计费,存储+请求费用 |
| COS 存储(备份桶) | 冷数据,低频访问 | |
| 域名 | ~¥1/年 | 你的域名 |
| 合计 | 约 ¥129/年 | 新用户价格,在限定时间可同价续费! |
开销由服务器租用,存储桶租用,域名租用组成,以上为新云开发用户开销,正常价支出大概会到300¥/年,但一般都有优惠,云服务器也可升级或直接迁移到别的服务商,非常方便!
COS存储为云对象分布式存储,流量额外计算(下行计费,上行无限!),如果服务器和COS存储在同地域,可走内网流量,不花钱!因此只有读写请求产生额外费用,实测部署Nextcloud每天偶尔访问文件花费0.04¥/天,几乎等于白送!
对于高频使用操作的文件放在服务器本地硬盘的话,仅仅消耗服务器对公流量(300G/月),基本做到0¥开销!
服务端软件栈
| 服务 | 技术选型 | 版本 |
|---|---|---|
| 云盘 | NextCloud(snap安装) | 34.0.1snap2 |
| 数据库 | MariaDB(snap内置) | — |
| Web服务器 | Apache(snap内置,prefork MPM) | — |
| PHP | PHP-FPM 8.3(snap内置) | 8.3 |
| 缓存 | Redis(snap内置) | — |
| AI助手 | OpenClaw | 2026.5.7 |
| 浏览器引擎 | Chromium Headless(Playwright) | 145.0.7632.6 |
实际上只要部署好Openclaw/Claude在云端,就可以发指令让它自己安装了,前提是做好备份回溯。
云服务软件配置
以下为所有核心服务的完整配置步骤,按新服务器从头搭建的顺序排列。
NextCloud(snap安装)
安装
# 安装 snap 版 NextCloud(自动集成 Apache + PHP 8.3 + MariaDB + Redis)
sudo snap install nextcloud
# 安装后首次访问 http://<服务器IP> 完成初始化设置
# 设置管理员账号和密码
snap 版的好处是开箱即用,所有组件(Web服务器、PHP、数据库、缓存)都已集成好,不需要手动配置 LNMP 环境。
PHP-FPM 内存调优
:::::::::::::::::: snap 的自动计算脚本会把 2GB 内存 → 39 个 PHP worker,直接撑爆内存。必须手动干预。
snap 的 start-php-fpm 脚本会自动计算:
total_memory / 50 = PHP_FPM_MAX_CHILDREN
# 1967MB / 50 ≈ 39 个 worker
关键点:snap 的 www.conf 使用环境变量占位符 ${PHP_FPM_MAX_CHILDREN},但 snap 启动脚本会用自己的计算值覆盖 systemd 传入的环境变量。必须在 systemd override 中同时覆盖 ExecStart:
# /etc/systemd/system/snap.nextcloud.php-fpm.service.d/override.conf
[Service]
Environment=PHP_FPM_MAX_CHILDREN=8
Environment=PHP_MEMORY_LIMIT=512M
ExecStart=
ExecStart=/bin/bash -c 'source /snap/nextcloud/current/utilities/php-utilities &&
PHP_FPM_MAX_CHILDREN=8
PHP_MEMORY_LIMIT=512M
php-fpm -R -F --fpm-config /snap/nextcloud/current/config/php/php-fpm.conf
-c /snap/nextcloud/current/config/php'
# 应用配置
sudo systemctl daemon-reload
sudo systemctl restart snap.nextcloud.php-fpm
实际效果:日常 3-5 个 worker 活跃,PHP 内存占用约 150-400MB(按需),剩余 ~750MB 给 OpenClaw 等其他服务。
此外建议关闭 filesystem_check_changes(减少每次请求检查文件系统的开销):
sudo nextcloud.occ config:system:set filesystem_check_changes --value=0
Primary Objectstore — COS 对象存储
所有 NextCloud 用户文件的实际存储后端,使用腾讯云 COS 的同地域内网访问(免流量费)。
步骤:
- 在腾讯云 COS 控制台创建一个标准存储类型的存储桶(地域选广州 ap-guangzhou,与 LightHouse 同地域)
- 获取 API 密钥(SecretId + SecretKey)
- 编辑 NextCloud 配置文件
/var/snap/nextcloud/current/nextcloud/config/config.php,添加objectstore段:
'objectstore' => [
'class' => 'OCFilesObjectStoreS3',
'arguments' => [
'bucket' => '[存储桶ID]', // 替换为你的存储桶名
'autocreate' => false,
'key' => 'AKIDxxxxxxxxxxxxxx', // SecretId
'secret' => 'xxxxxxxxxxxxxxxxxxxxxx', // SecretKey
'hostname' => 'cos.ap-guangzhou.myqcloud.com',
'region' => 'ap-guangzhou',
'use_ssl' => true,
'use_path_style' => false,
],
],
- 重启 Apache 生效:
sudo snap restart nextcloud.apache
注意:存储桶类型必须是标准存储,不是智能分层(INTELLIGENT_TIERING),否则会上传报错。如果误设为智能分层,移除
storageClass配置即可。
迁移现有文件到 COS 的命令:
sudo nextcloud.occ files:scan --all
# 或在维护模式下执行完整迁移
sudo nextcloud.occ maintenance:mode --on
sudo nextcloud.occ files:scan --all
sudo nextcloud.occ maintenance:mode --off
生产数据迁移前务必备份数据库。
外部存储 — 本地硬盘加速
用于存放高频访问的工作文件,避免每次读写都走 COS 的 HTTPS 请求。
步骤:
- 在服务器本地准备一个存储目录:
sudo mkdir -p /var/snap/nextcloud/common/local-storage
sudo chmod 750 /var/snap/nextcloud/common/local-storage
- 在 NextCloud 网页端:管理设置 → 外部存储 → 添加存储
- 存储类型:Local
- 挂载点:
/Work-Local-Server - 配置:
/var/snap/nextcloud/common/local-storage - 可用:全部用户
或通过 occ 命令:
sudo nextcloud.occ files_external:create
'/Work-Local-Server' 'local' 'null::null'
--config datadir=/var/snap/nextcloud/common/local-storage
外部存储 — COS 备份
用于归档不常用的大型资料文件。
步骤:
- 准备一个 COS 存储桶(可与 Primary Objectstore 同桶,或另开新桶)
- 在 NextCloud 网页端添加外部存储:
- 存储类型:Amazon S3
- 挂载点:
/COS备份 - 配置:填写 access key、bucket、region 等(与 Primary Objectstore 相同的 COS 配置)
- 可用:全部用户
sudo nextcloud.occ files_external:create
'/COS备份' 'OCAFiles_ExternalLibStorageAmazonS3' 'amazons3::accesskey'
--config bucket=[存储桶ID]
--config hostname=cos.ap-guangzhou.myqcloud.com
--config region=ap-guangzhou
--config key=AKIDxxxxxxxxxxxxxx
--config secret=xxxxxxxxxxxxxxxxxxxx
注意:
/COS备份与 Primary Objectstore 共享同一 COS 桶,但独立挂载点,结构清晰可控。如果后续需要从 COS 直接下载文件,通过 External Storage 的方式比 Objectstore 更方便。
上传调优
如果遇到分片上传(chunked upload)到 COS 报 403 错误,可临时禁用分片上传:
sudo nextcloud.occ config:system:set enable_chunked_upload --value=false
sudo nextcloud.occ config:system:set max_chunk_size --value=0
如果 uploads 目录权限异常(缺少 CREATE 权限,permissions=27 而非 31),修复:
# 进入 MySQL 修复权限
sudo nextcloud.mysql-client nextcloud -e
"UPDATE oc_storages SET permissions=31 WHERE id LIKE 'local::/var/snap/nextcloud/common/local-storage/%';"
HTTPS 域名访问
域名 你的域名(腾讯云 DNSPod 管理)已完成 ICP 备案。当前通过 Nginx 反代方式实现 HTTPS 访问:
用户访问 https://nc.你的域名
↓
Nginx(443 SSL + Let's Encrypt)
↓
NextCloud 本机 Apache(127.0.0.1:80)
配置方式:
- DNS — DNSPod 添加 A 记录
nc.你的域名→[你的公网IP] - SSL 证书 — 使用 certbot standalone 模式签发(会短暂停 NextCloud Apache,约 30 秒):
snap stop nextcloud.apache
certbot certonly --standalone -d nc.你的域名
snap start nextcloud.apache
- Nginx 反代配置(
/etc/nginx/sites-available/nextcloud):
server {
listen 443 ssl http2;
server_name nc.你的域名;
ssl_certificate /etc/letsencrypt/live/nc.你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nc.你的域名/privkey.pem;
location / {
proxy_pass http://127.0.0.1:80;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600s;
client_max_body_size 10G;
}
}
- NextCloud config.php 修改 — 增加
nc.你的域名到 trusted_domains,并设置 overwriteprotocol:
'trusted_domains' => array (
0 => '[你的公网IP]',
1 => '你的域名',
2 => 'nc.你的域名',
),
'overwrite.cli.url' => 'https://nc.你的域名',
'overwriteprotocol' => 'https',
- 重启生效:
snap restart nextcloud.apache
/usr/sbin/nginx -s reload
坑点:缺少
overwriteprotocol会导致重定向循环(NextCloud 检测到是 HTTP 但又要强制 HTTPS)
坑点:snap restart 后 Apache 需要几秒才能完全就绪,此时访问可能短暂 502,稍等即可
客户端修改:
切换 HTTPS 后,各端需要更新服务器地址:
| 端 | 旧地址 | 新地址 |
|---|---|---|
| 浏览器 | http://[你的公网IP] |
https://nc.你的域名 |
| Windows | http://[你的公网IP] |
https://nc.你的域名 |
| 手机 App | http://[你的公网IP] |
https://nc.你的域名 |
改地址后不需要重新下载文件,客户端会重新验证连接
旧 HTTP 直连 IP 的方式仍然可用(兼容过渡期)
自动续期: certbot systemd timer 自动处理(每天检查一次,到期前 30 天自动续期),无需人工干预。
Happy-server(中转服务)
Happy-server 是 Happy Coder 的服务端组件,用于实现手机 ↔ 桌面端的远程 AI 开发(完整介绍见 §六 Happy Coder 远程开发篇)。本节仅记录服务端的部署要点。
前置依赖:
sudo apt install postgresql redis-server
sudo systemctl enable --now postgresql redis-server
创建数据库和用户:
sudo -u postgres psql -c "CREATE USER happy_user WITH PASSWORD 'your_secure_password';"
sudo -u postgres psql -c "CREATE DATABASE happy_db OWNER happy_user;"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE happy_db TO happy_user;"
部署与启动:
git clone https://github.com/[你的GitHub用户名]/happy.git [项目目录]
cd [项目目录]
pnpm install
环境变量 .env.production 核心配置:PUBLIC_URL=https://coder.你的域名。
通过 nohup 启动(当前未注册 systemd):
cd [项目目录]/packages/happy-server
nohup [Node安装路径]/bin/node
--env-file=.env.production
--require [项目目录]/node_modules/tsx/dist/preflight.cjs
--import file://[项目目录]/node_modules/tsx/dist/loader.mjs
sources/main.ts > /tmp/happy-server.log 2>&1 &
Nginx 反代 & 证书: coder.你的域名 的 SSL 证书通过 certbot standalone 签发(详见 §六 6.3.3),systemd timer 自动续期。
安全组(腾讯云):
| 端口 | 用途 |
|---|---|
| 443 | Happy Coder 域名 HTTPS |
| [端口] | 旧 IP 端口(301 到域名,兼容) |
| [端口] | CA 证书下载(HTTP,按需) |
踩坑备忘
PHP-FPM Worker 数量失控
snap 版 NextCloud 的自动计算脚本会将 2GB 内存判定为 39 个 PHP worker → 内存爆满系统卡死。解决方式见 3.4.1 节的 systemd override。
COS 上传 500 错误
根因:存储桶类型为智能分层(INTELLIGENT_TIERING),但 NextCloud 默认要求标准存储。移除 storageClass 配置即可。
文件同步 403 Forbidden
根因:NextCloud uploads 目录权限位为 27(缺 CREATE),修复为 31 后恢复。
VFS
虚拟文件支持,Windows 客户端开启 VFS 后,同步空间文件会释放本地存储空间,按需下载缓存文件。
NextCloud存储架构篇
NextCloud 是整个平台的数据中枢,它不只是一个网盘——本质上是一个私有云操作系统。所有设备通过它串联起来:Windows 主力机存代码和仿真数据、iPad 做文档审阅、手机随时翻文件、Linux 服务器做后台同步。同时具有良好的应用开发生态,如在线文档编辑,数据分析等应用拓展。
这一章拆解 NextCloud 的存储架构(三层存储体系)和它在工作流中的实际应用场景。

三层存储体系
主存储 — COS对象存储(Primary Objectstore)
| 项目 | 详情 |
|---|---|
| 服务 | 腾讯云对象存储 COS |
| 地域 | 广州 ap-guangzhou |
| 存储桶 | [存储桶ID] |
| 存储类型 | 标准存储 |
| 文件数 | 18,837 个 |
| 用途 | NextCloud用户文件的主要存储后端 |
| 同步方式 | 内网访问,与LightHouse同地域免流量费 |
这是所有用户文件的归宿。文件上传到NextCloud后,实际存储在COS桶中,服务器本地不保留文件实体,通过S3 API读写。
配置方式:
'objectstore' => [
'class' => 'OCFilesObjectStoreS3',
'arguments' => [
'bucket' => '[存储桶ID]',
'hostname' => 'cos.ap-guangzhou.myqcloud.com',
'region' => 'ap-guangzhou',
'use_ssl' => true,
'use_path_style' => false,
],
],
加速存储 — 本地硬盘(Work-Local-Server)
| 项目 | 详情 |
|---|---|
| 类型 | Local 外部存储 |
| 路径 | /var/snap/nextcloud/common/local-storage |
| mount_id | 8 |
| 用途 | 高频访问文件的本地缓存与加速 |
| 特点 | 纯本地IO,不依赖网络,读写速度快 |
挂载了服务器的本地硬盘,专门存放频繁访问的工作文件(当前项目代码、文档等),避免每次读取都走COS的HTTPS请求。
冷备份 — COS存储桶(COS备份)
| 项目 | 详情 |
|---|---|
| 类型 | S3 外部存储 |
| 存储桶 | [存储桶ID](与主存储同桶?待确认) |
| mount_id | 4 |
| 用途 | 不常用大型资料文件的归档备份 |
| 访问方式 | 通过NextCloud客户端按需同步 |
文件同步策略
| 设备 | 同步方式 | 模式 |
|---|---|---|
| Windows主力机 | NextCloud桌面客户端 | 不开启VFS(占位符模式),所有文件始终保留在本地 |
| Linux服务器 | NextCloud桌面客户端 / WebDAV | 按需下载 |
| iPad | OnlyOffice App (WebDAV连接) | 在线编辑文档 |
| iPhone | NextCloud App / 文件App WebDAV | 按需访问(2026/7/10 起走 HTTPS:https://nc.你的域名) |
| ccswitch设备 | WebDAV协议 | 仅同步JSON配置文件 |
应用与开发场景
文档协作
- 代码同步:Verilog/SystemVerilog 源文件跨设备同步,Windows 主力机写代码,服务器上编译仿真,不需要 U 盘或 git push
- 论文与笔记:LaTeX 文档、Markdown 笔记统一存放,手机上随时查阅
云盘扩展
- WebDAV 生态:通过 WebDAV 协议,任何支持的文件管理器都可以挂载 NextCloud(iPad 的「文件」App、Linux 的 davfs2、Windows 的映射网络驱动器、WPS)
- 第三方客户端:支持 OnlyOffice 在线编辑文档,支持 Joplin、Obsidian 等笔记软件的 WebDAV 同步
开发集成
- AI 协作:OpenClaw/Claude/Codex 可以通过 NextCloud API 直接读写工作空间文件——让 AI 读取日志、整理报告、修改文档,维护服务器
- 自动化脚本:可编写脚本通过
curl+ WebDAV 自动上传/下载文件,或通过nextcloud.occ命令行管理文件 - 网页云端开发(规划中):借助 NextCloud 的内置文本编辑或 OnlyOffice,iPad 连接键盘即可远程编辑代码,实现真正的"出差只带一个平板"
冷备份策略
- 不常用的大型资料(历史版本存档、已完成项目的归档包)拖入
/COS备份目录,走 COS 存储不占本地硬盘空间 -
当 COS 备份需要恢复时,通过 NextCloud 客户端按需同步回来
4.4 WebDAV 访问方案
NextCloud 原生支持 WebDAV 协议,可以挂载为网盘驱动器或被第三方应用(如 WPS、OnlyOffice、Joplin、Obsidian 等)直接访问。
WebDAV 地址:
https://nc.你的域名/remote.php/dav/files/[用户名]/更简洁的写法(部分客户端自动补全路径):
https://nc.你的域名启用 DAV 增强功能(v34+ 可选):
sudo nextcloud.occ config:system:set dav.enable.tech_preview --value=true该配置让 NextCloud 的 DAV 层使用较新的技术预览实现,提升 WebDAV 连接的稳定性。
各端 WebDAV 连接方式:
端 方式 iPad 文件App 「连接服务器」→ 输入上述 WebDAV 地址 → 输入账号密码 Windows 映射网络驱动器 此电脑 → 映射网络驱动器 → https://nc.你的域名/remote.php/dav/files/[用户名]/WPS 移动版 WPS App → 个人 → 文档服务 → 添加 WebDAV Linux davfs2 mount -t davfs https://nc.你的域名/remote.php/dav/files/[用户名]/ /mnt/ncJoplin / Obsidian 设置 → 同步 → WebDAV → 输入上述地址和账号密码 Windows 映射网络驱动器注意事项:
- 如果报错,需修改注册表启用基本认证:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWebClientParameters→BasicAuthLevel设为2,然后重启电脑 - 使用应用密码(NextCloud 网页端「个人设置」→「安全」→「设备 & 应用密码」生成),而非主密码,尤其启用了两步验证时
关于 WPS:
- WPS 移动端(Android/iOS)原生支持 WebDAV,可直接添加
- WPS PC 版 不支持 WebDAV,可通过 Windows 映射网络驱动器 间接使用,或安装 NextCloud 桌面客户端(nextcloud.com/install/#install-clients)将云盘文件同步到本地后直接打开
- 如果报错,需修改注册表启用基本认证:
AI云管家篇(OpenClaw)
概述
OpenClaw 是一个开源的AI网关框架,运行在服务器上作为统一的AI助手入口。它同时对接多个消息平台,让用户可以通过最习惯的方式与AI交互。
接入渠道
| 渠道 | 用途 | 特点 |
|---|---|---|
| 微信 | 日常对话主力渠道 | 手机端随时呼叫AI,发文件、发语音、长文本对话 |
| 备用 + 群聊 | 支持群聊场景,定时任务推送 | |
| 飞书 | 办公协作 | 文档协作、会议管理 |
AI能力
- 自然语言对话 — 基于大语言模型(DeepSeek V4等),聊天、答疑、头脑风暴
- 语音交互 — MiniMax TTS语音克隆,用定制声线(雪乃)朗读回答
- 图片生成 — MiniMax Image API,文生图
- Web搜索 — 联网实时检索信息
- 浏览器自动化 — 需要时可操控浏览器执行网页操作
- 文件管理 — 与NextCloud联动,管理云盘文件
实际使用场景
- "帮我看一下这个Verilog代码的时序问题" → 发到微信,AI分析
- "帮我查一下这个IP核的资料" → AI联网搜索,整理摘要
- "把今天的日志整理一下" → AI从NextCloud读取日志,总结要点
- 学累了让AI讲个故事、唱首歌(用的语音克隆,还挺真)
- 当前服务器运行状况如何,清理下垃圾,更新一下软件
- 辅助搭建云服务
Happy Coder 远程开发篇
概述
Happy Coder 是一套移动端远程 AI 开发工具,包含自建的 WebSocket 中转服务端和跨平台客户端。它解决了国内环境下直连官方 Happy 服务延迟高、不稳定、需梯子的问题,让手机/平板随时随地操控主力和工作站的 AI Agent 干活。

为什么需要自建中转?
Happy Coder 官方提供免费的中转服务,但服务器在境外。在国内直连时 WebSocket 连接极不稳定,指令延迟高、经常断连。自建中转部署在腾讯云 LightHouse,手机/工作站与服务器之间的延迟仅个位数毫秒,体验与本地操作无异。
整体架构
手机/平板 (Happy App)
│
│ wss://coder.你的域名
▼
┌────────────────────────────────────────────┐
│ 腾讯云 LightHouse (Happy Server) │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ Nginx 反代 │───▶│ Happy Server │ │
│ │ 443 SSL │ │ (127.0.0.1:[端口])│ │
│ │ WebSocket 升级 │ │ PostgreSQL+Redis│ │
│ └──────────────┘ └──────────────────┘ │
└────────────────────────────────────────────┘
│
│ WebSocket (内网/公网)
▼
┌──────────────────────────────────────────────────────────────┐
│ 桌面端 (Windows / Linux 工作站) │
│ ┌──────────┐ ┌───────────┐ ┌───────────────────────┐ │
│ │ Happy │───▶│ ccswitch │───▶│ Claude Code / Codex │ │
│ │ CLI │ │ (Agent │ │ 工作目录: │ │
│ │ daemon │ │ 编排中心) │ │ NextCloud 同步目录 │ │
│ └──────────┘ └───────────┘ └───────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
通信链路:
移动端 ──wss──▶ 腾讯云 Happy Server ──ws──▶ 桌面端 Happy daemon ──▶ ccswitch ──▶ Claude Code/Codex
│
└── 数据库记录认证 token、会话状态
服务端配置
Happy Server 部署在腾讯云 LightHouse 上(配置细节见 §3.4.2),核心配置要点:
环境变量([项目目录]/packages/happy-server/.env.production)
DB_PROVIDER=postgres
DATABASE_URL=postgresql://happy_user:密码@127.0.0.1:5432/happy_db
REDIS_URL=redis://:密码@127.0.0.1:6379/3
PORT=[端口]
PUBLIC_URL=https://coder.你的域名 #
PUBLIC_URL 决定服务端发送给客户端的链接和认证回调地址,配置错误会导致扫码认证失败或连接不上。
启动与维护
当前通过 nohup 手动启动(未注册 systemd 服务):
cd [项目目录]/packages/happy-server
nohup [Node安装路径]/bin/node
--env-file=.env.production
--require [项目目录]/node_modules/tsx/dist/preflight.cjs
--import file://[项目目录]/node_modules/tsx/dist/loader.mjs
sources/main.ts > /tmp/happy-server.log 2>&1 &
重启即 kill 原进程后再执行上述命令。
Nginx 反代 & HTTPS
# /etc/nginx/sites-available/happy
server {
listen 443 ssl http2;
server_name coder.你的域名;
ssl_certificate /etc/letsencrypt/live/coder.你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/coder.你的域名/privkey.pem;
location / {
proxy_pass http://127.0.0.1:[端口];
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_buffering off;
client_max_body_size 100M;
}
}
# 旧 IP:[端口] → 301 跳转到域名
server {
listen [端口] ssl;
server_name [你的公网IP];
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
return 301 https://coder.你的域名$request_uri;
}
证书通过 certbot standalone 获取(会短暂停 NextCloud Apache 约 30s),systemd timer 自动续期。
客户端配置
手机端
| App | 设置方式 |
|---|---|
| Happy 手机 App | 设置 → 服务器地址 → https://coder.你的域名 |
| 扫码认证 | 桌面端运行 happy auth login 生成二维码,手机扫描绑定设备 |
桌面端(Windows / Linux)
# Windows (CMD)
set HAPPY_SERVER_URL=https://coder.你的域名
# Linux 工作站
# 建议写入 ~/.bashrc 持久化
export HAPPY_SERVER_URL=https://coder.你的域名
# 启动 daemon(保持后台运行)
happy daemon
# 认证绑定
happy auth login --force
::::::::::::::::::
happy auth login --force在设置好环境变量后执行,确保认证信息指向自建中转而非官方服务器。
实际工作流
远程代码开发
手机打开 Happy App → 选择 Windows 主力机
│ 发指令:"用 Verilog 实现一个 AXI-Stream FIFO,深度 16"
│
▼
腾讯云 Happy Server (广州,延迟 < 5ms)
│
▼
Windows 主力机 Happy daemon
│
▼
ccswitch → Claude Code
│ cd D:NextCloudProjectsaxi_fifo
│ Claude Code 写代码、仿真、调试
│ 所有文件保存在 NextCloud 同步目录
│
▼
NextCloud 实时同步
│ Windows 本地版本已更新
│ Linux 工作站同步后可直接用 Vivado 编译
│ 手机上通过 Happy 随时看进度
│
▼
半小时后
│ Claude Code 完成 FIFO 设计和仿真
│ axi_fifo.sv + testbench + 仿真结果截图
│ 全部已同步到所有设备
论文调研与整理
手机打开 Happy App → 选择 Windows 主力机
│ 发指令:"帮我调研一下 Edge-Impulse 和 TensorFlow Lite Micro
│ 整理成 markdown"
│
▼
Happy Server → 主力机 → ccswitch → Claude Code
│ Claude Code 搜索、阅读论文、整理摘要
│ 输出:D:NextCloudPaperssnn-on-mcu-survey.md
│
▼
NextCloud 自动同步后
│ 手机上打开 App 就能看到整理结果
│ iPad 上用 OnlyOffice 进一步编辑排版
论文与报告排版
手机打开 Happy App → 选择 Windows 主力机
│ 发指令:"把 survey.md 转为带公式排版的 Word 文档"
│
▼
ccswitch → Claude Code (Codex)
│ Claude Code 读取 NextCloud 中的 markdown
│ 调用 pandoc 转 docx
│ 输出到 NextCloud 同步目录
│
▼
手机上直接下载 docx 发给导师/同事
日常使用工作流
白天工作模式
Windows主力机(写代码/仿真)
│
├── NextCloud 客户端、网页端实时同步 → 云端保存
│
├── 微信/AI助手 → 代码review、问题排查
│
└── iPad → 会议记录、文档编辑(OnlyOffice)
远程工作模式
手机/平板
│
├── 微信发消息给AI → 查询云端文件、执行任务
│
└── Happy → ccswitch → Claude Code/Codex → 自动执行开发任务
工作目录:NextCloud 同步目录,结果实时同步
切换设备工作流
- 在Windows上写好代码,保存 → NextCloud自动同步
- 到Linux服务器上,打开同步目录 → 代码已在
- 用iPad审阅文档 → OnlyOffice通过WebDAV打开编辑
- 编辑完保存 → 回Windows继续工作
零摩擦,不需要手动传文件。
Happy 远程开发典型日
08:30 出门通勤 → 手机连 Happy,让 Claude Code 修昨晚测试报的 bug
09:00 到工位 → bug 已修好,代码已同步到 Windows NextCloud 目录
打开 Vivado 跑完整回归测试
10:30 开会 → 手机 Happy 指令让 Linux 工作站开始跑综合
12:00 午休 → 手机上检查综合结果,没问题
14:00 需求变更 → 手机 Happy 让 Claude Code 修改设计
同时让 AI 同步更新实验报告
17:00 下班 → 所有工作已在 NextCloud 中同步
回家路上 iPad 审阅 Claude Code 整理的日报
Agent 编排篇(ccswitch)
概述
ccswitch 运行在 Windows 主力机和 Linux 工作站(而非云端服务器)上,是桌面端的 AI Agent 编排与管理工具(完整联动场景见 §6.6)。

本质上它是 Happy Coder 远程指令的落地执行层:
- Happy 负责通信链路(手机 → 中转 → 桌面)
- ccswitch 负责指令调度(选哪个 Agent、加载哪些 Skill)
- Claude Code / Codex 负责具体执行(写代码、跑仿真、整理文档)
核心功能
| 功能 | 说明 |
|---|---|
| Agent管理 | 统一管理 Claude Code、Codex 等 AI Agent 实例,可按需切换模型 |
| Skill管理 | 管理 Agent 的技能插件,按需加载,支持自定义 skill |
| 配置同步 | 通过 WebDAV → NextCloud 实现跨设备配置一致 |
| 目录绑定 | Agent 工作目录直接设在 NextCloud 同步目录,代码/文档自动云端同步 |
配置同步
ccswitch 的配置文件通过 WebDAV 同步到 NextCloud:
Windows 主力机 ccswitch → WebDAV → NextCloud → WebDAV → Linux 工作站 ccswitch
在任何一台设备上配好,其他设备自动同步。
未来规划
- [ ] 个人网站搭建 — 在现有架构上托管个人博客/作品集
- [ ] OnlyOffice文档服务器 — 部署在线文档编辑服务(当前插件已安装但后端未启动)
- [ ] 升级服务器配置 — 如果后续负载增加,考虑升级到4GB内存
- [ ] 备份策略完善 — 定期快照+跨区域备份
- [ ] 自建远程桌面中转 — 现在的向日葵,Todesk开始限流了,白嫖党哭死,考虑Zerotier组网实现
已完成:
- [X] 全站 HTTPS 启用(2026/7/10)— NextCloud(
nc.你的域名)+ Happy Coder(coder.你的域名)均已配置 Let's Encrypt 证书,通过 Nginx 反代走 443 端口 - [X] 自建 Happy Server 中转(2026/6/29 部署,7/10 升级域名访问)— 手机 App 通过
https://coder.你的域名连接自建中转,无需梯子 - [X] Happy Coder 远程开发流水线(2026/7/14)— 新增独立章节,涵盖服务端全套配置、手机/桌面端设置、三个典型工作流场景,以及与 ccswitch/NextCloud 的集成
资源清单
云服务
| 服务 | 地址 |
|---|---|
| 腾讯云 LightHouse | https://console.cloud.tencent.com/lighthouse |
| 腾讯云 COS | https://console.cloud.tencent.com/cos |
| 域名管理 | https://console.cloud.tencent.com/domain |
开源项目
AI服务
| 服务 | 用途 |
|---|---|
| DeepSeek | 大语言模型(AI推理核心) |
| MiniMax TTS | 语音克隆 + 语音合成 |
| MiniMax Image | 文生图 |
| Claude Code | AI工作流Agent,AI代码Agent |
| Codex | AI代码Agent |
写在最后
基于NextCloud,丰富的插件生态+Agent的协助,几乎可以实现任何市面网盘的功能,并基于此,可实现工作流All in one,随时随地办公、研发,文档管理……
这套平台花了两周左右时间从零搭建,过程中踩了无数坑:存储迁移翻车、内存爆满卡死、WebDAV协议兼容性问题、systemd配置覆盖问题……每个坑最后都被填平了。
最大的感受是:个人数字基础设施的价值,只有在搭建完成后才能真正体会到。
以前在不同设备间传文件靠U盘和微信,每天浪费至少20分钟在文件同步上。现在所有工作文件自动同步、AI助手随时在线、远程发指令就能驱动工作设备执行任务——这些"小确幸"加起来,每天至少省出1小时的高效工作时间。
如果你也是技术从业者,有自己的云服务器,强烈推荐试试这套组合。从NextCloud开始,慢慢加入AI能力,最终形成一个真正属于你自己的"第二大脑"。
最后更新:2026年7月14日 — 新增 WebDAV 增强配置与 WPS 访问方案(见 4.4 节)、Happy Coder 远程开发篇(第六章)、Agent 编排篇(第九章),重置整体架构框图
