插件目录 / Developer / dsh-plugin-ftp-server
dsh-plugin-ftp-server
已验证 · 实测可装 YinjiangCN
功能简介
Configurable FTP file server for DeepSeek Harness with a browser settings panel (zero-dependency FTP core).
可用 — 实测通过,早期项目
Configurable FTP file server for DeepSeek Harness with a browser settings panel (zero-dependency FTP core). 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-plugin-ftp-server
Run a configurable FTP file server inside DeepSeek Harness, managed from a browser settings panel. Host any directory over plain FTP — browse, upload, download, rename and delete files with any FTP client.
⚠️ Plain FTP has no TLS: credentials and data travel in cleartext. Use it on trusted networks only.
Features
- Zero-dependency FTP server core (pure Node built-ins), spawned as a child process of the harness
- Full command support:
USER/PASS,PWD/CWD/CDUP,LIST/NLST/MLSD,RETR/STOR/APPE/STOU,DELE/MKD/RMD,RNFR/RNTO,SIZE/MDTM/REST(resume),PASV/EPSV/PORT,FEAT/STAT/ABOR/NOOP - Chrooted to the shared root — path escape (
..) is blocked, and the root itself cannot be deleted or renamed - Single account + password, or anonymous mode
- Browser panel (Settings → FTP 服务): configure host/port/root/credentials, start/stop, live status (PID, uptime), shared-root listing and server log
- Idle timeout (180 s), crash detection, automatic child-process cleanup when the plugin is stopped
Install
dsh plugin --profile web add github:YinjiangCN/dsh-plugin-ftp-server
Then restart dsh. Open Settings → FTP 服务, fill in the form and click 启动服务.
Usage
| Field | Default | Meaning |
|---|---|---|
| 监听地址 (host) | 0.0.0.0 |
Bind address |
| 端口 (port) | 2121 |
Control port |
| 共享根目录 (root) | workspace/ftp-root |
Directory shared over FTP (created on start) |
| 用户名 (user) | ftp |
Login account (ignored in anonymous mode) |
| 密码 (pass) | (empty) | Login password |
| 允许匿名 (anonymous) | off | Allow anonymous login |
Clients connect with ftp://<user>@<host>:<port>. The password is kept in memory only; it is passed as a child-process argument and never written to disk.
Security notes
- Do not set 共享根目录 to
/unless you really want to share the whole filesystem — anyone with the credentials can read/modify every file (the server runs with the harness user's privileges). - Plain FTP is unencrypted; prefer an internal/trusted network.
- The server supports one account; for multiple users run multiple instances on different ports.
Development
lib/index.js host half — FTP process management + Typert Remote service `ftpServer`
lib/client.js browser half — settings panel (module-loader bundle)
lib/ftp-server.js standalone FTP server (spawned by the host half)
cordis.patch.yml loader patch mounting the host half
The host half registers the ftpServer Remote service; the panel calls status/start/stop/listRoot through the Typert Gateway (host-side SRC-mode discovery with hand-written strict client descriptors).
License
MIT
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-plugin-ftp-server」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:YinjiangCN/dsh-plugin-ftp-server Headless(CLI)profile:
dsh plugin --profile headless add github:YinjiangCN/dsh-plugin-ftp-server 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。