Files
DSHWatch_Server/README.md
T

71 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DSHWatch_Server
DSHWatch 中继服务器(Node.js)。它作为一个受控的 Broker:
- **DSH 插件**(dsh-watch,运行在 DeepSeek Harness 里)主动 **外连** 到本服务器并注册 userId。
- **手机客户端**(原生 Android APP,DSHWatchPhone)连接本服务器,用同一个 userId/token 获得对该 Harness 的控制权。
- 手环/手表(DSHWatch)只能走蓝牙,所以由手机 APP 作为网关:手机把从服务器来的状态/事件通过 system.interconnect 发给手表,也把手表上的指令/输入转发回服务器。
服务器本身不保存任何会话内容,只做**鉴权 + 转发 + 在线状态广播**。
## 启动
cd DSHWatch_Server
cp config.example.json config.json # 然后修改 token
npm install
npm start
默认监听 0.0.0.0:8787,健康检查:GET /health。
## WebSocket 协议
所有消息都是 JSON 文本帧。
### 握手(Hello)
DSH 插件(Harness 侧):
{ "type": "hello", "role": "dsh", "userId": "someone", "token": "..." }
客户端(手机 APP / 手表网关):
{ "type": "hello", "role": "client", "userId": "someone", "token": "..." }
服务器回:
{ "type": "hello", "role": "client", "online": true, "harness": true, "status": { ... } }
### 客户端 -> 服务器 -> Harness
客户端发送请求:
{ "type": "request", "requestId": "abc", "method": "session.prompt", "params": { ... } }
服务器转发给 Harness(requestId 保持不变),Harness 回:
{ "type": "response", "requestId": "abc", "ok": true, "result": { ... } }
服务器按客户端原始 requestId 回给客户端。
### Harness -> 服务器 -> 客户端
Harness 推送状态快照 / 会话事件:
{ "type": "status", "status": { ... } }
{ "type": "event", "event": { "type": "session/event", "sessionId": "...", "event": { ... } } }
服务器广播给该 userId 下的所有客户端。
### 心跳
任意一端都可发 { "type": "ping" },服务器回 { "type": "pong" }。
## 部署
公网部署(腾讯云等)时:
- 把 host 设为 0.0.0.0;
- 用防火墙/安全组放行 8787;
- 强烈建议在 Nginx/Caddy 后面挂 TLS(wss://),token 不要走明文;
- 不要把 token 写进 git;用环境变量 DSHWATCH_TOKEN 或本地 config.json(加进 .gitignore)。