dsh-default-workspace-plugin
Manifest valid★ 3Start a DeepSeek Harness conversation without selecting a workspace: auto-provisions a default workspace and adds a "Chat without a workspace" option to the workspace picker
dsh-default-workspace
A DeepSeek Harness plugin — start a new conversation without selecting a workspace.
Out of the box, DeepSeek Harness will not let a conversation start until a workspace directory has been selected. On a fresh profile the workspace registry is empty, so the web GUI lands on the workspace-picker hero and there is nothing to pick.
This plugin removes that dead-end in two ways, from one package:
- Node half — at boot it resolves a default workspace directory, creates it if missing, and registers it. The runtime's existing "recent workspace" fallback then connects it, so a brand-new profile opens straight into a conversation.
- Client half — it adds a "Chat without a workspace" (
不在工作区中对话) entry to the new-session workspace picker. Selecting it starts a session with no workspace: its working directory falls back to the host'sprocess.cwd()and the session shows up as Ungrouped in the sidebar.
What it does
| Behaviour | Detail |
|---|---|
| Auto-provision | Creates and registers a default workspace on first boot |
| No-workspace option | Adds a "Chat without a workspace" row to the workspace picker |
| Zero footprint | Auto-provision is a no-op when workspaces already exist (unless always: true) |
| Idempotent | Re-registering the same path reuses the existing record |
| Non-fatal | A failure is logged as a warning and never fails the boot |
| Zero dependencies | Imports only Node built-ins / browser APIs; no build step |
The default directory is <DSH_HOME>/workspaces/default (or ~/.dsh/workspaces/default when DSH_HOME is unset). It can be overridden per-deployment with a config row, or globally with the DSH_DEFAULT_WORKSPACE environment variable.
Install
Recommended — one line from the git source (no build runs on install, since the source is committed directly):
# HTTPS git source. The `github:` shorthand is rewritten to SSH by pnpm and
# fails on machines without SSH keys — use the explicit git+https form.
dsh plugin --profile web add "git+https://github.com/fenxin-fx/dsh-default-workspace.git#main"
Other options:
- From a local checkout:
git clone https://github.com/fenxin-fx/dsh-default-workspace.git cd dsh-default-workspace dsh plugin --profile web add .
First install needs a web restart for the node half to take effect; the client half arrives per-request, so later upgrades only need a browser refresh. The plugin can be enabled/disabled under Settings → Plugins (package id @dsh-external/dsh-default-workspace).
Configuration
Overrides live on the plugin's config row in the profile cordis.patch.yml (the cordis.patch.yml shipped by this package shows the full template). Precedence is config.path → DSH_DEFAULT_WORKSPACE → <DSH_HOME>/workspaces/default.
| Key | Type | Default | Meaning |
|---|---|---|---|
path | string | <DSH_HOME>/workspaces/default | Default workspace directory; ~ expands to the OS home, a relative path resolves against the process cwd |
title | string | Default | Display title for the workspace |
always | boolean | false | true always ensures the workspace, even when others already exist |
- insert:
- id: default-workspace
name: '@dsh-external/dsh-default-workspace'
config:
path: 'C:\my\scratch'
title: 'Scratch'
always: false
Or set the environment variable before launching:
DSH_DEFAULT_WORKSPACE="$HOME/projects/scratch" dsh web
Usage
Install, restart the web profile, and go — no commands, no tools. A brand-new profile opens directly into a conversation in the default workspace, and the workspace picker on a new session offers "Chat without a workspace" to start an ungrouped conversation instead.
Development
There is no build step: both halves ship as plain JavaScript.
src/index.mjs — the node half (ensure + register the default workspace)
src/client/index.js — the client half (the "Chat without a workspace" picker entry)
cordis.patch.yml — the bundle patch that mounts the node half
How it works
- The node half calls
ctx.workspaceRegistry.create(path, title)aftermkdir -p;createis idempotent and prepends only new records. - The client half injects the extra row into the picker menu at the DOM level (the picker exposes no official slot), cloning the "Add workspace" row for native styling and re-injecting via a
MutationObserveron re-render. - The no-workspace session is created with
ctx.sessions.create({})— noworkspaceId, so the host defaults the cwd toprocess.cwd()and skips workspace attachment.
License
Comments
Loading…
From the same category
by ccch1mneyyy
DSH 官方公众号收录的 TUI 补位插件:Claude Code 风,鲸鱼顶栏/实时状态/流式思考/双击 Esc 回滚/上下文进度+TPS。npm 一键装。 DSH official WeChat featured TUI plugin — Claude Code style: whale bar, live status, streaming thoughts, double-Esc rol
★ 6.7k
↓ 18.6k/wk
MIT
TypeScript
Nov 3, 2026
dsh plugin --profile terminal add @deepseek-harness-tui/dsh-tuiby kingcharleslzy-ai
Community-maintained dsh-purge fork with host-policy patches, prompt and rule settings, diagnostics, separate update-check and install controls, and local backup/rollback.
★ 4.3k
MIT
JavaScript
Nov 3, 2026
dsh plugin --profile web add dsh-purge-communityby bowenliang123
The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details,
★ 4.1k
↓ 168.8k/wk
Apache-2.0
TypeScript
Nov 3, 2026
dsh plugin --profile web add dsh-contextby strukto-ai
The World's First Virtual Terminal for AI Agents
★ 3.8k
↓ 296/wk
Apache-2.0
TypeScript
Nov 3, 2026
dsh plugin --profile agent add @struktoai/mirage-dshby mmparko
DeepSeek Harness 破甲 (mirror of YuJunZhiXue/dsh-purge) — 上游即将删库,此为本仓库全量镜像:含全部分支/73 个 tag/完整提交历史。原作者署名与二开要求见 README 署名章节。
★ 3k
MIT
JavaScript
Oct 13, 2026
dsh plugin --profile web add dsh-purgeby c1overzz
DSH 插件:每天替你刷一轮 B站,读字幕挑出值得的、写一份日报,值得的 @ 你
★ 1.2k
↓ 22.7k/wk
MIT
JavaScript
Nov 3, 2026
dsh plugin --profile web add dsh-bili-scroll