Preface¶
The web GUI of DeepSeek Harness (DSH) is a coding agent. The New Session interface requires selecting a workspace before accepting messages—a reasonable requirement for a coding agent, as it must always work within a directory. However, not every query is a work query; when you just want to ask a quick question or clarify a thought, selecting a directory becomes an obstacle.
The philosophy of DSH is “everything is a plugin,” and this experience gap is exactly where plugins can fill it. The omdsh-chatmode introduced below does just that: it adds a Chat / Work toggle above the conversation. In Chat mode, you can start a conversation without selecting a project directory; these conversations are collected in a managed Chat workspace in the sidebar.
What is this¶
omdsh-chatmode is a Chat mode plugin for the DeepSeek Harness web GUI. It belongs to omdsh-plugins, the npm package name is @omdsh-plugins/omdsh-chatmode, current version 0.2.5, license MIT, and classified as workspace in package metadata.
It relies on the registry published by omdsh-basemode (e.g., sessionModes, modeOf, column), and does not modify any part of Harness itself. All its capabilities are built upon these seams.
Core Features¶
Chat / Work Toggle and Managed Workspace¶
The plugin registers two segments, Chat and Work, into the sessionModes registry published by omdsh-basemode, providing a mode toggle above the session. It also registers the real directory <dshHome>/sessions/chat as the Chat workspace grouping in the sidebar and keeps its title as “Chat”. Regardless of how many projects are open, this grouping always stays at the top of the sidebar—the host half-section is pinned at startup, and the browser half-section maintains it.
Both segments carry tone / owns. The green and blue dots on sidebar sessions are drawn by omdsh-basemode based on these declarations.
On the new session row in Chat, the workspace chip is removed: the plugin marks the built-in button rather than replacing it, so the preset chip provided by Harness remains in place.
Mode is Derived, Not Stored¶
A session is Chat if and only if it belongs to the managed Chat workspace. The toggle reads this fact and reports it; therefore, opening a conversation from the sidebar moves the toggle to the corresponding mode—the toggle describes where the current session is, not what it is.
Accordingly, navigating by segment is a navigation action, not a state write.
Work Toggle Always Stays in Current Project¶
When toggling to Work, the plugin first determines the project on screen using the sessionModes.column published by omdsh-basemode, then proceeds in order: return to the most recently left session in that project, then to the project’s most recent session, otherwise create a new one in that project—it will not jump to a different project.
“Recent sessions” have two exclusion criteria:
- Sessions claimed by other postures (determined by
modeOfin the registry, valid even when new modes are added). - Empty sessions—unless the project only has empty sessions, in which case the empty session is that project’s New Session row; opening it is better than creating another one.
Additionally, the Chat segment declares inProject: false, indicating that its conversations are not archived to a specific working project.
New Session Attribution¶
The New Session request is first handled by the segment holding the current column, i.e., the newSession callback of modes.register. Chat and Work do not respond, handing it over to Harness’s own New Session and yielding that column. One behavior handled by this plugin is: New Session reuses an existing empty session in the workspace.
Installation and Enabling¶
This package is a profile bundle: it is installed into a profile via dsh plugin and appended to the profile’s layer stack; its load line combines with the built-in code tree. The README only describes this mechanism and does not provide the full command text, so this article will not simulate it—refer to the repository README before installing.
Version and Environment Requirements (from package.json):
Package Name: @omdsh-plugins/omdsh-chatmode
Version: 0.2.5
Node: ^22.19.0 || >=24.0.0
Package Manager: pnpm@11.7.0
License: MIT
Inject the following modules on the client side, platform is web:
@deepseek-ai/dsh-client-locale
@deepseek-ai/dsh-api-session-controller
@deepseek-ai/dsh-api-workspace-controller
It does not replace any controls of Harness. When removing the plugin, the load line, the two segments, and all seams they use will be removed together.
Typical Usage¶
After installation, daily usage involves three types of navigation:
- Toggle to Chat: return to a left conversation, or start a new dialogue in the Chat workspace.
- Toggle to Work: return to a left working session in the current project, otherwise to the project’s most recent session, otherwise create a new one in the project.
- Open a conversation from the sidebar: the toggle moves to the corresponding mode accordingly.
What runs inside the conversation: the chat runs the same agent as the working session, using the deployed default preset—unless the deployment specifies otherwise, it is Standard mode. To change the preset, still use the built-in chip from Harness.
For developers wanting to write modes for omdsh-basemode, the README provides an interface example for the newSession callback. omdsh-chatmode’s New Session route relies on this convention:
modes.register({
id: 'code',
newSession: (workspaceId) => startAnotherTerminal(workspaceId),
})
Returning true means “I have started it,” keeping the column unchanged; modes that do not respond hand the request over to the framework.
Scenarios and Notes¶
Suitable for those in the DSH web GUI who need to do project work but also want to ask quick questions: when a question is not about a specific project, there is no need to select a directory, and these conversations are stored separately from project sessions.
Three things to note before using:
- The plugin relies on the registry published by
omdsh-basemode(sessionModes,modeOf,column, etc.), so these seams must be available in the environment. - The plugin runs with the permissions of the current dsh process; check the source code and license before installing. The license for this plugin is MIT.
- It is a profile bundle, not a modification to Harness; removal restores everything to its original state.
Conclusion¶
omdsh-chatmode separates “quick questions” and “project work” in the DSH web GUI using a toggle and a set of managed seams, without modifying Harness itself. If you use both types of workflows, you might be interested.
- GitHub: https://github.com/omdsh-plugins/omdsh-chatmode
- Community Directory Page: https://www.skillhub.cn/plugins/omdsh-plugins/omdsh-chatmode (SkillHub is an independent community directory with no official affiliation with DeepSeek / QuantBit)