前言¶
DeepSeek Harness(簡稱 dsh)的設計是「一切皆插件」:瀏覽器自動化、視覺理解、文檔解析都可以往運行時上掛。做資料整理或內容歸檔時,還有一類很具體的需求——對話裏丟進一個鏈接,讓智能體先判斷這是不是視頻或音頻,再把文件落到本地。社區目錄裏瀏覽器自動化插件不少,專門做媒體識別和下載的工具卻很少。
dsh-video-downloader 就是衝着這個缺口來的。它把 Chrome MV3 擴展 video-downloader-extension 裏的媒體識別邏輯從瀏覽器沙箱裏抽出來,變成純 Node 函數,再註冊成三個 agent 可調用的工具。本文按社區目錄頁、GitHub 倉庫 README 與 src/index.js 交叉覈對後整理。需要先說明兩點:社區插件目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係;Harness 本身仍處於 developer preview,後續可能出現不兼容變更。
這是什麼¶
dsh-video-downloader 是一款「工具與能力」類 DSH 插件,由 zimai233 維護,許可證 MIT,主要語言 JavaScript。倉庫 package.json 中的版本號是 0.1.0。2026-08-18 覈實時,目錄頁與 GitHub 均顯示 1 星;倉庫帶有 deepseek-harness、dsh-plugin 兩個 topic。
一句話定位:在 DeepSeek Harness 對話裏,按 URL 判斷是否像可下載的視頻/音頻,並把媒體直鏈流式寫到磁盤。站點識別按 hostname 覆蓋 Bilibili、YouTube、抖音、小紅書,短鏈域名 youtu.be、iesdouyin.com、xhslink.com 也會歸到對應站點,其餘記爲 other。
它解決的不是「給一個播放頁就自動解析並扒片」那種完整下載器。video_analyze 和 video_quality_parse 只看 URL 字符串,不會去抓頁面;video_download 接收的是 mp4 / m3u8 / mpd / m4s 這類直鏈。README 寫明:插件不繞過 DRM、登錄牆或平臺付費內容,使用時需遵守各平臺服務條款與著作權法。
核心功能¶
插件通過 @deepseek-ai/dsh-tools 的 defineTool 註冊三個工具。純函數核心(isMedia、getQuality、getExt、detectSite)也會導出,方便測試和二次開發。
video_analyze:只分析、不下載¶
傳入一個 url,返回 JSON:
{ "isMedia": true, "site": "bilibili", "quality": "1080P", "ext": "m4s", "mimeHint": "video/iso.segment" }
判定規則來自源碼裏的啓發式:
- 是不是媒體:看擴展名(mp4、m3u8、webm、m4s、mp3 等)、URL 片段(如
bilivideo.com、googlevideo.com、.m3u8),以及可選的 Content-Type。 - 屬於哪個站點:解析 hostname,映射到
bilibili/youtube/douyin/xiaohongshu/other。 - 清晰度:從
1920x1080、height/quality查詢參數、碼率閾值,或 URL 裏的1080、720等關鍵字儘量猜;猜不到就按容器標成HLS/DASH/M4S/FLV。 - 擴展名與 MIME 提示:例如
.m3u8→application/x-mpegURL,缺省擴展名時源碼會落到mp4。
工具描述寫得很明確:分析過程不會去請求這個 URL。把 B 站播放頁丟進來,通常只能識別出 site 爲 bilibili,isMedia 未必爲真——因爲它看的是鏈接長什麼樣,不是頁面裏藏了什麼。
video_download:把直鏈流式寫到磁盤¶
這是真正會發網絡請求的工具。參數與返回如下:
| 參數 | 說明 |
|---|---|
url |
必填,媒體直鏈 |
outPath |
可選,絕對路徑或相對當前工作目錄;不填則寫到 ./downloads/ |
headers |
可選對象,合併到默認的瀏覽器請求頭之上 |
返回 JSON:{ savedTo, bytes, quality, ext, elapsedMs }。
下載行爲在 README 和源碼裏是對齊的:
- 請求頭帶 Chrome 風格 User-Agent,並按 URL 的 origin 自動加
Referer。 - 用
fs.createWriteStream流式寫入,目錄不存在會創建。 - 手動跟隨重定向,最多 5 次。
- 超時 60 秒;執行被取消時會 abort。
默認文件名從 URL 路徑最後一段清洗得到;路徑裏的非法字符會被替換成下劃線。
video_quality_parse:純正則、無網絡¶
只返回 { quality, ext },不判斷站點,也不下載。適合已經拿到直鏈、只想從 URL 裏摳清晰度和容器的情況。清晰度同樣是 best-effort:先看寬高和查詢參數,再看碼率閾值和關鍵字,最後纔回落到容器類型。
源碼裏還有、但沒註冊成工具的部分¶
src/index.js 另外導出了 parseBilibiliJson、parseYoutubeStreaming、extractMediaUrls:分別用來解析 B 站 playurl JSON、YouTube streamingData,以及從頁面文本里抽出 mp4 / m3u8 鏈接。它們是純函數,沒有掛到 agent 工具表上。如果只通過對話調用插件,智能體用不了這三套解析器;要二次開發或自己喂 JSON 文本,才用得上。
實現上還有兩點和安裝有關:包是純 ESM,main 指向 src/index.js,沒有構建步驟;cordis.patch.yml 以 id video-downloader、name dsh-video-downloader 插入插件行。
安裝與啓用¶
社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行即可:
dsh plugin add github:zimai233/dsh-video-downloader
需要可復現安裝時,按目錄頁說明把 commit 哈希釘上:
dsh plugin add github:zimai233/dsh-video-downloader#<commit>
把 <commit> 換成倉庫裏實際的 commit SHA。官方文檔裏也常見帶 profile 的寫法,例如 dsh plugin --profile demo add github:zimai233/dsh-video-downloader。
倉庫 README 還寫了按 npm 包名安裝:dsh plugin --profile myprofile add dsh-video-downloader。截至 2026-08-18,npm registry 上查不到同名包,不要把這條當成可用安裝方式。當前應以目錄頁的 GitHub 命令爲準。
本插件是純 JavaScript,發佈包即運行時代碼,一般不需要爲 prepare 構建腳本額外授權。即便如此,目錄頁的安全提示仍然適用:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前請自己看源碼和許可證。裝完可用 dsh plugins list 確認是否出現在列表裏;有的插件需要重啓 Harness 後才生效。
典型用法¶
README 建議用自然語言讓 agent 調工具,例如:
分析這個頁面裏的媒體:https://www.bilibili.com/video/BV1xx411c7mD
把這幾個鏈接的 1080P 視頻下載到 ./downloads 目錄
對應到工具參數,倉庫給出的示例是:
{ "url": "https://bilivideo.com/xxx.m4s" }
上面這一條給 video_analyze。下載時補上輸出路徑:
{ "url": "https://bilivideo.com/xxx.m4s", "outPath": "./downloads/clip.mp4" }
只解析清晰度和擴展名:
{ "url": "https://example.com/video.mp4?height=720" }
推薦順序是:先 video_analyze 看 isMedia 和 site,確認是直鏈後再 video_download。播放頁 URL 過不了「像媒體」這一關時,需要先通過別的手段拿到直鏈(例如自己打開開發者工具、或配合瀏覽器自動化插件抓到媒體請求),再交給本插件保存。不要指望對播放頁執行一次 video_download 就能得到完整成片。
video_download 的 headers 可以覆蓋或補充默認請求頭。平臺對 Referer、Cookie 有額外要求時,可以把需要的頭放進這個對象;插件本身不會幫你登錄,也不會去讀瀏覽器 Cookie 庫。
適用場景與注意事項¶
比較適合這些情況:
- 已經拿到媒體直鏈,希望智能體在對話裏完成分類、選清晰度線索、保存到本地。
- 本地歸檔公開可下載的 mp4 / m3u8 等文件,默認落到當前工作目錄的
downloads/。 - 二次開發時複用導出的純函數,而不是從零抄一套 URL 啓發式。
使用前建議把下面幾條當作硬限制,而不是「以後可能會好」:
- 權限與供應鏈。插件以當前 dsh 進程權限運行,能讀寫真機目錄、能髮網絡請求。安裝前檢查 https://github.com/zimai233/dsh-video-downloader 源碼和 MIT 許可證;需要可復現環境時固定 commit。
- 版權與平臺條款。README 原文要求:只下載你有權獲取的內容。它只做識別和流式保存,不繞過 DRM、登錄牆或付費牆。
- 直鏈,不是播放頁。
video_analyze不抓頁面;video_download按 HTTP 把給定 URL 寫成文件。B 站 DASH 常見音視頻分離的.m4s,本插件不會幫你合併。 - 60 秒超時。單次下載超過 60 秒會被 abort。大文件、慢網絡或長 playlist 可能失敗。
- 重定向上限爲 5。超過會報錯。
- 清晰度是猜的。標籤來自 URL 形態和 B 站 quality id 對照表,不是解碼後的真實分辨率。
- 項目很新。倉庫創建於 2026-08-14,版本
0.1.0,星標很少。把它當社區小工具使用,而不是生產級下載套件。
小結¶
dsh-video-downloader 給 DeepSeek Harness 補上了一塊很窄、但確實缺過的能力:讓智能體先看鏈接像不像媒體,再把直鏈流式存到本地。三個工具分工清楚——分析不聯網、下載帶超時和重定向、質量解析是純正則。它不是 yt-dlp 的替代品,也不是播放頁一鍵下載器;邊界寫在 README 和源碼裏,用的時候按直鏈來、按版權來,會比較穩。
- 目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-video-downloader/
- GitHub:https://github.com/zimai233/dsh-video-downloader
- DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness