返回目录
其他 插件

dsh-s7r

hunter118/dsh-s7r

A System 7-inspired desktop interface for DeepSeek Harness (DSH)

Stars
3
Forks
0
Issues
0
更新
今天

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:hunter118/dsh-s7r

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

S7R — System 7 Reimagined for DeepSeek Harness

CI Release License: MIT DSH: 0.1.0-rc.7

S7R is an original System 7-era workstation shell for the DeepSeek Harness Web UI. It turns real DSH Agents, Workspaces, files, terminals, tools, and persisted history into a coherent multi-window desktop instead of placing a retro skin over a chat page.

S7R is the desktop environment. Knowledge Desk is its Workspace, Agent, and conversation application.

A naturally arranged S7R desktop with Knowledge Desk, Monitor, Clock, and Trash

DSH remains the source of truth. S7R does not copy conversations into its own chat database, start an unrelated shell server, or expose arbitrary host paths. It presents the capabilities already owned by DSH and keeps only desktop preferences—window positions, aliases, display choices, Scrapbook cards, and similar UI state—in the browser.

[!IMPORTANT] S7R currently targets DSH 0.1.0-rc.7 exactly. DSH is in developer preview and later releases may require adapter updates. See Compatibility.

Feature map

Area What it does
Workspaces Registers a real folder with DSH, remembers recent folders, and uses the selected Workspace as the filesystem boundary for Agents, Finder, Preview, TextEdit, Terminal, and Find.
Knowledge Desk Lists Workspaces and Agents together; searches names, paths, and IDs; creates and reopens Agents; renames, exports, archives, restores, or places them on the desktop.
Agent windows Streams real DSH output and reasoning, shows tools and attachments, accepts steering/cancellation, reloads persisted history, and optionally renders completed Markdown safely.
Context and Timeline Shows provider-reported context length and pressure, estimates content shares, requests compaction or a summary-carrying successor, and exposes the complete event stream with adjacent chunks folded into runs.
Files Provides Workspace-contained Finder, conflict-aware plain-text editing, image/PDF Preview, and portable path drops into Agents. Host paths are validated again on every request.
Terminal Opens an owner-scoped DSH terminal running /bin/zsh -f -i, even when no Agent window is open, with retained low-latency output and visible command acknowledgement.
Find Searches file/folder names, source contents, visible messages, or all persisted Agent events as independent scopes, then opens the matching file, Agent, or Timeline location.
Monitor and notices Combines live Agent state, background jobs, context pressure, host CPU/active RAM, and DSH process RSS; minimal notices appear when an Agent completes.
Desktop Restores window geometry and z-order; supports Workspace, Agent, Finder-item, and Scrapbook aliases; marquee selection; group dragging; and reversible alias-only Trash.
Scrapbook and accessories Captures editable conversation cards with one-click copy and desktop placement; includes Clock and a legally shuffled, always-solvable 4×4 Puzzle.
Display and wallpaper Offers Fit Browser or fixed logical work areas, 10px/12px bitmap UI masters, exact 1×/2× magnification, Preview filters, built-in patterns, a seamless Cat tile, and processed imported wallpaper.
Credentials Reads only DSH's configured/source/writable status and writes DEEPSEEK_API_KEY through DSH's loopback credential service; the saved secret is never returned to the page.

Requirements

  • Node.js 22.19+ or 24+
  • DeepSeek Harness 0.1.0-rc.7
  • pnpm for DSH profile plugin management and source development
  • A modern Chromium-based DSH Web UI browser is the primary tested target

Install

Prebuilt release

Download dsh-s7r-0.7.0.tgz from the latest GitHub Release, then install it into the DSH Web profile:

dsh plugin --profile web add ./dsh-s7r-0.7.0.tgz
dsh --profile web --dump-config
dsh web

Open the loopback URL printed by DSH, normally http://127.0.0.1:3080.

The Release also contains SHA256SUMS. Verify the downloaded archive on macOS with:

