🎉 此作品正在参加天津大学智能体大赛 2026,希望大家能投我们一票,感谢 🥳
TJUClaw 2026

《跨平台智能体客户端的实现:Web、桌面端与移动端》

一套代码全端运行——深入解析 TJUClaw 基于 React 19、Vite 8、Tailwind CSS 4 与 Tauri v2 的多端客户端架构设计、OKLCH 视觉系统与安全会话流。

《跨平台智能体客户端的实现:Web、桌面端与移动端》

在多端智能体系统设计中,一个永恒的工程难题摆在开发者面前:如何在兼顾 Web 端极速触达、桌面端深度集成与移动端随身便携的同时,避免被多套完全割裂的代码库拖垮?

行业常见的解法往往伴随着沉重的代价:

  • 要么完全依赖沉重的 Electron,打包出动辄上百兆、内存开销高昂的桌面安装包;
  • 要么为 iOS/Android、桌面端与 Web 端各立一套研发团队与技术栈,随着业务逻辑的快速迭代迅速陷入“功能不一致、状态不同步”的泥潭。

TJUClaw 从立项之初就确立了极致精简与高内聚的跨端工程理念:以单一代码仓库(tjuclaw-client),驱动 Web 浏览器应用、桌面端(Linux / Windows)原生客户端,以及移动端(Android)全端形态。

本文将全景拆解 TJUClaw 在跨端架构选型、Tauri v2 宿主集成、OKLCH 语义化设计系统以及严格同源安全会话上的工程实践。


1. 跨平台技术矩阵:React 19 + Tauri v2

为了在轻量化、原生性能与开发效率之间取得最佳平衡,TJUClaw 构建了如下现代前端技术选型矩阵:

                           +-------------------------------------+
                           |   前端通用业务层 (Shared Frontend)   |
                           |   React 19 + Vite 8 + Tailwind CSS 4|
                           |   TypeScript + Lucide React         |
                           +------------------+------------------+
                                              |
                     ┌────────────────────────┴────────────────────────┐
                     ▼                                                 ▼
          [Web 纯前端形态]                                   [Tauri v2 宿主容器]
                 │                                                     │
         +-------+-------+                                     +-------+-------+
         |  EdgeOne CDN  |                                     |  Rust Core    |
         |  静态资产加速  |                                     |  原生窗口与CSP |
         +---------------+                                     +-------+-------+

                                              ┌────────────────────────┼────────────────────────┐
                                              ▼                        ▼                        ▼
                                     [Linux (.deb)]           [Windows (.exe)]         [Android (.apk)]
                                     WebKitGTK 原生渲染       WebView2 原生渲染        Android WebView

为什么选择 Tauri v2 而非 Electron?

  1. 体积与内存极致优化:Tauri 不捆绑 Chromium 内核,而是直接复用各操作系统底层的原生 WebView(Windows 的 WebView2、Linux 的 WebKitGTK、Android 的系统 WebView),安装包体积从 Electron 的 150+ MiB 骤降至 10~20 MiB,运行常驻内存降低 70% 以上;
  2. 现代安全基线(Strict CSP):Tauri 原生提供严格的内容安全策略(CSP)与细粒度权限控制,阻断任意代码注入与跨域逃逸;
  3. 一套业务代码,四端完全一致:除平台特定的外壳打包配置外,全端 100% 共享组件、状态机与样式逻辑,杜绝端与端之间的体验断层。

2. 视觉系统与状态治理:OKLCH 语义色彩模型

作为一款面向现代大学生的智能体应用,界面既要保持专业工具的秩序感,又要提供极度细腻舒适的视觉反馈。

我们摒弃了传统的 RGB/HSL 调色方式,全面拥抱 OKLCH 感知均匀色彩空间

  [OKLCH 语义化设计令牌体系]
  src/product.css

        ├─► 主题方案 (data-theme):
        │   ├── "light": 极度清爽高对比度、米白纸张质感底色
        │   └── "dark":  深邃低反光暗黑、保护夜间视力的弱对比渐层

        └─► 强调色调 (data-accent):
            ├── "mono":  克制典雅的中性灰黑风格 (默认)
            └── "blue":  极具科技感与天津大学色彩印记的北洋蓝

