Skip to main content
Glama
kruschdev

PG-Git (Semantic Memory MCP)

by kruschdev

PG-Git (语义记忆 MCP)

一个基于 PostgreSQL 的持久化仓库管理系统和语义记忆 MCP 服务器。PG-Git 不再将 Git 对象松散地存储在文件系统上,而是将整个有向无环图 (DAG) 原生地存储在 PostgreSQL 中,并为 AI IDE 完整地生成带有时间衰减特性的语义向量嵌入。

npm version License: MIT Node Ollama DB

🧠 为什么选择 PG-Git?

在标准的 AI 编码代理生态系统中,搜索代码库依赖于僵化的 grep 搜索或昂贵的 AST 解析。PG-Git 通过将 Git 直接与向量数据库连接,从根本上改变了这一点:

  1. 语义代码搜索:根据代码的功能而非仅仅是语法来查找代码。

  2. 指数时间衰减:PG-Git 会在数学上对旧向量进行衰减。你的代理将优先处理你昨天编写的代码,而不是 6 个月前编写的高度相似的死代码。

  3. 本地优先原则:无云端 API。它使用带有 nomic-embed-text 的 Ollama 进行 100% 私有的设备端向量化。

  4. 符合 ACID 标准:原生事务确保了多节点访问和并发 AI 代理集群的完全安全性。

Related MCP server: memory-bank-mcp

⚡ 快速开始

你必须运行 Ollama 并拉取 nomic-embed-text 模型:

ollama run nomic-embed-text

1. 安装依赖并迁移 你需要一个启用了 pgvector 的 PostgreSQL 实例。

npm install
cp .env.example .env
# Edit .env with your PostgreSQL credentials
node db/migrate.js

2. 导入你的 GitHub 历史记录 你可以立即导入任何本地 .git 仓库。PG-Git 将原生解析 Git 历史记录,为所有 blob 生成语义嵌入,并安全地将它们去重存入 PostgreSQL:

npm run import

3. 添加到你的代理/IDE 配置中 (例如 mcp_config.json):

{
  "mcpServers": {
    "pg-git-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/pg-git/server/mcp.js"],
      "env": {
        "OLLAMA_URL": "http://localhost:11434",
        "EMBED_MODEL": "nomic-embed-text"
      }
    }
  }
}

4. 启动 Web UI (可选) PG-Git 包含一个简洁的双窗格 IDE 界面,用于浏览你的语义仓库。

npm run dev

🚀 实际使用示例

要有效地使用 PG-Git,只需像往常一样与你的 IDE 代理对话即可。它将使用 MCP 工具 (pg_git_semantic_search, pg_git_list_repos, pg_git_read_tree, pg_git_read_blob) 与数据库进行交互。

示例 1:查找特定逻辑

你: "我们在哪里处理内存 MCP 的时间衰减?" 代理: [调用 pg_git_semantic_search] "我在 krusch-memory-mcp 仓库的 server/index.js 中找到了相关逻辑。它使用了 exp(-DECAY_RATE * age_in_days) 公式。"

示例 2:读取仓库树

你: "pg-git 项目的文件夹结构是什么?" 代理: [调用 pg_git_read_tree] "这是根目录结构..."

时间衰减是如何工作的?

当调用 pg_git_semantic_search 时,PG-Git 会返回余弦相似度最高的匹配项。但是,它会根据 blob 的 last_seen_at 时间戳应用指数时间衰减。如果你有两段非常相似的代码,较新的代码将获得显著更高的分数,从而防止你的代理基于过时的实现产生幻觉。


🤖 自主代理工作流 (/close)

你可以将 PG-Git 集成到你的代理工作流中,以确保你的语义记忆始终保持最新。

每当你完成一项任务时,告诉你的代理运行快照脚本。代理将自主执行以下操作:

  1. 将当前项目文件夹哈希处理为 Git Blobs 和 Trees。

  2. Ping Ollama 以嵌入任何新的或修改过的文件。

  3. 将状态直接提交到 PostgreSQL。

运行命令:

npm run snapshot

🛠️ 配置与环境变量

变量

描述

默认值

DB_HOST

PostgreSQL 主机地址。

localhost

DB_PORT

PostgreSQL 端口。

5432

DB_NAME

数据库名称。

postgres

DB_USER

数据库用户。

postgres

DB_PASSWORD

数据库密码。

postgres

OLLAMA_URL

本地 Ollama 实例的端点。

http://localhost:11434

EMBED_MODEL

要使用的 Ollama 文本嵌入模型。

nomic-embed-text

许可证

MIT 许可证。由 kruschdev 创建。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides persistent semantic memory backed by PostgreSQL and pgvector for storing and searching thoughts via vector embeddings. It enables dimensional organization, conflict detection, and historical tracking of facts, decisions, and observations.
    12 npm
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    A universal MCP server providing persistent, structured memory through a knowledge graph with graph storage, semantic vector search, and multi-hop traversal for AI agents and IDEs.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A secure and scalable Git MCP server giving AI agents powerful version control for local and (soon) serverless environments.
    177 npm
    Apache 2.0