前言¶
在 DeepSeek Harness(DSH)裏做智能體任務時,搜索類 provider 適合處理已經索引好的頁面和快速事實。但如果任務需要已登錄平臺記錄、創作者 feed、顯式啓用的評論或嵌套回覆,就需要另一個執行層:能夠啓動、監督、持久化並導出 MediaCrawler 的運行。
下面介紹 dsh-mediacrawler。它是一個可安裝的 DSH profile bundle,也是一個 bounded stdio MCP adapter,用於把獨立安裝的 MediaCrawler checkout 接入 DSH。
這是什麼¶
dsh-mediacrawler 由 xwh-01 維護,許可證爲 MIT。
它不是 MediaCrawler fork。它不復制、不修改 MediaCrawler 源碼,也不改變 MediaCrawler 的許可證。它提供的是 DSH 與本地 MediaCrawler checkout 之間的適配層。
它解決的問題是:讓 DSH agent 通過 MCP 工具啓動 MediaCrawler 採集,查看運行狀態,讀取結果,並導出經過 credential-redacted 處理的 ZIP。
核心功能¶
支持的平臺與任務¶
dsh-mediacrawler 支持以下平臺:
- Xiaohongshu
- Douyin
- Kuaishou
- Bilibili
- Tieba
- Zhihu
支持的任務包括:
- search
- post/video detail
- creator feeds
- explicitly enabled comments
評論不是默認開啓的,需要在單次運行中顯式啓用。
MCP 工具¶
dsh-mediacrawler 暴露 12 個 MCP tools:
checkcollectstatusrunsresultdelete_runcleanupstoplogsartifactspreviewexport
每次運行都是 supervised、persisted,並通過這些 MCP tools 暴露給 DSH。
瀏覽器隔離¶
默認 browser_mode=isolated。它會啓動 Google Chrome,並使用一個 adapter-owned persistent profile。這樣後續運行可以複用登錄態,而不需要附着到用戶正常使用的 Chrome 會話。
導出¶
export 會創建一個 credential-redacted ZIP,並返回該 ZIP 的路徑和 checksum。
默認導出上限是 256 MiB raw run data。可以通過 DSH_MEDIACRAWLER_MAX_EXPORT_MIB 設置 1 到 4096 之間的值來調整上限。
安裝與啓用¶
環境準備¶
先準備以下運行環境:
- Python 3.11 或更新版本
- Node.js
22.19+,且屬於 22.x 線;或 Node.js24+ pnpm- Google Chrome
- 一個獨立安裝的 MediaCrawler checkout,並帶有可用的 Python 環境
- DeepSeek Harness
0.1.0-rc.6
Node.js engine 要求爲:
^22.19.0 || >=24.0.0
MediaCrawler 及其瀏覽器依賴不在本插件中打包。
安裝 Python MCP runtime¶
先爲 adapter 準備一個獨立 venv,然後安裝 Python 包。POSIX 環境下可以這樣做:
python3 -m venv "$HOME/.dsh/runtimes/dsh-mediacrawler"
export DSH_MEDIACRAWLER_PYTHON="$HOME/.dsh/runtimes/dsh-mediacrawler/bin/python"
"$DSH_MEDIACRAWLER_PYTHON" -m pip install "dsh-mediacrawler @ git+https://github.com/xwh-01/dsh-mediacrawler.git@v0.3.0"
這一步安裝的是 Python MCP runtime,後面 DSH 會通過它啓動 adapter。
安裝 DSH profile bundle¶
接下來安裝 DSH profile bundle:
npx --yes @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add "github:xwh-01/dsh-mediacrawler#v0.3.0"
這一步會把 dsh-mediacrawler 作爲 profile bundle 添加到 DSH 的 web profile 中。
配置並啓動 DSH¶
在啓動 DSH 的同一個 shell 中,導出 MediaCrawler 路徑和 Python 解釋器路徑:
export MEDIACRAWLER_ROOT="/path/to/MediaCrawler"
export MEDIACRAWLER_PYTHON="/path/to/MediaCrawler/.venv/bin/python"
# 可選;默認狀態目錄爲 ~/.dsh-mediacrawler
export DSH_MEDIACRAWLER_STATE_DIR="/path/to/adapter-state"
npx --yes @deepseek-ai/dsh@0.1.0-rc.6 --profile web
DSH_* 變量會被當作 launch settings,應該在 DSH 進程環境中導出。
卸載¶
卸載 profile bundle:
npx --yes @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web remove dsh-mediacrawler
典型用法¶
先做環境檢查,再做採集和導出。
首次檢查¶
首次使用時,讓 agent 調用:
check(deep=true)
這一步用於檢查 source paths、CLI 依賴和 browser launch readiness。
查看運行狀態¶
採集過程中,agent 可以通過 status 讀取生命週期狀態、是否需要用戶處理、以及結果數量。
如果需要恢復最近的可持久化運行,可以使用 runs。
讀取結果與導出¶
讀取結果時可以使用 result。需要導出時調用 export,它返回 ZIP 路徑和 checksum。
如果只想查看 artifact 預覽,可以使用 preview;如果要列出 typed JSONL artifacts,可以使用 artifacts。
刪除與清理¶
delete_run 需要 confirm=true。
cleanup 默認 dry_run=true。如果要真正執行,需要顯式使用 dry_run=false。
兩個操作都拒絕 active runs,並且不會刪除 persistent browser profiles 或 login state。
適用場景與注意¶
適合誰¶
如果任務需要:
- 已登錄平臺記錄
- creator feeds
- 顯式啓用的評論或嵌套回覆
- 可重複、可導出的運行結果
那麼 dsh-mediacrawler 適合把 MediaCrawler 納入 DSH 的智能體流程。
它不是替代搜索 provider,而是用於需要本地採集和導出的場景。
安全與權限¶
這個插件會以當前 DSH 進程權限運行。安裝前應當檢查源碼、依賴和許可證。
需要特別注意:
- 只接受 QR-code login。
- MCP API 不接受 cookies、手機號或驗證碼。
- 評論默認關閉,需要單次運行顯式啓用。
- credential redaction 不等於 PII anonymization。
- 導出內容可能仍包含姓名、電話、郵箱、位置或其他個人數據。
- 導出會報告
pii_anonymized=false和safe_to_share=false。 - 它不繞過 login、verification、rate limits、access controls 或 anti-automation systems。
運行邊界¶
採集任務必須有明確 scope 和 hard timeout。timeout_minutes 是硬邊界。
對於某些 search 或 creator 流程,max_items 可能不會嚴格按上游限制生效。插件會報告這類情況,並以 timeout_minutes 作爲最終邊界。
結尾¶
經過上面的步驟,dsh-mediacrawler 可以把獨立安裝的 MediaCrawler 接入 DSH:檢查運行時、啓動受監督採集、查看狀態、讀取結果、導出 ZIP,並在需要時停止、清理或刪除已完成運行。
GitHub:
https://github.com/xwh-01/dsh-mediacrawler
社區目錄:可在 DSH 插件目錄按插件名 dsh-mediacrawler 檢索。