# my-lan-share 中文文档

规范地址：https://npmcn.com/package/my-lan-share/

版本：0\.1\.0
npm 元数据更新时间：2026-11-04T02:03:21.368Z
中文译文更新时间：2026-11-04T05:51:27.045Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/my-lan-share
原文对照：https://npmcn.com/package/my-lan-share/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：67.6 kB，9 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：^22\.19\.0 \|\| \>=24\.0\.0
- 运行依赖：0 个
- peer 依赖：@deepseek-ai/cordis ^4\.0\.2，@deepseek-ai/dsh-tools \>=0\.1\.5
- 首次发布：2026-11-04T02:02:25.069Z
- 最新版本发布：2026-11-04T02:03:21.191Z
- 已发布版本数：2（近 12 个月 2 个）

## 中文简介

局域网 HTTP 文件共享插件：启动一个本机 HTTP 服务器，手机浏览器可通过带 token 的链接浏览文件列表、下载文件、上传文件。

## 安装

```sh
npm install my-lan-share
```

也可以使用：`pnpm add my-lan-share`、`yarn add my-lan-share`、`bun add my-lan-share`

## README

# my-lan-share：局域网 HTTP 文件共享插件

在同一局域网内，用手机浏览器访问电脑上共享的文件夹，支持 **浏览文件列表、点击下载、上传文件到电脑**。

本插件纯粹使用 Node.js 内置模块（`http`, `fs`, `path` 等），**不引入任何第三方依赖**。

* * *

## 功能

| 功能 | 说明 |
| --- | --- |
| `start_http_share` | 启动局域网 HTTP 文件共享服务器，共享指定目录 |
| `stop_http_share` | 关闭当前运行的共享服务器 |
| 随机 4 位数字 Token | 每次启动生成，所有请求必须在 URL 带上 `?token=xxxx` |
| 文件列表与下载 | 手机浏览器打开共享链接，可浏览子目录、点击文件下载 |
| 文件上传 | 手机浏览器通过 `<input type="file">` 上传文件到电脑 |
| 侧边栏面板 | 显示运行状态、访问链接、共享目录、Token，带“停止服务”按钮 |
| 路径安全边界 | 严格限制只能访问共享根目录之内的文件，禁止 `..` 越权访问 |

* * *

## 安装

### 方式一：从 npm 安装（推荐，所有人免费可用）

插件发布到 npm 后，任何安装了 DSH 的人都可以一条命令安装：

```powershell
# DSH Desktop 使用 desktop profile
dsh plugin --profile desktop add my-lan-share

# 如果是 `dsh web` 模式，改用 web profile
dsh plugin --profile web add my-lan-share
```

### 方式二：从本地目录 / tgz 安装（离线分发）

```powershell
# 直接从源码目录安装
& "C:\Users\p'c\AppData\Local\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "C:\path\to\my-lan-share"
```

或者先打包再分发（目标机不需要 Node 工具链）：

```powershell
npm pack          # 生成 my-lan-share-0.1.0.tgz
dsh plugin --profile desktop add "C:\path\to\my-lan-share-0.1.0.tgz"
```

安装后**必须完全退出并重启 DSH Desktop**（托盘 → 退出，然后重新启动）。

重启后，右侧边栏会多出「局域网文件共享（my-lan-share）」标签页，在对话框中也能调用 `start_http_share` / `stop_http_share`。

### 验证安装

```powershell
# 1) 检查插件是否已加载（Desktop 是 desktop profile）
Select-String my-lan-share "$env:APPDATA\dsh-desktop\harness\profiles\desktop\package.json"

# 2) 检查 lib 文件是否存在
Test-Path "$env:APPDATA\dsh-desktop\harness\profiles\desktop\node_modules\my-lan-share\lib\index.js"
```

* * *

## 使用

### 第一步：启动共享服务

在 DSH 对话框中，让 agent 调用 `start_http_share` 工具，传入要共享的绝对目录路径：

```
start_http_share({ dirPath: "F:\\测试文件" })
```

成功后，agent 会返回类似如下的信息：

```
HTTP 文件共享已启动。
共享目录：F:\测试文件
本地地址：http://127.0.0.1:49152/?token=7342
局域网访问链接（在手机浏览器打开）：http://192.168.1.23:49152/?token=7342
访问令牌：7342
```

