Introduction

When searching for “what was said in the Nth turn” or “where a specific assistant reply starts” in a long conversation, one often has to scroll back and forth. sent-msg-locator is a DSH plugin that provides a persistent icon column for turns on the left edge of the chat area, turning the current session’s turns into clickable, hoverable navigation entries to view summaries.

What is this

Maintained by ShanHaiFish and licensed under MIT, sent-msg-locator is positioned as a pure Client plugin. It targets the boundary of “one turn = user sends -> assistant replies fully” and displays turn number icons in the session interface, supporting click-to-locate and highlight linkage.

The package provides two forms:

  • Static bundle: Automatically loaded with the profile layer stack after installation and persists across DSH processes.
  • Dynamic plugin fallback form: Composed of manifest.json and client-source.js.

Core Features

The following describes the interface behaviors:

  • A floating icon column persists on the left edge of the chat area, with one bubble number icon per turn.
  • After clicking an icon, the chat viewport smoothly scrolls to the beginning of the corresponding turn.
  • The current viewing turn is highlighted, and the icon column follows automatically to ensure the highlighted icon is visible.
  • When the session snapshot updates, the icon column updates synchronously; when there are many turns, the icon column itself is scrollable.
  • Hovering over an icon shows the turn number, time, and the first user input text of that turn; extremely long text is truncated.
  • When switching to the trajectory view, the icon column and hint cards automatically hide and restore when switched back.
  • Interface colors use theme CSS variables, adapting to light/dark modes.

Installation and Activation

Install from npm

The following command installs the plugin to the web profile:

dsh plugin --profile web add sent-msg-locator

After installation, restart DSH, open any session, and you will see the icon column on the left edge of the chat area and start using it.

Install from local directory

If using a local debug copy, the path cannot contain spaces. The local installation command verified in the materials is:

dsh plugin --profile web add file:C:/Users/whaow/.dsh/plugins-dev/sent-msg-locator

This command depends on a specific local path and is only suitable as an example for local installation.

Dynamic Plugin Fallback Form

The dynamic form needs to be reactivated every time DSH restarts. The basic steps are:

  1. Read the complete content of client-source.js in the current directory.
  2. Call cordis_define to register the plugin.
  3. Call cordis_run to activate.

Typical Usage

  • When you need to quickly return to a specific turn, click the corresponding number in the icon column.
  • When you want to confirm the content at the start of a turn, hover over the icon to view the summary of the first user input.
  • While scrolling through reading, use the highlighted icon to determine the current viewing turn.
  • After session pagination, if the oldest visible turn shows that user messages have not loaded, click “Load earlier” in the chat area; once the snapshot updates, the text will appear.

Permissions and Notes

sent-msg-locator is a pure Client plugin with no Host capabilities, meaning no RPC / fs / network / spawn. Its scroll positioning only uses element-level APIs: closest, getBoundingClientRect, scrollTo.

You should check the source code and license before installation. Although this plugin claims to be a pure Client plugin, it still runs with the permissions of the current dsh process; if you have doubts about the source or behavior, review the repository code before installing.

Package declaration information:

{
  "dsh.client.platform": "web",
  "peerDependencies": {
    "@deepseek-ai/cordis": "^4.0.1"
  }
}

These fields indicate it targets the web profile and depends on the relevant Cordis peer dependency. After installing the static bundle, DSH needs to be restarted; for the dynamic plugin form, cordis_define / cordis_run needs to be re-executed after every restart.

Conclusion

The value of sent-msg-locator lies in making turn navigation in long sessions explicit: click-to-locate, current turn highlighting, and hover summaries all revolve around the single task of “quickly returning to a specific turn.”

GitHub repository: https://github.com/ShanHaiFish/sent-msg-locator. This article does not attach a verifiable directory page link; you can search for “sent-msg-locator” in community directories.