为本地编码智能体提供网页研究的持久化与检索能力,跑在 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 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
janpauldahlke/dsh-web-missions
为本地编码智能体提供网页研究的持久化与检索能力,跑在 DeepSeek Harness 网页 UI 里。
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 21,780未汉化DSH
73.5
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 1,947已汉化MCP
72.7
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,347已汉化DSH
71.9
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13917 个插件含 PR 收录与…
★ 343已汉化DSH
71.6