ClawApp 技术解析:H5 移动端 AI 智能体聊天客户端实战

痛点:移动场景下的 AI 交互困境

通勤途中或外出办公时,突然需要和团队部署的 AI 智能体确认某个问题,却发现 OpenClaw 平台只能通过桌面端访问——这种体验相当割裂。

ClawApp 正是为解决这一痛点而生。它是一个专为移动端优化的 H5 聊天客户端,让用户可以随时随地通过手机与 AI 智能体进行对话。

技术架构:H5 如何撑起实时聊天

ClawApp 采用典型的 Web 单页应用(SPA)架构,技术栈如下:

├── 前端框架:Vue 3 + Composition API(或 React)
├── 状态管理:Pinia(Vue 系)/ Redux Toolkit(React 系)
├── 通信层:WebSocket + HTTP Long Polling Fallback
├── UI 层:Tailwind CSS + 自定义组件库
└── 构建工具:Vite

离线能力的关键实现

Service Worker 是 H5 离线能力的核心,ClawApp 通过它实现:

消息缓存与离线续传

// 注册 Service Worker
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw.js');
}

// sw.js 中缓存策略
const CACHE_NAME = 'clawapp-v1';
const urlsToCache = ['/index.html', '/static/js/main.js'];

// 消息缓存逻辑
self.addEventListener('fetch', (event) => {
  if (event.request.url.includes('/api/messages')) {
    event.respondWith(
      caches.open(CACHE_NAME).then((cache) => {
        return cache.match(event.request).then((response) => {
          return response || fetch(event.request).then((networkResponse) => {
            cache.put(event.request, networkResponse.clone());
            return networkResponse;
          });
        });
      })
    );
  }
});

后台同步机制

// 离线时将消息加入队列
async function sendMessage(message) {
  if (!navigator.onLine) {
    // 存入 IndexedDB,等待网络恢复后发送
    await db.messages.add({ ...message, pending: true });
    await navigator.serviceWorker.ready.then((registration) => {
      registration.sync.register('sync-messages');
    });
    return { status: 'queued' };
  }
  // 在线则直接发送
  return await fetch('/api/send', { method: 'POST', body: JSON.stringify(message) });
}

这套机制让用户在地铁等弱网环境中也能流畅对话,消息不会因网络波动丢失。

与 OpenClaw 平台的集成

ClawApp 通过 OpenClaw 提供的 RESTful API 与后端服务通信,核心连接方式如下:

WebSocket 实时通信

class OpenClawSocket {
  constructor(apiBase) {
    this.apiBase = apiBase;
    this.socket = null;
    this.reconnectDelay = 1000;
  }

  connect(token, callbacks) {
    this.socket = new WebSocket(`${this.apiBase}/ws/chat?token=${token}`);

    this.socket.onopen = () => {
      console.log('WebSocket 连接已建立');
      callbacks.onOpen?.();
    };

    this.socket.onmessage = (event) => {
      const data = JSON.parse(event.data);
      // 根据 type 分发消息
      if (data.type === 'message') {
        callbacks.onMessage?.(data.content);
      } else if (data.type === 'typing') {
        callbacks.onTyping?.(data.agent_id);
      }
    };

    this.socket.onclose = () => {
      // 自动重连机制
      setTimeout(() => this.reconnect(token, callbacks), this.reconnectDelay);
      this.reconnectDelay = Math.min(this.reconnectDelay * 2, 30000);
    };
  }

  send(content, agentId, sessionId) {
    this.socket.send(JSON.stringify({
      type: 'message',
      agent_id: agentId,
      content: content,
      session_id: sessionId
    }));
  }
}

消息格式示例

{
  "type": "message",
  "agent_id": "agent_xxx",
  "content": "用户输入内容",
  "session_id": "550e8400-e29b-41d4-a716-446655440000",
  "timestamp": 1699520000000
}

平台认证采用 JWT Token 机制,移动端每次请求需携带有效 Token,Token 有效期通常设为 24 小时,刷新机制由服务端控制。

快速部署:5 分钟启动你的聊天客户端

环境准备

# 克隆项目
git clone https://github.com/your-repo/ClawApp.git

# 安装依赖
cd ClawApp && npm install

# 配置环境变量
cp .env.example .env

.env 配置示例

# OpenClaw 后端地址
OPENCLAW_API_URL=https://your-openclaw-instance.com

# WebSocket 连接地址
OPENCLAW_WS_URL=wss://your-openclaw-instance.com

# JWT Token(建议使用环境变量注入,不要硬编码)
OPENCLAW_TOKEN=${OPENCLAW_TOKEN}

# 应用名称
VITE_APP_NAME=ClawApp

启动服务

# 开发环境
npm run dev

# 生产环境构建
npm run build

# Docker 部署
docker build -t clawapp .
docker run -d -p 3000:80 --env-file .env clawapp

部署时只需确保 H5 页面能访问到 OpenClaw 后端即可,OpenClaw 需开启 CORS 配置以允许移动端域名访问。

H5 与原生 App 的对比

对比维度 H5 方案 原生 App
开发成本 低,一次开发全平台运行 高,需分别维护 iOS/Android
更新体验 即时部署,用户无感知 需应用商店审核,周期 1-7 天
功能能力 受限于浏览器 API 可调用全部系统能力(相机、蓝牙等)
用户获取成本 扫码即用,链接可直接分享 需下载安装,平均成本 5-10 分钟
系统权限 需用户授权,部分受限 完全权限

对于 AI 聊天类应用,H5 方案的优势在于快速触达低成本迭代。ClawApp 选择 H5,意味着用户只需扫描二维码或点击链接即可使用,无需经历下载、注册、安装的繁琐流程。

适用场景

ClawApp 适合以下场景:

移动办公人员:外出时随时与团队 AI 智能体确认进展,获取实时数据支持

团队管理者:会议间隙快速查询 AI Agent 处理结果,无需打开电脑

客户服务场景:客服人员移动端接收 AI 预筛选结果,提升响应效率

GitHub 上该项目已获得 400+ Stars,社区反馈表明其在移动端 AI 对话场景中有较高的实用价值。

延伸使用

如果需要更便捷地管理 OpenClaw 平台,建议使用 ClawPanel 进行 AI 智能体的配置与监控,它提供了可视化的管理界面和实时状态追踪。

对于有定制需求的开发者,ClawApp 采用模块化设计,核心通信层与 UI 层解耦,可以很方便地替换为自己的组件库或接入其他 AI 平台。

---END---