DeepSeek Harness plugin

dsh-bot-mode

Bot Mode for DeepSeek Harness: a roster of named bots with avatars, personas and per-bot chats, each backed by one durable continuable subagent session that keeps memory across turns.

Jump to install

Source facts

Repository
zenghaili0901/dsh-bot-mode
Latest update
Aug 20, 2026
Category
Workflow & Automation
GitHub stars
0

Install

Start with a prompt that asks an agent to read the source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to read the page and repository first.

Do not install anything yet. Read this DeepSeek Harness plugin and explain what it does, which files, networks, or credentials it can access, and how to install and remove it.

Plugin page: https://deepseekplugins.org/plugins/zenghaili0901/dsh-bot-mode
GitHub: https://github.com/zenghaili0901/dsh-bot-mode
Plugin: dsh-bot-mode
Author: zenghaili0901
Install command: dsh plugin --profile web add github:zenghaili0901/dsh-bot-mode

Do not run the install command until I confirm.

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource ยท read only

๐Ÿ‹ DSH Bot Mode

> Bot Mode for DeepSeek Harness โ€” a roster of named bots with their own personas, chats and routines. / ๆŠŠ DeepSeek Harness ็š„ๅญ Agent ๅ˜ๆˆไธ€็พคๆœ‰ๅๅญ—ใ€ๆœ‰ๆ€งๆ ผ็š„ Botใ€‚ๅˆ†ไบซๅฟซไน๏ผŒๅฟซไนๅˆ†ไบซใ€‚

![License: MIT](LICENSE) ![Available on awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/blob/main/data/plugins/zenghaili0901__dsh-bot-mode.yml)

A validation plugin that turns DeepSeek Harness's subagent capability into a friendly roster of named bots โ€” each with its own name, avatar, persona (system prompt), and chat. Built on the native DSH plugin seams: zero core patches, every effect removable.

<p align="center"> <img src="assets/bot-roster.png" alt="Bot Mode roster โ€” 8 named bots with their own personas and chats" width="680"/> </p>

Features

  • ๐Ÿ‹ Bot roster โ€” a sidebar entry (sidebar.footer.action) opens a compact panel (shell.overlay) listing your bots as an icon grid, with history search over chats. Minimized bots collapse into a capsule row with live status glyphs (ๅพ…ๅ‘ฝไธญ / ่ฟ›่กŒไธญ).

<p align="center"> <img src="assets/bot-roster-mini.png" alt="Bot roster panel โ€” standby capsules" width="560"/> </p>

  • โž• Create / delete bots โ€” 21 official role icons (used ones grey out โ€” no repeats), auto-bound colors, persona prompt; delete uses an iPhone-style red-badge + Yes/No confirm, then cleans the bot's chat/position/profile data.

<p align="center"> <img src="assets/bot-create.png" alt="Create bot dialog โ€” pick a role icon, name, and persona" width="460"/> <img src="assets/bot-delete.png" alt="Delete confirmation with red badge" width="460"/> </p>

  • ๐Ÿ’ฌ Floating chat windows โ€” draggable, resizable, minimizable, multi-window parallel; click-to-front + input focus; viewport-clamped (never stranded off-screen); minimized bots collapse into a capsule row (ๅพ…ๅ‘ฝไธญ / ่ฟ›่กŒไธญ with animated status glyphs).
  • ๐Ÿง  Continuable conversations โ€” each bot owns one durable subagent session (startContinuable + followup): native memory across turns, no per-message session pile-up, auto-rebuild when the parent session switches.
  • ๐Ÿ“Š Structured output โ€” bot replies render thinking folds, tool-call chips, inline markdown images, and dsh-ui cards (text / list / keyvalue 4-shapes / table / callout / stat / steps / grid) inside the floating window.
  • ๐ŸŽจ Theme-native โ€” every color/border/radius comes from the official --dsw-alias-* tokens; icons are official dsh-client-ui-primitives glyphs with CSS motion (spin / breathe / check).
  • ๐Ÿ”Œ Zero core patches โ€” client UI rides ctx.slots.inject; host is a plain HTTP route on the profile web server with same-origin guard, request validation, and per-bot request locking. Toggle off / remove the plugin and the stock UI returns exactly.

Install

> Requires DeepSeek Harness web profile (dsh web). Tested on macOS.

git clone --depth 1 https://github.com/zenghaili0901/dsh-bot-mode.git
# link the plugin into the profile's node_modules
ln -s "$PWD/dsh-bot-mode" "$DSH_HOME/profiles/node_modules/@deepseek-ai/dsh-client-ui-bot-mode"

Then append to $DSH_HOME/profiles/web/cordis.patch.yml:

- insert:
    - id: bot-mode
      name: '@deepseek-ai/dsh-client-ui-bot-mode'

Restart the web profile (dsh web) and reload the page. The Bot Mode entry appears at the sidebar foot, next to Settings.

Usage

1. Click Bot Mode in the sidebar footer (or the Bot Mode card under Settings โ†’ Plugins). 2. In the panel: ๏ผ‹ ๆ–ฐๅปบBot โ€” pick one of the 21 role icons (used ones are greyed out), a name, and a persona prompt. 3. Click a bot to open a floating chat window; type and send. The bot replies in character, remembers the conversation, and can render tables/cards/images.

Architecture

Browser (client plugin)                    Node (host plugin)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ BotModeEntry  sidebar.footerโ”‚  fetch     โ”‚ POST /bot-mode/chat          โ”‚
โ”‚ BotModeOverlay shell.overlayโ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ โ”‚   startContinuable/followup  โ”‚
โ”‚ BotChatWindow  chat windows โ”‚  JSON      โ”‚   poll child session events  โ”‚
โ”‚ BotModeCard    settings     โ”‚ โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚   (e.data.message.content)   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   reply    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • Client: lib/client.js โ€” __ModuleLoader__ bundle (hand-authored, no build step), registers into settings.plugin.item (serves the settings.botmode locale namespace), sidebar.footer.action, shell.overlay.
  • Host: lib/index.js โ€” registers POST /bot-mode/chat (continuable dispatch) and POST /bot-mode/cleanup (release entry on bot delete) on the profile web server; same-origin guarded; one durable subagent per bot; replies are polled from the child session's event log (turn/end boundary โ†’ assistant/message content).

Development

dsh-bot-mode/
โ”œโ”€โ”€ package.json       # dsh.client manifest (platform: web)
โ”œโ”€โ”€ assets/            # README screenshots
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ index.js       # host half: continuable chat + cleanup routes
โ”‚   โ””โ”€โ”€ client.js      # client half: roster + chat UI (no build step)
โ””โ”€โ”€ node_modules/      # local link to @deepseek-ai/dsh-subagent (dev only)

Roadmap (validation โ†’ production)

  • [x] Per-bot persisted chat history (per-bot localStorage keys)
  • [ ] Bot-to-bot messaging (@mention relay)
  • [ ] Group chats (round-robin coordination)
  • [ ] Routines (cron tasks per bot via dsh-schedule)
  • [ ] Deep persona injection via system-prompt/assemble
  • [ ] Cross-tab state sync (store sync surface is reserved)

License

MIT