把 **局域网访问链接**（例如 `http://192.168.1.23:49152/?token=7342`）发到手机上，在同一 Wi-Fi 下用手机浏览器打开即可访问。

> 💡 端口是系统自动分配的，每次启动可能不同。Token 是 4 位随机数字，每次启动都会变化。

### 第二步：在手机上访问

1.  确保手机与电脑在同一 Wi-Fi 局域网下。
2.  手机浏览器打开返回的完整链接（必须带上 `?token=xxxx`）。
3.  页面会显示：
    -   **访问令牌**（4 位数字）
    -   **文件列表**：可进入子目录、点击“上级目录”返回、点击文件名下载
    -   **上传表单**：选择手机上的文件，点击“上传”发送到电脑的共享目录

### 第三步：停止共享

不再需要时，调用 `stop_http_share` 工具关闭服务器：

```
stop_http_share({})
```

或在 DSH 右侧边栏的 **my-lan-share** 标签页中，点击“停止服务”按钮。

* * *

## 安全说明

1.  **路径边界控制**：服务器只允许访问 `dirPath` 指定的共享根目录及其子目录。任何包含 `..` 或试图越出根目录的请求都会被拒绝（返回 403）。
2.  **Token 保护**：每个请求必须在 URL 中携带正确的 `?token=xxxx`，否则返回 401 未授权。Token 每次启动随机生成，不要将链接发给不可信的人。
3.  **上传限制**：单个文件上传大小上限为 50 MB。
4.  **仅限局域网**：服务器绑定 `0.0.0.0`，同一局域网内知晓 Token 的设备都可以访问。在不可信网络（如公共 Wi-Fi）下请谨慎使用。

* * *

## 文件结构

```
my-lan-share/
├── package.json              # 插件元数据
├── cordis.patch.yml          # bundle patch，注册到 profile
├── README.md                 # 本说明文档
├── LICENSE                   # MIT 许可证
└── lib/
    ├── index.js              # Host 半：HTTP 服务器、路径安全、apply 入口
    ├── tools.js              # Agent 工具：start_http_share / stop_http_share
    ├── client.js             # 浏览器半：侧边栏面板（状态、链接、停止按钮）
    ├── server/
    │   └── panelRoutes.js    # 面板路由（查询状态、停止服务）
    └── core/
        └── log.js            # 日志工具
```

* * *

## 发布到 npm（维护者）

打包内容已通过 `npm pack --dry-run` 校验（LICENSE / README / cordis.patch.yml / lib/\*\*，共 9 个文件）。

```powershell
cd my-lan-share

# 一次性：注册或登录 npm 账号（免费）
npm adduser --registry https://registry.npmjs.org

# 发布公开包（所有人可免费安装）
npm publish --access public --registry https://registry.npmjs.org

# 之后更新版本再发布
npm version patch
npm publish --access public --registry https://registry.npmjs.org
```

> 本机默认 registry 是 `https://registry.npmmirror.com`（只读镜像，不能发布）， 所以发布时必须显式加 `--registry https://registry.npmjs.org`。 发布后约几分钟 npmmirror 会同步，国内用户也能加速安装。

* * *

## 注意事项

-   端口由操作系统自动分配，每次启动可能不同，请以工具返回的完整链接为准。
-   共享目录必须是**本机绝对路径**，且当前 DSH 进程对该目录有读写权限。
-   DSH Desktop 安装插件后必须重启才能生效。
-   如果防火墙拦截了该端口，手机将无法连接，请在 Windows 防火墙中放行对应端口或允许 Node.js 程序通过防火墙。

## 常见问题

### my-lan-share 是什么？

局域网 HTTP 文件共享插件：启动一个本机 HTTP 服务器，手机浏览器可通过带 token 的链接浏览文件列表、下载文件、上传文件。

### 如何安装 my-lan-share？

在项目目录运行 npm install my-lan-share，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@deepseek-ai/cordis（^4\.0\.2）、@deepseek-ai/dsh-tools（\>=0\.1\.5）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### my-lan-share 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/my-lan-share 是否存在。

### my-lan-share 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### my-lan-share 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^22\.19\.0 \|\| \>=24\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### my-lan-share 可以商用吗？

my-lan-share 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### my-lan-share 还在维护吗？

最新版本 0\.1\.0 发布于 2026/11/04（今天）；至今共发布 2 个版本，其中过去 12 个月发布了 2 个；首次发布于 2026/11/04。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

