插件目录 / Developer / dsh-composer-keys
dsh-composer-keys
已验证 · 实测可装 kexin8
功能简介
⌨️ Keyboard shortcuts for the DSH chat composer — ↑↓ cycle history, Ctrl+C clear input. DSH web plugin.
可用 — 实测通过,早期项目
⌨️ Keyboard shortcuts for the DSH chat composer — ↑↓ cycle history, Ctrl+C clear input. DSH web plugin. 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-composer-keys ⌨️
Keyboard shortcuts for the DeepSeek Harness (DSH) Web chat composer.
中文文档:简体中文
Type faster, navigate history with pure keyboard. No mouse needed.
✨ Features
| Shortcut | Action |
|---|---|
| ↑ Arrow Up | Fill the composer with the previous user message from history |
| ↓ Arrow Down | Move to the next user message; at the end, restore your original input |
| Ctrl+C | Clear 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+Cstays 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 theconversation.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
ConversationSnapshotand fills the composer viainputActions.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 shippedlib/ output) and never add host-side logic unless the feature truly needs it.
📄 License
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-composer-keys」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:kexin8/dsh-composer-keys Headless(CLI)profile:
dsh plugin --profile headless add github:kexin8/dsh-composer-keys 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。