dsh-task-board: Manage multi-workspace sessions with a task board

Introduction

When running multiple agent tasks in DeepSeek Harness (DSH) simultaneously, the left-side conversation list often mixes conversations from different workspaces: it’s hard to tell which directory a conversation belongs to, and it’s also hard to compare progress under the premise of “only opening one main conversation view”. mwge22629/dsh-task-board (package name @local/dsh-task-board) is a community-maintained client plugin that hangs a task board on the sidebar: conversations stop on the board as cards; clicking them continues the conversation in an independent floating window, and opening multiple doesn’t steal focus. Below introduces what it does, how to install, and how to get started.

What is it

Project Description
Name dsh-task-board / @local/dsh-task-board
Maintainer MWGE22629
Category Client (web profile)
License MIT
Current Version 0.3.0 (README changelog)
Directory Page https://www.skillhub.cn/plugins/MWGE22629/dsh-task-board
Source Code https://github.com/MWGE22629/dsh-task-board

The plugin’s positioning in one sentence: A task board pinned to the DSH sidebar — arranges workspaces into partitions, turns conversations into cards; the card face displays running status and recent output, and clicking opens a floating conversation window consistent with the main interface.

Core Capabilities

Workspace Partitioning

After clicking “Follow Workspace”, one workspace per column, and the conversation cards underneath find their places. Partitions can be dragged to reorder and remember the order; when there are many workspaces, you can switch between 1 / 2 / 3 row layouts. You cannot unfollow a workspace while there are still tasks in the partition, to avoid cards disappearing out of thin air. After a workspace is deleted, related cards move into the “Unbound Workspace” fallback column.

Real-time Progress on Cards

The card displays what is currently being done (e.g., tool calls like Bash · npm test, writing, thinking, and timing). Non-running states are accompanied by “Last updated X ago” text (consistent with the sidebar conversation list). The bottom previews the last output, hover to see the full text. If no event occurs for over 60 seconds while running, the silent duration is displayed; if over 5 minutes, it turns red. For failed or stopped cards, you can click “▶ Resume” on the card to directly send a “Resume” command to that conversation without first opening the window.

Floating Multi-Session Windows

Clicking a card pops up a floating window containing the full conversation (message stream, input box, pending questions). You can open multiple windows at once, supporting drag-and-drop and eight-way resizing (minimum approx. 340×240). − or Esc closes the current floating window and releases the session reference. When a task is running, Esc still follows DSH’s double-click to stop rule; you can close the window after it stops. The window avoids the title bar, and if dragged off-screen, it pulls back automatically.

Sorting by Priority

Within the same partition, cards are sorted by processing priority: Failed/Stopped → Needs Decision → Running → Stopped → Completed → Idle → Draft. Pinned (📌) cards are not affected by this sorting and always stay at the top.

In-Board Search and Location

The search box to the left of “Follow Workspace” only performs literal matching (case-insensitive, whitespace tolerant) within the conversation body corresponding to cards already on the board; it can narrow the scope by followed workspaces; draft cards do not participate. Clicking a result opens the floating window and tries to page forward, scroll to the matched message, and highlight it. The implementation relies on the read-only ctx.sessionQuery.filterEvents; it works with default configuration; it has input debounce and a 15-second result cache. Very early hits might not automatically scroll to the specific message, in which case it just opens the conversation.

Other Adaptations

  • Turn Outcome Persistence: Completed / Failed / Aborted are persisted with the card; after a DSH restart, failures won’t be mistakenly read as completed.
  • dsh-rewind Integration: /rewind and /undo work normally inside the floating window.
  • Blue File Tags: Clicking opens the containing directory in the system file manager (Windows selects the file).
  • Peak/Valley Clock: The board displays DeepSeek billing peak/valley periods (Beijing Time weekdays 9:00–12:00, 14:00–18:00 are peak, rest is half-price); during valley time, it shows a countdown to the next peak.
  • Bilingual Support and basic keyboard accessibility (Tab focuses cards, Enter / Space opens, etc.).

Host and Client communicate via POST /api/dsh-task-board; cards on the board do not subscribe to the conversation stream; running summaries are merged by polling on the Host side; session references are only held when a floating window is opened.

Installation and Enabling

Prerequisite: DSH is installed and at least one profile is configured (e.g., web, desktop).

# Install from GitHub (recommended)
dsh plugin --profile web add git+https://github.com/MWGE22629/dsh-task-board.git

# Or install from GitLink
dsh plugin --profile web add git+https://www.gitlink.org.cn/GeDaamn/dsh-task-board.git

# Or install from local directory (for development)
dsh plugin --profile web add link:D:/path/to/dsh-task-board

Add the package name to the dsh.profile.bundles array in that profile’s package.json:

{
  "dsh": {
    "profile": {
      "bundles": ["…", "@local/dsh-task-board"]
    }
  }
}

After restarting DSH, the appearance of the “Task Board” icon in the sidebar indicates successful activation. Due to historical reasons, the package name is fixed as @local/dsh-task-board, and installation commands and bundles both reference it.

Typical Usage

  1. Click the “Task Board” icon in the sidebar.
  2. Click “Follow Workspace” in the top right, select one or more workspaces to bring to the board.
  3. Click “+” in the top right of a partition to create a new task card, and send the first instruction in the floating window (Enter to send, Shift+Enter for new line) — DSH will create a session in that workspace and execute it.
  4. You can also drag existing sidebar conversations to the board, or click “Add to Board” on a conversation row.
  5. When you need to continue running, click “▶ Resume” on a failed or stopped card.
  6. When looking for historical statements, use the search box at the top, enter keywords, and click a result to open the floating window and locate it.

Board data is written to ~/.dsh/storages/dsh-task-board/board.json (a board.json.bak is generated when the number of cards decreases). Conversation bodies are still in DSH’s own logs; the board only saves partitions, card-to-conversation mappings, and other information that cannot be inferred. The plugin README explicitly states that no external network requests are initiated.

Applicable Scenarios and Notes

Who is it for? Developers who frequently run multiple workspace tasks in parallel in DSH, need to scan status at a glance, and want to compare multiple sessions in separate windows. Compared to the “single session main interface”, the board focuses on orchestration and monitoring, while detailed editing can still be done in the floating window or main session.

Runtime and Trust Boundaries: The plugin runs with the current DSH process permissions, can read/write board storage under local DSH_HOME and call the official session query API. It is recommended to browse the GitHub repository source code and the MIT license before installing. Sites like SkillHub are community directories with no official affiliation with DeepSeek or Quant, and should not be treated as official app stores.

Compatibility: The floating window relies on client slots like shell.overlay and taskboard.window; if the window is blank, try closing and reopening it, and check for [dsh-task-board] errors in DSH logs. The board may briefly show “Storage Unavailable” when Host RPC is not ready, but it will generally retry within a few seconds.

Conclusion

dsh-task-board extracts “multi-workspace, multi-session” from the sidebar’s long list, using partitioned cards + floating windows + outcome persistence + in-board search to reduce navigation costs during parallel tasks. To learn more or submit an issue, check the community directory page and the repository README.

  • Directory Page: https://www.skillhub.cn/plugins/MWGE22629/dsh-task-board
  • GitHub: https://github.com/MWGE22629/dsh-task-board
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye