🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

局域网邻居 a5899/dsh-lan-peers

DeepSeek Harness
a589912 天前有提交已提供中文文档扫描:含敏感能力

让同一内网的 DSH 互相提问和传递消息

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add a5899/dsh-lan-peers
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 12 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 20 处,展示前 17 条)
  • 读取本地文件
    lib/index.js:66
    const pkg = JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8"));
  • 读取本地文件
    lib/index.js:319
    const parsed = JSON.parse(await readFile(file, "utf8"));
  • 写入本地文件
    lib/index.js:327
    await mkdir(stateDir(), { recursive: true });
  • 写入本地文件
    lib/index.js:328
    await writeFile(file, JSON.stringify(record, null, 2), "utf8");
  • 读取本地文件
    lib/index.js:352
    const text = await readFile(transcriptFile(), "utf8");
  • 写入本地文件
    lib/index.js:374
    await mkdir(stateDir(), { recursive: true });
  • 写入本地文件
    lib/index.js:375
    await appendFile(file, JSON.stringify(record) + "\n", "utf8");
  • 读取本地文件
    lib/index.js:383
    const parsed = JSON.parse(await readFile(trustFile(), "utf8"));
  • 写入本地文件
    lib/index.js:398
    await mkdir(stateDir(), { recursive: true });
  • 写入本地文件
    lib/index.js:400
    await writeFile(tmp, JSON.stringify(trust, null, 2), "utf8");
  • 发起网络请求
    lib/index.js:1423
    return await fetch(url, { ...(init || {}), signal: controller.signal });
  • 发起网络请求
    lib/client.js:179
    const res = await fetch(API + path, {
  • 读取本地文件
    lib/patches.js:122
    if (!existsSync(file)) return { outcome: "missing", written: false, changed: false, reason: `patch file not found: ${file}` };
  • 读取本地文件
    lib/patches.js:123
    const before = await readFile(file, "utf8");
  • 写入本地文件
    lib/patches.js:138
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    lib/patches.js:139
    await writeFile(tmp, after, "utf8");
  • 写入本地文件
    lib/patches.js:140
    await rename(tmp, file);
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 插件:在同一子网内发现局域网对等节点,并在各 DSH 安装之间跨设备 ask/tell。默认关闭,只有你主动要求时才动作。在「设置 > 插件」下新增设置页。

README

由 DeepSeek 最新模型翻译生成
dsh-lan-peers — LAN 邻居 让同一内网里装了本插件的 DSH 互相提问、互相告知。默认关闭,平时完全不动作——只有你明确让模型「问其他 DSH」或「告诉其他 DSH」时才会用。 一句话行为 | 场合 | 行为 | | 你没提到别的 DSH | 插件不监听、不发包、模型不调用工具(工具描述里写明了这条约束) | | 你说「问一下另一台 DSH 现在几点了」 | 模型先 lan_peer_discover 扫设备 → 只有一台就直接问;多台就把清单交给你选 | | 你说「把这段配置告诉书房的 DSH」 | 模型 lan_peer_tell 推过去 | | 功能没开 | 工具会回答「功能当前关闭,去 设置 → 插件 → LAN 邻居 打开」 | 安装位置(本机已装) C:\Users\a5093\.dsh\profiles\desktop\node_modules\dsh-lan-peers\ profile/cordis.patch.yml 末尾有 id: lan-peers 条目(enabled: false 起步)。 装完要重启 DSH 才会加载(DSH 的插件代码只在进程启动时 import)。
展开完整文档(README 剩余 1 节)
dsh-lan-peers — LAN 邻居

让同一内网里装了本插件的 DSH 互相提问、互相告知。默认关闭,平时完全不动作——只有你明确让模型「问其他 DSH」或「告诉其他 DSH」时才会用。

一句话行为

| 场合 | 行为 |
| 你没提到别的 DSH | 插件不监听、不发包、模型不调用工具(工具描述里写明了这条约束) |
| 你说「问一下另一台 DSH 现在几点了」 | 模型先 lan_peer_discover 扫设备 → 只有一台就直接问;多台就把清单交给你选 |
| 你说「把这段配置告诉书房的 DSH」 | 模型 lan_peer_tell 推过去 |
| 功能没开 | 工具会回答「功能当前关闭,去 设置 → 插件 → LAN 邻居 打开」 |

安装位置(本机已装)

C:\Users\a5093\.dsh\profiles\desktop\node_modules\dsh-lan-peers\

profile/cordis.patch.yml 末尾有 id: lan-peers 条目(enabled: false 起步)。
装完要重启 DSH 才会加载(DSH 的插件代码只在进程启动时 import)。

设置页

DSH 设置 → 插件 → 「LAN 邻居」:

- 启用内网互询(总开关)
- 本机显示名、口令(两端一致才能互相发现)、允许同网段免口令
- 监听端口 / 发现端口 / 多播地址
- 手动设备地址(192.168.0.42:45715,多播被交换机拦时兜底)
- 扫描内网设备、每台设备的 信任 / 取消信任 / 阻止、发测试问题
- 状态(运行中、本机 LAN 地址、标识)、信任 / 阻止列表、最近收发

设置保存在 profile 的 cordis.patch.yml 的 lan-peers 条目里,重启后保留。

工具

| 工具 | 用途 |
| lan_peer_discover | 扫描内网设备(名称 / 地址 / 信任状态)。多台时会提示模型问你 |
| lan_peer_ask | 向某一台提问并取回回答 |
| lan_peer_tell | 把一条信息推给某一台 |
| lan_peer_state | 本机标识、地址、已知设备、信任列表、最近收发 |

网络与安全

- 发现:UDP 多播 239.255.77.77:45714(TTL=1,不跨路由器)+ 全局广播兜底 + 手动地址兜底。
- 对话:TCP 45715(可改)。对方通过 HTTP 调 /peer/ask、/peer/tell。
- 只限同一内网:
1. 多播 TTL=1,天然不跨子网;
2. 无口令模式下,信任判断读的是本次请求的 TCP 源地址(不是对方自称的地址),并要求与本机 LAN 地址 sameSubnet;本机回环地址视为可信(设置页 / 本机测试用)。
3. 不同口令的设备互相看不见(设备上报口令的 SHA-256 前 24 位,口令本身不出本机)。
- 信任的三个根(任一满足即可,阻止列表永远优先):
1. 设置页显式「信任」(approved,落盘持久);
2. 口令一致——持有同一口令本身就是组成员证明,无需再手工批准;
3. 无口令 + 允许同网段(allowSameSubnet),且只认本次请求的源地址。
口令不一致或未获信任的请求一律 403,并进待审列表。
- 不替你花 token、不翻你文件:对方收到 ask 后由确定性事实接口回答(名称 / 地址 / 版本),不跑模型、不读文件、不读会话。需要推理的问题应由发起方在本机想清楚,再用 tell 发出。

首次运行要放行的端口

Windows 防火墙首次会弹框;放行:
- 45714/UDP 入站(发现)
- 45715/TCP 入站(对话)

命令(管理员 PowerShell):

New-NetFirewallRule -DisplayName "DSH LAN peers (discovery)" -Direction Inbound -Protocol UDP -LocalPort 45714 -Action Allow
New-NetFirewallRule -DisplayName "DSH LAN peers (peer)" -Direction Inbound -Protocol TCP -LocalPort 45715 -Action Allow

测试

cd C:\Users\a5093\Documents\deepseek-harness\default-workspace\lan-peers
node test/selftest.mjs # 信任门(三个根)/ 口令 / 询问-告知往返(两个实例)
node test/live.mjs # 真 UDP 多播发现 + 口令隔断
node test/tools.mjs # 四个工具 + 设置路由(跨站拒绝、阻止、禁用态提示)
node test/e2e-process.mjs # 跨进程端到端:另起一个进程当对端,真的问/真的告知
node test/client-contract.mjs # 客户端契约(__ModuleLoader__ / plugins.item / 标签函数)
node test/client-render.mjs # 设置页在假 React 下渲染

全部 6 组通过(npm test 可一次跑完)。

回滚

1. 撤销快照 20261023-210515-6c64(会把 cordis.patch.yml / package.json 一起还原);或
2. 手动:删掉 cordis.patch.yml 末尾 id: lan-peers 那一段 + profile/package.json 里 dsh-lan-peers 的依赖与 bundles 条目 + node_modules/dsh-lan-peers 目录,重启 DSH。

本插件没有写 dsh.profile.bundles 之外的任何全局东西;身份与信任文件在 ~/.dsh/plugins/dsh-lan-peers/,删掉即彻底重置。
预览分享卡片长什么样 ↓a5899/dsh-lan-peers
分享 · DeepSeek Harness Hub
a5899/dsh-lan-peers

让同一内网的 DSH 互相提问和传递消息

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部