- Home
- Plugin
- Solo per divertimento
- dsh-pet-lan
dsh-pet-lan
hamster1214/dsh-pet-lan
LAN co-op for the dsh-pet desktop pet: see colleagues' pets on the same network, wave at them, and drag their desktop windows anywhere; an optional included patch adds live animation, bubble and meme sync. Requires dsh-pet 0.3.7.
Installazione
dsh plugin --profile web add github:hamster1214/dsh-pet-lanREADME
dsh-pet-lan · 桌宠联机
给已安装的 dsh-pet 0.3.7 加一个局域网联机层:同一 Wi-Fi / 局域网里,装了本插件的 DSH 会互相广播桌宠,远端桌宠显示在桌面透明小窗或 DSH 浏览器浮层里,可以打招呼、点击挤压、拖拽抛掷,位置自动保存。
需要
dsh-pet0.3.7(带/dsh-pet-7340路由的版本),并且桌宠已经可见。
本插件不修改 DSH 本体;可选的实时状态补丁会修改dsh-pet的运行时文件,详见下文。
点击/拖拽/抛掷只作用于插件显示的远端桌宠;本机自己的 dsh-pet 不在控制范围内。
功能
- 局域网发现:UDP 广播,同一房间名 + 端口的 DSH 互相可见,不经过任何外部服务器。
- 远端桌宠:桌面透明小窗(默认)或 DSH 窗口内浮层;可拖拽、抛掷,桌面窗口位置按 peer 保存。
- 点击挤压 + 小黄鸭音效:点击远端桌宠会上下挤压一下,并用 Web Audio 合成一声小黄鸭吱吱声(不需要额外音频文件)。
- 拖拽 / 抛掷 / 反弹:按住拖动,松手按拖动速度抛出;桌宠受重力下落,碰到屏幕边缘/地面会反弹并逐渐停下。桌面窗口和浏览器浮层都支持;桌面窗口位置会持久化,浏览器浮层位置在本次会话内保留。
- 名字标签 / 打招呼:点击名字标签上的 👋 按钮,对方桌宠会说一句短问候并播放动作;点击宠物本体只做挤压/音效,不会误发打招呼。
- 实时动作 / 气泡 / 表情包(可选):运行附带的补丁后,对方的动画、折叠气泡和表情包会同步过来;不跑补丁也能联机,只是远端宠物本地随机动作、没有实时气泡。
- 设置页「桌宠联机」:显示方式(桌面 / 浏览器 / 两者)、房间名、端口、气泡共享、是否接受打招呼、在线列表、桌面窗口状态与收发诊断。
- 浏览器回退:没有 Electron 或桌面 helper 启动失败时,自动在 DSH 窗口内显示远端桌宠。
安装
1. 先装 dsh-pet
在 DSH 插件市场安装并启用 dsh-pet 0.3.7,确认桌宠正常显示。
2. 安装本插件
在插件市场搜索 dsh-pet-lan 安装,或者:
dsh plugin --profile web add dsh-pet-lan
桌面应用把 web 换成 desktop。
3. 配置
打开 设置 → 桌宠联机:
- 房间名 / 端口:同一局域网的设备必须填相同值(默认
dsh-pet/41234,可自行修改)。 - 显示方式:桌面窗口(默认,需要 Electron)、浏览器浮层,或两者。
- 广播气泡文字:关闭后只同步动作和位置,不广播气泡文本。
- 接受打招呼:关闭后忽略别人发来的挥手。
4. 可选:实时状态补丁
实时动作 / 气泡 / 表情包同步需要给 dsh-pet 打一个小补丁(不是自动执行的):
node <插件目录>\scripts\patch-dsh-pet.mjs
补丁会修改 dsh-pet 的 4 个运行时文件:
lib/client.jsruntime/electron-helper/preload.jsruntime/electron-helper/main.jsruntime/electron-helper/sprite.js
原文件会备份为 *.dsh-pet-lan.bak。补丁是幂等的,dsh-pet 升级后需要重新运行一次。
安全提示:这是对另一个 npm 包的原地修改。运行前请确认你信任本插件,并保留备份;如果不想修改 dsh-pet,跳过这一步,联机功能仍然可用。恢复时把对应的
.dsh-pet-lan.bak改回原名即可。
安全 / 隐私
- 联机数据走局域网 UDP 明文广播,没有加密,也没有身份认证;房间名不是密码,同一局域网内知道房间名的人可以伪造桌宠或发送打招呼。
- 广播内容:桌宠名称、主机名、视口、桌宠位置;开启“广播气泡文字”时还包括气泡文本(可能包含对话内容)和表情包名。
- 只建议在可信的专用局域网使用;不要在公共 Wi-Fi 上开启。
- 不接受来自非回环地址的 HTTP 控制请求;UDP 侧有 peer 数量、每 IP 包速率和全局限流。
- 不访问外部网络、不上传遥测;所有状态文件都在
$DSH_HOME下。 - 可选的 dsh-pet 补丁会修改另一个包的运行时文件;这是本插件唯一的“包外写入”,已在上面单独说明。
更完整的威胁模型见 SECURITY.md。
显示方式
- 桌面窗口:每个远端桌宠一个透明、置顶、可拖拽的小窗;鼠标不在桌宠上时点击穿透。需要 Electron(
dsh-pet桌面模式安装时通常已下载到$DSH_HOME/electron)。 - 浏览器浮层:远端桌宠显示在 DSH 窗口内,适合没有 Electron 的环境。
- 两者:同时显示。
Electron 缺失或桌面 helper 启动失败时自动退回浏览器浮层;设置页会显示错误原因。
Windows 防火墙
首次运行可能弹出防火墙提示:允许专用网络的 UDP 入站(默认端口 41234)。如果点了取消,用管理员 PowerShell 补一条:
New-NetFirewallRule -DisplayName "dsh-pet-lan" -Direction Inbound -Protocol UDP -LocalPort 41234 -Action Allow -Profile Private
协议
- UDP 广播,默认端口
41234,约每 1500 ms 一次 presence,6.5 秒无消息即下线。 - 房间名过滤;presence 里带桌宠列表、主机名、视口和可选实时状态。
- 挥手是单播
wave消息;收到后在本地调用 dsh-pet 的/broadcast和/anim。 - 协议版本
v: 1;实现见lib/index.js。
卸载 / 回退
- 在插件市场或 profile 里移除
dsh-pet-lan。 - 如果运行过实时状态补丁,把
dsh-pet下的*.dsh-pet-lan.bak恢复为原文件名。 - 配置文件在
$DSH_HOME/dsh-pet-lan.json,可删除。
兼容性
- DSH
0.2.1-rc.2(已测试) dsh-pet0.3.7- Node.js 22+
License
MIT
Plugin correlati
dsh-web-ui (dsh-pet)
zhu1090093659/dsh-web-ui
dsh-pet (dsh-pet)
pc2005-cloud/dsh-pet
dsh-ads
nagi-ovo/dsh-ads
dsh-ads
dsh-external/dsh-ads