本地优先的 Prompt 提示词 收藏工具 — 收集、检索、填空、一键复制
Collect · Search · Fill · Copy — a local-first prompt vault for Windows.
No account, no cloud, no telemetry. Your prompts stay in a plain JSON file.
平时攒下的 prompt 散落在笔记、聊天记录和收藏夹里,要用时翻半天。
Prompt Vault 把它们收进一个托盘常驻、随叫随到的桌面工具:Alt+Q 唤出、输入几个字、Enter —— 复制走人,全程两秒。
- 🪶 轻:Tauri 2 原生壳,便携版单文件 ≈ 5 MB,内存占用小
- 🔒 私:不联网、不登录、无遥测;数据就是一个你可以随手备份的 JSON 文件
- ⚡ 快:全局热键 + 快速拾取面板,找一条 prompt 不需要离开手头的应用
- 🧩 巧:
{{变量}}占位符在复制前弹窗填空,并记住你上次的填写
| 能力 | 说明 | |
|---|---|---|
| 📥 | 收集 | 手动新建、Alt+Shift+N 剪贴板速存、导入 JSON、拖拽 .json 导入 / 拖文本直接新建 |
| 🎓 | 上手 | 首次启动给出 3 步引导(收集 / 试占位符 / 记热键),可一键跳过;空态始终给出下一步动作 |
| 🔍 | 检索 | 标题/正文/标签/备注即时模糊搜索(子序列匹配、命中词高亮);点标签直接筛选;标签输入自动补全 |
| 🧩 | 变量占位符 | 正文写 {{变量}},复制前弹窗逐个填空(同名只填一次、留空保持原样),并记忆上次填写值;变量在正文中高亮,详情显示变量数量 |
| ⚡ | 快速拾取 | Alt+Q 在任意界面唤出双栏面板:模糊搜索 + 命中高亮、右侧实时预览;空查询展示「最近复制 / 最常复制」;Tab 直接进入编辑,复制后有确认反馈并自动隐藏 |
| ⌘ | 命令面板 | Ctrl+K 模糊搜索执行常用操作(新建/导入/导出/排序/主题/设置…);? 打开快捷键速查表 |
| 📌 | 整理 | 星标置顶、自由标签、来源与备注字段 |
| 📊 | 使用统计 | 自动记录每条 prompt 的复制次数与最近复制时间,列表可按「最近更新 / 最近复制 / 最常复制」排序 |
| 🗑 | 回收站 | 删除先进回收站可随时恢复,彻底删除才二次确认 |
| ☑️ | 批量操作 | 多选后批量加标签、批量移入回收站/恢复、批量导出所选(Ctrl/Shift 多选、Ctrl+A 全选、Esc 取消) |
| 🎨 | 体验 | 自绘标题栏、暗色/亮色主题(跟随系统)、托盘常驻、窗口位置记忆、详情切换级联淡入、中文输入法组字安全(拼音选字按 Enter 不会误触发业务动作)、全中文界面 |
| 💾 | 数据安全 | 单 JSON 文件 + 原子写入 + 每次写入前自动 .bak 备份,损坏时可一键恢复 |
| 快捷键 | 作用域 | 作用 |
|---|---|---|
Alt+Q |
全局 | 唤出/收起快速拾取面板 |
Alt+Shift+N |
全局 | 把剪贴板内容存为新收藏 |
Ctrl+N |
主窗口 | 新建 |
Ctrl+F |
主窗口 | 聚焦搜索框 |
Ctrl+K |
主窗口 | 打开 / 关闭命令面板 |
? |
主窗口 | 打开 / 关闭快捷键速查表 |
Ctrl+A / Esc |
主窗口 | 全选当前列表(多选) / 清除多选 |
↑ ↓ / Home End |
主列表 | 选择上/下一条 / 跳到首末条 |
Enter |
主列表 | 复制选中项 |
Ctrl+E |
主列表 | 编辑选中项 |
Space |
主列表 | 勾选 / 取消勾选(多选) |
Ctrl+Enter |
编辑器 | 保存 |
↑ ↓ / Enter / Tab / Esc |
快速拾取 | 选择 / 复制并关闭 / 在主窗口中编辑 / 关闭 |
Esc |
弹窗 | 取消 |
两个全局热键可以在应用内 设置(右上角 ⚙) 中修改:点击输入框直接录制组合键,保存后立即生效、无需重启;若组合被其他应用占用会提示并保留旧键。
点窗口 ✕ = 收进系统托盘(不退出);托盘左键唤出/收起,右键菜单可打开主窗口或真正退出。
到 Releases 下载最新版本(预发布版本在 Pre-release 区域):
尝鲜版 v0.1.9.2-alpha 直达下载:安装包 · 绿色便携版 · 回归测试报告
推荐体验
v0.1.9.2-alpha:包含全部最新特性。发布前已通过全量程序化测试(TypeScript 类型检查、构建、回归脚本与测试报告),仅缺少人工回归测验;欢迎试用并反馈问题。
| 文件 | 说明 |
|---|---|
PromptVault-0.1.9.2-alpha-setup.exe |
NSIS 安装包,装进系统,开始菜单可启动 |
PromptVault-0.1.9.2-alpha-portable.exe |
单文件绿色版,放到哪都能双击运行 |
PromptVault-0.1.9.2-alpha-regression-report.md |
该版本的全量程序化测试报告 |
首次启动会让你选择一个
prompts.json的保存位置(默认建议工程内data/目录),之后路径与窗口位置都会记住。 想备份?复制那个 JSON 文件即可;换机器?导出再导入。
当前源码版本为 0.1.9.2-alpha(清单内为合法 semver
0.1.9-alpha.2),为预发布(pre-release);稳定版仍为v0.1.0。
前置条件:Node.js 18+、Rust(MSVC toolchain)、WebView2(Windows 11 自带)。
npm install
npm run tauri build产物:
- 便携版 →
src-tauri/target/release/prompt-vault.exe - 安装包 →
src-tauri/target/release/bundle/nsis/
- 所有数据只存在本地:一个 JSON 文件,内容完全透明,随时可用任意编辑器查看
- 原子写入:临时文件
sync落盘后经MoveFileEx(REPLACE_EXISTING)原地替换,不存在写一半的中间态 - 自动备份:每次写入前旧文件保存为
prompts.json.bak;数据解析失败时应用暂停读写,并可一键从.bak恢复 - 配置同样本地:
%APPDATA%\prompt-vault\config.json只保存数据文件路径、窗口位置与全局热键,不包含收藏内容 - 无网络请求:应用不发起任何外部请求,不采集任何信息
数据文件结构:
{
"version": 1,
"prompts": [
{
"id": "5d0f0f2e-…",
"title": "代码审查助手",
"body": "请审查以下代码变更:\n{{diff}}\n\n重点关注:{{关注点}}",
"tags": ["编码", "审查"],
"source": "",
"note": "PR 自查和互查都适用",
"pinned": true,
"createdAt": "2026-10-20T09:00:00.000Z",
"updatedAt": "2026-10-24T02:10:00.000Z",
"lastValues": { "关注点": "并发安全" },
"deletedAt": null,
"copyCount": 12,
"lastCopiedAt": "2026-10-27T09:12:00.000Z"
}
]
}flowchart LR
U([用户]) --> M["主窗口<br/>两栏 UI"]
U --> Q["快速拾取<br/>Alt+Q"]
U --> P["命令面板<br/>Ctrl+K"]
M --> F["React 19 + TypeScript"]
Q --> F
P --> F
F -- "Tauri invoke" --> R["Rust 命令层"]
R --> D[("prompts.json")]
R --> B[("prompts.json.bak")]
R --> C[("config.json<br/>数据路径 · 窗口位置 · 热键")]
H["全局热键<br/>Alt+Q / Alt+Shift+N"] --> Q
T["系统托盘"] --> M
prompt-vault/
├─ src/ # React 前端
│ ├─ App.tsx # 主窗口:两栏、搜索、批量、回收站、导入导出、命令面板接线
│ ├─ QuickPick.tsx # 快速拾取:双栏预览、模糊搜索、复制确认
│ ├─ components/ # TitleBar / Sidebar / DetailPane / CommandPalette /
│ │ # CheatsheetModal / Onboarding / BatchPanel / SettingsModal …
│ ├─ util.ts # 模糊匹配、占位符解析、数据纠偏、热键格式化
│ ├─ theme.ts / window.ts # 主题与窗口模式(含浏览器预览分流)
│ ├─ api.ts # Tauri API 封装
│ └─ App.css # 主题令牌(亮/暗)+ 全部样式
├─ src-tauri/
│ ├─ src/lib.rs # 托盘、全局热键、原子写入、窗口与统计命令
│ └─ tauri.conf.json
├─ preview/ # 浏览器预览夹具(?quickpick=1 / ?empty=1)
├─ docs/
│ ├─ backlog.md # 待办与路线图
│ └─ screenshots/
└─ AGENTS.md # 协作约定(给维护者 / agents)
设计取舍
- 数据用单个 JSON 文件而不是数据库:几十到几百条的规模下零运维、可读、可备份;数据量上千后再评估 SQLite + FTS5
- 不引入 Agent/UI 框架:界面是手写 React + CSS 变量,按钮是内联 SVG 图标,构建产物小、无风格依赖
- 第二层入口收敛到命令面板:新能力优先进入命令面板或快捷键,顶栏只保留高频动作,避免界面随功能膨胀
- 占位符记忆、置顶、回收站、复制统计全部落在同一个数据文件里,无旁路状态
npm install
npm run tauri dev # 开发模式(热更新)
npm run tauri build # 构建发行版
# 纯浏览器预览:mock 掉 Tauri API,改 UI 不用起 Tauri
npx vite --config preview/vite.preview.config.ts- 前端严格模式 TypeScript(
tsc --noEmit零错误) - 图标源图
app-icon.png,修改后npx tauri icon app-icon.png重新生成全套 preview/是开发预览夹具,不参与正式构建(tsconfig 只含src),默认端口 4173?quickpick=1单独预览快速拾取窗口;?empty=1以空数据启动(验证首次引导)
- 待办与路线图见
docs/backlog.md;协作约定见AGENTS.md
guide/prompts 分支记录了 Prompt Vault 从需求访谈、任务拆解、实现、评审到发布的完整过程。它面向 vibe coding 开发者:把“一个想法如何被拆成可执行任务、再由 agent 交付”的全过程摊开,方便交流、复用与复盘。
docs/prompts-archive.md——65 条用户消息的完整台账、18 个会话索引与统计,以及十份长任务书的全文索引。docs/task-books/——十份正式任务书全文(背景、精确落点、边界、验收标准、交付要求)。- 已脱敏:绝对路径与会话 ID 替换为占位符/编号;原始值不随文档分发。
也适合作为 vibe coding 入门项目:规模小、产出价值适中,覆盖“需求 → 任务书 → 实现 → 测试 → 发布”的完整闭环。新手可以照着任务书重走一遍,也可以直接在这些文档上继续迭代。
这个项目是典型的小规模 vibe coding 实践:需求由对话逐步收敛,Agent 负责拆解、实现、测试与交付。开发过程中使用到的模型:
| 模型 | 在本项目中的典型分工 |
|---|---|
| GLM 5.3 | 主控 Agent:需求梳理、任务书编写与 review |
| GLM 5.3 Flash | 快速迭代:小步修改、文档与配置调整 |
| DeepSeek 4.1 Flash | 任务执行:按任务书实现、测试与交付 |
模型分工随会话阶段变化,以上为典型用法;完整过程见
guide/prompts分支的 Prompt 与任务书存档。
- 托盘常驻 + 全局快速拾取(
Alt+Q,双栏预览与模糊搜索) - 剪贴板速存 / 全局热键可配置
- 占位符填空与填写记忆
- 回收站 / 暗色模式 / 窗口位置记忆 / 自绘标题栏
- 拖拽导入 / 批量操作 / 使用统计
- 命令面板(
Ctrl+K)与快捷键速查表(?) - 首次启动引导 / 详情级联淡入 / 中文输入法组字保护
- 占位符实时预览、搜索命中片段、右键菜单、标签配色(详见 docs/backlog.md)
- 发布 v0.1.9 系列预发布(v0.1.9-alpha → v0.1.9.2-alpha,附回归测试报告;正式 Release 待定)
- 数据量过千后评估 SQLite + FTS5
欢迎 Issue 与 PR:
- Fork 本仓库并从
main切出功能分支 - 提交前跑一遍
npx tsc --noEmit与npm run tauri build - PR 里说明改动动机与交互变化(带截图更好)
English
Prompt Vault is a local-first prompt manager for Windows, built with Tauri 2 + React 19 + TypeScript.
- Collect prompts manually, from the clipboard (
Alt+Shift+N), via JSON import, or by drag & drop - Find them with instant fuzzy search (highlighted matches), clickable tag filters, and tag autocomplete
- Fill
{{variables}}in a modal before copying — values are remembered for next time - Copy from a global quick-pick palette (
Alt+Q): two-pane preview, recent/most-used sections,↑↓,Enter— done - Command everything with
Ctrl+K; press?for the shortcut cheatsheet - Learn by example: the
guide/promptsbranch archives the full design/development trail — task books, prompt log and reviews — a beginner-friendly vibe-coding walkthrough - Organize with pins, tags, batch actions, a trash bin, and usage stats (copy count / recency sorting)
- Get started fast: a 3-step first-run guide (collect · variables · hotkey) that can be skipped
- Stay safe: single JSON file, atomic writes, automatic
.bakbackups, one-click recovery - Feel good: tray-resident, custom title bar, dark/light theme, window-position memory, all in Chinese UI
npm install && npm run tauri build # requires Node 18+, Rust (MSVC), WebView2MIT License.
MIT © 2026 zklmiao
图标路径参考自 Lucide(ISC License)。感谢 Tauri、React、Vite 社区。





