关于 grepai-storage-gob
为 GrepAI 提供 GOB 本地文件存储用法指南,适合单人开发和中小型代码库。索引无需外部服务,便于备份,但不适合大型代码库或并发共享。
主要功能
- 01单文件保存向量嵌入与元数据
- 02使用 grepai 命令创建和检查索引
- 03复制文件备份或迁移
- 04说明内存占用与扩展限制
适用场景
- 01为本地开发项目建立代码索引
- 02备份或重建 .grepai 索引
- 03评估何时迁移到 PostgreSQL 或 Qdrant
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ yoanbernabeu/ grepai-skills --skill grepai-storage-gob安装后在 Claude Code 中输入/grepai-storage-gob确认已加载。
详细介绍
使用 GOB 进行 GrepAI 存储
本技能介绍如何使用 GOB(Go Binary)作为 GrepAI 的存储后端,这是默认且最简单的选项。
何时使用此技能
- 单人开发项目
- 小型到中型代码库
- 无需外部依赖的简单设置
- 本地开发环境
什么是 GOB 存储?
GOB 是 Go 的原生二进制序列化格式。GrepAI 使用它来存储:
- 向量嵌入
- 文件元数据
- 代码块信息
所有内容都存储在单个本地文件中。
优势
| 优势 | 描述 |
|---|---|
| 🚀 简单 | 无需外部服务 |
| ⚡ 设置快速 | 开箱即用 |
| 📁 便于移植 | 单个文件,易于备份 |
| 💰 免费 | 无基础设施成本 |
| 🔒 私密 | 数据保留在本地 |
局限性
| 局限性 | 描述 |
|---|---|
| 📏 可扩展性 | 不适合超大型代码库 |
| 👤 单用户 | 不支持并发访问 |
| 🔄 无法共享 | 无法在多台机器间共享索引 |
| 💾 内存 | 搜索时会将数据加载到 RAM |
配置
默认配置
GOB 是默认后端。最简配置:
# .grepai/config.yaml
store:
backend: gob
显式配置
store:
backend: gob
# Index stored in .grepai/index.gob (automatic)
存储位置
GOB 存储会在项目的 .grepai/ 目录中创建文件:
.grepai/
├── config.yaml # Configuration
├── index.gob # Vector embeddings
└── symbols.gob # Symbol index for trace
文件大小
.grepai/index.gob 的大致大小:
| 代码库 | 文件数 | 代码块数 | 索引大小 |
|---|---|---|---|
| 小型 | 100 | 500 | ~5 MB |
| 中型 | 1,000 | 5,000 | ~50 MB |
| 大型 | 10,000 | 50,000 | ~500 MB |
操作
创建索引
# Initialize project
grepai init
# Start indexing (creates index.gob)
grepai watch
检查索引状态
grepai status
# Output:
# Index: .grepai/index.gob
# Files: 245
# Chunks: 1,234
# Size: 12.5 MB
# Last updated: 2025-01-28 10:30:00
备份索引
# Simple file copy
cp .grepai/index.gob .grepai/index.gob.backup
清除索引
# Delete and re-index
rm .grepai/index.gob
grepai watch
迁移到新机器
# Copy entire .grepai directory
cp -r .grepai /path/to/new/location/
# Note: Only works if using same embedding model
性能注意事项
内存使用量
GOB 会在搜索时将整个索引加载到 RAM:
| 索引大小 | RAM 使用量 |
|---|---|
| 10 MB | ~20 MB |
| 50 MB | ~100 MB |
| 500 MB | ~1 GB |
搜索速度
对于常见规模的代码库,GOB 可提供快速搜索:
| 代码库大小 | 搜索时间 |
|---|---|
| 小型(100 个文件) | <50ms |
| 中型(1K 个文件) | <200ms |
| 大型(10K 个文件) | <1s |
何时升级
满足以下情况时,可考虑使用 PostgreSQL 或 Qdrant:
- 索引超过 1 GB
- 需要并发访问
- 希望在团队间共享索引
- 代码库包含 50K+ 个文件
.gitignore 配置
将 .grepai/ 添加到 .gitignore:
# GrepAI (machine-specific index)
.grepai/
原因: 索引与机器有关,因为它:
- 包含二进制嵌入
- 与所用的嵌入模型绑定
- 每台机器都应生成自己的索引
共享索引(不推荐)
虽然可以复制索引文件,但不推荐这样做,因为:
- 必须使用完全相同的嵌入模型
- 文件路径是绝对路径
- 不同机器上的代码版本可能不同
更好的做法: 每位开发者都运行自己的 grepai watch。
迁移到其他后端
迁移到 PostgreSQL
- 更新配置:
store:
backend: postgres
postgres:
dsn: postgres://user:pass@localhost:5432/grepai
- 重新建立索引:
rm .grepai/index.gob
grepai watch
迁移到 Qdrant
- 更新配置:
store:
backend: qdrant
qdrant:
endpoint: localhost
port: 6334
- 重新建立索引:
rm .grepai/index.gob
grepai watch
常见问题
❌ 问题: 索引文件太大
✅ 解决方案: 添加更多忽略规则,或迁移到 PostgreSQL/Qdrant
❌ 问题: 大型代码库搜索缓慢
✅ 解决方案: 迁移到 Qdrant 以获得更好的性能
❌ 问题: 索引损坏
✅ 解决方案: 删除索引并重新建立:
rm .grepai/index.gob .grepai/symbols.gob
grepai watch
❌ 问题: 出现“未找到索引”错误
✅ 解决方案: 运行 grepai watch 创建索引
最佳实践
- 用于小型/中型项目: 最多约 10K 个文件
- 添加到 .gitignore: 不要提交索引
- 重大更改前先备份: 试验前复制 index.gob
- 更改模型后重新建立索引: 如果更改嵌入模型
- 监控文件大小: 索引超过 1GB 时迁移
输出格式
GOB 存储状态:
✅ GOB Storage Configured
Backend: GOB (local file)
Index: .grepai/index.gob
Size: 12.5 MB
Contents:
- Files: 245
- Chunks: 1,234
- Vectors: 1,234 × 768 dimensions
Performance:
- Search latency: <100ms
- Memory usage: ~25 MB
评论
支持 Markdown