shasum -a 256 -c SHA256SUMS

On Linux, use sha256sum -c SHA256SUMS.

Install from source

git clone https://github.com/hunter118/dsh-s7r.git
cd dsh-s7r
pnpm install --frozen-lockfile
pnpm check
pnpm build
dsh plugin --profile web add .
dsh web

Remove or replace

dsh plugin --profile web remove dsh-s7r

Remove the installed version before adding a different tarball. S7R's browser-local display, desktop, and Scrapbook preferences may remain in that browser profile; real DSH Workspace files and session logs are not removed.

First run

  1. Open S7R → Settings…. If DSH does not already receive DEEPSEEK_API_KEY from its launch environment, save it here. S7R can report configured/source/writable state but cannot read the stored value back.
  2. Choose File → Choose Folder…. The native DSH picker registers that external directory as a Workspace before an Agent begins work.
  3. Use Knowledge Desk to create, search, reopen, rename, archive/restore, or export Agents.
  4. Use File → New Terminal for zsh even when Finder and every Agent window are closed.
  5. Open Help → S7R Guide… for the same compact workflow reference inside the workstation.

Browser-owned shortcuts such as Command-N and Command-W are intentionally not advertised because a page cannot reliably override the browser tab.

Knowledge Desk and Agents

Knowledge Desk is both a Workspace launcher and an Agent browser. Its Workspace side selects the folder that new work belongs to; its Agent side searches and manages the conversations already associated with that folder. Opening an existing result reconnects a window to the real DSH SessionRuntime rather than creating a second chat record.

An Agent conversation overlapping Knowledge Desk with the Context Inspector expanded

The Agent lifecycle is deliberately explicit:

  1. New Agent starts in the selected Workspace. Closing its window only closes the view.
  2. Open returns to the same persisted DSH session, including its historical events.
  3. Rename changes the human-facing title without changing the session ID.
  4. Export produces a complete Markdown transcript plus a machine-readable JSON event archive.
  5. Archive hides the Agent in S7R without deleting its DSH log; the Archived view can restore it.
  6. Desktop creates a reopenable alias. Removing that alias does not archive or delete the Agent.

Every Agent window keeps a compact single-line toolbar:

  • Context opens provider-reported token length/percentage when available, estimated shares for user/assistant/reasoning/tools/Workspace material, 75%/90% warnings, Compact Now, and New Agent with Current Summary. Shares are character-based diagnostics, not fake token accounting.
  • Timeline opens the complete live or cold persisted event ledger. Adjacent same-type events such as assistant/chunk fold into expandable runs.
  • Other… provides rename, complete Markdown/JSON export, reversible archive, desktop placement, and a persistent Markdown-rendering toggle.

Completed output can safely render headings, emphasis, inline/fenced code, lists, quotes, and tables. Streaming remains plain text until the message is complete, raw HTML is never injected, and LaTeX remains source text. The rendering switch is per browser profile and never rewrites stored conversation data. Color Emoji are displayed as monochrome pixel-font symbols or short text for visual consistency.

Workspaces, Finder, TextEdit, and Preview

Choosing a folder uses DSH's native picker and registers that external directory as a Workspace; S7R is not limited to the folder from which the Web UI was launched. The most recently used valid Workspace can be reopened on the next visit. Finder then reads the selected session's canonical root through DSH, and every host path is resolved again and rejected if it escapes that root.

  • Double-click a directory to navigate; Open in Terminal starts zsh at that directory.
  • Text and source files open in TextEdit. Saves carry the last-read filesystem version so an external edit is reported as a conflict instead of being silently overwritten.
  • Images and PDFs open in Preview. PDFs are rasterized locally with PDF.js; page, zoom, fit, and temporary Inspect Original controls do not alter the file.
  • Drag a Finder item onto the desktop to create an alias, or into an Agent to insert its path. Paths inside the Agent's Workspace become ./relative/path; outside paths remain absolute.

