mcpField
G
gmem

gmem

本地服务
github.com/yksanjo记忆与知识11 周前更新

关于 gmem

gmem 是为 Solana 和 EVM 项目中的 AI 编码 Agent 提供持久项目记忆的 MCP 服务。它保存带类型和版本的项目事实,并可摄取工作区及 Agent 活动数据。

主要功能

  1. 01带类型、仅追加的项目记忆
  2. 02结合近期性加权的 BM25 检索
  3. 03Anchor 工作区摄取
  4. 04Hardhat 工作区摄取
  5. 05Solana CLI 上下文采集
  6. 06Agent 活动摄取与信任评分

适用场景

  1. 01跨会话保留程序 ID、PDA 种子和项目决策
  2. 02记录 Anchor 或 Hardhat 工作区信息
  3. 03按时间戳或 git 引用检查记忆变化
  4. 04评估 Solana Agent 钱包的已存信任分数

MCP 相关

gmem 提供九个 MCP 工具,用于检索和写入项目记忆、比较记忆状态、摄取 Anchor 与 Hardhat 工作区、读取 Solana 上下文,以及记录或评估 Agent 活动。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"gmem": {
"command": "npx",
"args": [
"-y",
"@yksanjo/gmem"
],
"env": {
"GMEM_DB": "<GMEM_DB>"
}
}
}
}
启动命令npx -y @yksanjo/gmem
需要配置的环境变量
GMEM_DBOverride the auto-resolved memory database path. Defaults to ~/.gmem/<projectHash>/memory.db, with one db file per Solana project (project root resolved from Anchor.toml or workspace Cargo.toml).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@yksanjo/gmem1.1.0

工具

7

收录的工具列表 · 更新于 3 周前

参数类型必填说明
querystring是要回忆内容的自然语言描述
kindsarray否可选:仅筛选指定的实体类型
limitinteger否

详细介绍

gmem

为 Solana AI Agent 提供持久的项目记忆。

一个 Model Context Protocol(MCP)服务,为 AI 编码 Agent(Claude Code、Cursor 或任何支持 MCP 的工具)提供持久且了解 Solana 的项目记忆,让记忆跨会话保留:程序 ID、IDL、PDA 种子、部署状态、架构决策、审计发现。让 Agent 不再忘记昨天构建的内容。

状态:v1.2 — 稳定版,支持 EVM 和 Agent 信任评分。 九种 MCP 工具,均有真实实现(没有存根),线格式向后兼容:

  • 存储:通过 better-sqlite3 使用 SQLite,每个项目一个数据库文件(从 Anchor.toml / 工作区 Cargo.toml 自动解析,可通过 GMEM_DB 覆盖)

  • 排名:SQLite FTS5 BM25,并提升近期内容的排名

  • 版本控制:仅追加——每次写入都会插入一条新的 (kind, natural_id, version) 记录;读取时返回最新记录;可通过进程内 Store API 查看完整历史

  • Anchor 导入:gmem.ingest_anchor 会解析 Anchor.toml、记录 IDL sha256,并将 git HEAD 作为每个 Program 的 sourceCommit 记录

  • Solana CLI 上下文:gmem.solana_context 会读取 ~/.config/solana/cli/config.yml、判定集群类型,并派生当前密钥对的公钥(不会泄露秘密信息)。 对 Decision 执行 gmem.write 时,会自动填入 author + authorCluster

  • 感知 Git 的差异:gmem.diff 接受 ISO 时间戳和 git 引用(HEAD、HEAD~3、分支名称、完整及短 SHA)

  • EVM 支持(v1.1):gmem.ingest_hardhat 会解析 Hardhat / hardhat-deploy 工作区, 将网络分类为规范链 ID(base-mainnet 8453、optimism-mainnet 10、 polygon-mainnet 137、arbitrum-one 42161、ethereum-mainnet 1,以及测试网),并记录 与顺序无关的 ABI SHA-256。新增 EVM 智能合约实体类型 Contract。

  • 许可证:MIT

  • 规范:参见 SPEC.md

  • 实体架构:参见 schema/

为什么需要它

Solana 正在坚定地转向以 Agent 为先的开发体验。Solana 基金会的 awesome-solana-ai 仓库收录了一系列强大的无状态参考技能—— solana-dev-skill、magicblock-dev-skill、metaplex-skill、helius-phantom-skill、 solana-game-skill 等——教 Agent 如何完成各项任务。Solana Developer MCP 提供文档。缺少的是更上一层:持久的项目记忆。

如今,每次 Claude Code 在 Solana 项目中启动会话时,都是从零开始。Agent 不会 记得昨天部署的程序 ID、两周前选定的 PDA 种子、上个冲刺周期的审计发现,也不记得 为何拒绝了某个特定的 Jupiter 集成。开发者只好粘贴上下文、手动维护 NOTES 文件, 或在每次会话中重新解释项目。这是每位借助 Agent 开发 Solana 的开发者都要付出的代价。

gmem 通过专注于 Solana 原语(程序、账户、指令、PDA、IDL、集群状态、 Anchor 配置),而不是充当通用键值存储,来解决这个问题。它与 awesome-solana-ai 中的所有现有技能互为补充,而非与之竞争。

安装

npm install -g @yksanjo/gmem

或者,不进行全局安装,直接运行:

