DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Lan Tool — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-lan-tool

Lan Tool

为 DeepSeek Harness Web GUI 提供局域网访问:一个受密码保护的局域网通道,开关位于“设置”中(无需安装脚本,安装时不会提示输入密码)。通过其自身的 cordis.patch.yml,像其他配置文件包一样安装。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-lan-tool@1.4.7
README兼容性版本

兼容性与来源证明

Lan Tool 以 dsh-lan-tool 发布,当前版本为 1.4.7。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/10/15

版本

1.4.7stable
2026/10/15
1.4.6stable
2026/10/14
1.4.4stable
2026/10/13
查看其余 3 个版本收起版本
1.4.2stable
2026/10/12
1.4.1stable
2026/10/12
1.4.0stable
2026/10/12

相关插件

正在加载相关插件…

最新版
1.4.7
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
206.7 kB
文件数
7
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 10
周下载
0
最近提交
2026/10/15
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 security-access 分类下经过校验的插件。

Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件Doctor@linxin666/dsh-doctorDSH 配置档案的事务性救援模式,配备受监督的启动器、隔离的恢复容器、确定性修复、健康监控以及本地 Web 恢复控制台Mobiledsh-mobileDeepSeek Harness 移动端适配与安全访问插件,支持局域网、远程连接、Android App 和手机浏览器。Codex Subscriptiondsh-codex-subscription通过 OAuth 在 DeepSeek Harness 中使用 ChatGPT 和 Codex 订阅,支持配额管理、安全重置、网页搜索、图像和快速模式

README

dsh-lan-tool

deepseek-harness Web GUI 的局域网访问插件(带口令的全功能版;移动端优化官方界面 UI,适配竖屏及触控手势)。

⚠️ 版本要求:@deepseek-ai/dsh 0.2.0-rc.2 及以上(桌面版 0.2.0-rc.2 实测通过)。0.1.x 的旧 API(dsh-host-apiproxy、点分式端点、settingsScope 客户端服务)已不再兼容,请先升级 DSH。

🚀 配合 DSH-Launcher 与 dsh-app 使用,体验感更好。

📦 本包是标准 DSH 插件 bundle(声明 dsh.bundle.patch),用官方插件机制安装,没有安装脚本;功能开关在设置页里,安装过程不询问口令。

安装后,在设置页打开「局域网访问」开关即可让局域网设备访问(Windows 自动放行防火墙 Domain + Private;Linux 依次尝试 firewalld / ufw / iptables,无可用防火墙工具时视为无需放行):

  • ✅ 装完默认关闭:不写任何 webserver 覆盖,GUI 保持官方默认(只听 127.0.0.1,gzip 完整保留)
  • ✅ 开关即时生效:开关通过向当前 profile 的 cordis.patch.yml 写入/移除受管覆盖来改绑定,DSH 热加载后立即重新监听,无需重启
  • ✅ 局域网设备先输口令才能看页面:局域网上的设备(桌面或手机/平板)打开 http://<本机IP>:<端口> 都先显示口令页,输入口令后进入;地址栏始终不出现 token(插件在后台完成官方 token→cookie 兑换)
  • ✅ 本机永远不需要口令:主机自己打开 GUI(桌面版、浏览器,无论用 127.0.0.1、localhost、[::1]、机器名还是本机局域网地址)直接进入,不显示口令页。判定依据是 TCP 连接来源(回环或本机自己的地址),与页面用的域名无关——所以桌面端不会被自己的口令门挡住(1.4.1 修的就是这个问题)。
  • ✅ 记住口令(本机):口令页勾选「记住口令」后保存在该设备浏览器 localStorage,下次打开免输;不勾选则只保存在当前标签页(sessionStorage),关闭即失效
  • ✅ 设置页(General)「局域网访问」卡片:开关 + 口令设置/清除 + 绑定/防火墙/口令状态显示
  • ✅ 未设口令时不会静默暴露:开关会先要求设置口令,且若处于「已开但无口令」状态,卡片会明确提示(局域网设备无法进入)
  • ✅ 所有浏览器看到完全相同的对话过程:单一服务进程,会话状态全部在服务端,事件流(WebSocket)向每个连接的浏览器推送相同更新

局域网口令设置

手机端展示

