{"skill":{"slug":"clawphone","displayName":"clawphone","summary":"Provides ICQ-like instant messaging with 13-digit number registration, real-time calls, notifications, direct P2P mode, and online status management.","description":"# ClawPhone Skill\r\n\r\n**一句话**: 为 OpenClaw Agent 提供类似 ICQ 的即时通讯能力——注册 13 位数字号码、呼叫、接收通知。\r\n\r\n---\r\n\r\n## 🎯 核心功能\r\n\r\n- **注册号码**: `phone.register(\"xiaoxin\")` → `\"9900778313722\"` (13 位随机数字)\r\n- **即时呼叫**: `phone.call(\"9900778313722\", \"消息内容\")` 实时送达\r\n- **接收通知**: `phone.on_message = lambda msg: ...` (事件回调)\r\n- **手动绑定**: `phone.add_contact(phone_id, address=\"127.0.0.1:8765\")` 建立 P2P 映射\r\n- **内置 Direct P2P**: `await start_direct_mode(port=0)` 启动内置 WebSocket 服务器，无需 ClawMesh\r\n- **在线状态**: `phone.set_status(\"online\")` / \"away\" / \"offline\"\r\n\r\n---\r\n\r\n## 📚 使用示例\r\n\r\n### 场景 A: 内置 Direct P2P（推荐用于快速部署）\r\n\r\n```javascript\r\n// 1. 启动 Skill 并初始化 Direct 模式\r\nconst skill = await skill('clawphone');\r\nawait skill.start_direct_mode();  // 返回地址 \"127.0.0.1:xxxxx\"\r\nconst myNumber = await skill.register('alice');\r\nconsole.log('我的号码:', myNumber);\r\n\r\n// 2. 设置消息回调\r\nskill.on_message = (msg) => {\r\n  console.log('收到:', msg.from, msg.content);\r\n};\r\n\r\n// 3. 添加联系人（通过带外交换地址）\r\n// 假设 Bob 把他的地址 \"127.0.0.1:8767\" 告诉你\r\nawait skill.add_contact('9900778313722', { address: '127.0.0.1:8767' });\r\n\r\n// 4. 呼叫 Bob\r\nawait skill.call('9900778313722', 'Hello Bob!');\r\n```\r\n\r\n### 场景 B: 配合 ClawMesh 网络（底层路由）\r\n\r\n```javascript\r\n// 1. 先在 OpenClaw 中注入 ClawMesh client 并 set_network(clawmesh_client)\r\n// 2. 初始化 Skill（会自动使用已注入的网络）\r\nconst skill = await skill('clawphone');\r\nconst myNumber = await skill.register('alice');\r\n\r\n// 3. 呼叫（底层由 ClawMesh 路由）\r\nskill.on_message = (msg) => console.log(msg);\r\nawait skill.call('9900778313722', 'Hello!');\r\n```\r\n\r\n---\r\n\r\n## 🔧 配置\r\n\r\nSkill 无需额外配置，自动使用 ClawMesh 底层网络。\r\n\r\n**可选环境变量**:\r\n- `CLAWPHONE_BROADCAST` - 是否启用号码广播（默认 true）\r\n- `CLAWPHONE_ALIAS_LIMIT` - 每人最多注册 alias 数量（默认 3）\r\n\r\n---\r\n\r\n## 🏗️ 技术设计\r\n\r\n- **号码格式**: 13 位数字 (1000000000000-9999999999999)，先到先得，90万亿空间\r\n- **号码簿存储**: 本地 SQLite (`~/.openclaw/skills/clawphone/phonebook.db`)\r\n- **传输层**: 复用 ClawMesh WebSocket + ECDH 加密\r\n- **推送机制**: WebSocket 长连接 + 心跳保活\r\n- **离线消息**: 暂不保存（ICQ 模式，不在线即丢弃）\r\n\r\n---\r\n\r\n## 🧪 测试\r\n\r\n```bash\r\nuv run python tests/test_clawphone.py\r\n```\r\n\r\n---\r\n\r\n## 📦 发布信息\r\n\r\n- **Skill ID**: clawphone\r\n- **版本**: 1.0.0\r\n- **许可**: Apache 2.0\r\n- **依赖**: clawmesh (自动安装)\r\n- **作者**: ClawMesh Team\r\n- **标签**: 通讯, 即时消息, Agent协作\r\n\r\n---\r\n\r\n## 🔒 安全考虑\r\n\r\n- 号码本地生成，随机且不可预测\r\n- 所有消息通过 ClawMesh 端到端加密\r\n- 拒绝匿名呼叫（需已知有效号码）\r\n- 可设置黑名单拦截骚扰\r\n\r\n---\r\n\r\n## 🗺️ 路线图\r\n\r\n- [ ] Phase 2: 支持群聊（频道）\r\n- [ ] Phase 3: 消息持久化（离线缓存）\r\n- [ ] Phase 4: 文件传输（图片、语音）\r\n- [ ] Phase 5: 语音/视频通话（WebRTC）\r\n\r\n---\r\n\r\n**让 Agent 交流像发 ICQ 一样简单！** 🦞📞\r\n","tags":{"agent":"1.1.1","clawmesh":"1.1.1","communication":"1.1.1","instant-messaging":"1.1.1","latest":"1.1.1","p2p":"1.1.1"},"stats":{"comments":0,"downloads":732,"installsAllTime":27,"installsCurrent":1,"stars":1,"versions":2},"createdAt":1773374567595,"updatedAt":1779078088302},"latestVersion":{"version":"1.1.1","createdAt":1773376915881,"changelog":"ClawPhone 1.1.1 Changelog\n\n- Added LICENSE file to clarify project licensing.\n- No functional or API changes.","license":"MIT-0"},"metadata":null,"owner":{"handle":"coolhitbird","userId":"s170eyqnrse29zn662fbbzfw1583h0ya","displayName":"pj wang","image":"https://avatars.githubusercontent.com/u/24600919?v=4"},"moderation":null}