Skip to content

bga-dsh-workbench

Verified

bga-dsh-workbench Β· v0.0.9 Β· MIT Β· Web UI

Personal Harness workbench: hero banner, completed-turn confetti, and a built-in task board

Install

dsh plugin add bga-dsh-workbench

Confirm the layer applied with dsh --profile default --dump-config β€” see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Creators

Readme

DeepSeek Harness Personal Workbench Plugin

License npm npm

🌐 δΈ­ζ–‡ζ–‡ζ‘£

A personal workbench plugin customized for DeepSeek Harness: it shows a personalized banner with an avatar at the top of the empty state, plays a confetti animation when a chat turn completes, and lets you pick up a bit of a foreign language along the way. It ships a built-in task board that can actually execute tasks, plus an "Open With" menu to open a workspace directory with your local apps.

Main screen Settings page

Features

πŸŽ‰ Personalized Banner (Hero Banner)

  • Displays a workbench banner at the top of the empty state on the Harness web interface. When enabled, it automatically hides Harness's default "Explore the Unknown" headline so the two never overlap.
  • Customizable:
    • Greeting text: defaults to "ηš„δΈ“ε±ž Harness ε·₯作台" (Harness Workbench). You can change it to anything, e.g. "εΌ δΈ‰ηš„δΈ“ε±ž Harness ε·₯作台" (Zhang San's Harness Workbench).
    • Avatar image: upload a local image as the banner avatar; if left empty, a built-in default avatar is used. Supported formats are PNG / JPG / GIF / WebP; the backend sniffs the type and persists it to the storage directory.
    • Visibility toggle: hide the banner at any time.
  • Configuration is persisted under the "Workbench Settings" namespace and takes effect immediately after editing on the settings page.

🎊 Turn-Complete Celebration (Confetti)

  • Whenever a chat turn completes, the page automatically plays a confetti animation to add a little ceremony to your workflow.
  • Fully customizable (all on the settings page):
    • Celebration sound: on/off toggle plus a "Preview" button (on by default);
    • Color themes: Default / Gold / Ocean / Sakura / Neon;
    • Intensity: Small / Medium / Large / Epic;
    • Trigger timing: On success only / Every turn / Task execution only (with "Task execution only", normal chat turns no longer trigger confetti).

🧠 Foreign Language Learning (Duolingo-style micro-learning)

  • Triggered with confetti: when a chat turn completes, alongside the confetti a one-question quiz pops up (when a learning card is configured), and you can control the pace:
    • Learning frequency: after every turn / every 2 turns / every 5 turns / every 10 turns / manual trigger only;
    • Daily answer limit: to avoid over-practice (set 0 for unlimited).
  • Topic cards: each vocabulary set is a card; multiple cards coexist and you manually select which card to learn today (persisted).
  • Content sources:
    • Built-in CEFR-graded word lists (A1–C2) β€” one click to adopt, no model needed.
    • Model generation β€” pick a topic and the currently selected model generates ~20 items (about 10 words + 10 practical sentences with meanings and example sentences), cached locally.
  • Multi-language support: the target language can be English (including Simple English for beginners) / Japanese / Korean / Spanish / French / German / Portuguese / Russian / Arabic, and the definition (native) language is also selectable.
  • Gamification (all local, no backend):
    • ❀️ Hearts (5/day): a wrong answer costs one heart; 0 hearts locks the card until tomorrow.
    • πŸ”₯ Streak: consecutive active days.
    • ⚑ XP and badge tiers (Bronze β†’ Diamond).
    • πŸŽ“ Mastery: mastered items are marked complete (not deleted) and stop appearing in random picks.
  • Mastery rules: per card, choose By-count (answer N times) or SRS spaced repetition; the number of questions per session is also adjustable.
  • Quiz modes: Copy (type the word), Recall (type the target language from the definition), Choice, Audio (listen then spell, local Web Speech).
  • Wrong-word notebook: wrongly answered words go to the notebook automatically; you can review, remove, or clear them all for focused review.
  • Learning report: check total XP, streak days, mastered words, wrong words, and accuracy at any time.
  • Data privacy: all progress persists to the host storage directory (english-data.json); Export / Import JSON for backup & migration β€” no self-hosted backend.
  • When the current card is fully mastered, a banner prompts you to pick another card or generate a new topic.

πŸ“‹ Built-in Task Board

  • Provides a "Task Board" entry in the sidebar, with two views you can switch between at any time:
    • Week Matrix (default main view): lays out this week's tasks by "category Γ— Mon–Sun" for a quick overview;
    • Five-column kanban: Planned / To-do / In Progress / Done / Failed, ideal for pipeline-style progress.
  • Two task types:
    • Lightweight todo: jot it down and tick it off manually β€” great for small chores;
    • Executable task: hand the task to the agent to actually execute β€” the execution target can be pinned to:
      • a workspace;
      • a mode (agent preset);
      • a permission level (read-only / workspace-write / full access; falls back to the runtime default when omitted).
  • Scheduling: supports 5-field cron expressions (e.g. 0 23 * * * runs every day at 23:00), with handy presets like "daily 09:00 / hourly / every 10 min / every Monday 09:00".
  • Organization: tasks can carry a priority (High / Medium / Low), category, and date; when creating a task you can fill in common title templates from "quick phrases".
  • Nice details: the search box filters by title/description; the "quick add" box creates a todo by pressing Enter; archived tasks can be restored anytime.
  • Execution history: every executable task keeps a history you can review, including the generated chat session.
  • Week Matrix extras (use your weekly plan as a workbench):
    • Week start: choose Monday or Sunday;
    • Category management: built-in Business/Tech Needs, Operations, General Management, and Support Expectations categories, all customizable;
    • Daily check-in: mark "today's daily report done" after finishing;
    • Stats panel: per-category task counts and completion rates for the week;
    • Daily-report reminder: banner reminder when the day is not yet complete;
    • One-click export: copy this week's / a single day's / plain-text report, or export a JSON backup.
  • Task data is persisted by the host to the storage directory (tasks.json).
  • Limitations:
    • Scheduling runs in the browser, so the GUI tab must stay open; a missed run is skipped and never backfilled.
    • Execution consumes API quota.
  • The plugin injects task-board usage guidance into the agent's system prompt, so when you mention "task board / kanban / scheduled task", the agent can collaborate accordingly.

🧭 Open With

  • In the workspace list, every workspace has an "Open" menu to open its directory with a local app in one click:
    • Open in Finder: launches the system file manager (Explorer on Windows, file manager on Linux);
    • Open in Terminal: launches your terminal (you can set a default terminal on the settings page, e.g. iTerm / Windows Terminal / GNOME Terminal / Konsole / XFCE; falls back to the system default);
    • Open in Editor: launches your editor (you can set a default editor on the settings page, e.g. VS Code / Cursor / CodeBuddy / Trae / Qoder / CatPaw and other popular flavors; falls back to the system default).
  • Extra IDEs (optional, all on by default): the menu can also append "Open in Xcode / Android Studio / DevEco Studio / WeChat DevTools / WebStorm / IntelliJ IDEA / PyCharm / GoLand" β€” turn them on as needed.
  • Thoughtful handling: uninstalled apps are skipped automatically and fall back to available commands without erroring out; WeChat DevTools requires enabling its "Settings β†’ Security β†’ Service Port" first and only opens when the directory is a WeChat mini-program project.

Task Board Credits

The "Task Board" feature of this plugin is a customized derivative of the packages/dsh-task-board sub-package from the open-source project zhu1090093659/dsh-web-ui.

  • Upstream project: dsh-task-board β€” a hot-pluggable DeepSeek Harness (DSH) Web GUI task board plugin, featuring a Host-authoritative ledger, real DSH session execution, and Host-side 5-field cron scheduling. It is mounted through cordis.patch.yml and the profile mechanism without modifying DSH source code.
  • Customizations in this plugin: while reusing its task-board core (multi-column kanban, Host-authoritative tasks.json ledger, real session execution, 5-field cron scheduling, system-prompt injection), this plugin adds its own Week Matrix main view (category Γ— weekly plan, daily check-in, stats panel, daily-report reminder, one-click export), and integrates the workbench banner, turn-complete confetti, and the "Open With" menu β€” all unified under the "Workbench Settings" namespace and host wiring.
  • License: governed by the LICENSE file in the upstream packages/dsh-task-board directory; use and distribute in accordance with its open-source terms.

For End Users

If you just want to install and use this plugin, you don't need to build from source.

Install (via the DSH plugin mechanism)

This plugin is distributed as a DSH plugin package. In an environment where DeepSeek Harness is already installed, add it to your profile using the dsh CLI:

# Install from npm (after publishing)
dsh plugin --profile <your profile name> add bga-dsh-workbench

# Or install from a Git repository
dsh plugin --profile <your profile name> add github:bingoogolapple/bga-dsh-workbench

# Or install from a local path (for development/debugging)
dsh plugin --profile <your profile name> add /path/to/bga-dsh-workbench

After installation, restart the DSH service (or the corresponding profile) for the banner, task board, and other capabilities to take effect.

Usage

  1. Open the Harness web interface and configure the banner text, avatar, confetti theme & sound, foreign-language learning, and Open With preferences under the "Workbench" group on the settings page.
  2. Enter the board from the sidebar "Task Board" entry, manage your tasks with the Week Matrix or the kanban view; enable scheduled execution when needed.
  3. Collaborate with the "Task Board" in the chat, letting the agent help you manage and execute tasks.

For Maintainers

If you are a repository maintainer or want to modify and rebuild from source yourself, read on.

Directory Structure

bga-dsh-workbench/
β”œβ”€β”€ images/                       # README screenshot assets
β”‚   β”œβ”€β”€ bga-dsh-workbench-main.png   # main screen
β”‚   └── bga-dsh-workbench-settings.png  # settings page
β”œβ”€β”€ src/                          # source code
β”‚   β”œβ”€β”€ index.ts                  # Host entry: wires up banner / routes / task board
β”‚   β”œβ”€β”€ routes.ts                 # HTTP routes: banner avatar / config / settings / task persistence
β”‚   β”œβ”€β”€ settings.ts               # "Workbench Settings" namespace and schema
β”‚   β”œβ”€β”€ task-board-host.ts        # injects task-board guidance into the agent system prompt
β”‚   β”œβ”€β”€ open-app.ts               # "Open with" logic (terminal / editor / extra IDEs)
β”‚   β”œβ”€β”€ core/                     # task board storage and other core logic
β”‚   └── client/                   # browser-side (Client): banner, confetti, foreign-language learning, task board UI, Open With, settings section, etc.
β”œβ”€β”€ lib/                          # build output (esbuild bundle + tsc type declarations), shipped with the package
β”œβ”€β”€ build.mjs                     # build script: produces lib/index.js (host) and lib/client.js (browser)
β”œβ”€β”€ cordis.patch.yml              # Cordis composition patch: plugs the plugin into the host composition
β”œβ”€β”€ dsh.plugin.json               # plugin manifest (entry, injections, client platform)
β”œβ”€β”€ package.json                  # dependencies and scripts
β”œβ”€β”€ tsconfig.json                 # TypeScript config (with declaration output)
β”œβ”€β”€ vitest.config.ts              # test config
β”œβ”€β”€ pnpm-lock.yaml                # pnpm dependency lock
β”œβ”€β”€ pnpm-workspace.yaml
β”œβ”€β”€ LICENSE                       # MIT License
└── README.zh-CN.md

Build from Source

Prerequisites: Node.js β‰₯ 22.19, pnpm, and a local ../deepseek-harness (devDependencies reference it via link:).

pnpm install          # install dependencies (devDeps linked to local deepseek-harness)
pnpm typecheck       # tsc --noEmit type checking
pnpm test            # vitest runs the unit tests (currently 129 cases)
pnpm build           # run build.mjs: produces host/browser output and type declarations under lib/
pnpm check           # runs typecheck + test + build in sequence

The prepack script automatically runs pnpm build before pnpm publish, ensuring the published lib/ is up to date.

Local Debugging

During development you can install from a local path into your DSH profile:

dsh plugin --profile <your profile name> add .

After editing the source, run pnpm build again and restart the DSH service for the corresponding profile to load the latest output.

Packaging and Publishing

  1. Make sure the files field in package.json (which includes lib, dsh.plugin.json, cordis.patch.yml, LICENSE, README.md, README.zh-CN.md) matches the actual artifacts; run pnpm build locally to generate lib/ before publishing.

  2. Tag a version and push, for example:

    git tag v0.0.1
    git push origin v0.0.1
    
  3. Users can then install the plugin:

    • From npm (after publishing):

      dsh plugin --profile <profile> add bga-dsh-workbench
      

      where <profile> is the target DSH profile name (e.g. web):

      dsh plugin --profile web add bga-dsh-workbench
      
    • From a Git repository (when not yet published to npm):

      dsh plugin --profile <profile> add github:bingoogolapple/bga-dsh-workbench
      

Support the Author

  • The author's main coding plan is OpenCode Go, a cloud subscription (OpenCode Go) built on the open-source opencode.ai. By subscribing through the author's referral link Subscribe to OpenCode Go, both you and the author get $5 of subscription credit β€” feel free to support the author through this link. Thank you!

OpenCode Go includes the following usage credit limits, so using cheaper models almost never causes token anxiety:

  • 5-hour limit β€” $12 of usage credit
  • Weekly limit β€” $30 of usage credit
  • Monthly limit β€” $60 of usage credit

Recommended Projects by the Author

License

This project is open-sourced under the MIT License and can be freely used, modified, and distributed.