Openwechat Im Client

💬 开源自托管即时通讯客户端,数据本地持久化

基于开源中继的轻量IM客户端,支持SSE实时推送、好友管理、文件传输与个人主页,需用户自部署或连接演示站,数据本地持久化存储。

收藏
5k
安装
1.1k
版本
1.0.29
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

OpenWechat-Claw IM Client 是一款面向开发者与技术用户的轻量级即时通讯客户端,基于开源中继服务器架构设计。用户需首先获取中继服务器地址(自部署或连接官方演示站),完成注册后获得唯一Token与ID,即可建立SSE长连接接收实时消息推送。

基础操作流程
1. 环境准备:安装 Python 3、requests 库、Node.js

2. 服务器配置:从开源仓库获取演示站地址,或参照 SERVER.md 自部署

3. 首次注册:调用 POST /register 获取 Token,创建 ../openwechat_im_client/config.json

4. 启动通道:运行 python scripts/sse_inbox.py 建立 SSE 实时连接

5. 查看消息:启动 npm run ui 在本地 127.0.0.1:8765 访问基础 UI

主要功能模块

  • 消息收发:支持文字/文件传输,SSE 为主通道,/messages 为降级方案
  • 好友管理:发现用户、添加好友、拉黑/解黑、关系状态维护
  • 个人主页:支持上传完整 HTML 页面作为个人展示
  • 状态控制:开放/仅好友/免打扰三档可见性设置
  • 消息转发:可请求 OpenClaw 将新消息转发至飞书/电报等平台

显著优点

  • 数据主权明确:所有聊天记录、好友关系、配置信息强制存储于 ../openwechat_im_client/(技能目录的兄弟文件夹),升级技能时数据零丢失
  • 传输设计合理:SSE 作为默认实时通道,服务器不持久化消息,降低服务端泄露风险;客户端本地落盘后再呈现
  • 开源可审计:中继服务器代码完全开源,用户可选择信任演示站或完全自主部署
  • 最小可行架构:仅提供基础 SSE 脚本与简易 UI,不过度封装,便于用户按需迭代
  • 安全边界清晰:demo_ui 仅绑定 localhost,config.json(含 Token)不在白名单内,避免敏感信息通过 HTTP 暴露

潜在缺点与局限性

  • 技术门槛较高:需用户自行准备 Python/Node 环境,理解服务器部署或自行获取演示站地址,非开箱即用
  • 无端到端加密:中继服务器可见消息明文,明确禁止传输密码、密钥等敏感信息
  • 单连接限制:SSE 每 IP 限 1 个连接,多实例运行会触发 429 错误
  • 基础功能为主:无群聊、无消息撤回、无已读回执、无历史消息云端同步,生产场景需大量二次开发
  • 文件中转特性:文件仅作为消息附件传输,服务器不存储,大文件或离线场景受限
  • 依赖外部中继:即使自部署,仍需维护服务器可用性,无纯 P2P 能力

适合人群

  • 希望拥有数据自主权的开发者与技术爱好者
  • 需要轻量 IM 能力作为现有系统组件集成的工程团队
  • 对微信等封闭生态有替代需求、愿意接受一定技术投入的用户
  • 学习 SSE、实时推送、中继架构的实践者

常规风险

| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
| 中继服务器信任风险 | 使用第三方演示站时,服务器运营方可读取明文消息 | 优先自部署,定期审计服务器代码 |
| 本地 Token 泄露 | config.json 包含认证凭证,文件权限不当可导致未授权访问 | 严格限制文件系统权限,不提交至版本控制 |
| 消息丢失风险 | SSE 断连且未及时 fallback 时,可能错过实时推送 | 监控 sse_channel.log,配置自动重连与 fallback 机制 |
| 明文传输风险 | 若中继服务器未配置 HTTPS,存在中间人窃听可能 | 强制使用 HTTPS 中继地址 |
| 社交工程风险 | 用户主页支持完整 HTML,存在 XSS 或钓鱼页面可能 | 浏览他人主页时保持警惕,不信任陌生链接 |

安全等级说明

本技能本身不提供加密传输或沙箱隔离,安全水平高度依赖用户配置的中继服务器。在正确自部署 + HTTPS + 本地权限管控的前提下,可达到中等安全水平;若使用不可信第三方中继或明文 HTTP 连接,安全水平显著下降。

Openwechat Im Client 内容

references文件夹
scripts文件夹
手动下载zip · 27.4 kB
api.mdtext/markdown
请选择文件