DSH Prompt Shortcuts
把常用提示词存成输入框上方的一排快捷按钮,点一下就能填进输入框。
快捷按钮栏
一个 DeepSeek Harness 插件。装好之后,每次打开会话都能看到自己预设的提示词按钮,不用再反复手打或者去别处复制粘贴。
功能
输入框上方的快捷按钮栏
每个置顶的提示词是一个按钮,点击后替换输入框当前内容。鼠标悬停可以看到完整提示词。
自动收纳
按钮排不下时不会换行,放不下的会自动收进「更多」。按钮栏始终是一行,窗口拉窄也不会变形。
「更多」下拉菜单
列出所有没显示在按钮栏上的提示词(包括你手动取消置顶的,以及因为位置不够被收起来的)。点一条直接填入。
添加与维护
点「添加指令」打开维护面板:
- 卡片网格展示所有提示词,带搜索框
- 每张卡片可以编辑、置顶/取消置顶、删除(删除有二次确认)
- 点卡片本身就是填入输入框
安装
在 DSH 的 Agent 会话里,让它把这个包作为 bundle 安装:
帮我安装 @cdredfox/dsh-prompt-shortcuts 这个插件
Agent 会调用 plugin_manager 的 install_bundle,target 填包名即可。装完刷新页面。
也可以直接用命令行确认包信息:
npm view @cdredfox/dsh-prompt-shortcuts
从源码安装(想改代码或装开发版时):
git clone https://github.com/cdredfox/dsh-actions.git
然后让 Agent 把克隆下来的目录路径作为 target 安装。
环境要求
- DSH 版本需包含
conversation.input.dock 槽位
- 浏览器端需要
@deepseek-ai/dsh-client-store(DSH Web 自带)
使用
| 操作 | 结果 |
|---|
| 点按钮栏上的提示词 | 替换输入框内容 |
| 点「更多」 | 展开未显示的提示词列表 |
| 点「添加指令」 | 打开维护面板 |
| 面板里点卡片 | 填入输入框并关闭面板 |
| 面板里点「编辑」 | 修改名称和内容 |
| 面板里点「置顶」 | 控制是否显示在按钮栏上 |
| 面板里点「删除」 | 删除(需二次确认) |
关于「置顶」:它就是这个提示词要不要出现在输入框上方。每条提示词都可以单独控制,所以你可以存很多条,只把最常用的几个放出来。
数据存储
提示词存在浏览器的 localStorage,键名 dsh-prompt-shortcuts/v1。
这意味着:
- 数据只在本机、本浏览器配置里,不上传
- 换浏览器或清空浏览器数据会丢失
- 可以自己导出备份:在开发者工具里执行
localStorage.getItem('dsh-prompt-shortcuts/v1')
首次使用时会有三条示例提示词,可以自行修改或删除。
设计说明
插件挂在 conversation.input.dock 槽位上——DSH 把它定义为「输入框上方的整宽条目」,和官方的排队提示条是同一个位置。所以按钮栏天然就在输入框正上方,不需要靠定位去凑。
样式全部使用 DSH 的主题变量(--dsw-alias-*、--dsw-radius-*),因此自动跟随明暗主题和字号设置。按钮的视觉语言对齐了输入框卡片本身:白底、无实线边框(靠 .5px 阴影描边)、柔和投影。
按钮的宽度是实测的,不是按字符数估算——中文和英文混排、字号变化时估算都会失准。插件在屏幕外渲染一份副本量出真实宽度,再用 ResizeObserver 跟踪变化。
已知限制
Agent 无法读写这些提示词。 数据是纯浏览器状态(localStorage),没有走 Host 侧存储。如果想实现「让 Agent 帮我加一条提示词」,需要补一套 Client↔Host 的 Remote 契约。
图标是内联的。 DSH 的图标集 @deepseek-ai/dsh-client-ui-primitives 不对插件开放导入,所以这几个图标的 SVG 路径是复制进来的。如果 DSH 之后改了图标,这里不会自动跟着变。
只支持单行文本。 提示词内容不支持变量、模板或附件。
文件结构
dsh-actions/
├── package.json 插件清单(dsh.bundle 与 dsh.client 声明)
├── cordis.patch.yml Cordis 加载器的插件行插入
├── index.js Host 半边(当前为空实现)
├── client.js 全部界面逻辑
├── icon.svg 插件图标
├── docs/preview-row.svg README 配图
└── LICENSE MIT
client.js 包含数据模型、持久化、按钮栏、弹出菜单和维护面板。没有构建步骤,也没有依赖。
开发
改 client.js 后需要重装 bundle 并刷新页面。
本地调试时,bundle 以 link: 方式安装,文件改动会直接生效,但浏览器需要重新加载模块才会用到新代码。改完让 Agent 重装一次 bundle 最省事。
发布新版本:
npm version patch # 或 minor / major
npm publish
publishConfig 已固定为官方 registry 与 public access,无需额外参数。
贡献
Issue 和 PR 都欢迎:https://github.com/cdredfox/dsh-actions
许可
MIT