Display can filter Preview images and PDF pages through either ordered 1-bit black/white dithering or direct luminance grayscale. Filtering is cached, non-destructive, and never rewrites the source file.

Terminal

Terminal uses the official DSH terminal service and shell backend with /bin/zsh -f -i. DSH owns process spawning, sandbox policy, scrollback, signaling, terminal identity, and Agent ownership. S7R acknowledges submitted lines immediately and polls retained foreground output without overlapping reads.

File → New Terminal works independently of visible Agent and Finder windows. When no live owner exists, S7R creates a fresh blank owner in the current/recent Workspace, so the terminal does not fail with a missing Knowledge Desk session. Open in Terminal from Finder starts at the displayed directory.

DSH rc.7 is line-oriented: it does not expose a raw browser keystroke stream or post-spawn PTY resizing. Terminal therefore behaves like a responsive real line console, not an xterm-style raw attachment.

Find, Timeline, and Monitor

File → Find… has independent search depths:

  • Names — file and folder names only; useful for navigation without reading file contents.
  • Source contents — text/code inside the active Workspace, with hidden directories and node_modules skipped.
  • Conversation messages — visible user and assistant messages across persisted Agents.
  • All Agent events — the complete cold event stream, including tools, reasoning, chunks, and context records.

Matches route to Finder/TextEdit/Preview, the Agent, or the exact Timeline event. Traversal stops at 5,000 files, skips hidden and node_modules directories, reads at most 1 MiB per source file, and returns at most 200 results.

Monitor combines:

  • Agents — live status (RUNNING, IDLE, or terminal state), model, latest event time, and provider-reported context pressure.
  • Background — DSH jobs that may continue after an Agent window is closed.
  • System — host-wide CPU and active RAM, plus DSH process RSS so process memory is not confused with whole-machine pressure.

On macOS, inactive/file-cache pages are excluded from active RAM so reusable cache does not appear as application pressure. Minimal desktop notices appear only when an Agent crosses into a completed state; selecting one opens that Agent. Monitor is visible in the desktop overview above rather than presented as an isolated full-screen panel.

Desktop workflow

Window bounds, z-order, zoom/collapse state, desktop aliases, reversible Agent archives, Trash, and Markdown preference survive reload. Terminal windows are the intentional exception because serialized windows cannot safely reattach live owner-scoped PTYs.

Workspaces, Agents, Finder items, and individual Scrapbook cards can become desktop objects. Drag empty desktop space to marquee-select several aliases; then drag any selected item to move the group while preserving its layout. Opening an alias routes to its real object rather than a browser-local copy.

Folders have two explicit desktop meanings:

  • Finder Alias opens the directory within its existing Workspace.
  • Workspace Alias registers the directory as a Workspace and connects its Agent.

Delete/Backspace or a drop on Trash moves only aliases into S7R's reversible Trash. Put Away restores them; Special → Empty Trash… permanently discards aliases only. Real files, Workspaces, Agent logs, and Scrapbook cards are never deleted by desktop Trash.

Paths dropped into an Agent become portable ./relative/path references when they are inside that Agent's Workspace and remain absolute otherwise.

Scrapbook and desk accessories

Add to Scrapbook captures a message into a browser-local editable card while retaining its source Agent reference. The capture link immediately takes on a visited-style state as feedback, each card has one-click copy, and a single card can be placed on the desktop without opening the whole Scrapbook.

Clock is a live analog/digital desk accessory. Puzzle is an original 4×4 sliding-number implementation; shuffling performs only legal moves, so every generated board is solvable.

System applications and preferences live in their workflow menus. Clock and Puzzle remain in the S7R application menu as desk accessories.

Display and wallpaper

Display controls overlapping Knowledge Desk on the seamless grayscale Cat wallpaper

