前言¶
在智能體開發或日常調試中,經常需要將本地工作區的產物快速分享給手機、平板或同事的電腦。現有的 DSH 插件方案各有側重:dsh-lan-gate 或 dsh-plugin-remote-access 代理的是 DSH 網頁端,訪問需要登錄或設備審批;dsh-ssh 針對遠程服務器執行與 SFTP;dsh-webfile 則連接遠程存儲(如 S3、FTP)。
dsh-lan-share 解決的是本機工作區文件的純局域網 HTTP 共享問題。它不依賴額外的服務端,利用 Node.js 原生模塊,讓同一局域網內的設備通過瀏覽器直接瀏覽、下載或上傳文件,無需登錄 DSH 系統。
核心功能¶
該插件提供了一套完整的文件共享能力:
- HTTP 共享:將本地工作區通過 HTTP 協議暴露,支持手機、平板或其他電腦的瀏覽器直接訪問。
- 零依賴:僅使用 Node.js 原生
node:http模塊,無需安裝額外服務。 - 安全門禁:支持 Token 門禁,防止未授權訪問。可配置固定口令,每個口令可獨立設置角色(只讀/讀寫)和過期時間。
- 路徑邊界:通過解析機制防止
../絕對路徑越界攻擊。 - 只讀模式:可開啓只讀模式,限制上傳、刪除和移動操作。
- 限流保護:默認每 IP 每分鐘 120 請求,超限返回 429 狀態碼。
- 敏感文件隱藏:自動過濾
.env、憑據類文件(credentials.yaml、.netrc)、密鑰(*.pem、*.key、*.pfx)、node_modules、.git等目錄和文件。
安裝與啓用¶
在 DeepSeek Harness 的配置文件(如 dsh.profile 或 cordis.yml)中添加以下條目:
plugins:
- id: tool-lan-share
name: 'dsh-lan-share'
典型用法¶
插件提供了三個核心命令來控制共享服務。
1. 啓動共享¶
執行 lan_share_start 命令啓動服務。你可以通過參數指定端口、Token、只讀模式或子目錄。
lan_share_start → {
"ok": true,
"running": true,
"port": 3980,
"root": "F:/work",
"readOnly": false,
"urls": ["http://192.168.1.5:3980/?token=9f2c...", "..."],
"token": "9f2c..."
}
2. 查看狀態¶
使用 lan_share_status 查看當前共享服務的運行狀態、訪問地址、Token 以及文件統計信息。
3. 停止共享¶
使用 lan_share_stop 停止服務。
4. 訪問與操作¶
在局域網內任意設備的瀏覽器輸入返回的 URL(包含 token)。在讀寫模式下,支持拖拽上傳、點擊下載;在只讀模式下,僅支持瀏覽目錄樹和下載文件。
5. 配置固定口令¶
除了啓動時生成的隨機 Token,還可以配置固定口令。在 lan_share_start 中傳入 passwords 數組:
lan_share_start → { passwords: [
{ password: "family", role: "read", expiresIn: "3d" },
{ password: "admin", role: "write", expiresIn: "long" },
] }
瀏覽器訪問時,可在 URL 參數 ?password= 或請求頭 X-Password 中傳入對應口令。
配置項¶
在 DSH 的 settings 中可以配置 lan-share 命名空間下的參數:
lan-share:
port: 3980 # 監聽端口
host: 0.0.0.0 # 監聽地址,0.0.0.0 爲全局域網,127.0.0.1 僅本機
readOnly: false # 默認只讀模式
rateLimitPerMin: 120 # 每 IP 限流(請求次數)
hideSensitive: true # 是否隱藏敏感文件
注意事項¶
- Node 版本要求:插件需要 Node.js 版本
^22.19.0 || >=24.0.0。 - 代碼路徑:核心邏輯位於
src/lan-share-core.ts。 - 訪問控制默認:默認
allowOpenAccess: false,即必須通過 Token 或固定口令驗證才能訪問。若需局域網內任何設備免口令訪問,需手動開啓該選項。 - 權限範圍:插件以當前 DSH 進程的權限運行,請確保配置好相關目錄的讀寫權限。
生態背景¶
DeepSeek Harness(DSH)採用“一切皆插件”的理念。dsh-lan-share 是社區維護的插件,其目錄頁與 GitHub 倉庫可參考下方鏈接。