DeepSeek Harness Plugin: localsummer/dsh-group-chat

In DSH development scenarios, when multiple AI roles collaborate or simulate group conversations, users typically need to frequently switch the main session or manually manage context. The localsummer/dsh-group-chat plugin provides a multi-model role-based group chat panel. It allows binding different providers and models to roles in a group, and sharing conversation records within the group.

This plugin is maintained by localSummer and is open-sourced under the MIT license.

Installation and Enablement

Before installing, ensure the environment meets the requirements: dsh >= 0.2.0-rc.2, and the Node version must be ^22.19.0 or >=24.

  1. Run the installation command:
    dsh plugin --profile web add github:localSummer/dsh-group-chat#main
You can also use a local path for development:
    dsh plugin --profile web add link:$(pwd)
*Note: After installing via a local path, rebuilding the artifacts is required if the source code is modified; usually, `dsh web` must be restarted.*
  1. After installation, you must restart dsh web (or dsh --profile web) to load the plugin.

  2. Verify that the plugin was mounted successfully. Run the following command to view the configuration:

    dsh --profile web --dump-config
In the output, you should see the `# == @roaming-ai/dsh-group-chat` layer, including `id: group-chat`.

Core Features

Group and Session Management

  • Group Management: Supports creating, renaming, and deleting groups. Deletion requires confirmation, and the system retains at least one group. The left pane provides a search box to filter by group name or session name.
  • Session Directory Tree: Each group contains multiple sessions, displayed in a “Group → Session” tree structure. Each session row has a status dot before its name: in progress, awaiting confirmation (command gate), completed, or error. Opening a session clears the “output completed” marker.

Roles and Conversation

  • Role-Model Binding: Each role in a group can be bound to a different provider/model. Configuration items include persona, identification color, Temperature, deep thinking toggle, and reasoning level. Role configuration is performed through a right-side slide-out drawer.
  • In-Group Shared Conversation: All messages are shared with the entire group. Utterances are injected into each role’s context in the format “【Role Name】Content” (the most recent 40 original messages) and displayed in a streaming manner.
  • Session Title and Topic: After each round, the background uses the default model to generate a title (format: category emoji + object | goal) and a one-sentence summary. After manually renaming or changing the topic, this field is no longer modified automatically.
  • Constraint Memo: After exceeding the 40-message window, old messages are folded in the background into “Decided / Rejected / Pending” cards and inserted as conclusion memos at the message-stream fold point.
  • Multi-turn Conversation: Before sending, select the roles participating in this round via chips. After sending, automatic multi-turn execution proceeds in order (1–10 rounds), with the number of rounds shown with an animation. During sending, a speaking plan progress track is displayed below.

Message Interaction and Rendering

  • Rendering: Supports the same Markdown rendering as DSH (headings, lists, tables, code blocks, formulas). Messages from roles with “deep thinking” enabled include collapsible lines that follow in real time during streaming.
  • Actions: User/role messages can be copied or reacted to with emoji on hover (the capsule remains visible; click to cancel). The action group for role messages ends with the total elapsed time. Failed utterances retain a failure card and support retry (in-place overwriting the same message).
  • Image Input: Supports uploading, pasting screenshots, or dragging images (PNG/JPEG/WebP/GIF). Thumbnails are displayed above the text box, and after sending, they are shown outside the bubble. Images use DSH’s durable attachment channel, storing only references and not occupying group chat storage space.
  • @Mention: Typing @ pops up member candidates. Continuing to type after @ allows searching files in the group workspace and inserting @path chips.

Workbench and Tools

  • Three-Pane Workbench: The left pane is navigation (search + directory tree), the middle pane is the session stream (including colored ring avatars, model badges, and absolute clock), and the right pane is context (role card + workspace directory). The left and right panes can be collapsed via seam buttons.
  • Group Workspace Directory: Each group can specify a directory (group-level, shared by all sessions). When roles speak, text files in the first level under the root are automatically read (whitelisted extensions, up to 20 files, 16k per file / 48k total) and injected into the “shared materials” block of the system prompt.
  • Tool Execution: After setting up the workspace, roles can call read_file / list_dir. Permission levels are divided into three tiers:
    1. View only (default)
    2. Modify within workspace
    3. Full permissions
      The modification level requires per-command confirmation for shell commands, while the full permission level executes without confirmation.

Uninstallation

dsh plugin --profile web remove @roaming-ai/dsh-group-chat

After uninstalling, dsh web must be restarted. Plugin session data remains in the ~/.dsh/storages/group-chat/ directory; uninstallation does not delete this data.

Data Storage

Data is stored in ~/.dsh/storages/group-chat/. The directory structure includes:
* ledger.json: Index list for groups and sessions.
* <group-id>/: Group-specific data, including workspaceDir, roles.json, and the sessions/ directory.
* Session files are self-contained structures, supporting atomic writes and recovery from corruption. Image attachments store only durable references; actual files are stored in the harness attachment service.

羽毛球分组比赛记分
小程序二维码

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

Xiaoye