AI编程助手记忆与上下文管理工具

一个为AI编程助手提供持久记忆、上下文控制和防幻觉功能的MCP服务器,适用于代码开发和项目管理的场景。

  • by InfiniQuest-App
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 InfiniQuest-App/wisdom-store

使用说明

智慧商店

一个MCP服务器,为AI编码助手提供持久记忆、上下文控制和抗幻觉工具。

提前释放 --积极开发,API可能会发生变化。预计会有粗糙的边缘。

它做什么

上下文控制 --实时修剪对话上下文(无需重新启动),将精心策划的知识注入会话,监控上下文使用情况。

持久的知识 --将课程、模式、注意事项和边缘案例保存到跨会话的平面文件中。按项目部分、文件或全局组织。

项目索引 --基于AST的符号提取(通过 @astgrep/napi),API路由检测,HTML页面清单。生成一个紧凑的项目概述,旨在为Claude提供一个详细的项目地图,用于您的上下文窗口的一小部分。

抗幻觉 --具有模糊匹配的符号注册表可以捕获幻觉函数名、拼写错误和未知符号。包括一个写后挂钩,每次编辑后都会自动警告幻觉导入、文件路径、函数调用和API路由。

工具(11)

上下文控制

工具 说明
context_status 检查上下文使用情况——消息计数、估计令牌、膨胀指标
prune_context 实时修剪旧消息。模式: oldest_percent, before_message, after_phrase
inject_context 插入精心策划的上下文作为新的对话根。需要 /resume 重新加载

持久知识

工具 说明
save_wisdom 坚持经验教训、模式、注意事项、边缘案例或决定 .wisdom/ 文件
get_wisdom 加载文件、节或关键字的智慧。无参数调用项目概述
update_plan 用文件、决策和状态记录功能计划
list_wisdom 浏览存在的智慧——章节、计划、模式、侧车

项目索引

工具 说明
reindex_project 扫描项目,通过AST提取符号,保存到 .wisdom/symbols.json
get_project_overview 紧凑的项目地图-文件树,符号,API路线,HTML页面。始终新鲜

抗幻觉

工具 说明
check_symbols 对照注册表的交叉引用符号。报告:确认、模糊匹配(拼写错误?)或未知(幻觉?)
refresh_symbols 重新扫描并更新符号注册表

安装

git clone https://github.com/InfiniQuest-App/wisdom-store.git
cd wisdom-store
npm install

添加到您的 ~/.claude.json 或项目 .mcp.json (参见 examples/mcp.json):

{
  "mcpServers": {
    "wisdom-store": {
      "command": "node",
      "args": ["/path/to/wisdom-store/src/mcp-server/index.js"],
      "env": {}
    }
  }
}

重新启动Claude Code或运行 /mcp 连接。

教克劳德使用它

从以下位置复制相关章节 examples/CLAUDE.md 进入你的项目 CLAUDE.md这教会了克劳德何时加载智慧、保存知识、检查符号和管理上下文。

钩子

这 hooks/ 该目录包含自动与智慧存储集成的Claude Code挂钩。

添加到您的设置文件-- ~/.claude/settings.json (全球), .claude/settings.json (项目),或 .claude/settings.local.json (每个项目个人)。替换 /path/to/wisdom-store 使用您的实际克隆路径。

写作后幻觉检查

每次写入/编辑后自动检查幻觉:

  • 导入指向不存在文件的路径
  • 导入的符号不在项目注册表中
  • 对未知符号的独立函数调用
  • 在项目索引中找不到API路由

需要 .wisdom/symbols.json --奔跑 get_project_overview 生成一次(每次调用时自动刷新)。仅对代码文件开火(.js, .ts, .py, .go, .rs).

预压缩保存提醒

提醒克劳德在压缩上下文之前将重要发现保存到智慧库中。手动和手动都着火了(/compact)以及自动压实。仅在具有以下条件的项目中发生火灾 .wisdom/ 目录。

