前言¶
在 DeepSeek Harness 里做联网相关任务时,常见需求是保留「当时页面上已经渲染出来的样子」,而不是只存 URL 或一段 Markdown 摘要。浏览器另存为、截图或手写爬虫,要么丢交互上下文,要么难以和当前会话、工作区权限对齐。
下面介绍社区插件 huoqu(仓库 yueyexiayu/dsh-huoqu),由维护者 yueyexiayu 发布,分类为 联网工具。它在 Harness 内采集当前渲染结果,写入本地可离线打开的静态副本,并附带校验报告。
这是什么¶
huoqu 是 DSH desktop 插件:对指定 URL 做页面采集,输出本地 HTML、MHTML 及资源目录,供离线预览与归档。当前插件版本为 0.2.2(以侧栏 GET 返回的 version、采集结果中的 pluginVersion 为准)。
插件通过现有 sandboxPolicy 与 fs 服务做写入与清理,不需要修改 DSH 官方源码。DeepSeek Harness 生态强调「一切皆插件」;SkillHub 目录页 是社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
采集后端与身份¶
purpose:capture(默认)、automation、web-regression。普通采集默认走 Chrome 扩展(dsh-chrome),复用当前正式 Chrome 的登录状态,并为本任务创建独占的后台 capture target,不另开调试端口、不接管用户已有标签。backend:auto(默认)、current-chrome、headless。auto按用途与身份选择后端,不凭异常猜测。browser_identity:普通capture默认current;自动化与 Web 回归默认anonymous,使用自有 headless,不借用用户 Chrome。扩展缺失或不可用时明确失败,不再悄悄变成匿名访问(兼容性变化见 README)。
无头场景固定依赖本插件安装的 playwright-core@1.58.2 对应 chromium-headless-shell(revision 1208),不扫描其他项目缓存、不回退系统 Chrome。README 写明:目前仅 macOS arm64 有完整固定校验;Linux / Windows 等为 unsupported/unverified。
产物¶
本地入口为 index.html,资源在 assets/;另有单文件 index.mhtml,以及 source.png、local.png、report.json、manifest.json。
离线 HTML 与 MHTML 会移除脚本与主动跳转,并加限制性 CSP;不会复制原站 API、登录态、脚本或交互功能。采集会滚动页面以加载懒加载内容,但不自动点击通用按钮;需点击或接口才出现的内容可能缺失。
只有资源完整、离线预览与内容检查通过、浏览器清理成功,结果才标为 completed;已保存但检查未通过为 partial,原因在 report.json。
DSH 侧栏与权限¶
启用后侧栏出现 「网页获取」。任务绑定创建时的 loaded Session;列表、状态、取消、打开本地文件均按 sessionId 隔离,跨会话请求返回 404。
read-only:拒绝采集。workspace-write:仅允许规范化工作区、/tmp与平台临时目录;默认输出~/Downloads/huoqu/在此策略下会被拒绝,应改到工作区或临时目录。danger-full-access:不限制写入位置。
侧栏任务串行,最多 4 个运行或排队;终态任务最多保留 1 小时、最多 40 条。所有 HTTP 操作须带有效 sessionId,缺失或畸形返回 400。
安装与启用¶
官方 README 未提供 dsh plugin add 一类命令,安装方式为复制目录并在 desktop profile 中插入插件入口。
1、将插件复制到 Harness 插件目录:
$DSH_HOME/plugins/huoqu
2、在 $DSH_HOME/profiles/desktop/cordis.patch.yml 写入:
- insert:
- id: huoqu
name: ../../plugins/huoqu/lib/index.js
3、完全退出 DeepSeek Harness(macOS:⌘Q),再打开并建立新会话。Host 修改与新工具 schema 需重启/新会话才能加载;仅保存源码不会更新正在运行的 Host。
若使用 headless 后端,需在本插件目录安装固定浏览器(README 示例):
/usr/local/bin/node /usr/local/lib/node_modules/npm/bin/npm-cli.js ci --ignore-scripts
PLAYWRIGHT_BROWSERS_PATH=0 /usr/local/bin/node node_modules/playwright-core/cli.js install chromium-headless-shell
也可执行 npm run install:headless(使用 Playwright 默认缓存路径,语义与 PLAYWRIGHT_BROWSERS_PATH=0 不同,见 README)。
安装前请自行阅读仓库源码与许可证;插件以当前 DSH 进程权限运行,输出目录与网络访问均受会话文件策略约束。
典型用法¶
侧栏采集¶
在新会话中打开侧栏「网页获取」,输入 URL 并选择输出目录(须符合当前会话文件策略),提交后等待任务完成,再通过侧栏打开本地副本或查看报告。
程序化调用示例¶
README 给出的 JSON 输入示例(Web 回归、匿名 headless):
{"url":"https://example.com/","purpose":"web-regression","browser_identity":"anonymous","backend":"headless","output_dir":"/tmp/new-capture"}
Node 直接调用 capturePage(input, signal, access, {cwd, scope:{sessionId,taskId}}) 时必须显式提供运行归属(cwd 与 scope),请求 wire 不能伪造 scope/cwd/ownership。
普通 purpose=capture 且默认身份 current 时,需配套 Chrome 扩展提供 openCaptureSession;无扩展时默认 current 场景会明确失败。
适用场景与注意¶
适合:需要把「某一时刻已渲染页面」归档到本地、与 DSH 会话权限一致地写入工作区或临时目录;需要 MHTML 单文件副本或带 report.json 的 partial/completed 判定。
不适合或需知限制:
- 期望离线副本仍具备原站登录后动态交互或私有 API 行为。
- 依赖大量「必须点击才出现」的内容,且未在采集前自行处理。
- 非 macOS arm64 上依赖 README 描述的固定 headless 校验路径时,需接受 unsupported/unverified 说明,并按文档自行验证。
输出目录必须为空,或能通过 manifest.json、report.json 确认是既有 huoqu 副本;无法确认归属时拒绝覆盖。
结尾¶
huoqu 把「网页当前渲染结果 → 本地离线 HTML/MHTML」收进 DSH 插件与侧栏任务模型,并区分 Chrome 扩展采集与固定 headless、会话级文件策略。若要在 Harness 里做可归档的页面快照,可从目录页与仓库 README 对照版本 0.2.2 安装验证。