dsh-lan-chat:DSH 桌面上的局域网即时通讯插件

前言

在 DeepSeek Harness(DSH)里做智能体或本地开发时,团队往往处在隔离内网:不能依赖公网 IM、也不希望把对话和文件经第三方中转。常见做法是另开一套聊天工具或共享盘,与 DSH 工作区割裂。dsh-lan-chat 是社区维护的 DSH 客户端类插件,在 DSH Desktop 左侧增加「局域网聊天助手」入口,在同一局域网内提供单聊、群聊和文件传输,协议与存储都在本机与对端直连,不连外部服务。

下面介绍它是什么、能做什么、如何安装与日常使用,以及适用边界与安全注意。事实以 GitHub 仓库 README 为准;社区目录页见 skillhub.cn/plugins/jasonchan2026/dsh-lan-chat。DSH 生态是「一切皆插件」,该目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-lan-chat(包名 dsh-lan-chat,当前版本 2.2.2,MIT 许可证)由 jasonchan2026 维护。定位是:完全离线的内网即时通讯 DSH 插件——无云端账号、无中转服务器、无 CDN;流量仅在自有局域网内。实现上声明 零运行时依赖(Node 内置模块 + 手写 WebSocket),在能拷贝安装包的离线机器上也可部署。

每台安装插件的机器是一个节点:在宿主进程内独立监听 0.0.0.0:<port> 的 HTTP + WebSocket(不复用 DSH 仅监听回环的 web server,以便局域网对端可达)。浏览器界面经 DSH 同源 web 访问插件路由;节点之间经插件端口直连。

核心功能

README 中核实的能力如下。

能力 说明
单聊 一对一聊天,未读数、已读位置、在线状态
群聊 自建群、拉人、改名、退群、删除;群资料同步;群主删群为解散并通知成员
文件传输 拖拽或点选发送,单文件上限可在设置中配置(默认 512MB,范围 64MB~64GB);接收方按需下载
网段扫描 填写如 192.168.1.0/24 并发探测,进度实时显示;扫描地址上限 1024(避免过宽 CIDR)
自动发现 约每 30 秒 UDP 广播,同网段可互相看到
手动探测 已知对方 IP 时可探测单个地址
访问码 可选;设置后仅持有相同访问码者在握手后可通信
联系人备注 本地显示名,仅本机
离线消息 对端离线时消息仍落本地,联网后可手动重发

界面为左侧会话列表 + 右侧聊天区,三个页签:会话(单聊/群聊预览与未读)、联系人(在线状态与 IP)、发现(扫描 / 手动探测 / 添加)。

安装与启用

环境要求(README 原文):

  • DSH Desktop 0.2.1-rc.3 或更高
  • Node.js 22+(DSH 自带,通常无需单独安装)

从 1.x 升级到 2.x:README 标明 2.0.0 为破坏性安全版本,协议不兼容,局域网内所有机器须一起升级,否则无法互通。细节见仓库 CHANGELOG.md。

方式一:从 GitHub 安装(推荐)

在 DSH Desktop 插件市场搜索 dsh-lan-chat,或执行:

dsh plugin --profile desktop add github:jasonchan2026/dsh-lan-chat

安装完成后重启 DSH Desktop,左侧会出现「局域网聊天助手」。dsh plugin add 会写入 profile 的 dependencies,并把包名追加到 dsh.profile.bundles(本包声明了 dsh.bundle)。

方式二:本地目录

已在本地有源码目录时:

dsh plugin --profile desktop add link:$PWD

Loader 条目由包内 cordis.patch.yml 经 bundle 机制叠加;README 提醒勿在 profile 自己的 cordis.patch.yml 重复插入同一 id: lan-chat,否则会注册两次。

可选配置(cordis.patch.yml)

可在插件条目中设置:

- insert:
    - id: lan-chat
      name: dsh-lan-chat
      config:
        port: 45871
        nickname: 我的电脑
        dataDir: /path/to/data
参数 默认值 说明
port 45871 TCP 监听端口;UDP 发现端口为 port + 1
nickname 主机名 首次启动写入,之后以界面设置为准
dataDir $DSH_HOME/plugin-data/dsh-lan-chat 消息、文件、身份与设置目录

昵称、访问码、单文件上限、联系人备注等可在界面「设置」中修改。文件总量配额默认 2 GiB,经 /lan-chat/settings 的 maxTotalBytes 调整,README 注明暂未做进界面。

典型用法

  1. 同网段自动见面:双方均安装并启用插件,界面显示「在线 · 端口 xxxxx」;在「发现」或「联系人」中确认彼此在线后发起单聊或建群。
  2. 按网段加同事:在「发现」填入 CIDR(如 192.168.1.0/24)扫描,或手动填 IP 探测后添加。
  3. 传文件:在会话中拖拽或选择文件发送;注意发送框右下角会随设置显示单文件上限。
  4. 可选访问码:在设置中配置访问码后,新对端须在握手时提供相同码才能拿到 token 通信。
  5. 跨网段:不能依赖自动发现;若路由可达,可在「发现」页手动填对方 IP 探测并添加。

数据默认落在:

$DSH_HOME/plugin-data/dsh-lan-chat/
├── identity.json
├── state.json
├── messages/    # 各会话 JSONL
└── files/

适用场景与注意

适合:同一局域网或路由可达的内网协作;隔离环境、不希望 IM 与文件经公网;希望在 DSH 工作流旁完成轻量沟通与传文件。

连通性(README 常见问题):需同一网段或可达路由;防火墙须放行监听端口;公司 WiFi 若开启 AP/客户端隔离,同 SSID 设备可能互不可见,插件无法绕过。端口被占用时界面会提示占用者 PID;对符合条件的 DSH 残留宿主可提供「强制释放」,否则需改 port 或关闭占用程序。

安全与权限:

  • 插件以当前 DSH 进程权限运行;安装前应自行审阅 源码与 LICENSE,确认符合内网策略。
  • README 安全说明:局域网端口上除 /info、/hello 外接口需 token;消息不加密,同网段可抓包,不宜传输敏感凭据。默认监听 0.0.0.0 但入站按 RFC1918 等过滤;仅本机使用时 README 提到可设 bind: 'local' 只绑 127.0.0.1。
  • 2026-10-25 渗透测试相关修复与行为描述见 README「安全说明」及仓库 docs/(报告不入库)。

仓库提供离线自测脚本(如 node scripts/selftest.mjs 等),默认 npm test 串联多项测试;完整列表见 README「自测」一节。

结尾

dsh-lan-chat 把单聊、群聊、文件传输和网段发现收进 DSH Desktop 侧边栏,依赖局域网直连与本地持久化,适合内网团队在不接外部 IM 的前提下并排使用 Harness。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