Preface

When using DeepSeek Harness (DSH) for reading and writing, looking up words and their etymologies are high-frequency actions. There are two common practices: opening a new tab to visit a dictionary website, or repeatedly typing structured prompts within the session and organizing the results yourself. The former leaves the current workspace, while the latter involves repetitive actions and inconsistent result formatting.

dsh-english-search solves this problem: it fixes a search bar in the style of vocabtool.com at the very top of the DSH session area, providing three modes: word lookup, etymology, and Q&A. Word lookup is handled by DSH’s own LLM service—no access to external sites, no database, no local backend needed. Below is an introduction to the positioning, principles, and usage of this plugin.

What is this

dsh-english-search is a DSH plugin maintained by kami-mura, current version 0.4.5, under the MIT license. One-sentence positioning: A DSH native-style top search bar plugin (lookup/etymology/Q&A), fixed at the top of the session area, driven by DSH’s own LLM, with no external site dependencies.

Its dependency surface is narrow: On the Host side, it uses DSH built-in llm / agentDefaultModel / webServer services; on the Client side, it uses the slots service and react platform module, both of which are built-in DSH capabilities. The entire plugin has no external HTTP calls, no cookies, no database, no local service, and no build steps.

Core Features

  • Provides a search bar at the top of the DSH session area, independent of the message scroll area; uses DSH WebUI native design tokens (--dsw-alias-*), sharing the same surface, stroke, border radius, and shadow as the input box card; automatically follows light/dark themes; width narrowed to 520px (--es-bar-max-width).
  • Three modes: Lookup / Etymology / Q&A
  • Lookup uses the DSH current session’s default model (agentDefaultModel), sharing the model quota with the conversation.
  • Supports shortcut prefixes: !arena for direct etymology, ? for direct Q&A.
  • Result panel uses the same style as the landing page (loading / error / result card + close button); content renders Markdown (bold / list / title / quote / inline code).
  • Three sets of system prompts consistent with the vocabtool.com backend, derived from the MIT project kami-mura/vocabtool-web.

How it works

The plugin is split into two ends:

  • Host (lib/index.js): Registers a webServer route /api/plugins/english-search, calls the DSH model via ctx.get('llm') + ctx.get('agentDefaultModel') with effort=off, automatically falling back to no effort on failure.
  • Client (lib/client.js): A handwritten CJS bundle registered in the official conversation.input.dock slot (id english-search) to manage the lifecycle, then mounted to the top of the session root node via a React Portal; the communication between Host and Client is via a same-origin fetch call.

The decision to use conversation.input.dock instead of conversation.top is because conversation.top did not exist in DSH 0.1.0-rc.6.

Installation and Enablement

Standard installation command:

dsh plugin --profile web add dsh-english-search

Can also install from GitHub:

dsh plugin --profile web add github:kami-mura/dsh-English-search

This package is a standard DSH bundle (dsh.bundle.patch). dsh plugin add automatically adds it to the profile’s layer stack (dsh.profile.bundles), so no manual editing of configuration files is required.

After installation, you must restart the dsh web service process for it to take effect—note that this means restarting the service process, not refreshing the browser page.

Typical Usage

After installation and restart, the search bar appears at the top of the session area. First select a mode, then input content:

  1. Default input a word to perform a lookup;
  2. Input !arena to perform a direct etymology query;
  3. Input ?lie 和 lay 的区别 to perform a direct Q&A.

The query process displays loading / error states in the result panel; upon completion, it presents the result card, supports Markdown rendering, and includes a close button in the top-right corner.

The lookup request uses the current session’s default model, so this part consumes quota shared with your conversation; you need to account for this when evaluating usage.

Install-free, Try it Dynamically First

If you don’t plan to deploy directly, you can run it dynamically via cordis_define in any DSH session:

  1. Execute cordis_define with plugin.kind: "new" and idPrefix: "vocab"; paste the plugin.host.js from the repository into code.host, and paste plugin.client.js into code.client;
  2. Execute cordis_run to activate (the Client package requires approval the first time).

Note that the dynamic version and the native version display at different positions: the dynamic plugin environment does not provide react-dom, so the search box will appear above the input box; only the native plugin installed via npm/GitHub is fixed at the top of the session area. To verify the final form, it is still recommended to go through the official installation.

Common Questions and Notes

If you cannot see the search bar after installation, troubleshoot in order:

  1. Confirm the plugin version is ≥ 0.4.2. Run dsh plugin --profile web list to check the installed version. Versions 0.4.0 and earlier use the conversation.top slot, but DSH 0.1.0-rc.6 does not have this slot, so the search box will not render. If the version does not match, upgrade:
dsh plugin --profile web add dsh-english-search@latest
  1. Restart the dsh web service. After installing or upgrading a plugin, you must restart the service process; refreshing the browser page is ineffective.

  2. If it still does not display, check the browser developer console for english-search related errors, and confirm there are no plugin errors in the service startup logs.

Uninstall command:

dsh plugin --profile web remove dsh-english-search

Also, a reminder: the plugin runs with the permissions of the current dsh process. You should check the source code and license before installing. This project is under the MIT license, and the code is concentrated in lib/index.js, lib/client.js, and the two entry files for the dynamic version, so the reading cost is low.

Conclusion

The value of dsh-english-search lies in incorporating high-frequency actions like word lookup directly into the DSH session itself: the UI uses native design tokens, maintains visual consistency with the input box, and uses DSH’s own model service without depending on external sites. For those who frequently read English materials in DSH, this is a practical plugin with low installation costs and clear boundaries.

  • Community directory page: https://www.skillhub.cn/plugins/kami-mura/dsh-English-search (Community-maintained plugin directory, no official affiliation with DeepSeek / Huafan)
  • GitHub repository: https://github.com/kami-mura/dsh-English-search