为 DeepSeek Harness WebUI 提供移动端网关和安全本地网络访问
37.4/100
综合分
8
GitHub 星标
1,373
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @goodandready/dsh-lanmodenpm 源 · @goodandready/dsh-lanmode 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@goodandready/dsh-lanmode @ 0.8.53
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 00:48:31
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 47 处,展示前 36 条)
- 读取本地文件lib/index.js:55
const names = readdirSync(dir).filter((name) => name.endsWith('.js')).sort() - 读取本地文件lib/index.js:56
const source = names.map((name) => readFileSync(path.join(dir, name), 'utf8')).join('\n') - 读取本地文件lib/index.js:60
return readFileSync(path.join(here, 'shim.js'), 'utf8') - 读取本地文件lib/index.js:65
return JSON.parse(readFileSync(path.join(here, '..', 'package.json'), 'utf8')).version - 读取本地文件lib/index.js:446
if (cfg.tls === 'files' && cfg.tlsCert && existsSync(cfg.tlsCert)) { - 读取本地文件lib/index.js:448
const stat = statSync(cfg.tlsCert) - 发起网络请求lib/upnp.js:30
const req = http.request(u, { - 发起网络请求lib/upnp.js:107
http.get(new URL(loc), { timeout: 2000 }, (r) => { - 发起网络请求lib/assumptions.js:23
return fetch('http://127.0.0.1:' + port + '/' + (currentToken ? '?token=' + currentToken : '')) - 发起网络请求lib/bridge.js:368
const upstream = http.request({ - 执行外部命令来自配置/变量lib/firewall.js:13
execFile(cmd, args, { timeout: 5000 }, (error, stdout, stderr) => { - 执行外部命令来自配置/变量lib/tls.js:111
execFile(command, args, { timeout: 30000 }, (error, stdout, stderr) => { - 读取本地文件lib/plugin-updater.js:18
if (!existsSync(lockPath)) return { locked: false } - 读取本地文件lib/plugin-updater.js:20
const raw = readFileSync(lockPath, 'utf8').trim() - 读取本地文件lib/plugin-updater.js:83
if (!existsSync(entry)) return undefined - 读取本地文件lib/plugin-updater.js:86
if (existsSync(manifestPath)) { - 读取本地文件lib/plugin-updater.js:88
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) - 发起网络请求lib/plugin-updater.js:180
const response = await fetch( - 读取本地文件lib/plugin-updater.js:200
const value = JSON.parse(await readFile(manifestUrl, 'utf8')) - 执行外部命令来自配置/变量lib/plugin-updater.js:229
const child = spawn( - 发起网络请求lib/push.js:109
const res = await fetch(sub.endpoint, { method: 'POST', headers, body, signal: AbortSignal.timeout(opts.timeout || 8000) }) - 发起网络请求lib/bridge-ws.js:147
const upstream = http.request({ - 发起网络请求lib/client-parts/01-remote-helpers.js:197
fetch('/dsh-lanmode/api/tailscale/funnel/status', { cache: 'no-store' }) - 发起网络请求lib/client-parts/01-remote-helpers.js:216
fetch('/dsh-lanmode/api/tailscale/funnel/toggle', { - 写入剪贴板lib/client-parts/01-remote-helpers.js:236
navigator.clipboard.writeText(funnel.url).then(function () { - 写入剪贴板lib/client-parts/04-card.js:23
navigator.clipboard.writeText(url).then(function () { - 发起网络请求lib/client-parts/04-card.js:73
return fetch('/dsh-lanmode/api/push/unsubscribe', { - 发起网络请求lib/client-parts/04-card.js:84
return fetch('/dsh-lanmode/api/push/vapid-public-key') - 发起网络请求lib/client-parts/04-card.js:93
return fetch('/dsh-lanmode/api/push/subscribe', { - 发起网络请求lib/client-parts/04-card.js:107
fetch('/dsh-lanmode/api/push/test', { method: 'POST', headers: { 'content-type': 'application/json' } }) - 发起网络请求lib/client-parts/04-card.js:124
fetch('/dsh-lanmode/devices', { cache: 'no-store' }) - 发起网络请求lib/client-parts/04-card.js:151
fetch('/dsh-lanmode/devices/revoke', { - 发起网络请求lib/client-parts/08-qr.js:34
fetch('/dsh-lanmode/health?format=json', { cache: 'no-store' }) - 发起网络请求lib/client-parts/08-qr.js:77
fetch('/dsh-lanmode/api/interfaces', { cache: 'no-store' }) - 写入剪贴板lib/client-parts/08-qr.js:139
navigator.clipboard.writeText(targetUrl).then(function () { - 写入剪贴板lib/client-parts/08-qr.js:389
navigator.clipboard.writeText(item.cmd).then(done).catch(function () {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-host-webserver给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 移动端网关
- 安全本地网络访问
最近更新
在 GitHub 查看全部 →v0.8.532026-10-29
· 发布 0.8.53
· 安全(#479):在局域网 PIN 下保护插件的变更端点和敏感读取,防止核心认证 cookie 泄露给未认证的局域网客户端。
· 解决 #479
v0.8.522026-10-23
· 为什么发版
1. #353:网络里出现新地址或新主机时自动重签服务器 TLS 证书,避免 SSL NET::ERR_CERT_COMMON_NAME_INVALID 报错。
2. #480:代码库卫生——稳定 VAPID 测试、清理服务端 console.*、删除死导出、梳理并标注空 catch 块。
· 做了什么
· TLS(#353):在 lib/tls.js:ensureCertificate 里恢复 stillGood(info, hosts, now) 调用。主机换网络地址或接入新网络/Tailscale 时,重签证书并纳入新 SAN,根 Root CA(100 年)保持不变。
· VAPID(#480):在 lib/push.js:generateVapidKeys 里给 P-256 私钥标量补零,严格对齐到 32 字节,消除并行跑测试时的抖动。
· 服务端输出(#480):lib/devices.js 和 lib/bans.js 里的 console.error 调用改为 fallback process.stderr.write。
· 死代码(#480):删除未使用的导出 canonicalDeviceId、mintCoreAuthCookie、isPidAlive。
· Preflight(#480):标注全部 29 个空 catch 块,preflight.sh 跑过 FAIL=0。
· 包体积:523,448 字节(上限 512 KiB)。
· 兼容性与迁移
完全向后兼容,无需迁移。
已验证与 DeepSeek Harness v0.2.1-rc.2 兼容。
· 链接
· Issues:#353、#480
· PR:#481
· Gitea commit:ed7c71a
· GitHub mirror commit:4f97b73
v0.8.512026-10-20
· 为什么发布
修复 Cloudflare 命名隧道敏感 token 在进程表(ps aux、/proc//cmdline)和错误信息中泄露的漏洞(#477)。
· 做了什么
· 安全传递 token:在 lib/tunnel.js 中,把 --token 参数从启动 cloudflared tunnel run 的命令行里移除。token 改由环境变量 TUNNEL_TOKEN 传递,cloudflared 原生支持这种方式。
· 清理日志和错误:新增 sanitizeToken() 函数,确保 this.lastError、进程错误事件和隧道状态里的 token 都被掩码为 [REDACTED]。
· 测试与质量:新增单元测试套件 test/issue-477-tunnel-token-security.test.mjs,调整隧道审计测试。526 个测试全部通过。
· 包体积:523,651 字节(在 512 KiB 限制内)。
· 兼容性与迁移
与所有版本的 cloudflared 完全向后兼容,无需迁移配置。
已验证与 DeepSeek Harness v0.2.1-rc.2 兼容。
· 链接
· Issue:#477
· PR:#478
· Gitea commit:bcb9a9e
· GitHub mirror commit:edff2bd
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成📦 @goodandready/dsh-lanmode
局域网访问 (LAN)、mDNS (dsh.local)、PWA、Root CA、快速二维码、后台推送与自动 TLS 支持 (DeepSeek Harness)
🇬🇧 English •
🇷🇺 Русский •
🇨🇳 中文说明
⚡ 功能概览
dsh-lanmode 为 DeepSeek Harness 提供完整的局域网与外网安全访问支持:
1. 📱 Quick QR 快速二维码:侧边栏底部 (Quick QR 位于 sidebar.footer / sidebar.rail) 提供纯 SVG 二维码弹窗,支持移动端扫码即连。终端支持 /mobileqr 工具与 ASCII 二维码输出。
2. 📲 PWA 与独立应用模式:提供 manifest.json,iOS/Android 全屏独立模式与刘海屏安全边距 (viewport-fit=cover)。
3. 🌐 自动 mDNS (dsh.local):内置 UDP 5353 responder,自动在局域网广播 dsh.local。
4. 🔐 本地 Root CA 与 HTTPS:生成 10 年有效期的本地根证书及带 SAN 的服务器证书。访问 /dsh-lanmode/ca.crt 即可一键下载信任。
展开完整文档(README 剩余 1 节)
📦 @goodandready/dsh-lanmode 局域网访问 (LAN)、mDNS (dsh.local)、PWA、Root CA、快速二维码、后台推送与自动 TLS 支持 (DeepSeek Harness) 🇬🇧 English • 🇷🇺 Русский • 🇨🇳 中文说明 ⚡ 功能概览 dsh-lanmode 为 DeepSeek Harness 提供完整的局域网与外网安全访问支持: 1. 📱 Quick QR 快速二维码:侧边栏底部 (Quick QR 位于 sidebar.footer / sidebar.rail) 提供纯 SVG 二维码弹窗,支持移动端扫码即连。终端支持 /mobileqr 工具与 ASCII 二维码输出。 2. 📲 PWA 与独立应用模式:提供 manifest.json,iOS/Android 全屏独立模式与刘海屏安全边距 (viewport-fit=cover)。 3. 🌐 自动 mDNS (dsh.local):内置 UDP 5353 responder,自动在局域网广播 dsh.local。 4. 🔐 本地 Root CA 与 HTTPS:生成 10 年有效期的本地根证书及带 SAN 的服务器证书。访问 /dsh-lanmode/ca.crt 即可一键下载信任。 5. 🔔 后台通知 (Web Notifications API):在后台标签页接收回合结束与审批请求系统推送。 6. 🛡️ 安全与认证体系: - 登录密码支持纯文本与 scrypt 密钥派生,使用 timingSafeEqual 进行恒定时间比较防时序攻击。 - LAN PIN 验证:支持纯文本与 PBKDF2 强哈希(pbkdf2$sha512$100000$salt$hash)。5 次失败自动锁定 15 分钟。 - 设备与会话 Token 均采用 SHA-256 哈希加盐存储。 - 子网角色分离(adminAllow 与 guestAllow),访客子网禁止改写系统设置。 7. ☁️ Cloudflare 隧道与 Tailscale Funnel: - 支持临时 Quick Tunnel (trycloudflare.com) 与固定 Named Tunnel 模式(Token 通过 TUNNEL_TOKEN 环境变量传递,不暴露在进程列表)。 - 配置项 tunnelPin 强制外网访问通过 LAN PIN 鉴权。 - 支持一键开启 Tailscale Funnel,自带权威 Let's Encrypt 证书。 8. 📱 设备与会话管理:自动识别连接设备型号与操作系统,支持一键撤销单个或全部其它会话。 📦 安装方法 dsh plugin --profile web add @goodandready/dsh-lanmode ⚙️ 配置说明 (cordis.patch.yml) - id: dsh-lanmode config: mode: direct directPort: 3080 tunnel: off # off, quick 或 named tunnelPin: true tailscaleFunnel: false passwordAuth: false 📄 开源许可证 MIT © GooDAnDReaDY
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
GooDAnDReaDY/dsh-lanmode
为 DeepSeek Harness WebUI 提供移动端网关和安全本地网络访问
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,344已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,045已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,202已汉化DSH
71.1
这是你的仓库?认领条目