⚠️ 安全说明

  • 口令门是服务端强制的:来自其他设备的请求(即 TCP 来源不是主机自己——回环地址或本机任一网卡地址)必须携带口令(x-dsh-lan-key 请求头或会话 cookie),否则一律拒绝;特权方法(设置/权限/凭据等)同样只认这道门。主机自己的请求一律放行(任何域名/地址),这是刻意设计:桌面端必须始终可用。
  • 口令门就是本插件的全部安全边界。没有口令 ⇒ 局域网完全不可用(不会退化成"无口令也能用")。持有口令的人可以读写该 DSH 的全部数据,请只在可信网络启用,并设置足够复杂的口令。
  • 仅限可信网络(家庭/办公室内网)使用。公共网络请关闭开关。

局域网能力范围(重要)

DSH 官方对非本机浏览器刻意不提供设置作用域(dsh-client-ui-settings 的 persistence 在页面加载时按 isLoopback 固定,且 dsh-client-locale / dsh-client-ui-chat 的文档都写明这是有意为之)。因此局域网设备上:

能力局域网设备
聊天、切换模型与工作模式、工作区与会话、历史、任务、审批、终端✅ 可用
设置 / 权限预设 / 凭据 / 预设管理页面❌ 只在主机上可用(请在主机上修改)
工作区目录选择✅ 插件自带的目录选择器(含盘符下拉、路径跳转)

移动端(竖屏手机/平板)

  • 移动端复用官方桌面界面:手机竖屏打开 http://<本机IP>:<端口> 时,插件在官方界面之上注入触控适配(紧凑侧栏、≥44px 触控目标、16px 输入字号防 iOS 聚焦缩放、安全区 padding),横屏/桌面视口自动还原。
  • 所有可用能力与桌面端相同(见上表):会话/工作区/历史对话/实时聊天/模型与模式切换/任务清单/审批提问/权限切换等,全部与主机实时同步。

移动端交互细节

  • 侧边栏:折叠时隐藏,左上角可拖拽小鲸鱼按钮是展开入口(拖拽位置会记住);点击会话行、点击页面其他区域、或左滑均可收起;对话界面右滑可直接展开侧边栏。
  • 输入法:只有点击输入框才会弹出输入法 —— 点小鲸鱼、点会话列表、开关侧边栏、关闭弹窗都不会再误弹(正在打字时也不会被抢走);Enter 只换行、不发送(发送走发送按钮;输入法选词时的 Enter 仍用于上屏)。
  • 界面细节:隐藏官方 Tooltip 气泡残留(收起/发送等黑底提示);模型提问(ask_user_question)卡片完整适配窄屏(选项 42px 触控目标);权限/模型两行布局与底部状态栏对齐。
  • 口令页防抖:若浏览器不保存登录凭据(例如把页面放进跨站 iframe/内嵌窗口,SameSite=Strict 的 Cookie 会被丢弃),口令页最多自动跳转 2 次即停下并给出提示,不会无限闪烁。

安装

方式 1:应用内 Plugins 页(推荐,一键)

在 DSH 桌面版侧栏 Plugins 页输入包名 dsh-lan-tool 安装。装完后 dsh.profile.bundles 会自动登记该包。

