我构建了一个本地优先的 AI 提示管理器——以下是离线优先值得额外复杂性的原因
Source: Dev.to
问题
每位每天使用 AI 工具的开发者都会遇到同样的情况:
- 你写了一个完美的提示词。
- 你从 Claude、Cursor 或 ChatGPT 那里得到了恰好需要的输出。
- 你关闭了标签页。
一周后,同样的问题再次出现,你花了 20 分钟试图凭记忆重新构造那个提示词。
介绍 PromptVault
我构建了 PromptVault,一个 本地优先 的提示词管理器,支持离线使用,包含适用于任何 AI 工具的浏览器扩展,并提供 AI 辅助功能帮助你编写更好的提示词。
为什么不走传统后端?
显而易见的做法是创建数据库、后端、用户账户,并把所有数据存放在服务器端。我没有这么做,原因有二:
- 隐私 – 开发者不信任把提示词存入他人数据库的工具。提示词包含你的全部思考过程、偏好方法以及项目上下文,这些都是敏感信息。
- 性能 – 本地优先的应用更快。无需往返服务器,搜索即时,保险库立即打开,甚至可以在飞机上使用。
权衡与同步架构
复杂度
离线优先意味着要处理同步冲突、排队操作以及同一数据在两台设备上被修改的情况。
写操作队列
每一次写操作(创建、更新、删除)都会被加入本地的同步队列,存放在 IndexedDB 中。每条记录包含:
- 操作类型
- 实体 ID
- 完整负载
当应用上线时,按顺序将队列刷新到 Supabase。若同步操作失败,会使用指数退避重试最多三次。三次失败后,该条目被移除并记录错误日志。
冲突解决
冲突通过基于 updatedAt 时间戳的 Last‑Write‑Wins 方式解决。这一简单策略适用于我们的使用场景——在两台设备上同时编辑同一个提示词的情况极其罕见。
浏览器扩展(Chrome MV3)
该扩展会在 claude.ai、chatgpt.com 等站点的文本框以及任何包含 “ 或 contenteditable 元素的页面中注入一个小 ⚡ 按钮。
- 点击按钮 → 一个迷你搜索弹窗会从 PromptVault 的本地 IndexedDB 中读取数据。
- 选择提示词 → 它会直接粘贴到当前活动的输入框中,省去切换窗口的步骤。
AI 驱动功能(BYOK)
PromptVault 使用 BYOK – Bring Your Own Key。你可以在设置中配置自己的提供商(Claude、GPT‑5、Gemini、Groq,或任何兼容 OpenAI 的端点)。应用直接调用你的提供商,数据不会经过 PromptVault 的基础设施。
主要 AI 功能
- Vibe Mode – 将粗略想法转化为结构化提示词。
- Prompt Improver – 四种模式帮助优化提示词。
- Variant Generator – 生成简洁版、详细版或重新表述的版本。
- Debugger – 对任意提示词执行五项检查。
定价
- 免费层 – 100 条提示词,包含全部功能;无需账户即可开始使用。
- 专业版 – 每月 $9,提供无限提示词和跨设备同步。
联系方式
欢迎在评论区提出关于架构的任何问题。