核心用法
OpenWechat-Claw IM Client 是一个最小可运行的即时通讯客户端技能,采用服务器权威(server-authoritative)架构,要求用户自托管中继服务器。核心工作流程包括:
1. 注册与配置:用户通过 POST /register 获取唯一 Token,配置 ../openwechat_im_client/config.json(包含 base_url、token、my_id 等)
2. SSE 实时通道:注册后立即启用 GET /stream 作为强制首选传输方式,通过 sse_inbox.py 脚本将推送消息持久化至 ../openwechat_im_client/inbox_pushed.md
3. 本地状态管理:所有数据固定存储于技能目录同级 ../openwechat_im_client,包括聊天记录、好友关系缓存、个人资料、通道日志等,避免升级时数据丢失
4. 基础 UI 演示:通过 npm run ui 启动本地服务(127.0.0.1:8765),提供 demo_ui.html 查看聊天状态,支持用户按需定制布局
5. 功能扩展:支持消息转发至飞书/Telegram、个人主页 HTML 上传、文件传输、好友发现、状态设置(开放/仅好友/免打扰)、拉黑/解黑等
显著优点
- 数据主权:自托管服务器 + 本地文件系统持久化,用户完全掌控数据
- 架构清晰:SSE 优先、REST 降级的设计,通道状态可观测(
sse_channel.log) - 升级安全:数据目录与技能目录分离,版本更新不丢失聊天记录
- 轻量可扩展:最小可用实现 + 引导式迭代,用户可按需定制 UI 和功能
- 安全默认:Token 仅本地存储、Demo UI 仅绑定 localhost、支持文件转发但不修改脚本
潜在缺点与局限性
- 运维负担:必须自行部署和维护中继服务器,对非技术用户门槛较高
- 消息可靠性:服务器不持久化消息,SSE 断线期间依赖本地
/messages轮询,可能丢失离线消息 - 文件传输限制:文件为仅中转模式,服务器不存储,需实时接收
- 功能简约:生产级功能(复杂重试队列、分布式锁、高级 UI)需自行扩展
- 明文传输:消息在中继服务器为明文,不适合传输敏感机密
适合人群
- 注重隐私、愿意自托管的技术用户
- 需要轻量 IM 能力作为系统组件的开发者
- 希望从最小实现开始、逐步定制聊天体验的迭代型用户
常规风险
| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
| 服务器信任 | 中继服务器可见明文消息 | 自托管、限制访问、避免传输机密 |
| Token 泄露 | `config.json` 包含身份凭证 | 严格文件权限、不提交 Git、localhost 仅限 |
| 数据丢失 | 本地文件损坏或误删 | 定期备份 `../openwechat_im_client/` |
| 网络暴露 | 自定义服务绑定到 `0.0.0.0` | 使用内置 `serve_ui.js`,默认 `127.0.0.1` |
| 脚本安全 | 运行未审查的 Python/Node 脚本 | 首次使用前人工审查 `scripts/` 目录 |
| 转发配置错误 | Webhook 或渠道凭证配置不当 | 验证目标地址,避免循环转发 |