AI提示管理工具

AI Locker 是一个自托管的美观Web应用程序,用于管理AI提示、技能、配置和命令,包含内置AI聊天功能以从自然语言生成内容。

  • by YonierGomez
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 YonierGomez/ai-locker

使用说明

✦ AI储物柜

AI储物柜 --一个漂亮的、自托管的web应用程序,用于管理您的AI提示、技能、转向配置、MCP服务器设置和shell命令。 内置AI聊天功能 从自然语言生成提示、技能、指导规则、MCP配置和命令。

采用真正的黑色玻璃形态设计和多提供商AI支持构建。

🚀 快速开始 · 🐳 码头工人 · ✨ 特性 · 📡 API · 🤝 贡献


☕ 支持这个项目

如果AI Locker为您节省了时间,请考虑支持其开发:


✨ 特性

特性 描述
🤖 AI聊天 内置聊天功能,可从自然语言生成提示、技能、指导、MCP配置和命令。支持 开放人工智能, Anthropic, 谷歌双子座, 亚马逊基石,以及 开放路由历史悠久,最新型号(GPT-5.4、Claude 4.6、Gemini 3.1)。
📝 鼓励 存储带有类别、型号、温度、最大标记和Markdown编辑器的AI提示模板
⚡ 技能 具有触发短语和活动/非活动切换的可重用AI技能定义
🧭 转向 行为指导和系统说明,范围(全球/项目/会议)和优先级
🤖 代理 AI代理预设结合了模型、系统提示、温度、技能、转向和MCP连接——一键即可使用
🔌 MCP配置 带有语法高亮显示的JSON编辑器的模型上下文协议服务器配置
💻 命令 带有Shell/platform/category、复制到剪贴板和使用情况跟踪的Shell命令库
🧩 代码片段 31种语言(Python、YAML、Dockerfile、HCL、SQL等)的可重用代码片段,语法突出显示
🪝 钩子 根据IDE事件(文件编辑、代理停止、工具使用、任务执行)自动化操作。自动触发Ask Agent提示或shell命令
🔐 金库 存储使用AES-256-GCM加密的API密钥、令牌、私钥、密码和机密。默认情况下隐藏值,按需显示。参考任何地方 {{VAR_NAME}}
📊 仪表盘 使用活动热图、使用图表、模型分布和收藏夹库进行分析
🔍 智能搜索 命令面板(⌘K)用于在所有部分进行即时搜索。全文搜索、类别过滤器、收藏夹过滤器。
🗂️ 详情视图 每个项目的只读细节模式——可最大化到全屏
📝 Markdown编辑器 具有实时渲染和语法突出显示的编辑/拆分/预览模式
📈 令牌计数器 所有内容的实时令牌估计,按大小进行颜色编码
🏷️ 标签和类别 使用颜色选择器自定义标签和类别
🗑️ 垃圾 软删除,5天自动清除,一键恢复
☁️ S3备份和同步 AWS S3/CCloudflare R2/Backblaze B2/MinIO——备份、恢复和自动同步调度
📱 响应式 完全支持移动设备——适用于任何屏幕尺寸
🐳 Docker就绪 使用PostgreSQL的单容器,多阶段构建
🎨 Glassmorphism用户界面 真正的黑色主题(#0a0a0a)、模糊、透明和渐变,带有春季动画

🐳 使用Docker进行部署

不需要本地依赖,只需要Docker。官方镜像在Docker Hub上发布为 yoniergomez/ai-locker 和支持 amd64, arm64,以及 armv7.

选项A:Docker Compose(推荐)

不需要克隆。包括PostgreSQL、持久卷和自动重启。

# Download the compose file
curl -O https://raw.githubusercontent.com/YonierGomez/ai-locker/main/compose.yaml

# Start (pulls the image automatically from Docker Hub)
docker compose up -d

打开 http://localhost:9091 你完了。

compose.yaml
services:

  app:
    image: yoniergomez/ai-locker:latest
    container_name: ai-locker
    ports:
      - "9091:3001"
    environment:
      NODE_ENV: production
      PORT: 3001
      DB_HOST: postgres-db
      DB_PORT: 5432
      DB_NAME: ai-locker
      DB_USER: ai-locker
      DB_PASSWORD: secret
      DB_TYPE: postgres
      # Alternatively, use a connection string:
      # DATABASE_URL: postgresql://ai-locker:secret@postgres-db:5432/ai-locker
    volumes:
      - ai_locker_data:/data
    restart: unless-stopped
    depends_on:
      postgres-db:
        condition: service_healthy

  postgres-db:
    image: postgres:alpine
    container_name: ai-locker_postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: ai-locker
      POSTGRES_USER: ai-locker
      POSTGRES_PASSWORD: secret
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ai-locker -d ai-locker"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  ai_locker_data:
  postgres_data:

选项B:Docker Compose——SQLite(无数据库服务)

最小组合文件——内置SQLite的单个容器。不需要PostgreSQL。

# Download the compose file
curl -O https://raw.githubusercontent.com/YonierGomez/ai-locker/main/compose.yaml

# Start
docker compose up -d
compose.yaml (SQLite variant)
services:

  app:
    image: yoniergomez/ai-locker:latest
    container_name: ai-locker
    ports:
      - "9091:3001"
    environment:
      NODE_ENV: production
      PORT: 3001
      DB_PATH: /data/ai-locker.db
    volumes:
      - ai_locker_data:/data
    restart: unless-stopped

volumes:
  ai_locker_data:

打开 http://localhost:9091.


选项C:Docker运行--SQLite

内置SQLite的单个容器。无需额外服务。

docker run -d \
  --name ai-locker \
  -p 3001:3001 \
  -v ai_locker_data:/data \
  --restart unless-stopped \
  yoniergomez/ai-locker:latest

打开 http://localhost:3001.


选项D:运行Docker——外部PostgreSQL

通过连接字符串指向您自己的PostgreSQL实例。

docker run -d \
  --name ai-locker \
  -p 3001:3001 \
  -v ai_locker_data:/data \
  -e DATABASE_URL=postgresql://user:pass@host:5432/ai-locker \
  --restart unless-stopped \
  yoniergomez/ai-locker:latest

环境变量

变量 默认值 描述
PORT 3001 服务器端口(容器内部)
NODE_ENV production 环境
DATABASE_URL -- 完整的PostgreSQL/MySQL连接字符串
DB_HOST / DB_PORT / DB_NAME / DB_USER / DB_PASSWORD / DB_TYPE -- 单个DB变量(替代 DATABASE_URL)
DB_PATH /data/prompts.db SQLite路径(未设置DB变量时使用)
API_KEY - 用于保护所有API端点的承载令牌(可选)

🔐 API密钥保护

使用Bearer令牌保护您的AI Locker实例。当 API_KEY 设置,则所有API请求都必须包含标头 Authorization: Bearer <key>.

1.生成安全密钥:

openssl rand -hex 32
# Example: a3f8c2d1e4b5a6f7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1

2.将其设置在您的环境中:

# .env file
API_KEY=a3f8c2d1e4b5a6f7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1

# Or with Docker Compose
environment:
  API_KEY: a3f8c2d1e4b5a6f7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1

# Or with docker run
docker run -e API_KEY=your-key-here ...

3.配置前端:

在浏览器中打开AI Locker→ 设置→ API密钥 → 粘贴密钥并保存。

或者在浏览器控制台中手动设置:

localStorage.setItem('promptly_api_key', 'your-key-here')

注: 密钥存储在 localStorage 并与每个API请求一起自动发送。如果没有在前端配置密钥,应用程序将显示身份验证错误。

有用的命令

# View logs
docker compose logs -f

# Stop
docker compose down

# Update to the latest image
docker compose pull && docker compose up -d

# Build from source instead of using the official image
git clone https://github.com/YonierGomez/ai-locker.git && cd ai-locker
# Edit compose.yaml: replace `image:` with `build: .`, then:
docker compose up -d --build

# Backup PostgreSQL
docker exec ai-locker_postgres pg_dump -U ai-locker ai-locker > backup-$(date +%Y%m%d).sql

# Backup SQLite (docker run mode)
docker cp ai-locker:/data/prompts.db ./backup-$(date +%Y%m%d).db

# Custom port
PORT=8080 docker compose up -d

🛠️ 发展

只有当你想修改源代码时才需要。

npm run install:all   # install all dependencies
npm run dev           # start backend + frontend in watch mode
  • 前端:http://localhost:3000
  • 后端API:http://localhost:3001

项目结构

ai-locker/
├── backend/                 # Express.js API
│   ├── config/
│   │   └── database.js      # PostgreSQL / SQLite setup
│   ├── routes/
│   │   ├── ai.js            # AI Chat (multi-provider: OpenAI, Anthropic, Gemini, Bedrock, OpenRouter)
│   │   ├── prompts.js       # Prompts CRUD
│   │   ├── skills.js        # Skills CRUD
│   │   ├── steering.js      # Steering CRUD
│   │   ├── mcp.js           # MCP Configs CRUD
│   │   ├── commands.js      # Commands CRUD
│   │   ├── hooks.js         # Hooks CRUD
│   │   ├── vault.js         # Vault (AES-256-GCM encrypted secrets)
│   │   ├── tags.js          # Tags management
│   │   ├── categories.js    # Categories management
│   │   ├── backup.js        # S3 backup/restore (export + import)
│   │   ├── trash.js         # Soft delete / trash
│   │   └── settings.js      # App settings + stats
│   └── server.js            # Entry point + auto-sync cron
├── frontend/                # React + Vite
│   └── src/
│       ├── components/      # Shared UI components
│       │   ├── CommandPalette.jsx  # ⌘K search
│       │   ├── Sidebar.jsx
│       │   ├── Topbar.jsx
│       │   ├── ItemCard.jsx
│       │   ├── DetailModal.jsx  # Full read-only detail view
│       │   ├── Modal.jsx        # Create/edit modal (maximizable)
│       │   ├── MarkdownEditor.jsx
│       │   ├── ModelSelector.jsx
│       │   ├── CategorySelector.jsx
│       │   └── TagsSelector.jsx
│       ├── pages/
│       │   ├── AiSessionPage.jsx   # AI Chat
│       │   ├── DashboardPage.jsx
│       │   ├── PromptsPage.jsx
│       │   ├── SkillsPage.jsx
│       │   ├── InstructionsPage.jsx
│       │   ├── AgentsPage.jsx
│       │   ├── McpPage.jsx
│       │   ├── CommandsPage.jsx
│       │   ├── HooksPage.jsx
│       │   ├── SnippetsPage.jsx
│       │   ├── NotesPage.jsx
│       │   ├── VaultPage.jsx
│       │   ├── TrashPage.jsx
│       │   └── SettingsPage.jsx
│       └── utils/
│           ├── api.js       # API client
│           ├── models.js    # AI models list
│           └── tokens.js    # Token estimation
├── docs/
│   └── index.html           # Landing page
├── Dockerfile               # Multi-stage build
├── compose.yaml             # Docker Compose (app + PostgreSQL)
└── README.md

🗂️ 详情视图

图书馆里的每一件物品都有 全屏详细视图 点击任一卡片即可访问:

  • 所有元数据(型号、令牌、温度、创建/更新日期、标签)的只读视图
  • Markdown渲染 用于提示、技能和指导内容
  • 语法突出显示JSON 用于MCP配置(透明背景,只有颜色)
  • 最大化按钮 --展开视图以填充整个屏幕
  • 操作按钮:复制·编辑·删除·切换收藏
  • 如果局部视图已最大化,则“编辑”也会打开最大化

🪝 钩子

根据IDE事件自动执行操作:

事件 描述
fileEdited / fileCreated / fileDeleted 当文件更改时触发——支持glob模式,如 *.ts
promptSubmit / agentStop 代理生命周期事件
preToolUse / postToolUse 工具执行之前/之后--按以下条件筛选 read, write, shell, web, * 或正则表达式
preTaskExecution / postTaskExecution 规范任务生命周期
userTriggered 手动触发器

每个钩子要么运行 询问代理人 (向代理发送提示)或 运行命令 (执行带有可选超时的shell命令)。


🔐 金库

使用AES-256-GCM加密秘密存储 API_KEY 作为加密种子:

  • 类型:密钥,API密钥,令牌,密码,私钥,公钥,证书,变量
  • 价值观 始终隐藏在UI中--单击眼睛图标以显示
  • 参考 提示、技能或命令中的任何秘密 {{VAR_NAME}}
  • 解析端点: POST /api/vault/resolve --全部替换 {{VAR_NAME}} 给定文本中的占位符及其解密值
# Resolve variables in text
curl -X POST http://localhost:3001/api/vault/resolve \
  -H "Content-Type: application/json" \
  -d '{"text": "Authorization: Bearer {{OPENAI_API_KEY}}"}'
# → {"resolved": "Authorization: Bearer sk-..."}

💻 命令

shell命令专用库:

  • 支持外壳: bash, zsh, sh, fish, powershell, cmd, python, ruby, node
  • 平台过滤器: all, macOS, Linux, Windows
  • 一键复制到剪贴板,使用计数器
  • 分类组织、收藏夹、搜索
  • 包含在S3备份和JSON导出中

☁️ 备份与恢复

你的图书馆总是安全的。AI Locker支持通过S3兼容存储和本地JSON文件进行完全备份和还原。

S3/云存储

兼容 AWS S3, Cloudflare R2 的, 回火B2,以及 MinIO --任何S3兼容的提供程序都可以工作。

动作 描述
测试连接 保存前验证凭据和存储桶访问权限
保存S3配置 一键保存连接设置和自动同步首选项
立即备份 立即上传带时间戳的快照+更新 latest.json
浏览备份 列出存储桶中所有备份的日期和大小
恢复 从任何列出的快照单击还原--选择合并或完全替换
自动同步 定时自动备份--打开后立即启动,无需重新启动

自动同步间隔: 15m · 30m · 1h · 2h · 3h · 6h · 9h · 12h · 1d · 2d

备份什么

每个部分都包含在每个备份中:

  • ✅ 鼓励
  • ✅ 技能
  • ✅ 转向
  • ✅ MCP配置
  • ✅ 命令
  • ✅ 标签
  • ✅ 分类

JSON导出和导入

没有云存储?没问题随时导出完整的JSON快照并导入以在实例之间迁移。

# Export via API
curl http://localhost:3001/api/backup/export/json -o backup.json

# Import via API
curl -X POST http://localhost:3001/api/backup/import/json \
  -H "Content-Type: application/json" \
  -d @backup.json

提示: 前缀路径是自动规范化的——如果您输入 my-backups 没有拖尾 /,AI Locker会自动添加它,因此S3密钥始终正确。


🤖 AI聊天

AI储物柜内置 AI聊天 它从自然语言生成库项。描述你需要什么,人工智能会创建提示、技能、指导规则、MCP配置或shell命令——准备保存到你的库中。

多提供商支持

提供者 模型
开放人工智能 GPT-5.4、GPT-4.1、o3、o1
Anthropic 克劳德作品4.6,十四行诗4.6,俳句4.5
谷歌双子座 双子座3.1 Pro,双子座3 Flash,双子座2.5 Pro/Flash
亚马逊基石 Claude 4.6,Nova 2(通过AWS IAM)
开放路由 一个API密钥中的所有提供程序

在中配置您的首选提供商和API密钥 设置→ 人工智能集成。聊天记录会保留在浏览器中,并可随时清除。


🤖 支持的AI模型(2026年3月)

AI Locker附带了所有主要供应商的最新型号列表:

  • 开放人工智能:GPT-5.4、GPT-4.1、o3、o1
  • Anthropic:克劳德作品4.6、十四行诗4.6、俳句4.5、克劳德3.7
  • 谷歌:双子座3.1 Pro、双子座3 Flash、双子座2.5 Pro/Flash
  • 元:火焰4特立独行,火焰4童子军,火焰3.3 70b
  • 扩展应用识别:Grok 3测试版,Grok 3迷你测试版
  • 深度求索:V3(2026年3月),R1
  • 米斯特拉尔:小3.1,大2411,编码
  • 英伟达:Nemotron 3 Super,Nemotron Ultra 253B
  • 字节跳动:种子2.0精简版
  • 最小最大:2.7米
  • 微软:Phi-4,Phi-4迷你版
  • 亚马逊:Nova Pro、Nova Lite、Nova Micro
  • 还有更多。..

您还可以直接在模型选择器中键入任何自定义模型ID。


📡 API 参考

方法 端点 描述
GET /api/prompts 列表提示
POST /api/prompts 创建提示
PUT /api/prompts/:id 更新提示
DELETE /api/prompts/:id 移至垃圾箱
PATCH /api/prompts/:id/favorite 切换收藏夹
GET /api/skills 列出技能
GET /api/steering 列表转向
GET /api/mcp 列出MCP配置
GET /api/mcp/export/active 将活动配置导出为JSON
GET /api/commands 列出命令
POST /api/commands 创建命令
PUT /api/commands/:id 更新命令
DELETE /api/commands/:id 移至垃圾箱
PATCH /api/commands/:id/favorite 切换收藏夹
PATCH /api/commands/:id/use 增加使用次数
GET /api/hooks 列表挂钩
POST /api/hooks 创建钩子
PUT /api/hooks/:id 更新挂钩
PATCH /api/hooks/:id/toggle 切换为活动状态
PATCH /api/hooks/:id/favorite 切换收藏夹
DELETE /api/hooks/:id 移至垃圾箱
GET /api/vault 列出vault条目(从未返回值)
GET /api/vault/:id/reveal 获取解密值
POST /api/vault 创建条目
PUT /api/vault/:id 更新条目
PATCH /api/vault/:id/favorite 切换收藏夹
DELETE /api/vault/:id 移至垃圾箱
POST /api/vault/resolve 解决 {{VAR_NAME}} 在文本中
GET /api/trash 列出被丢弃的物品
PATCH /api/trash/:type/:id/restore 还原项目
DELETE /api/trash/:type/:id 永久删除
DELETE /api/trash 清空垃圾桶
GET /api/backup/export/json 将所有数据导出为JSON
POST /api/backup/import/json 导入JSON备份
POST /api/backup/s3/upload 备份到S3
GET /api/backup/s3/list 列出S3备份
POST /api/backup/s3/restore 从S3还原
POST /api/backup/s3/test 测试S3连接
GET /api/backup/s3/status S3配置状态
GET /api/ai/config 获取AI配置(提供者、模型、配置)
POST /api/ai/generate 生成聊天响应(多提供商)
POST /api/ai/save 将AI生成的项目保存到库中
GET /api/settings 获取所有设置
PUT /api/settings 更新设置
GET /api/settings/stats 获取统计数据和分析
GET /api/health 健康检查

🤝 贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

☕ 支持

如果这个项目对你有帮助,请考虑支持它的发展:


📄 许可证

MIT© 约尼尔·戈麦斯