DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-zen-remote

Zen Remote

一个插件、两种角色:主服务端把 DeepSeek Harness 变成手机能安全访问的 PWA(移动端界面、配对码网关、Web Push),并把选定会话共享给已配对的桌面端;子客户端在另一台 DSH 桌面端的侧边栏里远程使用这些会话。One DSH plugin, two roles: the host turns DeepSeek Harness into a phone-reachable PWA (mobile UI, pairing-code gateway behind your own rev

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:KyoMio/dsh-zen-remote#9c2c622ca906a56a406c2d3d94a6936a01c423c8
README兼容性版本
Host roleShared sessionsClient settings

兼容性与来源证明

Zen Remote 以 dsh-zen-remote 发布,当前版本为 2.3.8。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/11/4

版本

2.3.8stable
2026/11/3
2.3.7stable
2026/11/2
2.3.6stable
2026/10/31
查看其余 40 个版本收起版本
2.3.5stable
2026/10/30
2.3.4stable
2026/10/28
2.3.3stable
2026/10/28
2.3.2stable
2026/10/26
2.3.1stable
2026/10/26
2.2.9stable
2026/10/25
2.2.8stable
2026/10/25
2.2.7stable
2026/10/25
2.2.6stable
2026/10/25
2.2.5stable
2026/10/17
2.2.4stable
2026/10/16
2.2.3stable
2026/10/15
2.2.2stable
2026/10/14
2.2.1stable
2026/10/13
2.2.0stable
2026/10/11
最新版
2.3.8
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 26
周下载
2,081
最近提交
2026/11/4
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
2.0.3stable
2026/10/10
2.0.2stable
2026/10/9
2.0.1stable
2026/10/8
2.0.0stable
2026/9/30
1.1.16stable
2026/9/21
1.1.15stable
2026/9/17
1.1.14stable
2026/9/11
1.1.13stable
2026/9/6
1.1.12stable
2026/9/4
1.1.11stable
2026/9/1
1.1.10stable
2026/8/28
1.1.9stable
2026/8/26
1.1.8stable
2026/8/25
1.1.7stable
2026/8/25
1.1.6stable
2026/8/23
1.1.5stable
2026/8/23
1.1.4stable
2026/8/22
1.1.3stable
2026/8/22
1.1.2stable
2026/8/21
1.1.1stable
2026/8/21
1.1.0stable
2026/8/20
1.0.3stable
2026/8/20
1.0.2stable
2026/8/18
1.0.1stable
2026/8/18
1.0.0stable
2026/8/17

README

dsh-zen-remote

One DeepSeek Harness plugin, two roles. The host turns DSH into a phone-reachable PWA (mobile UI, pairing gateway, lock-screen push) and shares chosen sessions to paired desktops. The client runs inside another DSH desktop app and puts the host's shared sessions right into its own sidebar — full history, live progress, messages, approvals, terminal, everything executes on the host.


中文文档

Session list homeSession pageSession info card
Session list homeSession pageSession info card
Composer permission sheetPairing page a public visitor sees
Composer permission sheetPairing page

Screenshots are a 390×844 phone viewport in the light theme; both themes are supported. The pairing page is drawn by the gateway in DSH's official style, following the system light / dark appearance.


Contents

  1. Install
  2. Quick Start (Unified Setup & Pairing Wizard)
    • Scenario A: Set up as Host (Phone & Desktop Access)
    • Scenario B: Set up another computer as Desktop Client
  3. Daily Usage: Session Sharing & Cross-Device Workflow
  4. Lock-Screen Push: When Notifications Fire
  5. Features
  6. Advanced Settings & Field Reference
  7. Security Model, Version Tolerance & Known Notes

1. Install

Install from the UI (Recommended, Desktop App & Web UI)

Open the Plugins page in the DSH sidebar → click Add plugin → type dsh-zen-remote → click Enable now when the install finishes, then restart the DSH desktop app (or dsh web).

Install from the CLI (Headless dsh web server)

dsh plugin --profile web add dsh-zen-remote
# then restart dsh web

dsh plugin requires --profile to name the target profile. The desktop app's desktop profile is managed exclusively by the app (--profile desktop is refused on the CLI), so use the UI install above on the desktop app.

Manual Profile Edit / Local Development (link:), Upgrading & Uninstall

Editing the profile by hand (local development, link: installs): add the dependency to the profile's package.json (~/.dsh/profiles/desktop for the desktop app, ~/.dsh/profiles/web for the web service) and append "dsh-zen-remote" to the dsh.profile.bundles array:

// ~/.dsh/profiles/desktop/package.json
{
  "dependencies": {
    "dsh-zen-remote": "^2.3.8"        // for local development: "link:/path/to/dsh-zen-remote"
  }
}
cd ~/.dsh/profiles/desktop && pnpm install
# For a link: checkout, also run `npm install --omit=dev` inside the repository so the gateway subprocess can resolve `web-push`.

Upgrading & migration notes:

  • Upgrading with HMR on: remove dsh-zen-remote first, then install the new version (dsh plugin --profile <name> remove dsh-zen-remote → add dsh-zen-remote, or Uninstall → Add in the Plugins page).
  • DSH 0.2.1-alpha.3+ profile reset: dsh --profile <name> --from-default-profile <template> replaces an existing custom profile with a fresh copy; back up ~/.dsh/profiles/<name> first.
  • Upgrading from 1.x: since 2.0.0 the composition layer is a single row (dsh-zen-remote). Remove any legacy dsh-zen-remote-gateway, dsh-zen-remote-push, or manual dsh-push.mjs lines from cordis.patch.yml. Existing ~/.dsh/lan-gate.config.json settings and paired devices carry over automatically.
  • Uninstalling: click Uninstall on the dsh-zen-remote plugin page and restart. To also wipe pairing and share state, delete ~/.dsh/lan-gate-state.json, ~/.dsh/lan-gate.config.json, ~/.dsh/zen-remote-shares.json, and ~/.dsh/zen-remote-server.json.

2. Quick Start (Unified Setup & Pairing Wizard)

The same plugin supports two roles:

  • Server (role: host, default): runs your sessions, spawns the local security gateway and Web Push service, and lets your phone (PWA) or another computer connect.
  • Desktop Client (role: client): runs inside another computer's DSH desktop app, connects to the host, and mounts the host's shared sessions directly into its own sidebar (without spawning a local gateway or fighting for port 3088).

Open Plugins → dsh-zen-remote in DSH. The Remote Access & Device Pairing card sits right at the top of the page:

Remote Access & Device Pairing overview card on the plugin detail page


Scenario A: Set up as Host (Phone & Desktop Access)

Click Start Setup Wizard (or Reconfigure Wizard if already configured) to complete setup in three guided steps:

Step 1: Choose "Act as Server (Host)" & an Access Method

Wizard Step 1: Choose machine role and server access method

Pick one of the four access methods based on your network environment (switching methods automatically stops any managed process from the previous mode and updates the gateway bind address):

Access methodBest forWhat the wizard automates
Managed Caddy (Recommended)Public IP (or router port forwarding) + domain on CloudflareAutomatically downloads a prebuilt Caddy + caddy-dns/cloudflare binary (auto-accelerated via mainland China mirrors when needed) and issues/renews TLS certificates via DNS-01; gateway listens only on 127.0.0.1:3088
Existing Reverse ProxyAlready running Nginx, Caddy, or LuckyGenerates ready-to-paste proxy snippets with WebSocket and X-Forwarded-* headers, plus one-click trustedProxies registration (full manual guide: docs/remote-access.en.md)
Cloudflare TunnelNo public IP / no router port forwarding + domain on CloudflareAutomatically downloads cloudflared (with mainland China mirror failover), creates or reuses a tunnel via the Cloudflare API, writes the DNS CNAME record, and starts the tunnel; gateway listens only on 127.0.0.1:3088
LAN / Tailscale DirectSame Wi-Fi / LAN or shared Tailscale virtual networkNo domain or TLS certificate needed; auto-detects the machine's LAN / Tailscale IPv4 address and binds 0.0.0.0:3088, while the gateway's built-in private-IP wall rejects any unproxied direct connection from a public internet IP (403 public-direct-forbidden)

Step 2: Fill in Connection Parameters

  • Managed Caddy / Cloudflare Tunnel: enter your public domain (e.g. dsh.example.com) and paste your Cloudflare API Token (click "How do I get an API token?" for step-by-step instructions and required permissions, or "Domain not on Cloudflare yet?" for onboarding steps).
  • Existing Reverse Proxy: enter the external https:// URL of your proxy and copy the generated Nginx / Caddy / Lucky configuration snippet.
  • LAN / Tailscale Direct: the wizard automatically detects and pre-fills http://<your-LAN-or-Tailscale-IP>:3088.

Step 3: Verify Connectivity & Pair Devices

Wizard Step 3: Automatic connectivity check, phone QR pairing, and desktop client pairing

  1. Start Ingress Service & Auto-Probe:
    • For Managed Caddy or Cloudflare Tunnel, click Start Caddy or Create & Start Tunnel in the service bar.
    • The wizard automatically probes Local gateway ready and Access URL reachable (verifying that / serves the 401 pairing page and /lan-gate/admin returns 403).
  2. Pair Phone / Browser (Web App):
    • On the Pair Phone / Browser (QR) tab, click Generate Pairing QR.
    • Scan the QR code with your phone camera or browser, enter the 8-character pairing code, and use "Add to Home Screen" to install DSH as a standalone PWA with lock-screen push notifications.
  3. Pair Another Computer (Desktop Client):
    • Switch to the Pair Desktop Client tab, click Generate Desktop Pairing Code, and click Copy Server URL & Code to send to your other computer.

Quick actions after setup: once configured, you can directly click Pair Phone (QR), Pair Desktop Client, or Manage Devices (rename devices, switch device roles, revoke one or all devices, or send a test push) right from the overview card footer without re-running the wizard.


Scenario B: Set up another computer as Desktop Client

On the second computer running the DSH desktop app:

  1. Open Plugins → dsh-zen-remote and click Start Setup Wizard.
  2. Step 1: select Act as Desktop Client and click Next.
  3. Step 2: enter a name for this computer (e.g. Living-Room-Mac), the host's gateway URL (https:// for public URLs, or http://192.168.x.x:3088 / http://100.x.x.x:3088 for LAN / Tailscale), and the 8-character desktop pairing code from the host, then click Pair & Connect.
  4. Step 3: once all three status lights (Pairing token, Server connection, Session & plugin sync) turn green, the host's shared workspaces and sessions appear in your left sidebar immediately.

3. Daily Usage: Session Sharing & Cross-Device Workflow

Web App Device (Phone / Tablet / Browser)Desktop Client (Another DSH Desktop App)
Visible sessionsAll sessions on the hostOnly sessions with remote access enabled on the host (enforced server-side)
CredentialLong-lived HttpOnly cookieSecret device token stored in the plugin config (Bearer token)

Enabling or Disabling Remote Access on a Session

Remote access is controlled per session (or automatically enabled for new sessions if you turn on Auto-share new sessions in Step 2 of the wizard). You can toggle it from four places:

  1. Host sidebar: open a session's "…" menu and click 开启远程 / 关闭远程 (Enable / Disable remote);

    Enabling remote access from a session's menu on the host

  2. Host session header: click the globe icon in the session title row (hover to see remaining idle time; a dot indicates a desktop client is currently viewing it);

  3. Phone (Web App) session info card: open the info card at the top right of a session and toggle 远程访问 (Remote access);

    Remote access toggle inside the phone session info card

  4. Host settings page: view and close shared sessions individually or all at once under the shared sessions list.

Working in Remote Sessions on a Desktop Client

  • Sidebar groups: once a host workspace has at least one remote-enabled session, a "Server Name · Workspace Name" group appears in the client's sidebar. Click any session to view full history, stream responses, approve tools, use the server terminal, browse files and diffs, download deliverables, or drag-and-drop files to upload.

    Remote workspace group in the desktop client sidebar

  • Closing & idle sleep: a shared session automatically closes remote access after 48 hours (idleHours) of inactivity (mid-turn sessions or sessions waiting on approvals/questions never sleep). When remote access is closed—or when the client unpairs or its token is revoked—remote sessions are automatically archived/hidden from the sidebar; an actively open session displays a "remote closed" banner and recovers automatically if re-shared.

    Banner shown when remote access is closed on an open session


4. Lock-Screen Push: When Notifications Fire

Notifications fire only when you are actually needed, along two independent paths (all payloads are end-to-end encrypted with aes128gcm):

  1. System-triggered (always on, never suppressed by debounce):
    • Tool waiting for approval: pushes "DSH needs your approval" with the tool name. Waits DSH_PUSH_APPROVAL_GRACE_MS (default 5s) before sending so fast auto-approver plugins can answer first without buzzing your phone.
    • ask_user_question waiting for your answer: pushes "DSH is waiting for your answer".
    • Works for both top-level sessions and subagent sessions across Web and Desktop hosts.
  2. Model-triggered (push_notify tool):
    • Called by the agent when you asked to be notified upon completion, or when it hits a blocker that requires your decision.
    • Ordinary turn completions do not push by default (enable pushTurnEnd in advanced settings if you want a push after every turn; enable pushSummary to include up to 120 characters of the final reply in the notification body).

5. Features

  • Mobile PWA UI (Host):
    • Two-level page stack (session list home + standalone session page with left-edge swipe back, Android back-gesture support, first-frame boot skeleton, and immutable asset caching)
    • Home-screen plugin entry chips (auto-discovered per installed plugin, individually toggleable)
    • Compact mobile composer with bottom sheets for permissions/models and direct phone attachment uploads
    • Session info card (6-tile stats, log export, rename, fork, archive, one-tap full-conversation PNG share image, and remote access switch)
  • Unified Setup & Pairing Wizard (2.3):
    • Top-of-page 2×2 live overview card and 3-step modal wizard covering all four host ingress modes (Managed Caddy, Existing Reverse Proxy, Cloudflare Tunnel, LAN / Tailscale Direct) and Desktop Client pairing
    • Automatic download of prebuilt Caddy + caddy-dns/cloudflare and cloudflared binaries with mainland China network auto-detection, mirror acceleration (gh-proxy.com / ghfast.top), connect/stall failover watchdogs, and daily upstream release tracking via GitHub Actions
    • Automatic LAN / Tailscale IPv4 discovery and local network probing, backed by the gateway's private-IP wall (403 public-direct-forbidden) against accidental public exposure
    • Dedicated Manage Devices modal and automatic sidebar cleanup on client unpair/revocation
  • Cross-Desktop Remote Sessions (Client):
    • Full-featured remote sessions in the sidebar: history, streaming, approvals/questions, server model catalog, file tree, changes summary/diff, server-side terminal, windowed artifact downloads, server-side LibreOffice PDF preview, up to 500 MiB file uploads, and drag-and-drop file upload interception; in remote sessions, non-image files added via the paperclip picker or pasted are likewise converted to byte uploads instead of unreadable local-path references
  • Plugin Bridge:
    • Cooperative plugins and built-in adapters (such as dsh-better-sidebar) route their panel requests in remote sessions to the host machine (with explicit owner consent for whole-machine data). See Plugin Bridge Guide.

In depth: Interface Design · Public Access & Relay Protocol


6. Advanced Settings & Field Reference

Day-to-day setup and device management are handled entirely by the Remote Access & Device Pairing Wizard at the top of the dsh-zen-remote page. To fine-tune individual low-level fields, click dsh-zen-remote a second time under Included components on the plugin detail page.

View underlying component settings screenshots & full field reference table

Each field resolves in order: environment variable > plugin row settings > ~/.dsh/lan-gate.config.json > default. Saving a field that requires a gateway/push restart reloads the plugin row automatically without restarting the app.

Host Role & Pairing CardsShared Sessions ListClient Settings & Diagnostics
Host role Host pairingShared sessionsClient settings
FieldDefaultWhat it does
rolehosthost runs gateway + push + sharing; client connects to a remote host
serverNamecomputer nameDevice name (≤ 40 chars): sidebar group title on a host, registered device name on a client; syncs both ways automatically
port3088Gateway port; retries upward (up to +20) if occupied
host127.0.0.1Gateway bind address (127.0.0.1 for local proxy/tunnel, 0.0.0.0 for LAN/Tailscale direct)
targetPort(auto)Local DSH Web UI port; leave empty to auto-discover the host's listening port

7. Security Model, Version Tolerance & Known Notes

Security Model

  • A paired desktop client is a trusted device: the remote session terminal runs as the host's OS user, file-preview endpoints can read files accessible to the host process, and the client can create sessions in any host workspace.
  • Unshared sessions are strictly isolated at the relay: list rows, history, live events, approvals/questions, and embedded dsh-session: references for unshared sessions are filtered or refused server-side.
  • Public direct-connection guard on 0.0.0.0: even when the gateway binds 0.0.0.0 for LAN / Tailscale mode, isPrivateOrLoopbackIp only admits direct connections from loopback, RFC1918 LAN ranges, link-local, and Tailscale (100.64.0.0/10 / fd7a:115c:a1e0::/48); any unproxied direct connection from a public internet IP is rejected with 403 public-direct-forbidden.
  • Admin actions are local-only: minting pairing codes, changing device roles, running the setup wizard, and revoking devices are only permitted directly on the host machine.
  • Data & privacy: the plugin reports nothing to any third party. Pairing state lives in ~/.dsh/lan-gate-state.json, shared sessions in ~/.dsh/zen-remote-shares.json, and Cloudflare tokens in 0600 files under ~/.dsh/zen-remote-ingress/.

Version Tolerance

  1. Relay protocol version: both host and client must run the same dsh-zen-remote version.
  2. DSH host version: DSH versions may differ between host and client. Normalized interface fingerprints are compared during handshake; any differing group is annotated "(版本有差异)" and degrades only the affected panel.

Known Limitations & Third-Party Plugin Support

Expand known limitations, iOS PWA notes & adapted third-party plugins

Known limitations

  • With multiple DSH windows open simultaneously on a client, active-session detection may occasionally dismiss a closed session early.
  • Switching between different servers or recreating a workspace with the same ID requires reloading the client page once.
  • "Export session" and server-local OS dialogs ("Reveal in Finder" / "Open in app") are hidden in remote sessions.
  • DSH's own Settings RPCs are loopback-only by upstream design, so plugin settings must be edited on the machine running DSH rather than through a remote browser.

iOS standalone PWA notes

  • iOS 26.x viewport shrinkage: home-screen PWAs may lose a status-bar height at the bottom (an iOS WebKit bug); three mitigation layers are built in, and restarting the PWA restores full height.
  • iOS 26+ top progressive blur: opening from the home screen may show a system WKScrollPocket blur across the top ~95px; entering any session and navigating back to the list clears it.

Third-party plugins with mobile & bridge adaptations

PluginAdaptation summaryVersion tested
dsh-better-sidebarFull-screen mobile right-sidebar drawer with notch safe-area padding and swipe-back; Plugin Bridge built-in adapter for 0.25.0 through 0.28.2 (seven versions) (reads/writes host file/Git/task panels in remote sessions with host owner consent)0.19.1 / adapter 0.25–0.28.2
@nanmicoder/dsh-agent-teamsRepositions AgentTeams floating pill below session header and preserves parent session back-link0.1.9
@ychris12138/dsh-usage-statsMoves usage & balance entry into the mobile home chips bar0.2.9
@opendsh/dsh-plugin-scheduled-tasksMoves scheduled tasks entry into the mobile home chips bar0.2.3
dsh-at-file

Upstream credits

This plugin's interface layer derives from mexiaosqwq/dsh-web-mobile, and its channel layer from zylzyqzz/dsh-mobile-pwa (itself derived from Bernardxu123/dsh-mobile-gate), both MIT. The original copyright lines are preserved in LICENSE.

License

MIT

rateLimit
120
Per-minute cap on unpaired requests per client IP
trustedProxiesemptyComma-separated trusted proxy IPs when the reverse proxy runs on another machine
vapidSubjectmailto:admin@localhostWeb Push contact (must be a real mailto: or https:// URL for iOS delivery)
langautoGateway & notification language: auto (browser Accept-Language), zh, or en
pushTurnEndoffAlso send a push when an ordinary turn finishes (approvals/questions always push)
pushEventsagent/turn-stoppingComma-separated events that count as turn end when pushTurnEnd is on
pushDebounceMs15000Minimum interval (ms) between automatic pushes
pushSummaryoffInclude up to 120 chars of the final reply in notification bodies
pushToolonRegister the model-callable push_notify tool
idleHours48Idle-sleep window in hours for shared sessions; range (0, 8760]
autoShareNewSessionsoffAutomatically enable remote access on new sessions created on the host
pluginBridgeConsent{}Whole-machine data consent map (pluginName -> boolean) for the plugin bridge
serverUrl (client)emptyRemote server gateway URL (https:// required for public hosts; http:// allowed on private LAN/Tailscale ranges)
deviceToken (client)emptyPaired client token (secret field, redacted everywhere)
turnFoldDesktopoffEnable turn-process folding on desktop widths as well as mobile
keyboardLiftRatio / keyboardLiftMaxPx / keyboardSafetyPadPx0.42 / 400 / 15Soft-keyboard lift calibration fallback for environments where the OS hides keyboard height
maxUploadBytes20 MBMobile attachment upload cap

Legacy environment variables (outrank row settings): LAN_GATE_PORT, LAN_GATE_HOST, LAN_GATE_TARGET_PORT, LAN_GATE_RATE_LIMIT, LAN_GATE_TRUSTED_PROXIES, LAN_GATE_VAPID_SUBJECT, LAN_GATE_LANG, DSH_PUSH_TURN_END, DSH_PUSH_EVENTS, DSH_PUSH_DEBOUNCE_MS, DSH_PUSH_SUMMARY, DSH_PUSH_TOOL, DSH_PUSH_LANG, DSH_PUSH_APPROVAL_GRACE_MS.

Deduplicates .dsh-uploads/ attachment rows on mobile
0.6.7
@ace-zone/dsh-marketCompacts marketplace modal header on mobile so the close button stays reachable0.1.66
dsh-vision-toolkitWorks with mobile attachment uploads for image Q&A/OCR—
dsh-web-ui bundleMobile width-constrained centered overlays for file tree / preview—