关键设计哲学:

  • 感知一致性(Perceptual Uniformity):传统 HSL 在调整色相(Hue)时,人类肉眼感知到的明度会有巨大跳跃(例如纯黄比纯蓝刺眼得多)。OKLCH 将明度(Luminance)与色度(Chroma)严格解耦,确保在白天模式与夜间模式切换时,文字与背景的对比度始终严守 WCAG AAA 标准;
  • 单一外观状态源 (useAppearance):由 src/lib/appearance.ts 统一托管系统外观偏好,支持跟随系统(system)、强制明亮(light)与强制暗黑(dark),并通过 StorageEvent 在同源多标签页之间毫秒级同步;
  • 拒绝第三方主题包膨胀:不引入臃肿的 next-themes 或重型状态库,完全基于原生 CSS 自定义属性与 HTML data-* 属性驱动,整套设计系统的运行时 JS 体积几近为零。

3. 安全会话流与同源代理设计

在智能体客户端中,身份鉴权与安全通道是守住用户隐私的第一道关卡。

3.1 统一的 /api/* 同源契约

很多跨端应用在开发移动端或桌面端时,为了图省事直接放开后端的 CORS 限制(允许任意来源),甚至将 JWT 长期明文存储在 localStorage 中,这为 XSS 攻击与凭证窃取大开方便之门。

TJUClaw 贯彻了极其严密的同源安全规范:

[浏览器 / Tauri 客户端]

         │  统一且强制发起同源请求:/api/*
         │  (禁止跨域请求,credentials: 'same-origin', cache: 'no-store')

[Vite 代理 (本地开发) / Nginx Ingress (云端生产)]

         │  严格剥离且仅剥离一次 /api 前缀

[Go API 原生监听: 8080 / 18088]

         ├── 校验会话 Cookie (HttpOnly, Host-Only, SameSite=Lax)
         ├── 防 CSRF 来源校验 (Strict Origin Matching)
         └── 返回统一机器错误码 {"error": {"id": "session_expired"}}
  • 凭证永不落盘 JS:会话状态全链路基于 HttpOnly 安全 Cookie 流转,前端 JavaScript 无论如何都无法通过脚本直接读取到底层身份令牌;
  • 原子 OTP 交互体验:在邮箱验证码输入组件(OTPInput)的设计上,我们拒绝了“由 6 个独立 input 拼接、导致移动端软键盘频繁跳出与粘贴卡顿”的劣质实现,而是采用单真实原生输入框隐藏捕获 + 6 个视觉单元格投射的无缝方案,完美原生支持各平台短信/邮件一键自动填充与全键盘导航。

4. 响应式布局:从宽屏工作区到移动端单手操作

不同形态的设备具有截然不同的交互范式:

平台形态典型分辨率核心交互逻辑
桌面端 / Web 宽屏1920x1080 及以上三栏分屏布局:左侧会话历史、中间执行流与终端日志、右侧工作区成果实时预览
移动端 (Android)竖屏为主(窄宽)单栏堆叠与底部导航:侧边栏自动收折为抽屉菜单,长耗时任务状态收敛为底部常驻状态栏,保证大拇指单手可达

通过 Tailwind CSS 4 的响应式断点与弹性网格系统,TJUClaw 实现了零重载的平滑界面自适应:在 PC 上拉伸窗口,右侧的工作区文件预览面板会无缝滑动展开;在移动端点击文件,则优雅切换为全屏浮层式查看器。


5. 总结:跨端架构的终局之美

回顾整个客户端的构建历程,我们没有为了追求所谓的“新技术”而盲目堆砌复杂的工程架构。

通过选用 React 19 + Tailwind CSS 4 搭建极致轻薄的纯净视图层,依托 Tauri v2 以数十兆字节的微型体积横跨 Windows、Linux 与 Android 三大原生操作系统,并以 OKLCH 语义令牌严格同源网络网关 筑牢体验与安全的双重底线,TJUClaw 最终实现了一套高度优雅、易于维护且体验卓越的全端智能体应用。