首页 项目矩阵 Clawline 平台
平台 · 长生命周期产品

Clawline 平台

把自家 AI 的对外聊天通道,从「租别人的 IM」改成「自有全栈 Web / 桌面 / 小程序 / SDK」。

Clawline 是一套自有的端到端 AI 聊天通道产品族:用户在 chat.clawlines.net 跟 AI 对话, 背后是 1 个核心平台 monorepo(Channel 插件 + Gateway 中转 + Web/桌面 Client)和 3 个独立卫星仓(外部接入 SDK / 微信原生小程序 / 公开文档站)。 整套从 2026-03 启动到 5 月底交付:三仓合并成 monorepo、npm 包发 1.0、桌面端三平台可分发、长期挂账的"幽灵消息"问题归零。 5-13 之后主入口让位给飞书 DM,转入随时可用但不强推的稳定维护期。

chat.clawlines.net @clawlines/channel · npm clawline/platform · monorepo Tauri 桌面 v0.5.4 · mac / win / linux
5 仓库
monorepo + 3 卫星模块
4 端
Web · 桌面 · 小程序 · SDK
v1.0
@clawlines/channel · npm
3 个月
3-17 → 5-13

这是什么

一套自有的 AI 聊天通道产品族

产品形态:用户打开 chat.clawlines.net(或装 Tauri 桌面端 / 微信小程序)跟自家 AI agent 对话;外部开发者也能用 npm 装 SDK 把自家界面接进来。 技术形态:1 个核心 monorepo 三个 app(Channel 接入 OpenClaw / Gateway 中转鉴权 / Client 三端 UI),加 3 个卫星仓(SDK / 微信小程序 / docs 站)共 5 个 repo。自家域名跑、自家库存消息、自家协议流式。

解决什么问题

不被第三方 IM 绑架

之前要让 AI agent 跟用户聊,最快路径是接 Telegram / Discord / Mattermost 这种现成 IM —— 上手快,但代价是:账号被封整条业务就停、对方平台改 API 你跟着改、限速由别人定、UI 长啥样由别人决定、用户行为数据进不了自己库。 Clawline 把整条通道收回到自家域名下:聊在哪儿、消息怎么存、能不能流式、要不要桌面客户端,全部自家说了算。 代价是要自己维护 WebSocket / 鉴权 / 客户端,但换来的是产品体验长期可控。

组件全景

5 个仓库 · 1 个核心平台 + 3 个卫星模块

5-06 把 channel / client-web / gateway 三个独立仓合并到 monorepo clawline/platform,pnpm workspace 管理。 另外 3 个仓库(SDK / 微信小程序 / docs 站)各自独立演进,通过 Channel 协议接入。Browser Agent 起初也算这一组,现已分离成独立产品。

CORE核心平台 · monorepo clawline/platform
Channel · 接入层

@clawlines/channel

OpenClaw 的 WebSocket / Relay / Webhook 通道插件 · npm 公开包

挂在 OpenClaw agent 的「上游」,把 agent 输出转成自家协议送给 Gateway,反过来把用户消息推给 agent。3 种传输模式可切:websocket(本地直连)/ relay(公网通过中转网关)/ webhook(HTTP 推送)。

TypeScript · WS · OpenClaw plugin
Gateway · 中转层

@clawlines/relay-gateway

消息中转 + Logto SSO 鉴权 + admin 管理台

独立 WebSocket 中转服务。Channel 插件主动连 /backend,Web/桌面客户端连 /client,Gateway 验 Logto JWT、维护用户/channel/token、转发 JSON 帧。Supabase 当持久层,本地 JSON 兜底。

Node ESM · jose JWKS · Supabase · Caddy
Client · 展示层

clawline-client-web

React 19 + Vite SPA · Tauri 桌面 · 同代码三端

