zljr/dsh-share

Project Overview项目介绍

dsh-share is a native plugin built exclusively for DeepSeek Harness (DSH). After installation, it adds a one-click “Share” button to the session header of the DSH web interface. When clicked, it captures a frozen, read-only snapshot of the current conversation, stores it locally, and serves it via a separate read-only HTTP server, then generates a LAN-accessible URL for the snapshot. You can install the plugin from npm by running dsh plugin --profile web add @zljr/dsh-share and restarting DSH, no extra build steps are required for end users.

When creating a share, you can select an expiration time for the link: 1 hour, 24 hours, 7 days, or no expiration. You can also revoke any existing share at any time directly from the DSH interface. The shared snapshot page includes full session statistics like turn count, tool call time, token usage, and context occupancy, and long messages are automatically folded to improve readability. It also automatically adapts to light or dark system themes, and any device on the same local network can open the link in a browser without needing DSH installed.

The plugin follows a strict security model: the main DSH process only binds to localhost, so no external connections can access its execution capabilities. Only the separate read-only share server binds to the LAN interface, and it only serves pre-rendered snapshots that cannot be modified after creation. On Windows, the first run may trigger a firewall prompt; you must allow access for other devices to connect. All shared links use 128-bit unguessable random tokens, and the share page contains no JavaScript or external assets. The plugin is released under the open source MIT license, and share data persists across DSH restarts.

这是一个专为DeepSeek Harness(DSH)开发的原生插件,安装后会在会话头部添加一个「分享」按钮。点击后即可将会话当前状态冻结为独立只读HTML页面快照,生成可通过局域网访问的URL。同一网络下的其他设备只需用浏览器打开链接,就能查看完整的会话内容。分享服务由独立的只读HTTP服务器提供,不会暴露主DSH进程的任何执行权限。

用户可以在分享时设置链接的过期时间,支持1小时、24小时、7天或永久有效,也可以随时在插件面板撤销已生成的分享链接。分享页面会自动统计会话的轮次、步数、总耗时、令牌消耗等数据,还支持明暗主题自动切换,长消息会自动折叠优化阅读体验。它适合需要把当前DSH会话分享给同事或跨设备查看的开发者使用。

该插件遵循MIT许可协议开源,可通过DSH的命令行工具从npm直接安装,无需额外构建步骤,也支持从源码本地构建安装。分享数据默认持久保存在~/.dsh/dsh-share.json,重启DSH后已生成的分享链接依然可用。Windows系统首次启动分享服务时,可能会触发防火墙提示,允许访问即可让其他设备正常连接链接。

Pre-install check安装前体检Compatibility · Security兼容性 · 安全性 1 warning1 项注意
  • Only 2 stars - very few users, little community feedback星标只有 2,几乎没人在用,遇到问题缺少社区反馈
DSH walks through these 9 checksDSH 会逐条核对这 9 项

Compatibility兼容性

  • DSH, Node, OS and profile requirementsDSH 版本 / Node 版本 / 操作系统 / profile 是否满足要求
  • External dependencies and runtimes (Electron / Python / Docker, ...)外部依赖与运行时(Electron / Python / Docker 等)是否齐备
  • Conflicts with installed plugins: command names, skill / tool names, ports, duplicate MCP registration与已装插件是否冲突:命令名、skill / tool 重名、端口占用、重复 MCP 注册

Security安全性

  • Repo matches the facts registered here; archived or abandoned?仓库是否与页面登记一致,是否归档或长期停更
  • Safety of preinstall / install / postinstall and install.sh / setup.ps1preinstall / install / postinstall 与 install.sh、setup.ps1 是否安全
  • curl|bash, download-then-execute, obfuscation, unrelated domains → stop immediatelycurl|bash、下载即执行、混淆代码、无关域名 → 立刻停止
  • Typosquatting or unmaintained packages among the new dependencies新增依赖里有没有 typosquatting 或无人维护的包
  • Requested permissions vs. what the feature actually needs申请了哪些权限、是否超出功能所需(filesystem / network / shell / clipboard)
  • Any sudo / admin requirement, plus uninstall and rollback是否要求 sudo / 管理员权限,以及卸载与回滚方式

Anything uncertain must be marked unknown with a note on how to confirm it. This site's signal screen is a static snapshot, not a security audit.拿不准的必须标「未知」并说明要我怎么确认。本站的信号筛查是静态快照,不能替代安全审计。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add @zljr/dsh-share

把 zljr/dsh-share 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-share

Share a DeepSeek Harness session over your LAN as a read-only, token-guarded snapshot.

📖 中文文档

dsh-share is a DeepSeek Harness plugin that adds a Share button to the session header. One click freezes the current conversation into a self-contained, read-only HTML page and prints a LAN URL — e.g. http://192.168.1.20:3081/s/<token> — that any device on the same network can open in a browser.

The main harness keeps listening on 127.0.0.1 (and so never exposes the agent's command execution). Sharing is served by a separate, read-only HTTP server that only ever returns a pre-rendered snapshot page for a valid token.

Features

  • 🔗 One-click share — a Share button in the session header (beside the official "Session log" action).
  • 🔒 Read-only & isolated — the share server binds 0.0.0.0:<port> on its own; it exposes nothing but GET /s/<token>. No RPC, no writes, no session reads on view.
  • 🧊 Frozen snapshot — the transcript and session stats are captured at share time; later edits or compactions never change an already-shared page.
  • 🔑 Revocable + optional expiry — 128-bit random tokens; stop sharing anytime, or pick a 1h / 24h / 7d expiry.
  • 📝 Markdown transcript — user & assistant messages are Markdown-rendered (safe: raw HTML is escaped, javascript: URLs are blocked).
  • 🪗 Readable — long messages auto-fold behind a preview; consecutive tool calls collapse into one "🛠 tool calls" group.
  • 📊 Session stats header — turns, steps, wall-clock duration, tool-call time, cache hits, input/output tokens, and current context occupancy with a per-category composition bar.
  • 🌗 Dark & light theme — the share page follows prefers-color-scheme.
  • 💾 Persists across restarts — shares are stored in ~/.dsh/dsh-share.json.
  • 📡 Smart LAN address — filters out virtual adapters (WSL / Hyper-V / Docker / VPN / …) and probes the default route so the phone-reachable IP is listed first.

How it works

dsh-share is a dual-face dsh package, like other harness plugins:

Half Runs in Role
Host (src/host) Node (harness process) Folds the session event log into a transcript + stats, stores the frozen snapshot, and serves it over a separate node:http server at /s/<token>. Also exposes a /dsh-share RPC (create / revoke / list).
Client (src/client) Browser Registers the Share button in conversation.session.header.utilities and renders the dialog (expiry picker, copy / revoke / open).

Showing the opening section of the README — the full document lives in the repository以上为 README 开头摘要,完整文档在仓库内 · View the full README on GitHub →在 GitHub 查看完整 README →

← 上一个 Prev dsh-session-drafts 下一个 Next deepseek-whale-wallpaper →