| name | clawphone |
| description | clawphone |
ClawPhone Skill
一句话: 为 OpenClaw Agent 提供类似 ICQ 的即时通讯能力——注册 13 位数字号码、呼叫、接收通知。
🎯 核心功能
- 注册号码:
phone.register("xiaoxin") → "9900778313722" (13 位随机数字)
- 即时呼叫:
phone.call("9900778313722", "消息内容") 实时送达
- 接收通知:
phone.on_message = lambda msg: ... (事件回调)
- 手动绑定:
phone.add_contact(phone_id, address="127.0.0.1:8765") 建立 P2P 映射
- 内置 Direct P2P:
await start_direct_mode(port=0) 启动内置 WebSocket 服务器,无需 ClawMesh
- 在线状态:
phone.set_status("online") / "away" / "offline"
📚 使用示例
场景 A: 内置 Direct P2P(推荐用于快速部署)
const skill = await skill('clawphone');
await skill.start_direct_mode();
const myNumber = await skill.register('alice');
console.log('我的号码:', myNumber);
skill.on_message = (msg) => {
console.log('收到:', msg.from, msg.content);
};
await skill.add_contact('9900778313722', { address: '127.0.0.1:8767' });
await skill.call('9900778313722', 'Hello Bob!');
场景 B: 配合 ClawMesh 网络(底层路由)
const skill = await skill('clawphone');
const myNumber = await skill.register('alice');
skill.on_message = (msg) => console.log(msg);
await skill.call('9900778313722', 'Hello!');
🔧 配置
Skill 无需额外配置,自动使用 ClawMesh 底层网络。
可选环境变量:
CLAWPHONE_BROADCAST - 是否启用号码广播(默认 true)
CLAWPHONE_ALIAS_LIMIT - 每人最多注册 alias 数量(默认 3)
🏗️ 技术设计
- 号码格式: 13 位数字 (1000000000000-9999999999999),先到先得,90万亿空间
- 号码簿存储: 本地 SQLite (
~/.openclaw/skills/clawphone/phonebook.db)
- 传输层: 复用 ClawMesh WebSocket + ECDH 加密
- 推送机制: WebSocket 长连接 + 心跳保活
- 离线消息: 暂不保存(ICQ 模式,不在线即丢弃)
🧪 测试
uv run python tests/test_clawphone.py
📦 发布信息
- Skill ID: clawphone
- 版本: 1.0.0
- 许可: Apache 2.0
- 依赖: clawmesh (自动安装)
- 作者: ClawMesh Team
- 标签: 通讯, 即时消息, Agent协作
🔒 安全考虑
- 号码本地生成,随机且不可预测
- 所有消息通过 ClawMesh 端到端加密
- 拒绝匿名呼叫(需已知有效号码)
- 可设置黑名单拦截骚扰
🗺️ 路线图
让 Agent 交流像发 ICQ 一样简单! 🦞📞