三端共用一份代码:Web 跑在 chat.clawlines.net,Tauri 打包 mac / win / linux 桌面。React Query 单数据源、TanStack 自愈、Markdown + 代码块 Copy、流式渲染、跨会话 IndexedDB 本地搜索。

React 19 · Vite 6 · Tailwind v4 · Tauri 2
SATELLITE卫星模块 · 3 个独立仓 (Browser Agent 已分离为独立产品 → 详情
SDK · 外部接入

@clawlines/sdk

TS 客户端 SDK · 给外部开发者接 Gateway

纯 TS 包,封装 WebSocket 握手 / 心跳 / 重连 / 连接池 / 消息协议 / 类型定义(api/client/pool/protocol/types/utils 七个模块)。外部应用想把自家界面接到 Clawline Gateway 上拉 AI 对话,npm install @clawlines/sdk 一行装好。

TypeScript · WS pool · clawline/sdk
WeChat · 小程序端

clawline-client-wechat

原生微信小程序 · glass-easel 组件

不基于 Web 端 webview,是独立原生小程序。WebSocket 直连 Gateway,支持流式消息(text.delta 增量)、多服务器管理、离线队列、思考状态展示、消息持久化(每 agent 最多 200 条)。给微信生态用户的入口。

微信小程序原生 · glass-easel · WSS
Docs · 文档站

clawline/docs

公开产品文档 · 给接入方看的

独立 docs 仓库。覆盖产品总览、SDK 用法、Gateway 接入、Channel 配置、Web 端 / 小程序端 / Browser Agent 使用指南,含 ARCHITECTURE_ROADMAP / FEATURE_GAP_ANALYSIS / ISSUE_ANALYSIS / PRODUCT_OVERVIEW 长文。

VitePress · Markdown · clawline/docs

近期重要变化

5 件值得记录的业务进展

从业务视角看:发生了什么、对用户/运营意味着什么,不是改了哪几行代码。

5 月初

三仓合并成 monorepo

之前 channel / client-web / gateway 三个独立 GitHub 仓,改一次跨层功能要追三个 PR、三个 CI、三套发版节奏。5-06 合并到 clawline/platform,pnpm workspace 统一管理,从此一个改动一次 commit 一次部署。SDK / 浏览器扩展 / 小程序 / docs 保持独立仓(生命周期和发版节奏不一样)。

5-07

npm 包正式 1.0

@clawlines/channel@1.0.0 推上 npm 公开仓库。意味着外部开发者能用 openclaw plugins install @clawlines/channel 一行装进自己的 OpenClaw,做自家的 channel 集成 —— 这条通道不只服务自家,开始有「被别人接入」的可能性。

4 月底

桌面端三平台可发布

Tauri 打包从 v0.2.0 一路连发到 v0.5.4,mac / win / linux 三平台都能装。从「只有 Web 入口」升级到「装了客户端能脱离浏览器用」,桌面端是给重度使用者的稳态入口。

5-07 / 5-08

"幽灵消息"问题归零

从 3 月起断断续续出现的「消息错乱 / 跨会话串台 / 历史拉不全」问题,5-08 之后再没出现过。dora 频道实测 ghost 率 34% → 0。长期挂账的 reliability 大头收尾,从此运营不用再每天手动 reconcile 消息。

5-13

主入口让位给飞书 DM

日常跟 AI 的主战场切回 Hermes + 飞书 DM —— 飞书 native app 比自家 Web / 桌面端在通知 / 跨设备同步 / 移动端体验上还是更强。Clawline 转入「随时可用但不强推」的维护期:作为自家通道的能力储备保留,新功能不再优先投入。

沉淀的洞察

这 3 个月学到的真东西

不是技术 tips,是做完这件事之后想法上的变化。

通道自有 = 体验自主,但成本是真的
第三方 IM 用得再顺手也是别人家的房子,规则 / 限速 / API / UI 全在别人手里。自家通道想长期可控,必须自己跑一遍 WebSocket / 鉴权 / 持久化 / 多端 —— 但跑下来 3 个月才意识到,"通道自有"的红利只在产品到一定阶段才显现,前期飞书 / Telegram 这种现成方案的便利可能更值钱。
架构走对一次顶改一百个 bug
流式协议第一天踩了错路(用 SDK 的 onPartialReply,结果根本不触发),第二天就掉头改成监听 onAgentEvent 的 delta —— 一次架构纠偏,省下后面 N 周的 hack 修补。同样的还有 "1 WS 绑 1 channel + agent.select"、"React Query 当单一数据源" 这种早期定型的决策,半路想换代价指数级上升。
"幽灵消息" 根因 95% 在协议层
折腾了 2 个月的消息串台 / ghost 出现 / 历史拉不全,根因不是网络抖动也不是缓存 bug,是 channel 客户端把 inbound 当成 message.send 重广播了一遍 —— 写代码时一个语义混淆,下游所有"自愈"机制都在治标。这种问题靠加日志加监控查不出来,只能逼自己重读协议定义。
monorepo 解决的是"思维一致性"
三仓拆开时以为是"组件隔离",合并后才发现真正的痛点是跨仓改动的认知成本 —— 每次跨层调 API 都得在脑子里维护三套依赖关系。pnpm workspace 之后,跨 app 的 type 自动联动、改一次跨三层一目了然,节省的不是 CI 时间,是工程师注意力。但反之 SDK / 扩展 / 小程序生命周期跟核心不同步,强行合并只会乱套,所以保留独立仓。

关键里程碑

3-17 启动 → 5-13 转维护

挑出 8 个对项目走向有方向性影响的节点,跳过日常 commit 和小修。

2026-03-17
立项 · GitHub org 建立
generic-channel 插件正式命名 Clawline,github.com/clawline org 建立,规划三仓库结构。Clawline Gateway agent 创建。
2026-03-18
定位锁定 · IM Web Client
明确「不是泛 AI demo,是 IM Web 客户端」。Gateway admin UI 接 Logto SSO + JWT 全流程认证。claw-runtime 生产服务器上线。
2026-03-20
流式协议掉头
SDK 的 onPartialReply 不触发,当天改用 onAgentEvent 监听 delta —— 架构纠偏一次性到位,避免后面 N 周补丁。
2026-03-22
三端 E2E 联调通
Web ↔ Relay ↔ Wolf ↔ AI 回复完整链路打通,第一次能从浏览器一路聊到 AI 回话。Logto SSO 死循环问题修复。
2026-04-12
HTTP 直连接口上线
Gateway 新增 POST /api/chat,对外不止能 WebSocket,也能 HTTP 直连,方便服务端集成。虚拟连接 + meta.source 透传打通。
2026-04-27
桌面端连发
Tauri 桌面端 v0.2.0 → v0.5.4 一天内 3 个 tag,三平台都能装。从「只有 Web 入口」升级到完整客户端。
2026-05-06 / 07
monorepo 合并 + npm 1.0
三仓合并到 clawline/platform pnpm workspace。次日 @clawlines/channel@1.0.0 npm 首发 + 幽灵消息根因修复(dora 频道 ghost 率 34% → 0)。
2026-05-13
主入口让位飞书 · 转维护期
日常 AI 对话主战场切回 Hermes + 飞书 DM。Clawline 进入「随时可用但不强推」的稳态保留 —— 这是产品周期的自然收口,不是放弃。

入口与资产

8 个外部可访问的点

线上产品入口 + 5 个 GitHub 仓库 + npm 包 + 桌面 / 身份层。

技术栈

前端 · 后端 · 桌面 · 身份 · 持久层
TypeScript React 19 Vite 6 Tailwind CSS v4 TanStack Query 5 shadcn/ui Tauri 2 微信小程序原生 glass-easel Node ESM WebSocket (ws 8.x) Supabase PostgreSQL Logto SSO + JWT jose JWKS Caddy pnpm 9 workspace VitePress