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:
!arenafor 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 awebServerroute/api/plugins/english-search, calls the DSH model viactx.get('llm')+ctx.get('agentDefaultModel')witheffort=off, automatically falling back to no effort on failure. - Client (
lib/client.js): A handwritten CJS bundle registered in the officialconversation.input.dockslot (idenglish-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:
- Default input a word to perform a lookup;
- Input
!arenato perform a direct etymology query; - 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:
- Execute
cordis_definewithplugin.kind: "new"andidPrefix: "vocab"; paste theplugin.host.jsfrom the repository intocode.host, and pasteplugin.client.jsintocode.client; - Execute
cordis_runto 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:
- Confirm the plugin version is ≥ 0.4.2. Run
dsh plugin --profile web listto check the installed version. Versions 0.4.0 and earlier use theconversation.topslot, 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
-
Restart the dsh web service. After installing or upgrading a plugin, you must restart the service process; refreshing the browser page is ineffective.
-
If it still does not display, check the browser developer console for
english-searchrelated 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