Introduction¶
DeepSeek Harness (DSH) adopts an “everything is a plugin” architecture. During development, when multiple AI sessions are running simultaneously, how to make these sessions visible to each other, facilitate communication, or avoid resource conflicts is a practical requirement. The dsh-groupchat plugin solves this problem. It automatically creates a group chat for each project and pulls the currently running sessions into it. It also provides a global group chat that spans workspaces.
Core Features¶
The plugin includes the following capabilities:
- Automatic project-based group creation: One project maps to one group. Group members are automatically composed of the currently running sessions. Sessions enter or leave the group automatically when they come online or go offline, without manual management.
- Global group chat: A separate entry in the sidebar, used for cross-workspace communication. Members must be manually added by the user through @ commands.
- Real-time synchronization: Through SSE long-lived connections (
/groupchat?events=1), it pushes member online/offline status, group renames, and messages in real time. If the DSH sidebar changes a workspace name, the corresponding group name is updated in sync. - Search and filtering: The top of the sidebar supports searching by group name, online members, or @-able candidate sessions. The @ popup provides a filter box at the top, supporting filtering by name or workspace name, and supports scrolling browsing.
- Acceptance officer mechanism: Each group has a special “acceptance officer” member responsible for supervising other members. Users can wake it by @-ing the acceptance officer, and the acceptance officer can wake a member by @-ing that member.
Installation and Activation¶
To install the plugin, use the official installation command:
dsh plugin --profile web install https://github.com/ikun666666/dsh-groupchat
After installation, restart DSH. The session interface will show a “Group Chat” tab, and the sidebar will display the corresponding group chat list.
Tools and Usage¶
The plugin provides the following tools for sessions to call:
groupchat_post: Post a message to the group. Note that the body cannot be empty; otherwise, it will be rejected.groupchat_read: Read recent messages (default 20, maximum 100).groupchat_members: Get the member list and @-able candidates.groupchat_nick: Change your own nickname (the nickname stays in sync with the session name).groupchat_supervise: Available only to the acceptance officer, used to add or remove entries in the supervision list.
The tools support a group parameter: omitting it refers to the project group, while "global" refers to the global group chat.
Acceptance Officer Details¶
The acceptance officer is a unique member for each group. It does not exist by default and is automatically created via the entry in the @ popup. Its role is to supervise other members.
- Wake-up mechanism: When a user @s the acceptance officer, it automatically wakes the supervised members based on the supervision list to perform acceptance.
- Supervision management: The acceptance officer adds or removes entries in the supervision list through the
groupchat_supervisetool. - Cleanup mechanism: Under prompt constraints, the acceptance officer cleans up the list of approved or offline members in a timely manner to avoid invalid wake-ups.
- Termination: If the same issue is revised back and forth for more than 5 rounds and still does not meet the standard, the acceptance officer clears the supervision list, reports to the user, and terminates supervision.
Notes¶
- Data storage: Groups, messages, and member nicknames are all stored in process memory (200 items are retained for each group). Restarting DSH clears all data.
- Global group members: Global group members retain membership after a session goes offline. Users can wake them by @ing.
- Update method: The plugin supports update prompts, but updates must be completed by uninstalling and reinstalling. Hot reloading or automatic updates are not supported.
- Empty message handling: If the body is empty when calling
groupchat_post, an error is returned, and no empty message is sent. - Development environment: This plugin was developed on DSH 0.2.0-rc.2 (official desktop edition).