DeepSeek Harness plugin

dsh-composer-keys

Keyboard shortcuts for the DSH chat composer: Arrow Up/Down to cycle through historical user messages, Ctrl+C to clear input.

Jump to install

Source facts

Repository
kexin8/dsh-composer-keys
Latest update
Aug 19, 2026
Category
Tools & Capabilities
GitHub stars
3
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/kexin8/dsh-composer-keys
Plugin: dsh-composer-keys
Author: kexin8

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-composer-keys ⌨️

Keyboard shortcuts for the DeepSeek Harness (DSH) Web chat composer.

中文文档:简体中文

!License !Version !Platform !PRs Welcome

Type faster, navigate history with pure keyboard. No mouse needed.

---

✨ Features

ShortcutAction
Arrow UpFill the composer with the previous user message from history
Arrow DownMove to the next user message; at the end, restore your original input
Ctrl+CClear the composer when no text is selected (avoids conflict with Copy)

Behavior details

  • History cycling follows shell-style semantics: press ↑ to walk backwards through

your previously sent messages; press ↓ to walk forward again; at the newest end it restores whatever you had typed before you started navigating.

  • Ctrl+C only clears when the composer has content and no text is selected —

if you have selected text, the browser's native Copy takes precedence.

  • Uses Ctrl+C only, identical on Windows and macOS (on macOS, Cmd+C stays the system Copy).

---

📦 Install

From GitHub

dsh plugin --profile web add https://github.com/kexin8/dsh-composer-keys.git

From a local checkout

git clone https://github.com/kexin8/dsh-composer-keys.git
dsh plugin --profile web add link:~/dsh-composer-keys

Via npm (when published)

npm i dsh-composer-keys
dsh plugin --profile web add dsh-composer-keys

After installing, restart the DSH Web GUI and reload the page.

---

🧩 How it works

A client-only plugin. It registers an invisible component in the conversation.composer.dock slot (the additive, non-destructive input-region seat), which attaches a keydown listener on document and intercepts shortcuts only while the composer textarea is focused:

  • Arrow Up/Down — reads historical user messages from the live

ConversationSnapshot and fills the composer via inputActions.setDraft().

  • Ctrl+C — calls setDraft('') when the input is non-empty and nothing is selected.

No host process code, no persistence, no settings — pure client-side, stops cleanly on plugin stop/update.

---

🗂 Project structure

dsh-composer-keys/
├── lib/
│   ├── index.js        # host stub (client-only plugin)
│   └── client.js       # client module (__ModuleLoader__ format)
├── cordis.patch.yml    # cordis composition patch (inserts the plugin row)
├── package.json        # dsh plugin manifest
└── README.md

---

🤝 Contributing

PRs are welcome! Please make sure the plugin still works in the DSH Web GUI after your change. Keep the client code plain-JavaScript (no TypeScript/JSX in the shipped lib/ output) and never add host-side logic unless the feature truly needs it.

📄 License

[MIT](./LICENSE)