dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
Manage archived sessions from DeepSeek Harness Settings: view, unarchive, delete, batch delete, or delete all — the archived-session surface the harness itself does not ship.
中文:README.zh.md
The plugin is UI-only. It derives the archived-session rows by cross-referencing the live workspaces.list archive set with sessions.list summaries, and every action rides the core workspace.unarchiveSession / workspace.deleteSession RPCs through the workspaces runtime service. Nothing polls, and nothing runs on the host side beyond the RPCs themselves.

The Archived Sessions entry sits in Settings right after Plugins. Rows are grouped by workspace with a small group title; sessions no workspace accounts fall into the Ungrouped bucket at the end. Batch actions — unarchive, delete selected, delete all — live in the toolbar above the list.
The harness does not ship the unarchive/delete APIs yet (no upstream release channel), so a source checkout of deepseek-harness with the bundled patch applied is required today. On a harness without the APIs the settings page shows the archive list read-only with an upgrade notice.
The plugin itself never needs to be built. The repository ships the prebuilt host entry and browser bundle in lib/ (committed), so installing is a clone/pull plus one CLI command — no pnpm install in this repo, no prepare scripts, no allowBuilds approvals. The only build in the whole flow is the harness's own, for the core patch in step 1.
From this repository, against your deepseek-harness checkout (pinned to base commit 47f943859b; a different commit may need git apply -3):
node scripts/apply-patch.mjs /path/to/deepseek-harness
cd /path/to/deepseek-harness
npm run build:lib:host
npm run build:lib:client
The patch (patches/dsh-core-unarchive-delete.patch) adds the two workspace RPCs, the session-persistence delete seam with JSONL/SQLite backends, the client-runtime actions, and their tests. It is additive only — no existing behavior changes.
From a local clone (recommended for iterating) — installs as a link: the committed lib/ is served as-is, and git pull in the clone updates the plugin without any build:
git clone https://github.com/my-dsh-plugin/session-archive-manager.git
pnpm dsh plugin add --profile web /path/to/session-archive-manager
(dsh CLI from your harness checkout; set DSH_HOME to your harness home if it is not the default ~/.dsh.)
Straight from git — pnpm fetches the repository and uses the committed lib/; no build script runs:
pnpm dsh plugin add --profile web github:my-dsh-plugin/session-archive-manager
dsh plugin add adds the dependency and reconciles the dsh.profile.bundles layer list. The manual equivalent is editing the profile's package.json:
"dependencies": {
"dsh-session-archive-manager": "link:/path/to/session-archive-manager"
}
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-session-archive-manager"]
}
}
then pnpm install inside the profile directory.
Restart the harness (npx @deepseek-ai/dsh web or however you launch it). The Archived Sessions entry appears in Settings, after Plugins.
dsh plugin add, verify the bundles list).The patch is pinned to a harness base commit, so it drifts as the harness upstream moves. When your checkout updates, regenerate and re-verify the patch before committing:
node scripts/regenerate-patch.mjs /path/to/deepseek-harness
git -C /path/to/deepseek-harness stash
git -C /path/to/deepseek-harness apply --check /path/to/session-archive-manager/patches/dsh-core-unarchive-delete.patch
git -C /path/to/deepseek-harness stash pop
The regeneration covers only this plugin's core extension (unrelated local changes are excluded automatically). Bump the base via DSH_PATCH_BASE=<commit> when the extension is re-based onto a newer upstream commit.
Building is only for changing the plugin itself — consumers never build. It requires the sibling deepseek-harness checkout (../deepseek-harness) because the client bundle is produced by the shared harness preset:
pnpm install
pnpm test # vitest: controller and row-assembly suites
pnpm typecheck # tsc -b over src + tests against the harness checkout
pnpm build # tsc declarations + tsdown host + client bundle into lib/
After a build, commit lib/ so consumers keep getting the prebuilt artifacts (a git pull is all a link-installed profile needs to pick up a change).
Apache-2.0
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。