核心用法
OpenWechat-Claw IM Client 是一款面向 OpenClaw 的即时通讯客户端技能,采用服务端权威(server-authoritative)架构设计。用户需先配置自托管的中继服务器(relay server),完成注册获取 Token 后即可启用 SSE 实时消息推送。所有消息、好友关系、个人资料均强制持久化到 ../openwechat_im_client 目录,确保技能升级时数据不丢失。
主要功能模块
| 模块 | 说明 |
|------|------|
| **注册与认证** | 通过 `POST /register` 获取用户 ID 和一次性 Token,写入本地 `config.json` |
| **消息收发** | 支持文字(`POST /send`)和文件(`POST /send/file`),SSE 推送为主、`GET /messages` 为降级方案 |
| **好友管理** | 发现用户(`GET /users`)、拉黑/解黑(`/block/{id}`, `/unblock/{id}`)、本地 `contacts.json` 缓存 || **状态控制** | 通过 `PATCH /me` 设置开放/仅好友/免打扰三种可见性状态 |
| **个人主页** | 支持上传完整 HTML 页面(`PUT /homepage`)作为个人展示,公开展示无鉴权 |
| **消息转发** | 可将 SSE 消息转发至飞书、Telegram 等通道,通过 `config.json` 配置驱动 `forwarder.py` |
| **基础 UI** | 提供 `demo_ui.html`,`npm run ui` 本地启动(127.0.0.1:8765),仅本机可见 |
技术特性
- 传输层: SSE (
/stream) 强制优先,断线自动重连,降级时写入sse_channel.log供模型感知 - 数据层: 固定路径
../openwechat_im_client/,包含inbox_pushed.md(推送消息)、conversations.md(聊天记录)、contacts.json(好友缓存)、profile.json(个人资料)、stats.json(统计) - 安全设计: Token 仅本地存储;demo UI 绑定 localhost;支持文件权限隔离建议
显著优点
1. 数据主权完全归用户: 中继服务开源可自部署,消息不经过第三方平台,Token 与聊天记录仅存本地
2. 升级无损: 数据目录与技能目录分离(../openwechat_im_client),技能更新不触碰用户数据
3. 实时性与可靠性兼顾: SSE 主推 + /messages 降级,配合 sse_channel.log 实现可观测的通道状态
4. 渐进式体验: 注册后才启用 UI,基础功能开箱即用,高级功能(主页、转发、自定义 UI)按需迭代
5. 多语言响应: 强制遵循用户输入语言,中文用户获得中文交互体验
潜在缺点与局限性
- 运维门槛: 需用户自行部署 Python 环境(
requests)和 Node.js,中继服务器需自托管或寻找演示站 - 无历史消息云端备份: 服务器
GET /messages读后即删,完全依赖本地持久化,设备损坏或误删无法恢复 - 功能极简: 默认仅提供单页 demo UI,复杂需求(搜索、多媒体预览、群聊)需用户驱动迭代
- 明文传输: 消息在 relay 上为明文(见 SERVER.md),不适合传输敏感信息
- SSE 单连接限制: 每 IP 仅允许一个 SSE 连接,多设备同时在线需额外设计
适合人群
- 注重隐私、愿意自托管基础设施的技术用户
- 需要将 IM 消息接入自动化工作流(通过 OpenClaw 转发到飞书/Slack/Telegram)的开发者
- 希望以最小成本验证 IM 场景、再逐步迭代 UI 和功能的敏捷团队
- 熟悉 Python/Node.js 生态、能自行排查部署问题的用户
常规风险
| 风险类型 | 说明 | 缓解建议 |
|----------|------|----------|
| **Token 泄露** | `config.json` 包含认证密钥,若权限设置不当或被误提交至 git 可能导致账户被盗 | 设置 600 权限,加入 `.gitignore`,定期检查 |
| **中继服务不可信** | 使用第三方演示站时,relay 可读取明文消息 | 优先自托管,审查 SERVER.md 安全建议 |
| **本地数据丢失** | 无云端备份,磁盘故障或误删 `../openwechat_im_client` 不可恢复 | 用户自行备份该目录,考虑定时 rsync |
| **UI 本地暴露** | 若用户修改 `serve_ui.js` 绑定到 `0.0.0.0`,Token 和消息可能被局域网嗅探 | 保持默认 localhost 绑定,审查自定义脚本 |
| **消息转发泄露** | 配置 webhook 或 openclaw 通道时,消息被发送至外部服务 | 确认目标地址可信,避免转发敏感内容 |
总结
OpenWechat-Claw IM Client 是一个隐私优先、渐进增强的开源即时通讯技能。它以自托管为核心,SSE 为实时通道,本地文件系统为数据底座,配合可配置的消息转发和可定制的基础 UI,为技术用户提供了从"最小可用"到"生产就绪"的清晰迭代路径。适合对数据主权敏感、具备基础运维能力的开发者和团队采用。