Preface¶
When running coding agents with DeepSeek Harness (dsh), each round often takes a long time. The model will think, inject context, run commands, edit files, list directories, and the interface will scroll through tool cards one by one. The process is complete, but when you just want to confirm “what exactly was changed and what was produced in this round”, you have to scroll up through the long logs.
DeepSeek Harness is designed with “everything is a plugin”: models, tools, skills, sessions, and UI can all be replaced at the configuration layer without modifying runtime source code. The community directory deepseek-harness-plugin.com is an independent site not officially affiliated with DeepSeek / HyperMind, used to discover such extensions. dsh-focus-chat is one such session and messaging plugin: it does not modify the chat view itself, but adds a “Focus Chat” tab in the Web GUI, collapsing an entire assistant round into expandable summary rows.
This article is organized after cross-checking the plugin directory page, GitHub repository README / package.json, and npm package page: what it is, what information it can collapse, how to install it, and what it explicitly cannot do.
What It Is¶
dsh-focus-chat is a reading plugin for the dsh Web GUI, maintained by dingyi222666. The npm package name is @dingyi222666/dsh-focus-chat, and the current version is 0.1.5 (released on 2026-08-16). The package.json declares the license as BSD-3-Clause; there is currently no separate LICENSE file in the repository, and GitHub has not automatically recognized the license, so you need to check the source code yourself before installing.
The problem it solves is very specific: the default chat view is suitable for following the process step by step, but not for scanning results. The plugin adds a Focus chat tab to the conversation, collapsing consecutive tool rounds into summaries in a way similar to Claude Code. The repository README states: the view is purely a client-side derivation of recorded conversation snapshots, will not send requests to the model, and does not assemble or send provider requests, so there is no KV Cache impact.
The dsh.client.platform field in package.json is web, meaning it runs on the web interface, not a terminal TUI plugin. The GitHub repository has dsh and dsh-plugin topics, and the primary language is TypeScript. As of 2026-08-17, GitHub shows 20 stars; the community directory page listed 16 stars at the time of inclusion, so refer to the repository page for the latest count.
Core Features¶
Collapse a Full Round into Summary Rows¶
After enabling the focus view, you no longer need to watch each tool card step by step. The example summary row given in the README is:
Thought for 36 seconds, loaded 3 context items, ran 2 commands, edited 8 times, read 17 files, listed 18 directories
The entire round can also be collapsed into a single line showing Worked for X min Y sec. Clicking any row will expand the full details: tool cards, thoughts, context injections, outputs, copy/fork operations, rendered exactly like regular chat rows. Interruptions mid-round will split the fold into segments, each with its own duration; stopped rounds will show Stopped after user X instead of “Worked for”.
Settlement notifications for background tasks (such as notice entries like bash pnpm install [status: completed] injected by tool-jobs) will be grouped into N background tasks in the summary, instead of being displayed as a separate “injected …” line. The full notification text will still be visible when expanding the row.
Failures in file operations (edit/read/write) will not be written into the summary row — edited N files counts successful results; only commands and other tools will include failure annotations.
Switch to the focus tab to see “what just happened”, or switch back to the default chat view to see the full process.
Why an Independent Tab Instead of Modifying the Chat View¶
The README specifically explains this: the internal chat view is closed to third-party plugins, and this plugin deliberately avoids modifying dsh source code.
- Chat rows are rendered via keyed slots such as conversation.chat.node, tool.call.toolview, and conversation.chat.turnTail. These slots are declared by the chat interface itself, and refuse to be declared a second time when loaded. The plugin cannot insert rows into the conversation flow, nor can it declare its own slots for the chat interface.
- Importing values from another plugin package across bundle boundaries will be blocked by the bundle purity guard, so the plugin cannot borrow components from the chat view, and can only draw each row using shared primitives and public snapshots.
- The only合法 insertion point for third-party plugins is the conversation.view list slot (the entire message interface). Therefore, the plugin ships with a complete set of views instead of modifying the default chat display.
Modifying the default chat view itself would require changing the chat package, which is exactly what this plugin avoids.
Explicit Limitations¶
Focus Chat is a faithful reading interface, not a second chat view. The gaps listed in the README include:
- No Inspect/detail panel deep links. The tool card content is the same, but there is no “jump to details” button.
- Tool card extensions added by other plugins to the chat view will not be rendered in the focus view, which uses built-in cards instead.
- Collapsing follows consecutive tool rounds. As long as there is visible content (replies, commands, interruptions) between two segments, they will remain separate.
- Inline file links depend on an optional file mention service, with the same toggle as the chat view.
Installation and Activation¶
The installation command given on the community directory page is as follows, run it in the DeepSeek Harness terminal:
dsh plugin add github:dingyi222666/dsh-focus-chat
For reproducible installations, pin the commit hash as instructed on the directory page:
dsh plugin add github:dingyi222666/dsh-focus-chat#commit
Replace commit with the actual commit hash from the repository.
The plugin author’s README recommends installing from npm to the web profile (requires dsh >= 0.1.0-rc.6), then restart the web interface:
dsh plugin --profile web add @dingyi222666/dsh-focus-chat
dsh web
Then open the “Focus Chat” tab in any conversation. The dsh plugin command adds the dependency to the web profile. This is a bundle-type plugin, and the full package name needs to appear in the profile’s dsh.profile.bundles list to load; newer versions of dsh will automatically add it, but if the entry is missing in older builds, you need to add it manually. The bundle patch will take effect on the next startup.
When launching the CLI from the repository source code, the README requires directly calling the bin, for example:
node --import tsx/esm apps/cli/src/bin.ts ...
The directory page also reminds users: the plugin runs with the permissions of the current dsh process, and may execute code during installation. Check the source repository and license before installing.
Typical Usage¶
- Confirm that you are using dsh’s Web GUI (
dsh webornpx @deepseek-ai/dsh web), not just the terminal interface. - Install the plugin to the web profile as instructed in the previous section, then restart
dsh web. - Open any in-progress or completed conversation, and switch to the Focus Chat tab.
- First check the summary rows: thinking time, number of context items, command count, file read/write count. Click the corresponding row to view tool cards and outputs when details are needed.
- If you interrupt the agent mid-run, note that the fold will split into segments, each with its own duration count; when actively stopping, look for
Stopped after user X. - To verify the full tool trail, switch back to the default chat view. Both views read from the same conversation snapshot, and the focus tab only changes the reading method.
Applicable Scenarios and Notes¶
It is well-suited for these situations:
- There are many tool calls in a round, and you just want to first see which files were changed and which commands were run.
- You need to quickly explain to others “what was done in this round”, without pasting the full tool logs.
- You care about the reading experience of the web interface, and accept “opening a separate tab without modifying the default chat”.
Please note:
- Only for Web GUI. package.json marks platform: "web", and this tab is not available for terminal TUI.
- dsh version. The README requires dsh >= 0.1.0-rc.6; the API is still changing during the developer preview phase. If the tab does not appear after upgrading dsh, first check if the full package name @dingyi222666/dsh-focus-chat is present in dsh.profile.bundles.
- Not a second chat client. You cannot add Inspect deep links in the focus view, nor can you see custom tool cards added by other plugins to the chat view.
- Permissions and source. The plugin runs with the permissions of the current dsh process. The community directory is not an official app store, so read the GitHub source code and license before installing; for production environments, it is recommended to pin the commit to avoid silently modified code being pushed in future updates.
- License file. Refer to the BSD-3-Clause declaration in package.json / npm, and confirm whether a LICENSE file has been added to the repository later.
Summary¶
dsh-focus-chat does something very restrained: it does not modify dsh source code, does not insert rows into the default chat, and only provides a collapsible reading interface on the Web GUI’s conversation.view slot. For web users who “have too long a process and just want to see the final output”, switching to the focus tab and clicking the summary is more straightforward than scrolling up repeatedly in the default view.
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-focus-chat/
GitHub: https://github.com/dingyi222666/dsh-focus-chat
npm: https://www.npmjs.com/package/@dingyi222666/dsh-focus-chat