# dsh-prompt-presets
> **DeepSeek Harness 提示词预设库** — 在设置页维护自己的提示词模板库,在对话框输入栏一键把任意预设注入到消息开头。
[](LICENSE)
[](https://github.com/deepseek-ai/deepseek-harness)
[](https://github.com/zhangdong456/dsh-prompt-presets/releases)
[](https://github.com/topics/dsh-plugin)
[**English**](README.md) | **中文**
打开 **设置 → 提示词预设** 管理预设(新建 / 编辑 / 删除带确认 / 排序),然后在对话框输入栏点击模型选择旁的「提示词」按钮,选中预设一键插入到草稿开头——不自动发送,内容仍由你掌控。
[功能](#功能) · [截图](#截图) · [兼容性](#兼容性) · [安装 / 卸载](#安装--卸载) · [工作原理](#工作原理) · [数据与隐私](#数据与隐私) · [开发](#开发)
## 截图
| 设置页 | 对话框菜单 |
| --- | --- |
|
|
|
## 功能
| 功能 | 说明 |
| --- | --- |
| 📚 预设库 | 每条预设 = 标题(≤50 字)+ 内容(≤10000 字);列表展示标题和首行预览 |
| ✏️ 完整管理 | 新建、编辑、删除(行内二次确认)、上移/下移排序——所有修改即时落盘 |
| 💬 一键注入 | 输入栏「提示词」按钮弹出底部菜单;选中预设后点「注入到输入框」 |
| ✍️ 草稿友好 | 注入语义为 `预设 + 空行 + 原有草稿`;草稿为空时只写入预设。绝不自动发送 |
| 💾 持久存储 | 走官方 settings 服务,存进 `$DSH_HOME/settings.yaml` 的 `prompt-presets:` 命名空间——重启不丢,也可手工编辑 |
| 🌗 主题与多语言 | 全部使用官方主题变量;内置中英词典,跟随界面语言切换 |
| 🔌 零自定义 RPC | 浏览器半区直接走共享的 `settings.describe` / `settings.replace` 通道;Host 半区只注册校验 schema |
## 兼容性
| 项目 | 说明 |
| --- | --- |
| DSH 版本 | 官方安装器 web profile(Windows 实测) |
| 安装机制 | `dsh plugin --profile web add`(bundle 补丁 + 双半区) |
| 依赖 | `settings` 服务(Host)、`slots` / `locale` / `remote` / `remote.settings` 服务(Client) |
## 安装 / 卸载
```sh
# 从 GitHub 安装(推荐)
dsh plugin --profile web add github:zhangdong456/dsh-prompt-presets#main
# 从 npm 安装
dsh plugin --profile web add dsh-prompt-presets
# 从本地目录安装
dsh plugin --profile web add file:./dsh-prompt-presets
```
> 安装后请**重启 DeepSeek Harness**,并在网页里按一次 **Ctrl+F5**。
> `lib/` 构建产物直接随仓库提交,从 GitHub 安装无需本地构建。
| 操作 | 命令 |
| --- | --- |
| 升级 | `dsh plugin --profile web update dsh-prompt-presets`(或重新 `add`),然后重启 DSH |
| 卸载 | `dsh plugin --profile web remove dsh-prompt-presets` |
预设数据保存在 `$DSH_HOME/settings.yaml` 的 `prompt-presets:` 键下,安装、升级、卸载都不受影响。
## 快速上手
1. 安装插件,重启 DSH,网页按 `Ctrl+F5`。
2. 打开 **设置 → 提示词预设** → 「新建预设」→ 填标题和提示词内容 → 保存。
3. 在任意会话中点击输入栏上方的「提示词」→ 选择预设 → 「注入到输入框」。
4. 自由修改注入后的文本,正常发送即可。
## 工作原理
```
lib/index.js Host 半区(ESM) 注册 `prompt-presets` settings 命名空间:
schema 校验/修正每次写入(id、标题 ≤50、
内容 ≤10000、时间戳),并规范化 order
(去重 + 补齐缺失 id);注册本身是 fiber effect,
插件卸载时自动清理
lib/client.js 浏览器半区 经典脚本向 window.__ModuleLoader__ 注册工厂;
React 解析自 shell 共享模块表。注册两个槽位:
settings.section → 管理页
conversation.input.right → 提示词按钮 + 菜单
数据通过 remote.settings.describe /
.replace 携带乐观版本号读写——零自定义 RPC
cordis.patch.yml bundle 补丁(插入 prompt-presets 行)
```
注入语义:`draft === '' ? preset.content : preset.content + '\n\n' + draft`。
## 数据与隐私
- 预设全部存在本地 `$DSH_HOME/settings.yaml`,插件自身不发起任何网络请求。
- 该命名空间就是普通 YAML——可以备份、同步或手工编辑:
```yaml
prompt-presets:
presets:
- id: p-example
title: 代码审查助手
content: 你是一位资深代码审查专家……
createdAt: 1787322246076
updatedAt: 1787322246076
order:
- p-example
```
- 若 settings 服务不可用或文档只读,界面会禁用编辑并明确提示,不会静默失败。
## 开发
```
dsh-prompt-presets/
├── package.json dsh.bundle 清单 + client 半区声明
├── cordis.patch.yml bundle 补丁(插入 prompt-presets 行)
├── lib/
│ ├── index.js Host 半区(ESM,零依赖)
│ └── client.js 浏览器半区(module-loader 工厂,纯 JS)
└── assets/screenshots/ README 配图
```
无需构建:两个半区均为手写纯 JavaScript 直接提交。Fork → 修改 → `dsh plugin --profile web add file:./dsh-prompt-presets` → 重启 DSH。
**参与贡献**:欢迎 Issue 和 PR——请附上 DSH 版本号和完整报错文本。
## 许可证
MIT — 见 [LICENSE](LICENSE)。