个人AI工作平台搭建全记录(云同步 + AI管家 + Agent管理)

个人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

  1. 数据统一 — 所有工作文件、代码、文档通过 NextCloud 在不同设备间无缝同步
  2. AI无处不在 — 通过 QQ/飞书/微信随时随地呼叫AI助手
  3. 远程开发 — 手机/平板通过自建 Happy Server 中转发指令,经桌面端 ccswitch 调用 Claude Code / Codex 自动执行开发任务,项目文件跑在 NextCloud 同步目录中,结果实时同步到所有设备
  4. 配置一致 — 所有工具的配置通过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 的同地域内网访问(免流量费)。

步骤:

  1. 在腾讯云 COS 控制台创建一个标准存储类型的存储桶(地域选广州 ap-guangzhou,与 LightHouse 同地域)
  2. 获取 API 密钥(SecretId + SecretKey)
  3. 编辑 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,
    ],
],
  1. 重启 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 请求。

步骤:

  1. 在服务器本地准备一个存储目录:
sudo mkdir -p /var/snap/nextcloud/common/local-storage
sudo chmod 750 /var/snap/nextcloud/common/local-storage
  1. 在 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 备份

用于归档不常用的大型资料文件。

步骤:

  1. 准备一个 COS 存储桶(可与 Primary Objectstore 同桶,或另开新桶)
  2. 在 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)

配置方式:

  1. DNS — DNSPod 添加 A 记录 nc.你的域名 → [你的公网IP]
  2. SSL 证书 — 使用 certbot standalone 模式签发(会短暂停 NextCloud Apache,约 30 秒):
snap stop nextcloud.apache
certbot certonly --standalone -d nc.你的域名
snap start nextcloud.apache
  1. 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;
    }
}
  1. NextCloud config.php 修改 — 增加 nc.你的域名 到 trusted_domains,并设置 overwriteprotocol:
'trusted_domains' => array (
    0 => '[你的公网IP]',
    1 => '你的域名',
    2 => 'nc.你的域名',
),
'overwrite.cli.url' => 'https://nc.你的域名',
'overwriteprotocol' => 'https',
  1. 重启生效:
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/nc
    Joplin / 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,发文件、发语音、长文本对话
QQ 备用 + 群聊 支持群聊场景,定时任务推送
飞书 办公协作 文档协作、会议管理

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 干活。

github

为什么需要自建中转?

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 同步目录,结果实时同步

切换设备工作流

  1. 在Windows上写好代码,保存 → NextCloud自动同步
  2. 到Linux服务器上,打开同步目录 → 代码已在
  3. 用iPad审阅文档 → OnlyOffice通过WebDAV打开编辑
  4. 编辑完保存 → 回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

开源项目

项目 链接
NextCloud https://nextcloud.com
OpenClaw https://github.com/openclaw/openclaw
ccswitch https://ccswitch.ai
happy coder GitHub - slopus/happy: Mobile and Web client for Codex and Claude Code, with realtime voice, encryption and fully featured · GitHub

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 编排篇(第九章),重置整体架构框图

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
音乐
暂未播放
0:00 / 0:00
加载中…
主题色相 0°
文章布局
卡片样式
卡片边框和阴影
卡片阴影强度
14
卡片圆角
4px
卡片背景透明度
100%
毛玻璃效果
壁纸模式
壁纸切换
一键开关特效
夜间模式
看板娘
桌宠
切换看板娘
切换桌宠
鼠标光标特效
鼠标点击特效
页面入场动画
重置

将主题 / 壁纸 / 特效的全部个性化设置恢复为初始状态