dsh-lan-plugin
by zynieie
A dsh plugin I built — fixes LAN access. Tagged dsh-plugin per upstream's stated contribution convention. 我给 dsh 写的一个插件——修局域网访问。挂了 dsh-plugin topic(上游明文鼓励的贡献方式)。…
Independent dsh plugins for things upstream can't (yet) accept as PRs. Starts with @zynieie/dsh-lan-fix: let dsh web load on http://<lan-ip>:3080 (insecure context) without the WebSocket abort storm.
安装
dsh plugin --profile web add github:zynieie/dsh-lan-pluginGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
A dsh plugin I built — fixes LAN access. Tagged
dsh-pluginper upstream's stated contribution convention.我给 dsh 写的一个插件——修局域网访问。挂了
dsh-plugintopic(上游明文鼓励的贡献方式)。完整中文说明:README.zh.md
This monorepo ships dsh plugins that follow the official dsh-plugin distribution conventions (npm package + cordis.patch.yml + profile-node_modules symlink). No dsh source is modified.
本 monorepo 收录的 dsh 插件遵循官方 dsh-plugin 规范(npm 包 + cordis.patch.yml + profile node_modules 软链接),不改 dsh 任何源码。

Real capture: a phone on the same WiFi opening http://<lan-ip>:3080/ after the LAN fix is installed — same dsh web session as the PC's http://127.0.0.1:3080/.
实拍:手机连同一个 WiFi,打开 http://<lan-ip>:3080/,session 列表 / 聊天记录 / 工具栏跟电脑 http://127.0.0.1:3080/ 上看到的一模一样,不用装任何 app。
Why this repo exists
deepseek-ai/deepseek-harness is in pre-release. From their CONTRIBUTING.md:
"We are sorry that we cannot accept external pull requests at the moment."
The repo also has has_pull_requests: false at the repo level, so external PRs are server-blocked for now. They explicitly recommend the contribution path: publish plugins with the dsh-plugin topic — this repo follows that path.
deepseek-ai/deepseek-harness 还在 pre-release,他们的 CONTRIBUTING.md 写得直白:
"We are sorry that we cannot accept external pull requests at the moment."
仓库层面也设了 has_pull_requests: false,外部 PR 暂时走不通。他们明文推荐的贡献方式就是发带 dsh-plugin topic 的独立插件——这条仓库就专门走那条路。
Each plugin here changes very little (often one method, a line or two of fallback), so it slots in cleanly when upstream opens up. The body of every monkey-patch doubles as a draft of the eventual upstream diff.
每个 plugin 实际改的就那么点东西(常常是一个方法、一两行 fallback),上游哪天开门直接就是 compatible 的 diff。这边 monkey-patch 的函数体,留着当未来 upstream PR 的草稿也合适。
Plugins
| Package / 包名 | What it fixes / 修什么 |
|---|---|
@zynieie/dsh-lan-fix |
Lets dsh web load on http://<lan-ip>:3080/ (insecure context) without the WebSocket abort storm. Patches AbstractApiClient.mintRpcId to fall back to crypto.getRandomValues when crypto.randomUUID is unavailable.让 dsh web 在 http://<lan-ip>:3080/(insecure context)下能加载,不再卡空白。monkey-patch AbstractApiClient.mintRpcId,没有 crypto.randomUUID 时回落到 crypto.getRandomValues。 |
Repo layout
.
├── packages/
│ └── dsh-lan-fix/ # the LAN access plugin
│ ├── src/index.ts # plugin entry (monkey-patch)
│ ├── cordis.patch.yml # Cordis bundle-patch layer
│ ├── package.json # dsh.bundle.patch → cordis.patch.yml
│ ├── README.md # English
│ ├── README.zh.md # 中文
│ ├── tsconfig.json
│ ├── tsconfig.build.json
│ ├── tests/ # node --test sanity tests
│ └── LICENSE # MIT
├── docs/
│ ├── lan-access.md # long-form write-up (root cause, verification, security)
│ └── images/ # phone screenshot
├── pnpm-workspace.yaml
├── README.md # this file (中英双语)
├── README.zh.md # 完整中文版
└── .gitignore
Install any plugin
Each plugin ships as an npm package; install it into the node_modules/ of your dsh profile checkout (or symlink the workspace package in):
每个 plugin 是 npm 包;装到你 dsh profile 仓库的 node_modules/ 里(或者 symlink 工作区包):
# from inside your dsh profile repo
pnpm add --save-dev /absolute/path/to/dsh-lan-plugin/packages/dsh-lan-fix
# or symlink:
ln -s /absolute/path/to/dsh-lan-plugin/packages/dsh-lan-fix \
./node_modules/@zynieie/dsh-lan-fix
pnpm dsh web --host 0.0.0.0
The dsh bundle-loader walks patch layers in dependency order. Each plugin's apply() runs before any web-app row that would otherwise build an AbstractApiClient, so every subclass inherits the patched prototype through the prototype chain.
dsh bundle-loader 按依赖顺序走 patch 层。每个 plugin 的 apply() 在 web-app 任何构造 AbstractApiClient 的 row 之前执行,所以所有子类通过原型链都拿到补丁。
Contributing
Open an issue, send a PR to this repo, or open a discussion. The plugins here follow the same shape as upstream's packages/bundle/* — small, focused, single-responsibility — so contributions are usually one-method edits in src/index.ts.
提 issue、发 PR、开 discussion 都行。这里的 plugin 沿用上游 packages/bundle/* 的形态——小、专注、单职责——所以贡献通常就是 src/index.ts 里一个方法的小改。
License
MIT per package — see packages/dsh-lan-fix/LICENSE.
每个包都是 MIT——见 packages/dsh-lan-fix/LICENSE。
原始 README: https://github.com/zynieie/dsh-lan-plugin/blob/main/README.md ↗
同类插件
查看全部 →
k8e
k8e.sh — 开源 Agentic AI 沙箱矩阵

hol-guard
开源AI代理防病毒:运行时拦截风险工具、秘密访问、提示注入、恶意软件包、MCP服务器、插件和技能。

anolisa
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture):具备运行时、安全性、可观测性和 Tokenless 响应压缩能力的 Agentic OS,可降低 Token 使用量与成本。

mobius
首个自我演进的开源 Agent OS:连接你的团队、AI agent、设备与算力

deepseek-harness-desktop
DeepSeek Harness Tauri 桌面版 | Only 5mb installer, zero environment setup. Windows / macOS / Linux.

open-managed-agents
开源Claude管理代理API实现和自托管Claude标签式代理运行时。即插即用;在Cloudflare Workers/Durable Objects或Node.js上运行。Apache 2.0。