dsh-prompt-snippets 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -9
- package/client.js +735 -32
- package/index.js +538 -38
- package/locale/en.json +1 -1
- package/locale/zh.json +1 -1
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# 提示词片段库(Prompt Snippets)
|
|
2
2
|
|
|
3
|
+
[](https://github.com/dadazhangn/dsh-prompt-snippets/actions/workflows/ci.yml)
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="docs/feature-map.svg" alt="Prompt Snippets 占位符三态填充流程" width="800">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
3
9
|
保存并一键插入可复用的提示词片段,支持分类与 `{{占位符}}`。
|
|
4
10
|
|
|
5
11
|
一个让「常用提示词」随手可得、不重复造轮子的 DSH 插件。片段数据保存在本机
|
|
@@ -76,6 +82,12 @@ and reload the page.
|
|
|
76
82
|
也可选「保留占位符插入」原样插入。
|
|
77
83
|
|
|
78
84
|
`\{{字面量}}` 转义后插入的是字面 `{{字面量}}`;同名占位符只问一次,全实例填同一个值。
|
|
85
|
+
- **动态变量**:`{{date}}` / `{{time}}` / `{{datetime}}` 是内置宏变量,插入时用本地时间实时
|
|
86
|
+
替换(`date` = `YYYY-MM-DD`、`time` = `HH:mm`、`datetime` = `YYYY-MM-DD HH:mm:ss`),
|
|
87
|
+
不弹表单、也不进变量元数据;正文里只有动态变量的片段点一下即可直插。
|
|
88
|
+
- **内置模板包**:首次运行(数据文件尚不存在)自动预置一组高频片段(代码审查、Git 提交信息、
|
|
89
|
+
Bug 排查、周报、日报、翻译润色、会议纪要、学习计划),给你一个冷启动起点。删掉后不重灌,
|
|
90
|
+
已有数据文件(哪怕清空成 0 条)也不会再注入。
|
|
79
91
|
- **导入 / 导出**:`/snippet export [文件名]` 把全部片段导出成 JSON,落在
|
|
80
92
|
`<DSH_HOME>/data/prompt-snippets/exports/` 下;`/snippet import <文件路径>` 导回来,
|
|
81
93
|
`--replace` 用文件内容替换现有库(未出现在文件里的片段软删除,仍可 `/snippet undo`),
|
|
@@ -87,6 +99,18 @@ and reload the page.
|
|
|
87
99
|
- **可拖动可记忆**:拖标题栏移动面板,位置记在浏览器本地,下次打开还在原处。
|
|
88
100
|
- **可缩放可记忆**:面板四条边和四个角都能拖(像 Windows 窗口),拖边缘调宽高(最小 200×160),
|
|
89
101
|
松手后尺寸记在浏览器本地,下次打开沿用上次大小;缩到超出视口会自动收窄拉回。
|
|
102
|
+
- **标签**:`/snippet tag <名称> <标签1、标签2…>` 给片段打标签(逗号/顿号/空格分隔,最多 32 个、
|
|
103
|
+
每个最长 24 字);`add`/`save` 也能用 `--tag=` 带上。面板里标签以圆角 chip 显示在名称后。
|
|
104
|
+
- **收藏置顶**:`/snippet pin <名称>` 收藏、`/snippet unpin <名称>` 取消(`add` 也可 `--pin`)。
|
|
105
|
+
面板顶部有「全部 / ★ 收藏 / 最近使用」三个视图切换按钮,收藏视图只看置顶项,
|
|
106
|
+
最近使用按 `lastUsedAt` 降序、最多 20 条。
|
|
107
|
+
- **版本历史**:每次保存前的旧内容自动留档(每片段最多 20 版、单片段历史体积超限丢最旧)。
|
|
108
|
+
面板里点 🕘 展开该片段的历史,可回看历次正文;`/snippet show` 也会显示 revision 号。
|
|
109
|
+
- **命令面板(全局快捷唤起)**:任意时刻按 `Ctrl+Shift+K`(或 `Ctrl+Shift+P`)弹出片段搜索
|
|
110
|
+
浮层,输入关键字即时过滤(名称/分类/标签/正文),`↑` `↓` 选择、`Enter` 插入、`Esc` 关闭;
|
|
111
|
+
收藏片段自动置顶,无需先点开 dock 面板。选中后按 `Ctrl+Enter`(Mac `Cmd+Enter`)则是
|
|
112
|
+
**插入并立即发送**;带必填占位符的片段仍需先填表单,无法直接发送。`↑` `↓` 切换选中项时
|
|
113
|
+
列表自动滚动跟随,始终把选中项保持在可视区内。
|
|
90
114
|
|
|
91
115
|
## 使用
|
|
92
116
|
|
|
@@ -98,6 +122,8 @@ and reload the page.
|
|
|
98
122
|
/snippet rm 代码审查
|
|
99
123
|
/snippet undo 代码审查
|
|
100
124
|
/snippet mv 周报 日报
|
|
125
|
+
/snippet pin 周报
|
|
126
|
+
/snippet tag 周报 工作、总结
|
|
101
127
|
/snippet optimize 周报
|
|
102
128
|
/snippet export 我的片段
|
|
103
129
|
/snippet import 我的片段.json --dry
|
|
@@ -110,10 +136,10 @@ and reload the page.
|
|
|
110
136
|
## 数据
|
|
111
137
|
|
|
112
138
|
- 文件:`<DSH_HOME>/data/prompt-snippets/snippets.json`(DSH_HOME 未设置时为 `~/.dsh`)。
|
|
113
|
-
- 结构(`version:
|
|
139
|
+
- 结构(`version: 4`):
|
|
114
140
|
```json
|
|
115
141
|
{
|
|
116
|
-
"version":
|
|
142
|
+
"version": 4,
|
|
117
143
|
"snippets": [
|
|
118
144
|
{
|
|
119
145
|
"id": "uuid",
|
|
@@ -121,6 +147,9 @@ and reload the page.
|
|
|
121
147
|
"category": "分类或 null",
|
|
122
148
|
"content": "正文",
|
|
123
149
|
"variables": { "变量名": { "label": "…", "default": "…", "options": ["…"], "required": false } },
|
|
150
|
+
"tags": ["标签"],
|
|
151
|
+
"pinned": false,
|
|
152
|
+
"pinnedAt": null,
|
|
124
153
|
"createdAt": 0,
|
|
125
154
|
"updatedAt": 0,
|
|
126
155
|
"deletedAt": null,
|
|
@@ -136,12 +165,14 @@ and reload the page.
|
|
|
136
165
|
- **写入是串行的**:并发保存/删除排队执行,不会互相覆盖。
|
|
137
166
|
- **每次都留 `.bak`**:`snippets.json.bak` 永远是上一次成功写入的完整 JSON,
|
|
138
167
|
手滑改坏也能逐字节恢复。
|
|
168
|
+
- **备份轮换**:`.bak` 写新值前先逐级后移成 `.bak.1` / `.bak.2` … 最多保留 7 份,
|
|
169
|
+
`.bak` 始终是最新一份,更早的历史可回查。
|
|
139
170
|
- **损坏自愈**:文件不是合法 JSON 或结构不可识别时,会备份成
|
|
140
171
|
`snippets.corrupt-<时间戳>.json`(最多保留 5 份),插件以空库继续运行并在面板顶部
|
|
141
172
|
提示,不会卡死;第二次读取不会再重复备份。
|
|
142
|
-
- **旧版本自动迁移**:`version: 1` / `version: 2` 的文件在首次读取时补齐
|
|
143
|
-
`id` / `revision` / `variables` / `useCount` 等字段并升级到 `version:
|
|
144
|
-
迁移写入前先把**原始字节**存成 `snippets.json.pre-
|
|
173
|
+
- **旧版本自动迁移**:`version: 1` / `version: 2` / `version: 3` 的文件在首次读取时补齐
|
|
174
|
+
`id` / `revision` / `variables` / `useCount` / `tags` / `pinned` 等字段并升级到 `version: 4`,
|
|
175
|
+
迁移写入前先把**原始字节**存成 `snippets.json.pre-v4.bak`(一次性,已存在则保留
|
|
145
176
|
更早的那份、不覆盖),原有片段与时间戳保持不变。迁移是幂等的:第二次读取不再写盘。
|
|
146
177
|
- **保守处理异常数据**:无法识别的条目会被丢弃并给出 `warning` 计数;重复 `id`
|
|
147
178
|
会被修复;`revision` 非法值归一到 1。
|
|
@@ -163,6 +194,8 @@ cordis.patch.yml 插入 host 半的 loader patch
|
|
|
163
194
|
locale/{en,zh}.json 市场显示名与描述
|
|
164
195
|
icon.svg 图标
|
|
165
196
|
LICENSE MIT
|
|
197
|
+
test/ 测试套件(随仓库分发,不进 npm 包)
|
|
198
|
+
.github/workflows GitHub Actions 自动验证
|
|
166
199
|
```
|
|
167
200
|
|
|
168
201
|
## 兼容性
|
|
@@ -173,14 +206,21 @@ LICENSE MIT
|
|
|
173
206
|
|
|
174
207
|
## 测试
|
|
175
208
|
|
|
176
|
-
|
|
209
|
+
仓库 `test/` 目录里有一组自测脚本(随仓库分发,不进 npm 包),当前覆盖 **466 条断言**:
|
|
177
210
|
|
|
178
211
|
| 套件 | 覆盖 |
|
|
179
212
|
|---|---|
|
|
180
|
-
| `v110-host-test.mjs` | 迁移矩阵与迁移前备份、存储可靠性、双轨匹配、占位符扫描、`--cat`
|
|
213
|
+
| `v110-host-test.mjs` | 迁移矩阵与迁移前备份、存储可靠性、双轨匹配、占位符扫描、`--cat` 收口、能力握手、只读保护、标签/收藏/版本历史、首次预置模板包(177) |
|
|
181
214
|
| `optimize-test.mjs` | 优化流的分支与降级(14) |
|
|
182
|
-
| `io-test.mjs` | 导入/导出命令:落盘、文件名安全、后缀回退、merge/replace/dry
|
|
183
|
-
| `client-test.mjs` | 渲染、搜索高亮、命中计数、键盘导航、插入、占位符表单、行内编辑、冲突处理、多条撤销、优化三态对比(含优化后编辑)、导入导出按钮、使用统计 touch、主题 token
|
|
215
|
+
| `io-test.mjs` | 导入/导出命令:落盘、文件名安全、后缀回退、merge/replace/dry、往返一致、同名去重、大小限制、一键打开(78) |
|
|
216
|
+
| `client-test.mjs` | 渲染、搜索高亮、命中计数、键盘导航、插入、占位符表单、行内编辑、冲突处理、多条撤销、优化三态对比(含优化后编辑)、导入导出按钮、使用统计 touch、主题 token、窄屏、窗口缩放、标签/收藏/视图切换/版本历史、命令面板、动态变量(191) |
|
|
184
217
|
| `client-error-test.mjs` | 插入失败的报错链路(6) |
|
|
185
218
|
|
|
186
219
|
测试通过 `isolate-home.mjs` 把 `DSH_HOME` 顶到系统临时目录,**绝不读写真实片段库**。
|
|
220
|
+
|
|
221
|
+
每次 push、发 tag(`v*`)、提 PR 时,GitHub Actions 会自动跑「语法检查 + 这 5 个套件」(见
|
|
222
|
+
`.github/workflows/ci.yml`),任何一步失败都会在 PR 上打红叉阻止合并。本地运行:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
npm test
|
|
226
|
+
```
|