🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

网页任务研究 janpauldahlke/dsh-web-missions

DeepSeek Harness
janpauldahlke11 天前有提交已提供中文文档扫描:含敏感能力

为本地编码智能体提供网页研究的持久化与检索能力,跑在 DeepSeek Harness 网页 UI 里。

31.4/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add janpauldahlke/dsh-web-missions
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · market
装得上吗
本站尚未做安装检查
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 75 处,展示前 22 条)
  • 写入本地文件
    lib/index.js:200
    mkdirSync(dir, { recursive: true });
  • 读取本地文件
    lib/index.js:202
    if (!existsSync(cfg)) {
  • 写入本地文件
    lib/index.js:203
    writeFileSync(cfg, renderSessionConfig(dir));
  • 读取本地文件
    lib/index.js:210
    entries = readdirSync(root, { withFileTypes: true });
  • 删除本地文件递归
    lib/index.js:219
    rmSync(sessionDirFor(root, host), { recursive: true, force: true });
  • 读取本地文件
    lib/index.js:227
    entries = readdirSync(dir);
  • 读取本地文件
    lib/index.js:234
    const mtime = statSync(join(dir, name2)).mtime.toISOString();
  • 写入本地文件
    lib/index.js:314
    writeFileSync2(tmp, JSON.stringify(value, null, 2) + "\n");
  • 写入本地文件
    lib/index.js:315
    renameSync(tmp, path);
  • 写入本地文件
    lib/index.js:319
    writeFileSync2(tmp, text, "utf8");
  • 写入本地文件
    lib/index.js:320
    renameSync(tmp, path);
  • 读取本地文件
    lib/index.js:324
    return JSON.parse(readFileSync(path, "utf8"));
  • 读取本地文件
    lib/index.js:347
    return readdirSync2(pagesDir, { withFileTypes: true }).filter((e) => e.isDirectory()).length;
  • 删除本地文件递归
    lib/index.js:726
    for (const id of ids) rmSync2(missionDir(root, id), { recursive: true, force: true });
  • 删除本地文件
    lib/index.js:727
    rmSync2(indexPath(root), { force: true });
  • 发起网络请求
    lib/index.js:1527
    async fetch(url, opts) {
  • 删除本地文件递归
    lib/index.js:1615
    rmSync3(workdir, { recursive: true, force: true });
  • 执行外部命令来自配置/变量
    lib/index.js:1626
    child = spawn(bin.cmd, args, {
  • 删除本地文件递归
    lib/index.js:1838
    if (e.isDirectory()) rmSync4(join7(dir, e.name), { recursive: true, force: true });
  • 删除本地文件
    lib/index.js:1839
    else rmSync4(join7(dir, e.name), { force: true });
  • 发起网络请求
    lib/index.js:2506
    let page = await fetcher.fetch(url, { sessionKey: hostSessionKey(url) });
  • 发起网络请求
    lib/client.js:449
    const res = await fetch(url, init);
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 插件:为本地智能体持久化并检索网页调研。带预算的 browser39 抓取、任务存储、词法查找、允许清单 + 深度围栏、Missions 右侧栏。无云端搜索,无向量嵌入。

README

由 DeepSeek 最新模型翻译生成
dsh-web-missions 为本地编码智能体提供网页研究的持久化与检索能力,跑在 DeepSeek Harness 网页 UI 里。 npm 包和 GitHub 仓库同名,都叫 dsh-web-missions (janpauldahlke/dsh-web-missions)。 任务(mission)是一个带预算的小型网页抓取单元:智能体通过本地 browser39 无头浏览器拉取少量页面,每个抓到的页面都会变成持久化产物,存进按项目划分的存储里,之后智能体可以按词法把它找回来——跨会话也能找。预算、出站白名单和深度围栏共同约束工作量;cookie 横幅的同意处理由宿主确定性地完成,不交给模型。没有云端搜索,没有 embedding,没有向量库,插件内部也不调用 LLM。
展开完整文档(README 剩余 1 节)
dsh-web-missions

为本地编码智能体提供网页研究的持久化与检索能力,跑在 DeepSeek Harness 网页 UI 里。

npm 包和 GitHub 仓库同名,都叫 dsh-web-missions
(janpauldahlke/dsh-web-missions)。

任务(mission)是一个带预算的小型网页抓取单元:智能体通过本地 browser39 无头浏览器拉取少量页面,每个抓到的页面都会变成持久化产物,存进按项目划分的存储里,之后智能体可以按词法把它找回来——跨会话也能找。预算、出站白名单和深度围栏共同约束工作量;cookie 横幅的同意处理由宿主确定性地完成,不交给模型。没有云端搜索,没有 embedding,没有向量库,插件内部也不调用 LLM。

相关插件(同样采用双面 dsh.bundle 形态,用于网页右侧栏):

| 插件 | 仓库 |
| 有界文件的智能体记忆 | dsh-memento |
| 长周期任务状态 | dsh-local-long-horizon |
| 进程与端口生命周期 | dsh-agent-processes |
| NVIDIA GPU 利用率 / 显存 / 功耗 | dsh-gpu-monitor-nvml |
| 本地 LLM 端点 / 槽位健康 | dsh-slot-health |
| 本地网页发现(SearXNG / browser39 search) | dsh-web-discovery |

本包:dsh-web-missions
· 源码 janpauldahlke/dsh-web-missions。

已在 DeepSeek Harness 0.2.1-alpha.2(dsh web)上验证。

环境要求

- DeepSeek Harness 网页配置档(dsh web)。
- 构建需要 Node.js ≥ 20。
- @aquintanar/browser39 2.0.0(唯一的运行时依赖)——本地无头浏览器,平台二进制以可选依赖形式分发,所以不需要系统装 Chrome。
- 顺利路径上的搭档 dsh-web-discovery(同一配置档,版本经过筛选——见该包的 HANDOVER.md)。它提供 discovery_search(SearXNG 和/或 browser39 search),作为开场仪式步骤。没有它,种子 URL + mission_fetch 依然可用(支持 no_engine);别指望工具列表里会出现 discovery_search。它没有并入本包。

截图

浅色主题,与 DSH 默认一致。全宽截图(纵向堆叠——右侧栏太窄,放进双列表格会被裁得很难看)。

右侧栏中(聊天 + Missions 面板):

Missions pane open

看板(最近记录):

Web Missions board

详情(结论已交付):

Mission detail

页面账本(完整 / 被拦截的配色语法):

Visited pages

你会看到什么

- Web Missions 右侧栏 — 看板(进行中 XOR 最近)和单个任务详情,都做成可折叠卡片(目标 → 结论 → 简报 → 页面 → 预算 → 提示)。
- 颜色语法 — 绿色 = 结论已交付 / 页面完整;琥珀色 = 内容单薄或提示需关注;红色 = 受阻 / 预算耗尽。状态胶囊保持灰色(表示生命周期,不表示质量)。
- 预算 — 卡片预览里显示剩余/最大 fetch_calls,以及深度/主机围栏;拒绝闸门(allowlist、深度、主机广度)不消耗预算。
- 同意说明 — 如果 cookie 横幅被自动接受,回执里会写明。

安装

从 npm 安装(推荐)

dsh plugin --profile web add dsh-web-missions
restart dsh web (or rely on live patch reload), then hard-refresh the browser

从 GitHub 安装

dsh plugin --profile web add github:janpauldahlke/dsh-web-missions

从 git checkout 安装(开发者)

git clone https://github.com/janpauldahlke/dsh-web-missions.git
cd dsh-web-missions
npm install && npm run build
dsh plugin --profile web add "$(pwd)"

重启(或启动)dsh web,让宿主端和客户端两面加载:

env -u DSH_WEB_URL -u DSH_SHELL -u DSH_SESSION_ID dsh web --no-open

卸载:

dsh plugin --profile web remove dsh-web-missions
restart the web instance that had the plugin

智能体工具

| 工具 | 用途 |
| mission_start | 启动任务 — 存储目录 + mission.md + 最近记录行。可选种子 URL(深度 0)。 |
| mission_list | 看板 — 进行中 + 最近。 |
| mission_status | 清单 + 已访问台账(如果伴随程序记录了候选,还可选 discovery)。 |
| mission_fetch | 通过本地 browser39 抓取(缓存命中免费;force 强制重新抓取)。 |
| mission_find | 只在已存储页面上做词法搜索 — 从不抓取。 |
| mission_read | 读取一个已存储分块(原文 + 质量)。零预算;文本不可信。 |
| mission_verify | 声明核查:引用能解析到 full 产物;数字出现在被引页面里。 |
| mission_stop | 停止任务,并运行同样的声明核查。 |

流程:fetch → find → read → note → verify → stop。每次抓取都是一个带回执的产物(p-…),包含 page_quality、chunk_count、next_step_hint、同意标志和预算。被拦截的页面也会存储。

出口、预算 + 深度

- Allowlist — 默认关闭。当 <cwd>/.dsh/web-missions/config.json 里设置 "allowlist": "on" 时,<cwd>/.dsh/allowlist.txt 会管控出口(每行一个模式,# 注释;* = 全部允许)。文件缺失时会用模板初始化;模式为空 → allowlist_empty;未命中 → allowlist_denied(消息里会点名关闭开关)。缓存命中不会重新过闸。
- 预算 — 每个任务都有 used/total 抓取预算。缓存命中和拒绝闸门不消耗预算。
- 深度围栏 — maxDepth(默认 2)+ maxDiscoveredHosts(默认 3)限制爬取的广度和深度。

配置项:<cwd>/.dsh/web-missions/config.json(覆盖项可选 ~/.dsh/web-missions/config.json)— allowlist、snippetWindow、 previewChars、readChars、sampleLinks、findLimit、maxDepth、 maxDiscoveredHosts、defaultFetchBudget、numberFormatCheck、……

隐私

- 只在本地 — 抓取走本地 browser39 无头浏览器,并在本地渲染成 markdown。不碰搜索引擎,不碰云 API。
- 会话有作用域 — browser39 会话放在 ~/.dsh/browser39/sessions/<host>/(会持久化,所以已接受的同意在重新抓取后依然有效);任务存储放在 <cwd>/.dsh/web-missions/。
- 同意是确定性的 — cookie 横幅的接受逻辑是回执背后的宿主代码(不是模型判断)。内置词表: assets/consent_profiles.toml(每个宿主都用 generic 标签;可选的
[[hosts]] 只用来给站点独有的标签排优先级)。按项目覆盖:把该文件复制到 <cwd>/.dsh/web-missions/consent_profiles.toml(整体替换 — 不要在包里堆一份没完没了的宿主列表)。
- 插件内部不调用 LLM,不做嵌入,不用向量库。

界面

| 界面 | 路径 / 名称 |
| 任务存储 | <cwd>/.dsh/web-missions/<id>/(manifest.json、mission.md、artifacts/、receipts.json、links.json、config.json) |
| 出站允许列表 | <cwd>/.dsh/allowlist.txt |
| browser39 会话 | ~/.dsh/browser39/sessions/<host>/ |
| 同意配置档 | assets/consent_profiles.toml(generic + 可选宿主;cwd 覆盖为整体替换) |
| HTTP | GET /api/web-missions/health · /missions · /missions/:id · /sessions · POST …/stop · …/recents/clear · …/clear-all |
| UI | 右侧栏 Web Missions(看板 + 详情) |

设计五句话

1. 任务是带预算的抓取单元 — 种子 URL + 一份 used/total 预算;存储就是持久化的单元。
2. 每次抓取都是带回执的产物 — chars、page_quality、 consent_、预算 — 所以结论可验证,死链也能被发现。
3. 查找是只读的 — mission_find 按词法给存储排序(不用嵌入,不用向量),绝不触发抓取。
4. 三道围栏,零成本拒绝 — 预算、出站允许列表、深度 / 宿主广度围栏,在不浪费预算的前提下限定工作量。
5. 同意是宿主代码 — 确定性的 cookie 横幅处理藏在回执背后,绝不是模型判断。

刻意不做:云搜索、嵌入、向量库,以及插件内部的 LLM 调用。

架构

双面包(与其他 web 右侧栏插件同一标准):

- 宿主(lib/index.js,ESM)— 任务存储、browser39 抓取、同意策略、词法查找、出站 / 预算 / 深度围栏、HTTP、工具。
- 客户端(lib/client.js,CJS ModuleLoader 工厂)— Web Missions 右侧栏(看板 + 详情)。
- 胶水 — cordis.patch.yml + package.json 里的 dsh.bundle / dsh.client。
- 构建 — build.mjs 调用 dsh-build-tools(buildDshPlugin());lib/ 会被跟踪,这样工具链不可用时 prepare 还能回退。

@aquintanar/browser39 这个运行时依赖把平台的无头浏览器二进制作为可选依赖带上;BROWSER39_BIN 可以覆盖二进制路径。

开发 / 测试

封闭检查放在 test/ 下(与其他 dsh-* 插件 / dsh-build-tools 同一标准)。运维启动脚本只放在本地 agent/scripts/ 下(已 gitignore)。

npm run build
npm run smoke # tool-face + untrusted + pane + r4 + conclusion-md
npm run smoke:consent # consent profiles + tactic
npm run smoke:allowlist # egress allowlist

许可

MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓janpauldahlke/dsh-web-missions
分享 · DeepSeek Harness Hub
janpauldahlke/dsh-web-missions

为本地编码智能体提供网页研究的持久化与检索能力,跑在 DeepSeek Harness 网页 UI 里。

回到顶部