前言¶
在 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 检索。