跳转至

Clawline — 03-21晚 V2规划与存储架构

产品方向澄清

Dad 的核心决策:Clawline 是独立新频道,与 Mattermost 无关;聊天 UI 面向 OpenClaw 生态能力整合。

这个决策明确了 Clawline 的独立定位,不是依附于其他 IM 平台的插件,而是 OpenClaw 生态的核心入口。

规划目标清单

  • 展示当前代理技能、模型、思考程度、reason 等
  • 跨 Agent 搜索
  • Dashboard 汇总每日对话
  • 文件信息入口
  • 输入框上方固定技能/上下文入口
  • slash 命令支持技能

IndexedDB 存储架构决策

为什么选择 IndexedDB?

Dad 决策:先不改协议,直接把聊天数据保存在本地做搜索。

Bot 选型:本地 IndexedDB

选型理由: - 0 协议改动:纯客户端实现,无需修改 Gateway/Channel - 跨 Agent 搜索:支持跨 agent、跨会话的消息检索 - 容量适配:比 localStorage 更适合消息量增长场景

Phase 1:消息存储迁移

Bot 架构方案: - 新建 services/messageDB.ts 统一消息存储 - 替换 ChatRoom/ChatList/Search 的消息读写逻辑

迁移结果: - 39 条消息从 localStorage 迁移到 IndexedDB - 历史消息、预览、搜索均正常运行

Dad 关切:是否需要更新 channel 插件? Bot 结论:Phase 1 纯客户端改动,插件无需更新

Phase 2:功能扩展

Bot 执行: - Search 页面增强(支持全文检索) - FileGallery 文件管理器 - 输入框上方技能栏 - AgentContextViewer 组件

协议依赖说明: - agent.context.get 需要 channel 插件支持 - 未更新插件时,前端只会显示 loading/空态 - 这体现了客户端与插件的渐进式协作模式

Channel 插件扩展

Codex 初版审查

Codex 提交到 clawline/channel,commit 2edd81a

Dad 决策:要求 Bot 自己审查,确认是否与 roadmap 匹配。

Bot 自改内容

审查后的调整: - monitor.ts:把 TOOLS.md / HEARTBEAT.md 纳入上下文文件列表 - send.ts:thinking indicator 增加 agentId - sendMessageGeneric:若 meta.model 缺失但有 agentId,自动补 model

结论:插件需要更新时,只需 Dad 拉取对应 commit 部署即可。这种"客户端先行,插件跟进"的模式为后续开发提供了灵活性。

技能与上下文入口设计

Dad 的交互要求

  • 技能/上下文不要单独占一条
  • 应固定在输入框上方快捷命令行最左边
  • 不参与会话历史
  • 内容自动更新

Bot 实现方案

  • 将"技能(数量)"和"上下文"按钮固定在快捷命令行最左侧
  • slash menu 中加入技能分区,使用 /use <skillName> 形式

技能扫描根因修复

发现问题:仅扫描 ~/.openclaw/skills 不够

技能目录规则

~/.openclaw/skills/                    # 全局技能
~/.openclaw/workspace-{agentId}/skills/  # 工作区技能
~/.codex/skills/                       # Codex 技能

即使 agent.jsonworkspace 字段,也可由 agentId 推导目录。

媒体消息接收问题

问题根因

message.send / history.sync 处理时只读取 content,忽略 mediaUrl / contentType / mimeType

Bot 分析结论

  • 客户端渲染链路需补媒体字段
  • relay server 是纯透传,不解析包体
  • 若远程地址客户端不可达,需考虑 base64 或共享存储方案

Dad 追问:是否需要更新插件? Bot 结论:当前"发图片/收图片"修复主要是前端侧,不一定需要插件更新。

这个结论体现了 Clawline 架构的设计哲学:前端尽可能自主处理,减少对后端的依赖。

为什么这个晚上是战略转折点?

1. 产品定位最终确立

从"可能是 Mattermost 插件"到"独立的 OpenClaw 生态入口",产品方向彻底明确。

2. 存储架构奠基

IndexedDB 的引入为跨 Agent 搜索、消息持久化、离线支持奠定了技术基础。

3. 前后端协作模式确立

"客户端先行,插件跟进"的渐进式开发模式,为快速迭代提供了灵活性。

4. 技能集成路径清晰

从技能目录规则到 slash 命令入口,技能系统的集成方案在这个晚上基本确定。

技术架构总结

┌─────────────────────────────────────────────┐
│                Web Client                   │
├─────────────────────────────────────────────┤
│  IndexedDB (消息存储)                        │
│  ├── 跨 Agent 搜索                          │
│  ├── 历史消息缓存                           │
│  └── 离线支持基础                           │
├─────────────────────────────────────────────┤
│  技能系统                                   │
│  ├── 全局技能 (~/.openclaw/skills/)        │
│  ├── 工作区技能 (workspace-{agentId}/)     │
│  └── slash 命令入口 (/use <skill>)         │
├─────────────────────────────────────────────┤
│  上下文查看器                               │
│  └── agent.context.get (需插件支持)         │
└─────────────────────────────────────────────┘