设置

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit",
        "hooks": [{
          "type": "command",
          "command": "/path/to/wisdom-store/hooks/post-write-symbol-check.sh",
          "timeout": 10
        }]
      },
      {
        "matcher": "Write",
        "hooks": [{
          "type": "command",
          "command": "/path/to/wisdom-store/hooks/post-write-symbol-check.sh",
          "timeout": 10
        }]
      }
    ],
    "PreCompact": [
      {
        "matcher": "",
        "hooks": [{
          "type": "command",
          "command": "/path/to/wisdom-store/hooks/pre-compact-save-reminder.sh",
          "timeout": 10
        }]
      }
    ]
  }
}

运作原理

存储

一切都是平面文件 .wisdom/ 项目根目录:

.wisdom/
  index.json           # Project metadata + file list
  symbols.json         # Symbol registry (functions, classes, exports, routes)
  sections/            # Knowledge organized by topic
    auth.md
    estimates.md
  plans/               # Feature plans
    v2-migration.md
  patterns/            # Reusable patterns
    error-handling.md

智慧储存在三个层面:

  • 项目 — .wisdom/sections/, .wisdom/plans/, .wisdom/patterns/ 了解这个项目
  • 文件特定 --源旁边的Sidecar文件: myfile.js 获取 myfile.js.wisdom
  • 全球 — ~/.claude/wisdom/ 用于跨项目课程(使用 scope: "global" 随着 save_wisdom)

上下文操纵

prune_context 通过设置工作 parentUuid: null 在JSONL对话文件中的目标消息上,孤立它之前的所有内容。这在下一条消息上生效——不需要重新启动。

inject_context 附加一条新消息 parentUuid: null 就像一根新鲜的根。需要 /resume 重新加载。辅助脚本(hooks/send-resume.sh)作为tmux自动化的起点,但手动 /resume 是最可靠的方法。

AST提取

用途 @ast-grep/napi (基于树的)JavaScript/TypeScript/TSX。提取函数、类、变量、导出、接口、类型、枚举。正则表达式在Python、Go和Rust中的回退。

项目概述旨在提高上下文效率——足够紧凑,可以容纳单个工具响应,同时涵盖文件树、符号、路线和页面。

输出示例

跑步 get_project_overview 关于此回购:

# Project Overview

## Files (16)
Total: 3,093 lines

- hooks/: symbol-check.mjs (273L)
- src/mcp-server/: index.js (371L)
- src/mcp-server/lib/: indexer.js (643L), jsonl.js (276L), wisdom.js (325L)
- src/mcp-server/tools/: check-symbols.js (87L), context-status.js (123L),
    get-project-overview.js (58L), get-wisdom.js (179L), inject-context.js (177L),
    list-wisdom.js (144L), prune-context.js (125L), refresh-symbols.js (15L),
    reindex-project.js (92L), save-wisdom.js (106L), update-plan.js (99L)

## Symbols
Functions: 62, Classes/Types: 0, Exports: 40

### Exports
- appendLine — src/mcp-server/lib/jsonl.js:273
- checkSymbols — src/mcp-server/lib/indexer.js:543
- findConversationFile — src/mcp-server/lib/jsonl.js:30
- generateOverview — src/mcp-server/lib/indexer.js:450
- handleCheckSymbols — src/mcp-server/tools/check-symbols.js:24
- handlePruneContext — src/mcp-server/tools/prune-context.js:23
- scanProject — src/mcp-server/lib/indexer.js:50
- walkChain — src/mcp-server/lib/jsonl.js:160
  ... (40 exports total)

典型工作流程

1. Start working on a task
2. get_project_overview → understand the codebase
3. get_wisdom for relevant files/sections → load past knowledge
4. Work on the task
5. save_wisdom to persist new insights
6. check_symbols after writing code → catch hallucinations
7. If context gets large: save_wisdom → prune_context → continue

语言支持

语言 AST提取 Regex回退
JavaScript(.js、.mjs、.cjs、.jsx) 完整 -
TypeScript(.ts,.tsx) 完整 -
Python(.py) - 函数、类、方法
Go(.Go) - 函数、类型、变量
Rust(.rs) - 函数、结构、枚举、特征
HTML(.HTML) - 页面标题、结构

需求

  • Node.js 18+
  • Claude代码(用于MCP集成和挂钩)

许可证

麻省理工学院