DSH Plugins Marketplace

DSH Plugins

Plugins

/

Terminal & Clients

/

dsh-web-missions

d

dsh-web-missions

Manifest valid

Persist-and-find web research for DeepSeek Harness local agents (browser39 fetch, mission store, lexical find, budget + allowlist + depth fence). No cloud search in v0.

UI (client)hasBundlePatch

dsh-web-missions

Persist-and-find web research for local coding agents in the DeepSeek Harness web UI.

npm package and GitHub repo share the name dsh-web-missions (janpauldahlke/dsh-web-missions).

A mission is a small, budgeted web-fetch unit: the agent pulls a handful of pages through a local browser39 headless browser, every fetched page becomes a durable artifact in a per-project store, and the agent finds it back lexically later — across sessions. Budget, an egress allowlist, and a depth fence bound the work; cookie-banner consent is handled deterministically by the host, not the model. No cloud search, no embeddings, no vector store, no LLM calls inside the plugin.

Related plugins (same dual-face dsh.bundle shape for the web rightbar):

PluginRepo
Bounded-file agent memorydsh-memento
Long-horizon task statusdsh-local-long-horizon
Process & port lifecycledsh-agent-processes
NVIDIA GPU util / VRAM / powerdsh-gpu-monitor-nvml
Local LLM endpoint / slot healthdsh-slot-health
Local web discovery (SearXNG / browser39 search)dsh-web-discovery

This package: dsh-web-missions · source janpauldahlke/dsh-web-missions.

Verified against DeepSeek Harness 0.2.1-alpha.2 (dsh web).


Requirements

  • DeepSeek Harness web profile (dsh web).
  • Node.js ≥ 20 to build.
  • @aquintanar/browser39 2.0.0 (the only runtime dep) — a local headless browser whose platform binary ships as an optional dependency, so no system Chrome is required.
  • Happy-path companion dsh-web-discovery (same profile, curated version — see that package’s HANDOVER.md). Provides discovery_search (SearXNG and/or browser39 search) as the opener ritual step. Without it, seed URLs + mission_fetch still work (no_engine is supported); do not expect discovery_search in the tool list. Not folded into this package.

Screenshots

Light theme, matching the DSH default. Full-width shots (stacked — narrow rightbar crops badly in two-column tables).

In the rightbar (chat + Missions pane):

Missions pane open

Board (recents):

Web Missions board

Detail (conclusion delivered):

Mission detail

Pages ledger (full / blocked color grammar):

Visited pages


What you see

  • Web Missions rightbar — board (active XOR recent) and per-mission detail as collapsible cards (goal → conclusion → briefing → pages → budget → hints).
  • Color grammar — green = conclusion delivered / page full; amber = thin or hints attention; red = blocked / budget exhausted. Status pills stay grey (lifecycle, not quality).
  • Budget — remaining/max fetch_calls plus depth/host fence in the card preview; refusal gates (allowlist, depth, host-breadth) cost zero.
  • Consent note — when a cookie banner was auto-accepted, the receipt says so.

Install

From npm (recommended)

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

From GitHub

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

From a git checkout (developers)

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)"

Restart (or boot) dsh web so the host + client faces load:

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

Uninstall:

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

Agent tools

ToolPurpose
mission_startStart a mission — store dir + mission.md + recents row. Optional seed URLs (depth 0).
mission_listBoard — active + recents.
mission_statusManifest + visited ledger (+ optional discovery if the companion recorded candidates).
mission_fetchFetch via local browser39 (cache hits free; force re-fetches).
mission_findLexical search over stored pages only — never fetches.
mission_readRead one stored chunk (verbatim text + quality). Zero budget; text is untrusted.
mission_verifyClaim check: citations resolve to full artifacts; numbers appear in cited pages.
mission_stopStop the mission and run the same claim check.

Ritual: fetch → find → read → note → verify → stop. Every fetch is a receipted artifact (p-…) with page_quality, chunk_count, next_step_hint, consent flags, and budget. Blocked pages are stored too.


