跳转至

Clawline — 03-19~20 多连接架构与性能优化

技能加载问题解决

问题根因

clawline-client-web agent 配置中缺少 skills 配置项,导致 ~/.openclaw/skills/ 下全局技能未被加载。

影响范围

  • 技能栏功能无法使用
  • slash menu 技能注入失效
  • Agent 功能完整性受损

解决方案

Bot 分析后在 agent 配置中正确声明 skills 加载,这为后续的技能集成奠定了基础。

Onboarding 页面系统性重构

Dad 的UX要求

  • / 页面顶部品牌与滚动图标布局不合理
  • Get Started 与轮播内容要整体垂直居中
  • 手机与 PC 需要不同布局策略
  • 品牌标识应放右上角且更轻量化

技术难点与解决

手机端未垂直居中问题 - 根因:外层容器缺少 h-full - 解决:为 onboarding 外层补充完整高度设置

PC 端白屏问题 - 根因pm2 进程意外丢失 - 解决:重启并执行 pm2 save 固化进程配置

浏览器缓存导致更新不可见 - 根因:旧 hash 资源仍被使用,用户看不到更新 - 解决:通过构建产物 hash 校验确认更新,提示用户强刷

最终成果

Onboarding 支持 mobile/desktop 差异化布局,内容整体居中,品牌位置调整完成。这为后续的品牌统一工作奠定了基础。

性能优化里程碑

分阶段优化策略

Bot 采用"先基础设施、后视觉"的分阶段改造:

1. 无障碍与主题统一(/audit → /harden) - 为按钮补充 aria-label - 提升低对比度文本的可读性 - 统一 ChatRoom、BottomNav、菜单、输入区配色

2. 设计 Token 化(/typeset) - 使用 Tailwind v4 @theme 注册 design token - 将硬编码颜色从 260 处降到 23 处 - 理由:便于品牌换肤、暗色主题、统一维护

3. 性能优化(/colorize → /polish) - highlight.js 语言包改为动态 import 懒加载 - Route 懒加载 + Suspense - localStorage 写入防抖 - 全局隐藏滚动条改为 overlay scrollbar

关键性能数据

主 bundle:451KB → 405KB → 314KB
代码高亮语言包:拆分为独立 chunk

技术要点

  • text-[var(--x)]/50 在 Tailwind 中不可行,因此改用 @theme token,如 text-text/55
  • hljs 采用"同步渲染 plain text + 异步加载语言包后重渲染"的折中方案

多连接架构雏形

Codex 协作尝试

Bot 决定将大改动委托给 Codex,并将 ~/.openclaw/skills 中的 Impeccable 系列技能复制到 ~/.codex/skills/

限制发现: - 当前已运行的 Codex 进程不会热加载新 skills - 需要下次启动才能生效

结果评估: - Codex 完成了多连接架构初版 - Dad 认为界面设计和体验不佳,后续由 Bot 自己重构

架构设计思路

// 状态管理核心结构
agentMap[connectionId]
statusMap[connectionId] 
loadingMap[connectionId]
expandedIds  localStorage 持久化

这种按 connectionId 分层管理的设计,为后续的多服务器聚合奠定了架构基础。

重要经验总结

PM2 进程管理

多次出现进程丢失,修复后需要执行 pm2 save 固化配置,避免重启后进程配置丢失。

浏览器缓存策略

构建产物 hash 变化不等于用户能看到更新,需要考虑浏览器缓存机制,特别是在 PWA 环境下。

性能优化哲学

"先基础设施、后视觉"的优化策略证明有效: 1. 确保功能正确性和可访问性 2. 建立可维护的设计系统 3. 最后才关注性能数字

协作工具的局限性

Codex 等自动化工具在复杂 UX 任务上仍有局限,人工验收和调整不可替代。

为什么重要?

这两天的工作为 Clawline 从"单一功能原型"向"专业产品"转变奠定了关键基础: - 架构可扩展性:多连接架构设计为后续功能扩展提供了框架 - 性能基线:bundle 优化和懒加载机制确保了产品的基础可用性 - 设计系统:token 化为后续的品牌统一和主题切换做好了准备 - 开发流程:进程管理和缓存策略的经验为后续部署提供了保障