Display separates four concerns:

  • Logical work area: Fit Browser recomputes the usable desktop from the current viewport; Classic 512×342, Compact 640×480, Standard 832×624, and Expanded 1024×768 preserve fixed period-style work areas.
  • Interface size: Compact 10px and Comfortable 12px are separate bitmap masters. Menus, title bars, controls, spacing, scrollbars, and default window sizes all change together instead of merely enlarging text.
  • Pixel magnification: 1× or exact 2× integer layout magnification. Fit Browser halves the logical work area at 2× before magnifying it, and pointer deltas are mapped back to logical coordinates.
  • Content filters: Preview images and rasterized PDF pages can independently use ordered 1-bit black/white dithering or direct grayscale. Conversation images and source files are left unchanged.

Classic Dots is the default wallpaper. Desk Gray, Pinstripes, seamless Cat, and imported images are also available. Cat and imports are sampled onto a genuine low-resolution grid, filtered, and baked into an integer nearest-neighbor PNG. Imports accumulate in a named dropdown library and can tile at pixel size or fill the desktop. Re-rendering offers 1px or 2px blocks; the original imported file is not retained after processing.

Persistence and data ownership

Owner Data
DSH Agents, conversation/event logs, Workspace registration, files, terminal owners/processes, tools, credentials, and background jobs.
S7R browser profile Display preferences, processed imported wallpaper, Scrapbook cards, window and desktop layout, alias Trash, reversible S7R archives, and Markdown preference.

Browser-local records are versioned; malformed records fail closed and known older formats migrate explicitly. Closing an Agent window never deletes its DSH session. Clearing browser site data resets S7R's local desktop customizations but does not delete DSH conversations or Workspace files.

Security model

  • Credential status and mutation use DSH's official loopback-only service; stored secrets are write-only from the browser's perspective.
  • Package-specific host RPC is loopback-authorized and validates identifiers.
  • Every file request is contained under the selected live or persisted Workspace root.
  • Existing-file saves require the version returned by the previous read.
  • Binary reads are capped at 25 MiB.
  • Terminal IDs remain owner-scoped through DSH.
  • Markdown rendering creates React nodes from a restricted grammar and never injects raw HTML.

Please report credential exposure, path traversal, unsafe writes, terminal ownership errors, or injection privately as described in SECURITY.md.

Compatibility and known limitations

This release was developed against official DeepSeek Harness commit 99f6f02fecdb7dff40c3fbc9470f5907c29f74ca (0.1.0-rc.7, inspected 2026-08-17). Exact adapter seams are documented in COMPATIBILITY.md.

  • DSH rc.7 has fixed backend PTY dimensions and no supported resize method or raw browser byte stream.
  • TextEdit is a robust plain text/code editor, not a language server or syntax-highlighting IDE.
  • Preview renders raster PDF pages but has no selectable PDF text layer.
  • DSH exposes archive but no public unarchive API. S7R therefore uses a reversible local hide/archive layer for new actions; older DSH-native archived IDs cannot be restored through a supported seam.
  • The S7R client intentionally replaces the root slot; native DSH surfaces remain installed but are not mixed into the simulated desktop.

Development

pnpm install --frozen-lockfile
pnpm check
pnpm pack

pnpm check runs strict host/client TypeScript checks, 59 deterministic tests, and production host/client bundles. PDF.js and its worker implementation are embedded so Preview needs no CDN or runtime network dependency.

Project references:

License and asset provenance

S7R is MIT licensed. It is an independent project and is not affiliated with or endorsed by Apple Inc. or DeepSeek. No Apple artwork, system files, proprietary fonts, sounds, screenshots, or extracted resources are bundled. Icons and patterns are original CSS/text constructions; the Cat wallpaper is an original generated bitmap processed by S7R's local grayscale pipeline.

The browser bundle includes Simplified Chinese 10px/12px faces from Fusion Pixel Font under SIL OFL 1.1 and PDF.js under Apache-2.0. Copyright notices and full license texts are included in THIRD_PARTY_NOTICES.md and THIRD_PARTY_LICENSES/.

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类其他
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。