Egress, budget + depth

  • Allowlist — off by default. When "allowlist": "on" in <cwd>/.dsh/web-missions/config.json, <cwd>/.dsh/allowlist.txt gates egress (one pattern per line, # comments; ** = allow all). A missing file is seeded with a template; empty patterns → allowlist_empty; a miss → allowlist_denied (message names the off-switch). Cache hits are not re-gated.
  • Budget — each mission has a used/total fetch budget. Cache hits and refusal gates cost zero.
  • Depth fence — maxDepth (default 2) + maxDiscoveredHosts (default 3) bound crawl breadth/depth.

Config knobs: <cwd>/.dsh/web-missions/config.json (overrides optional ~/.dsh/web-missions/config.json) — allowlist, snippetWindow, previewChars, readChars, sampleLinks, findLimit, maxDepth, maxDiscoveredHosts, defaultFetchBudget, numberFormatCheck, …


Privacy

  • Local only — fetches run through a local browser39 headless browser and are rendered to markdown locally. No search engine, no cloud API.
  • Scoped sessions — browser39 sessions live under ~/.dsh/browser39/sessions/<host>/ (persisted, so an accepted consent survives a refetch); the mission store lives under <cwd>/.dsh/web-missions/.
  • Consent is deterministic — cookie-banner acceptance is host code behind the receipt (not a model judgment). Shipped vocabulary: assets/consent_profiles.toml (generic labels for every host; optional [[hosts]] only to prioritize site-unique labels). Per-project override: copy that file to <cwd>/.dsh/web-missions/consent_profiles.toml (replaces wholesale — do not grow an endless host list in the package).
  • No LLM calls, no embeddings, no vector store inside the plugin.

Surfaces

SurfacePath / name
Mission store<cwd>/.dsh/web-missions/<id>/ (manifest.json, mission.md, artifacts/, receipts.json, links.json, config.json)
Egress allowlist<cwd>/.dsh/allowlist.txt
browser39 sessions~/.dsh/browser39/sessions/<host>/
Consent profilesassets/consent_profiles.toml (generic + optional hosts; cwd override replaces wholesale)
HTTPGET /api/web-missions/health · /missions · /missions/:id · /sessions · POST …/stop · …/recents/clear · …/clear-all
UIRightbar Web Missions (board + detail)

Design in five lines

  1. A mission is a budgeted fetch unit — seed URLs + a used/total budget; the store is the unit of persistence.
  2. Every fetch is a receipted artifact — chars, page_quality, consent_*, budget — so claims stay verifiable and dead URLs are known.
  3. Find is read-only — mission_find ranks the store lexically (no embeddings, no vectors) and never triggers a fetch.
  4. Three fences, zero-cost refusals — budget, egress allowlist, and a depth / host-breadth fence bound the work without wasting budget.
  5. Consent is host code — deterministic cookie-banner handling behind the receipt, never a model judgment.

Deliberately absent: cloud search, embeddings, vector stores, and LLM calls inside the plugin.


Architecture

Dual-face package (same bar as the other web rightbar plugins):

  • Host (lib/index.js, ESM) — mission store, browser39 fetch, consent tactic, lexical find, egress / budget / depth fences, HTTP, tools.
  • Client (lib/client.js, CJS ModuleLoader factory) — the Web Missions rightbar (board + detail).
  • Glue — cordis.patch.yml + dsh.bundle / dsh.client in package.json.
  • Build — build.mjs calls dsh-build-tools (buildDshPlugin()); lib/ is tracked so prepare can fall back when the toolchain is unavailable.

The @aquintanar/browser39 runtime dep carries the platform headless-browser binary as an optional dependency; BROWSER39_BIN overrides the binary path.


Develop / test

Hermetic checks live under test/ (same bar as other dsh-* plugins / dsh-build-tools). Operator boot scripts are local-only under agent/scripts/ (gitignored).

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

License

MIT — see LICENSE.

Comments

Loading…

From the same category

dsh-TUI

by ccch1mneyyy

DSH 官方公众号收录的 TUI 补位插件:Claude Code 风,鲸鱼顶栏/实时状态/流式思考/双击 Esc 回滚/上下文进度+TPS。npm 一键装。 DSH official WeChat featured TUI plugin — Claude Code style: whale bar, live status, streaming thoughts, double-Esc rol

Terminal & ClientsManifest valid

★ 4.8k

↓ 11.9k/wk

MIT

TypeScript

Oct 18, 2026

dsh plugin --profile terminal add @deepseek-harness-tui/dsh-tui

by strukto-ai

The World's First Virtual Terminal for AI Agents

Terminal & ClientsManifest valid

★ 3.7k

↓ 374/wk

Apache-2.0

TypeScript

Oct 18, 2026

dsh plugin --profile agent add @struktoai/mirage-dsh

by bowenliang123

The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details,

Tools & CapabilitiesUI & ExperienceTerminal & ClientsManifest valid

★ 2.3k

↓ 52.1k/wk

Apache-2.0

TypeScript

Oct 18, 2026

dsh plugin --profile web add dsh-context

by huiliyi37

官方 DeepSeek Harness 的交互式终端 UI 插件:自研 ANSI 极简交互渲染、流式 Markdown/工具卡、16+ 主题、slash 命令与选择器、输入历史与本地偏好持久化、LSP 诊断、memory记忆,很丝滑的开发体验。

Terminal & ClientsManifest valid

★ 287

↓ 493/wk

Apache-2.0

TypeScript

Sep 30, 2026

dsh plugin --profile terminal add @huiliyi37/dsh-tianshu-tui

by Hilbert-beinghappy

面向 DeepSeek Harness 的 Claude Code 风格终端界面,支持 Windows、macOS 与 Linux,兼容透明终端、VS Code 主题和自定义配色。

Terminal & ClientsManifest valid

★ 196

↓ 108/wk

MIT

TypeScript

Oct 13, 2026

dsh plugin --profile web add seektty

by c3cvld7aag

富江DSH完美破甲|富江破甲 DSH 本地插件,内置提示词规则,支持 Windows 一键安装、环境自动准备与一键卸载,全中文使用说明。

Terminal & ClientsManifest valid

★ 121

JavaScript

Oct 3, 2026

dsh plugin --profile web add fujiang-armor