⚠️ 装完(或更新后)请完全退出桌面版再重新打开一次。 插件的 node 半边(口令门、开关、/dsh-lan/* 路由都在这里)只在应用启动时载入一次;同一个应用进程内重装/升级插件,node 半边仍是旧代码(浏览器半边会热更新,于是出现"一半新一半旧")。1.4.2 起客户端会把这种不一致直接写在设置卡片与控制台里(旧版表现为一个没人能解释的口令页)。

⚠️ 刚发布的版本可能装不上(pnpm 的"发布年龄"策略):pnpm 默认不装太新的包,插件管理器只会给它实际装到过的版本豁免,于是你在 Plugins 页输入包名时可能被解析回上一个版本(表现:新版本的功能/修复没出现)。此时在 Plugins 页显式写版本(如 dsh-lan-tool@1.4.2),或把该版本加进 <DSH_HOME>/profiles/<profile>/pnpm-workspace.yaml 的 minimumReleaseAgeExclude 再装。

前提:该包已发布到 npm。若尚未发布(或你想装本地这份代码),用方式 2。

方式 2:CLI(本地目录 / 路径 / tarball 都行)

# 本地开发目录(绝对路径)
dsh plugin --profile desktop add D:\DeepSeek\dsh-LAN
# 或 link: / file: / tarball / git 形式
dsh plugin --profile desktop add link:D:\DeepSeek\dsh-LAN
# 发布之后则可以直接用包名
dsh plugin --profile desktop add dsh-lan-tool

CLI 路径需要先退出桌面版再执行(dsh-desktop-host 的提示文案如此;它实际只检查 profile 是否初始化过,但应用运行中改写 node_modules 在 Windows 上容易被占用)。

安装后(两种方式相同)

  1. 打开 DSH → 设置 → General → 「局域网访问」;
  2. 先设置访问口令(至少 4 位);
  3. 再打开开关——插件会写入受管覆盖并热重载绑定,约 2 秒后卡片状态变为 0.0.0.0;
  4. 局域网设备打开卡片里显示的 http://<本机IP>:<端口>,输入口令进入。

桌面版端口是 19387(由桌面启动器固定传入);dsh web 默认 3080。以卡片里显示的实际端口为准。

防火墙说明

  • Windows:自动维护 Windows Defender 防火墙放行规则 dsh-lan-tool (auto)(Domain + Private)。未以管理员身份运行时,第一次开启会出现一次系统的「是否允许访问」弹窗——点允许即可,Windows 会自己建一条放行规则;卡片会自动识别这条系统规则(几秒内把状态改成「防火墙已放行」,显示系统规则的名称),不需要管理员权限、也不需要重启。只有既没建成本插件的规则、系统里也找不到放行规则时,才会显示「防火墙未放行(需管理员权限)」。
  • Linux:自动检测并按 firewalld → ufw → iptables 的顺序维护放行规则;检测不到受支持的防火墙工具时,状态显示「防火墙未由插件管理」,此时端口通常本就无需放行。
  • 切换开关的 2 秒:开关会改写配置并让端口重新绑定,这期间请求会短暂失败,卡片显示「正在生效…」并自动重试/刷新,不会冒出红色错误;状态文字里的规则名也是按 UTF-8 读取的,不会出现乱码。
  • 关闭「局域网访问」开关会移除覆盖、回到 127.0.0.1,这是最根本的安全开关。

升级(1.3.x → 1.4.0)

包已改名(dsh-LAN → dsh-lan-tool),用安装脚本装过旧版的机器需要按下面处理;插件在首次激活时会自动完成迁移:

  1. 旧安装块/开关块被自动剥除:profiles/<profile>/cordis.patch.yml 里 dsh-LAN install block、dsh-LAN toggle block 两段受管块会被删掉(profile 补丁层优先级高于 bundle 补丁层,留着会永远压过新配置——正是"开关显示关、实际仍绑 0.0.0.0"的成因)。迁移后局域网回到关闭状态,请在设置页重新打开。
  2. 旧防火墙规则被清理:dsh-LAN (auto)、DSH LAN Access (auto) 会被删除(规则名已改成 dsh-lan-tool (auto),旧规则再没有代码能碰到,留着会永久放行端口且 UI 看不见)。
  3. 口令保留:口令仍存在 %USERPROFILE%\.dsh\dsh-lan.json(文件名没变,避免丢口令),无需重设。
  4. 旧的 profiles/node_modules/dsh-LAN 目录可以手工删除(新安装不会用到)。

手工兜底(没跑迁移时):把 profiles/<profile>/cordis.patch.yml 里两个受管块整段删掉,然后在设置卡片里重新开关一次。

卸载

在 Plugins 页移除该插件,或:

dsh plugin --profile desktop remove dsh-lan-tool

停用/卸载时:密码门立即移除;受管的绑定覆盖会在约 8 秒后由插件自己删掉,防火墙规则同时撤销(等这 8 秒是为了区分"热重载"与"真的没了"——热重载会立刻重新挂载插件,从而取消这次清理)。所以正常情况下卸载后局域网会自动回到关闭。

下面两种情况需要手工确认(清理还没跑):

  • 卸载后立刻退出了 DSH,或直接删掉了包目录;
  • 你想连口令一起清掉。

手工清理三步:删 %USERPROFILE%\.dsh\dsh-lan.json;确认 profiles/<profile>/cordis.patch.yml 里没有 dsh-lan-tool LAN block 受管块(有就整段删掉);netsh advfirewall firewall show rule name="dsh-lan-tool (auto)" 应无匹配(有就 netsh advfirewall firewall delete rule name="dsh-lan-tool (auto)")。

多机一致性原理

单一 DSH 服务进程持有全部状态:会话(jsonl 持久化 + 内存投影)、工作区、目标、子代理。所有浏览器只是同一服务的客户端,通过 /api RPC 读写同一状态,通过事件流(WebSocket 下行)接收相同的服务端事件推送。桌面与移动端连接的是同一份状态,任何一端的操作对其他端实时可见。

参考

早期移动端实现参考过 dsh-web-ui 的 dsh-remote-web-ui(独立轻量远程界面 + 令牌门);移动端自 v48 起直接复用官方桌面界面(插件注入竖屏适配),口令模型不变。

许可证

MIT(license: MIT)