npx @yksanjo/gmem

安装后的二进制文件仍名为 gmem。

或者,修改源代码:

git clone https://github.com/yksanjo/gmem.git ~/gmem
cd ~/gmem && npm install && npm run build

然后将 MCP 客户端指向它。以 Claude Code 为例:

// ~/.claude/mcp_servers.json
{
  "mcpServers": {
    "gmem": {
      "command": "node",
      "args": ["/absolute/path/to/gmem/dist/index.js"],
      "env": { "GMEM_DB": "~/.gmem/memory.db" }
    }
  }
}

暴露的工具(v0.1)

工具用途
gmem.recall(query)检索与自然语言查询相关的记忆条目,并按 BM25 + 时效性排序
gmem.write(entity)持久化一个有类型的记忆条目(Program / Account / Instruction / Decision / Finding / Integration);仅追加
gmem.diff(from, to)显示两个时间点之间记忆状态的变化——接受 ISO 时间戳或 git 提交引用(HEAD、HEAD~3、分支名称、完整或简短 SHA)
gmem.list_decisions()列出当前项目的所有 Decision 条目,按时间倒序排列
gmem.ingest_anchor()自动导入 Anchor 工作区:解析 Anchor.toml,从 target/idl/ 获取 IDL sha256,记录当前 git HEAD 作为源提交,并为每个(程序、集群)对写入一个 Program
gmem.solana_context()读取当前 Solana CLI 配置(~/.config/solana/cli/config.yml),返回已配置的集群、RPC URL 和当前密钥对的公钥。gmem.write 会使用此信息自动将 Decision 条目标记为开发者钱包所做。绝不会返回私钥。
gmem.ingest_hardhat()v1.1 — 自动导入 Hardhat / EVM 工作区:解析 hardhat.config.{ts,js,cjs,mjs},读取 deployments/<network>/<Contract>.json 下的每个部署产物(hardhat-deploy 约定),将网络归类为规范链(base-mainnet、optimism-mainnet 等),记录顺序无关的 ABI SHA-256 和 git HEAD 作为 sourceCommit。为每个(链、地址)对写入一个 Contract 实体。
gmem.ingest_agent_activity(pubkey, cluster?)v1.2 — 通过 Helius RPC 获取自主 Agent 钱包的 Solana 活动并进行汇总(交易数、不同交互方、失败率、钱包使用时长、受制裁邻居数量),使用透明的 v1 启发式方法评分,并为每个(集群、公钥)写入一个 Agent 实体。设置 HELIUS_API_KEY 或传入 apiKey;fixturePath 可基于快照离线运行。
gmem.score_agent(pubkey, cluster?)v1.2 — 返回最新存储的 Agent 信任评分,并显示各项因素对评分的影响。只读:不会调用 RPC,也不会写入数据——请先运行 gmem.ingest_agent_activity。

完整的输入/输出 JSON 架构见 SPEC.md。

在真实 Solana 项目中运行

此仓库中的 examples/ 文件夹通过合成项目展示了项目记忆的形式。这些配套仓库基于你可能听说过的公开 Solana 程序构建了相同形式,每个实体都会引用其来源:

  • gmem-example-squads-v4 — Squads 多签。自动导入 Anchor 工作区 + 审计引用。
  • gmem-example-marginfi-v2 — Marginfi v2 借贷。由 IDL 驱动的内嵌 Drift 集成发现 (自动呈现 6 条 drift_* 指令)。
  • gmem-example-kamino-klend — Kamino klend。V1/V2 共存模式、一等闪电贷、链上推荐人状态、持续的次版本审计节奏——全部记录为 Decision 条目。

每个仓库都可通过 npm install && npm run build 运行;生成的 gmem.db 已提交,可直接检查。

v1.0 不包括的内容

为确保 v1 的范围表述准确,gmem v1.0 不包括:托管式多用户同步、跨项目搜索、Agent 声誉、链上记忆锚定。这些内容已列入 ROADMAP.md,计划用于 v1.x / v2。

路线图

  • v0.1 — 开放规范 + JSON schemas + MCP 服务存根
  • v0.2 — SQLite 后端、BM25 排序、仅追加版本控制
  • v0.3 — 自动摄取 Anchor 工作区
  • v0.4 — 捕获 Solana CLI 上下文 + Decision 自动归因
  • v0.5 — 在 gmem.diff 中解析 git ref
  • v1.0 — 稳定版发布,附带三个完整示例(DeFi 金库, cNFT 铸造、AI Agent)——另请参阅 solana-foundation/awesome-solana-ai 中的 PR #168
  • v1.1 — 支持 EVM / Hardhat(Base、Optimism、Polygon、Arbitrum、Ethereum,以及测试网), 新增 Contract 实体、gmem.ingest_hardhat 工具、完整示例 04-evm-vault
  • v1.2 — Agent 信任评分:新增 Agent 实体、gmem.ingest_agent_activity + gmem.score_agent 工具、完整示例 05-agent-reputation、 MCP Registry 页面(server.json 1.2.0)

贡献

这是一份早期规范。目前最有帮助的是针对 SPEC.md 提供反馈——实体模型是否涵盖了对你的项目至关重要的 Solana 基元?欢迎提交 issue 或 PR。

许可证

MIT — 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。