@lingyao037/openclaw-lingyao-cli 0.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +325 -0
- package/cli.mjs +609 -0
- package/dist/accounts-Bkwmg14Q.d.ts +325 -0
- package/dist/cli.d.ts +175 -0
- package/dist/cli.js +181 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +1229 -0
- package/dist/index.js +3332 -0
- package/dist/index.js.map +1 -0
- package/openclaw.plugin.json +53 -0
- package/package.json +62 -0
package/README.md
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# 灵爻 (Lingyao) - OpenClaw 与鸿蒙 App 通信桥梁
|
|
2
|
+
|
|
3
|
+
灵爻是一个完整的双端通信系统,实现 OpenClaw Gateway 和鸿蒙 App 之间的实时双向消息同步,通过 lingyao.live 服务器中转。
|
|
4
|
+
|
|
5
|
+
> 当前仓库仅保留“服务器中转 + 双端主动 WebSocket 连接”实现。
|
|
6
|
+
|
|
7
|
+
## 快速开始
|
|
8
|
+
|
|
9
|
+
### 🚀 完整部署指南
|
|
10
|
+
|
|
11
|
+
查看 **[完整部署指南](DEPLOYMENT_GUIDE.md)** 获取三端完整部署流程:
|
|
12
|
+
1. Lingyao Live 服务器部署
|
|
13
|
+
2. OpenClaw Gateway 插件安装
|
|
14
|
+
3. 鸿蒙 App 部署
|
|
15
|
+
|
|
16
|
+
## 系统架构
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
┌─────────────────────┐ ┌─────────────────────┐
|
|
20
|
+
│ OpenClaw Gateway │ │ HarmonyOS App │
|
|
21
|
+
│ (WebSocket Client) │ │ (WebSocket Client) │
|
|
22
|
+
│ │ │ │
|
|
23
|
+
│ 代码: src/ │ │ 代码: harmonyos-app/ │
|
|
24
|
+
│ 部署: 作为插件运行 │ │ 部署: 鸿蒙设备 │
|
|
25
|
+
└──────────┬───────────┘ └──────────┬───────────┘
|
|
26
|
+
│ │
|
|
27
|
+
│ WebSocket │ WebSocket
|
|
28
|
+
│ wss://api.lingyao.live/v1/gateway/ws │ wss://api.lingyao.live/v1/app/ws
|
|
29
|
+
│ │
|
|
30
|
+
▼ ▼
|
|
31
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
32
|
+
│ Lingyao Live Server (lingyao.live) │
|
|
33
|
+
│ (WebSocket Relay Server) │
|
|
34
|
+
│ │
|
|
35
|
+
│ 代码: server/src/server.ts │
|
|
36
|
+
│ 部署: 云服务器 (需要公网 IP 和域名) │
|
|
37
|
+
│ WebSocket: /v1/gateway/ws, /v1/app/ws │
|
|
38
|
+
│ HTTP API: /v1/gateway/*, /v1/app/* │
|
|
39
|
+
└─────────────────────────────────────────────────────────────┘
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 三端组件
|
|
43
|
+
|
|
44
|
+
### 1. Lingyao Live 服务器 (server/)
|
|
45
|
+
|
|
46
|
+
WebSocket 中转服务器,实现 Gateway 和 App 之间的消息转发。
|
|
47
|
+
|
|
48
|
+
**关键文件:**
|
|
49
|
+
- `server/src/server.ts` - 主服务器实现
|
|
50
|
+
- `server/package.json` - 依赖配置
|
|
51
|
+
- `server/README.md` - 服务器文档
|
|
52
|
+
|
|
53
|
+
**功能:**
|
|
54
|
+
- 双 WebSocket 服务器处理 Gateway 和 App 连接
|
|
55
|
+
- HTTP REST API 提供注册、心跳、消息发送
|
|
56
|
+
- 离线消息队列(每设备最多 100 条)
|
|
57
|
+
- 心跳监控和超时检测
|
|
58
|
+
|
|
59
|
+
### 2. OpenClaw Gateway 端 (src/)
|
|
60
|
+
|
|
61
|
+
OpenClaw 插件,作为 WebSocket 客户端连接到服务器。
|
|
62
|
+
|
|
63
|
+
**关键文件:**
|
|
64
|
+
- `src/channel.ts` - 主频道类
|
|
65
|
+
- `src/websocket-client.ts` - WebSocket 客户端
|
|
66
|
+
- `src/server-client.ts` - HTTP API 客户端
|
|
67
|
+
- `src/metrics.ts` - 监控指标
|
|
68
|
+
- `src/errors.ts` - 错误处理
|
|
69
|
+
|
|
70
|
+
**功能:**
|
|
71
|
+
- 自动连接到 lingyao.live 服务器
|
|
72
|
+
- 接收来自鸿蒙 App 的同步消息
|
|
73
|
+
- 发送通知到鸿蒙 App
|
|
74
|
+
- 自动重连和心跳保活
|
|
75
|
+
|
|
76
|
+
### 3. 鸿蒙 App 端 (harmonyos-app/)
|
|
77
|
+
|
|
78
|
+
鸿蒙应用,作为 WebSocket 客户端连接到服务器。
|
|
79
|
+
|
|
80
|
+
**关键文件:**
|
|
81
|
+
- `harmonyos-app/src/websocket/LingyaoWSClient.ts` - WebSocket 客户端
|
|
82
|
+
- `harmonyos-app/src/sync/DataSyncManager.ts` - 数据同步管理器
|
|
83
|
+
- `harmonyos-app/src/models/Message.ts` - 消息模型
|
|
84
|
+
- `harmonyos-app/src/utils/Logger.ts` - 日志工具
|
|
85
|
+
- `harmonyos-app/entry/src/main/ets/entryability/EntryAbility.ts` - 应用入口
|
|
86
|
+
- `harmonyos-app/README.md` - App 文档
|
|
87
|
+
|
|
88
|
+
**功能:**
|
|
89
|
+
- 连接到 lingyao.live 服务器
|
|
90
|
+
- 发送日记和记忆数据到 Gateway
|
|
91
|
+
- 接收来自 Gateway 的通知
|
|
92
|
+
- 离线消息队列和自动同步
|
|
93
|
+
|
|
94
|
+
## 核心功能
|
|
95
|
+
|
|
96
|
+
| 功能 | 描述 |
|
|
97
|
+
|------|------|
|
|
98
|
+
| **双向实时通信** | WebSocket 双向消息传递 |
|
|
99
|
+
| **服务器中转** | 双方作为客户端连接,无需公网 IP |
|
|
100
|
+
| **离线消息** | 服务器缓存,上线自动推送 |
|
|
101
|
+
| **自动重连** | 指数退避策略,最多 10 次重试 |
|
|
102
|
+
| **心跳保活** | 30 秒心跳,60 秒超时检测 |
|
|
103
|
+
| **消息类型** | 日记、记忆、通知同步 |
|
|
104
|
+
|
|
105
|
+
## 消息类型
|
|
106
|
+
|
|
107
|
+
| 类型 | 方向 | 描述 |
|
|
108
|
+
|------|------|------|
|
|
109
|
+
| `sync_diary` | App → Gateway | 同步日记数据 |
|
|
110
|
+
| `sync_memory` | App → Gateway | 同步记忆数据 |
|
|
111
|
+
| `notify_text` | Gateway → App | 文本通知 |
|
|
112
|
+
| `notify_action` | Gateway → App | 动作通知 |
|
|
113
|
+
| `heartbeat` | 双向 | 心跳保活 |
|
|
114
|
+
|
|
115
|
+
## API 端点
|
|
116
|
+
|
|
117
|
+
### Gateway 端点
|
|
118
|
+
|
|
119
|
+
| 端点 | 方法 | 功能 |
|
|
120
|
+
|------|------|------|
|
|
121
|
+
| `/v1/gateway/register` | POST | 注册 Gateway |
|
|
122
|
+
| `/v1/gateway/heartbeat` | POST | 发送心跳 |
|
|
123
|
+
| `/v1/gateway/messages` | POST | 发送消息到 App |
|
|
124
|
+
| `/v1/gateway/ws` | WS | WebSocket 连接 |
|
|
125
|
+
|
|
126
|
+
### App 端点
|
|
127
|
+
|
|
128
|
+
| 端点 | 方法 | 功能 |
|
|
129
|
+
|------|------|------|
|
|
130
|
+
| `/v1/app/register` | POST | 注册 App 设备 |
|
|
131
|
+
| `/v1/app/heartbeat` | POST | 发送心跳 |
|
|
132
|
+
| `/v1/app/sync` | POST | 上传数据到 Gateway |
|
|
133
|
+
| `/v1/app/messages` | GET | 拉取消息 |
|
|
134
|
+
| `/v1/app/ws` | WS | WebSocket 连接 |
|
|
135
|
+
|
|
136
|
+
详细 API 规范查看 [server-api-spec.yaml](server-api-spec.yaml)
|
|
137
|
+
|
|
138
|
+
## 开发
|
|
139
|
+
|
|
140
|
+
### 构建
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# 构建 OpenClaw 端
|
|
144
|
+
npm run build
|
|
145
|
+
|
|
146
|
+
# 构建服务器端
|
|
147
|
+
cd server && npm run build
|
|
148
|
+
|
|
149
|
+
# 构建鸿蒙 App
|
|
150
|
+
# 使用 DevEco Studio 打开 harmonyos-app 并构建
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 测试
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# OpenClaw 端测试
|
|
157
|
+
npm test
|
|
158
|
+
|
|
159
|
+
# 服务器端测试
|
|
160
|
+
cd server && npm test
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### 开发模式
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# OpenClaw 端开发模式
|
|
167
|
+
npm run dev
|
|
168
|
+
|
|
169
|
+
# 服务器端开发模式
|
|
170
|
+
cd server && npm run dev
|
|
171
|
+
|
|
172
|
+
# 鸿蒙 App 开发
|
|
173
|
+
# 使用 DevEco Studio 的调试功能
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## 文档
|
|
177
|
+
|
|
178
|
+
| 文档 | 描述 |
|
|
179
|
+
|------|------|
|
|
180
|
+
| [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) | 完整部署指南 |
|
|
181
|
+
| [IMPLEMENTATION_SUMMARY.md](IMPLEMENTATION_SUMMARY.md) | 实现总结 |
|
|
182
|
+
| [server/README.md](server/README.md) | 服务器文档 |
|
|
183
|
+
| [harmonyos-app/README.md](harmonyos-app/README.md) | App 文档 |
|
|
184
|
+
| [server-api-spec.yaml](server-api-spec.yaml) | OpenAPI 规范 |
|
|
185
|
+
|
|
186
|
+
## 项目结构
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
lingyao/
|
|
190
|
+
├── src/ # OpenClaw Gateway 端代码
|
|
191
|
+
│ ├── channel.ts # 主频道类
|
|
192
|
+
│ ├── websocket-client.ts # WebSocket 客户端
|
|
193
|
+
│ ├── server-client.ts # HTTP 客户端
|
|
194
|
+
│ ├── metrics.ts # 监控指标
|
|
195
|
+
│ ├── errors.ts # 错误处理
|
|
196
|
+
│ └── ...
|
|
197
|
+
├── server/ # Lingyao Live 服务器
|
|
198
|
+
│ ├── src/
|
|
199
|
+
│ │ └── server.ts # 主服务器
|
|
200
|
+
│ ├── package.json
|
|
201
|
+
│ ├── tsconfig.json
|
|
202
|
+
│ └── README.md
|
|
203
|
+
├── harmonyos-app/ # 鸿蒙 App 端
|
|
204
|
+
│ ├── src/
|
|
205
|
+
│ │ ├── websocket/ # WebSocket 客户端
|
|
206
|
+
│ │ ├── sync/ # 数据同步
|
|
207
|
+
│ │ ├── models/ # 数据模型
|
|
208
|
+
│ │ └── utils/ # 工具类
|
|
209
|
+
│ ├── entry/ # 应用入口
|
|
210
|
+
│ └── README.md
|
|
211
|
+
├── test/ # 测试文件
|
|
212
|
+
├── DEPLOYMENT_GUIDE.md # 部署指南
|
|
213
|
+
├── IMPLEMENTATION_SUMMARY.md # 实现总结
|
|
214
|
+
├── server-api-spec.yaml # API 规范
|
|
215
|
+
├── README.md # 本文件
|
|
216
|
+
└── package.json
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## 配置
|
|
220
|
+
|
|
221
|
+
### OpenClaw Gateway 配置
|
|
222
|
+
|
|
223
|
+
```json
|
|
224
|
+
{
|
|
225
|
+
"plugins": {
|
|
226
|
+
"entries": {
|
|
227
|
+
"lingyao": {
|
|
228
|
+
"enabled": true
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### 服务器配置
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# server/.env
|
|
239
|
+
PORT=3000
|
|
240
|
+
HOST=0.0.0.0
|
|
241
|
+
HEARTBEAT_INTERVAL=30000
|
|
242
|
+
HEARTBEAT_TIMEOUT=60000
|
|
243
|
+
MAX_OFFLINE_MESSAGES=100
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### 鸿蒙 App 配置
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
// EntryAbility.ts
|
|
250
|
+
const wsClient = new LingyaoWSClient({
|
|
251
|
+
url: 'wss://api.lingyao.live/v1/app/ws',
|
|
252
|
+
deviceId: deviceId,
|
|
253
|
+
appToken: appToken,
|
|
254
|
+
});
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## 监控和调试
|
|
258
|
+
|
|
259
|
+
### 查看日志
|
|
260
|
+
|
|
261
|
+
| 组件 | 命令 |
|
|
262
|
+
|------|------|
|
|
263
|
+
| **服务器** | `sudo journalctl -u lingyao-live -f` |
|
|
264
|
+
| **Gateway** | `openclaw logs` |
|
|
265
|
+
| **App** | DevEco Studio 日志窗口 |
|
|
266
|
+
|
|
267
|
+
### 健康检查
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# 服务器健康检查
|
|
271
|
+
curl https://api.lingyao.live/health
|
|
272
|
+
|
|
273
|
+
# Gateway 状态
|
|
274
|
+
openclaw channels status --channel lingyao
|
|
275
|
+
|
|
276
|
+
# App 连接状态
|
|
277
|
+
# 查看 App 界面中的连接状态显示
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## 故障排查
|
|
281
|
+
|
|
282
|
+
### 服务器端
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# 检查服务状态
|
|
286
|
+
sudo systemctl status lingyao-live
|
|
287
|
+
|
|
288
|
+
# 查看错误日志
|
|
289
|
+
sudo journalctl -u lingyao-live -n 50 --no-pager
|
|
290
|
+
|
|
291
|
+
# 重启服务
|
|
292
|
+
sudo systemctl restart lingyao-live
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Gateway 端
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# 检查插件状态
|
|
299
|
+
openclaw plugins list
|
|
300
|
+
|
|
301
|
+
# 查看日志
|
|
302
|
+
openclaw logs
|
|
303
|
+
|
|
304
|
+
# 重启 Gateway
|
|
305
|
+
openclaw gateway restart
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### App 端
|
|
309
|
+
|
|
310
|
+
- 检查设备网络连接
|
|
311
|
+
- 确认服务器 URL 正确
|
|
312
|
+
- 查看应用日志
|
|
313
|
+
|
|
314
|
+
## 贡献
|
|
315
|
+
|
|
316
|
+
欢迎提交 Issue 和 Pull Request!
|
|
317
|
+
|
|
318
|
+
## 许可证
|
|
319
|
+
|
|
320
|
+
MIT License
|
|
321
|
+
|
|
322
|
+
## 联系方式
|
|
323
|
+
|
|
324
|
+
- 项目主页: [https://github.com/your-org/lingyao](https://github.com/your-org/lingyao)
|
|
325
|
+
- 问题反馈: [https://github.com/your-org/lingyao/issues](https://github.com/your-org/lingyao/issues)
|