
Research
/Security News
PolinRider Spreads Through Compromised GitHub Accounts and Packagist
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.
Batteries-included capability suite for DeepSeek Harness: MCP manager with lazy proxy + OAuth, parallel steerable subagents, side conversations, image generation — one install, every piece verified end to end.
One install that turns a stock DeepSeek Harness into a batteries-included agent workstation.
dsh plugin --profile web add dsh-work-x dsh-better-sidebar
Restart dsh (plugins mount at startup). One line, two packages: the suite,
and the sidebar its Memory/Tasks/MCP workbench tabs live in — the sidebar IS
the primary form of the suite's product UI. (Headless/CLI profiles can drop
dsh-better-sidebar; DSH has no way yet for one plugin to auto-install a
companion — proposed upstream —
which is the only reason this is two names instead of one.) That is the entire setup: the suite
carries the pi2dsh engine and six
capability packages, versions pinned to combinations that have been verified
end to end on a real DSH loop — never "should work", always "was watched
working".
一条命令,把官方 DSH 变成开箱即用的全能 agent 工作台。装完重启 dsh 即可; 所有组件版本锁死在真机端到端验收过的组合上。
| Capability | Stock DSH | dsh-x |
|---|---|---|
| MCP | Config-file servers, statically mounted; every tool costs context window | Lazy proxy (one tool + on-demand search/describe — dozens of servers without eating context), in-session manager, OAuth flows, MCP Apps (ui://), prompts→slash-commands, elicitation, sampling, fast cancellation — full verified matrix |
| Subagents | Low-level agent registry, no product surface | Spawn / parallel / background delegation, mid-run steering, resume (in-session and across restarts), stop-with-parent, per-child model & thinking level, live inheritance of your /model switches — acceptance report |
| Side conversations | — | /btw <question>: ask something off-topic without polluting the main context; answer lands in a side panel |
| Image generation | — | Codex-backed image generation as a normal tool call, generated pixels shown inline (bring your own Codex credential) |
| Persistent memory | Sessions forget everything | Cross-session facts, corrections and preferences (memory_add/memory_search, /memory-* commands), plus a Settings → Memory page on the web: browse and search what the agent remembers, pin/unpin standing rules with a hard budget |
| Background tasks | A long tool call pins the conversation | bg_run starts named shell jobs and keeps talking, bg_logs reads output mid-run, plus a tasks chip on the web: it joins the composer's status row while jobs run — live output, one-click kill |
The suite: pi-mcp-adapter ·
@tintinweb/pi-subagents ·
pi-btw ·
@crazygit/pi-codex-image-gen ·
pi-hermes-memory ·
pi-background-tasks,
running unmodified through the pi2dsh compatibility engine.
pi-hermes-memory builds a native SQLite store (better-sqlite3); if the
install stops with ERR_PNPM_IGNORED_BUILDS, run pnpm approve-builds inside
the profile directory (select better-sqlite3) and re-run the add — that gate
is the host's own supply-chain approval, not an error. Vision companion
routes are off in this suite; subscription logins stay whatever your DSH
profile already has.
dsh-work-x targets dsh web (and the desktop shells that wrap it) as its primary
surface. The automated regression drives a real browser against a clean
install and asserts each bundled package's own command is offered by the
composer — not that a file exists somewhere.
dsh plugin --profile web add dsh-work-x dsh-better-sidebar
dsh web --port 5179
dsh-better-sidebar is the
community sidebar the suite's product UI seats into: its Tasks page shows your
subagents natively (click through to steer or stop them), and dsh-work-x adds an
MCP tab there — this session's servers grouped by layer (project /
global), with per-project enable/disable. A machine-wide view of the same
servers lives in Settings → MCP and works with or without the sidebar.
With the sidebar installed, Memory and Jobs tabs appear there too —
the same panels in workbench form. Without
dsh-better-sidebar everything still runs — Settings → Memory and the tasks
chip carry the same functionality. (DSH has no way yet for one plugin to declare a companion bundle —
we've proposed one —
so the install command names both.)
On the DSH
0.1.2-alphaline? The sidebar ships per DSH generation: installdsh-better-sidebar@0.18.0-alpha.0there (its latest tag serves the rc lines). dsh-work-x itself is one build for every supported generation.
Primary form — the sidebar. With the one-line install above, the right sidebar (VSCode-style, per session) carries the suite's workbench tabs: open the + next to the tab strip and add Memory or Jobs — they sit beside Files, Terminal, Source Control, and stay while you chat.
pi-hermes-memory's own /memory-pin command, so the store's
single-writer anti-injection design holds; the memory list itself is
read-only by design — edits and deletions go through the agent's memory
tools so store and search index never drift./kill.Without the sidebar (headless-leaning installs) the same functionality stays reachable: Settings → Memory is the full memory page, and while jobs run a small clickable "N tasks running" chip joins the host's own status row under the composer — click for the same panel; no jobs, no chip. The side-chat dot stays the only floating piece either way.
Verified by the automated regression end to end on clean installs: the memory surfaces show a fact that exists only in the plugin's store, a pin round-trips through STANDING.md and back out, and the kill provably ends a 180-second job early — asserted from the store files and task snapshots on disk, not from page text.
Override engine config in your profile's user patch layer
($DSH_HOME/profiles/<p>/cordis.patch.yml), targeting the row by id — never
insert a second row:
- id: pi2dsh
config:
exclude: ["pi-btw"] # drop a suite member you don't want
Plugin-specific settings follow each plugin's own environment variables and slash commands, as documented by the plugin.
dsh-work-x is a normal DSH bundle. Its patch mounts the pi2dsh engine (re-exported
through this package, so it resolves under pnpm's isolated layout), and the
engine reads this package's pi2dsh.suite manifest — an explicit list, one
dependency-hop from your profile — and mounts each member exactly as if you
had dsh plugin add-ed it yourself. No directory scanning, no forks, no
patched DSH internals; remove it with dsh plugin remove dsh-work-x and the whole
suite is gone.
dsh-work-x is the curated product; pi2dsh is the engine and remains independently installable for anyone who wants to pick their own Pi packages. Anything verified for pi2dsh is inherited here at the same version pins.
FAQs
Batteries-included capability suite for DeepSeek Harness: MCP manager with lazy proxy + OAuth, parallel steerable subagents, side conversations, image generation — one install, every piece verified end to end.
The npm package dsh-work-x receives a total of 67 weekly downloads. As such, dsh-work-x popularity was classified as not popular.
We found that dsh-work-x demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.

Company News
Allow myself to introduce... myself.