mcpField
C
Claude Historian

Claude Historian

本地服务
github.com/VvkmnnAI 与智能体17931 周前更新

关于 Claude Historian

Claude Historian 是一个 MCP 服务,用于搜索本地 Claude Code 的历史对话,帮助查找过去的解决方案、文件变更和错误记录。它无需额外依赖或数据库,面向希望复用既往工作的 Claude Code 用户。

主要功能

  1. 01搜索对话、文件、错误、计划等范围
  2. 02按会话 ID 生成摘要
  3. 03按文件查看变更历史
  4. 04统计工具使用模式
  5. 05仅读取本地 JSONL 文件,不写入索引

适用场景

  1. 01查找以前遇到过的错误及其修复方法
  2. 02回顾某个文件的修改记录
  3. 03在网页搜索或进入计划模式前检索相关历史

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 search 与 inspect 两个工具,用于查询 Claude Code 的本地对话历史。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"claude-historian": {
"command": "npx",
"args": [
"-y",
"claude-historian"
]
}
}
}
启动命令npx -y claude-historian

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

安装包
npmclaude-historian

工具

7

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

参数类型必填说明
querystring是用于查找相关对话的搜索查询
projectstring否用于筛选结果的可选项目名称
timeframestring否时间范围筛选器(today、week、month)
limitnumber否结果数量上限(默认值:50)

详细介绍

claude-historian-mcp

claude-historian-mcp

一个用于搜索 Claude Code 对话历史的 Model Context Protocol (MCP) 服务。查找过往解决方案、追踪文件变更,并从以往工作中汲取经验。


claude-historian-mcp

npm version License: MIT TypeScript Node.js Claude GitHub stars CodeRabbit Pull Request Reviews


安装

要求:

Claude Code

通过 shell 安装:

claude mcp add claude-historian-mcp -- npx claude-historian-mcp

在 Claude 中安装(需要重启):

Add this to our global mcp config: npx claude-historian-mcp

Install this mcp: https://github.com/Vvkmnn/claude-historian-mcp

通过任何可手动配置的 mcp.json 安装:(Cursor、Windsurf 等)

{
  "mcpServers": {
    "claude-historian-mcp": {
      "command": "npx",
      "args": ["claude-historian-mcp"],
      "env": {}
    }
  }
}

无需执行 npm install——没有外部依赖或本地数据库,只有搜索算法。

不过,如果 npx 解析到了错误的包,可以通过以下方式强制指定:

npm install -g claude-historian-mcp

**已重命名:**本项目已从 claude-historian 更名为 claude-historian-mcp。现有用户应将安装命令和 MCP 配置参数更新为 claude-historian-mcp。

技能

你也可以选择安装此技能,让 Claude 知道何时主动使用 historian:

npx skills add Vvkmnn/claude-historian-mcp --skill claude-historian --global
# Optional: add --yes to skip interactive prompt and install to all agents

这样,Claude 就会在进行网页搜索、遇到错误或会话开始时自动检查历史记录。MCP 服务无需此技能也能正常工作,但该技能有助于 Claude 发现并使用它。

插件

如需通过钩子和命令自动搜索历史记录,请从 claude-emporium 市场安装:

/plugin marketplace add Vvkmnn/claude-emporium
/plugin install claude-historian@claude-emporium

claude-historian 插件提供:

钩子(针对性触发,成功时零开销):

  • WebSearch/WebFetch 执行前 → 检查 search scope="similar"
  • EnterPlanMode 执行前 → 检查 search scope="plans"
  • Task Agent 执行前 → 检查 search scope="tools"
  • Bash 出错后 → 检查 search scope="errors"

命令: /historian-search <query>

需要先安装 MCP 服务。请参阅 emporium,了解其他 Claude Code 插件和 MCP。

功能

MCP 服务,让 Claude 能够访问你的对话历史记录。两个工具、11 个范围、零依赖。

在本地运行(戴着酷炫的墨镜 [⌐■_■] 📜):

search

搜索对话、文件、错误、计划、配置、任务、会话、工具、相似查询和记忆。

search query="docker auth error"                          # default scope: all
search query="fix build" scope="conversations"            # past solutions
search query="ENOENT" scope="errors"                      # error patterns + fixes
search query="auth" scope="plans"                         # implementation plans
search query="hooks" scope="config"                       # rules, skills, CLAUDE.md
search query="git push" scope="similar"                   # related questions asked before
search query="Edit" scope="tools"                         # tool usage workflows
search filepath="package.json" scope="files"              # file change history
search scope="sessions"                                   # recent sessions
search scope="memories"                                   # project memory files
search query="deploy" scope="all" detail_level="detailed" # full context
search query="auth" timeframe="7d" project="my-app"       # filtered
📜 ── search "docker auth" ── 5 results · 405 tokens

{
  "results": [{
    "type": "assistant",
    "ts": "2h ago",
    "content": "Fixed Docker auth by updating registry credentials...",
    "project": "my-app",
    "score": 100,
    "ctx": { "filesReferenced": ["docker-compose.yml"], "toolsUsed": ["Edit", "Bash"] }
  }]
}
📜 ── files "package.json" ── 92 operations · 1594 tokens

{
  "filepath": "package.json",
  "operations": [{
    "type": "edit",
    "ts": "1d ago",
    "changes": ["Changed: \"version\": \"1.0.3\" → \"version\": \"1.0.4\""],
    "content": "Updated version for release"
  }]
}
📜 ── tools "Bash" ── 5 patterns · 427 tokens

{
  "tool": "Bash",
  "patterns": [{
    "name": "Bash",
    "uses": 10,
    "workflow": "$ npm run build 2>&1",
    "practice": "Used with: ts, js, json, md files"
  }]
}
inspect

通过 ID(完整 UUID 或短前缀)获取任意会话的智能摘要。

inspect session_id="latest"                      # most recent session
inspect session_id="d537af65"                    # short prefix works
inspect session_id="d537af65" focus="files"      # only file changes
inspect session_id="d537af65" focus="tools"      # only tool usage
inspect session_id="d537af65" focus="solutions"  # only solutions
📜 ── inspect my-app (68d5323b)

{
  "session": {
    "id": "68d5323b",
    "ts": "2h ago",
    "duration": 45,
    "messages": 128,
    "project": "my-app",
    "tools": ["Edit", "Bash", "Read"],
    "files": ["src/auth.ts", "package.json"],
    "accomplishments": ["fixed auth bug", "added unit tests"],
    "decisions": ["chose JWT over sessions"]
  }
}

方法

claude-historian-mcp 的工作原理:

"docker auth" query
      |
      ├─> Parallel Processing (search.ts:174): 15 projects × 10 files concurrently
      |   • Promise.allSettled for 6x speed improvement
      |   • Early termination when sufficient results found
      |   • Enhanced file coverage with comprehensive patterns
      |
      ├─> Enhanced Classification (search.ts:642): implementation → boost tool workflows
      |   • Workflow detection for tool sequences (Edit → Read → Bash)
      |   • Semantic boundary preservation (never truncate mid-function)
      |   • Claude-optimized formatting with rich metadata
      |
      ├─> Smart Ranking (utils.ts:267):
      |   ├─> Core Terms (scoring-constants.ts): "docker" +10, "auth" +10
      |   ├─> Supporting Terms: context words +3 each
      |   ├─> Tool Usage: Edit/Bash references +5
      |   ├─> File References: paths/extensions +3
      |   └─> Project Match: current project +5
      |
      ├─> Results sorted by composite score:
      |   • "Edit workflow (7x successful)" (2h ago) ***** [score: 45]
      |   • "Docker auth with context paths" (yesterday) **** [score: 38]
      |   • "Container debugging patterns" (last week) *** [score: 22]
      |
      └─> Return Claude Code optimized results

核心优化:

搜索策略:

设计原则:

  • 通用引擎 —— 为所有 Claude Code 对话提供单一搜索后端
  • 并行处理 —— 并发扫描会话目录中的文件
  • 语义扩展 —— 使用查询同义词和相关词提升召回率
  • 零依赖 —— 仅依赖 @modelcontextprotocol/sdk,无需数据库
  • 离线运行 —— 数据不会离开你的计算机,仅扫描本地 JSONL 文件

文件访问:

  • 读取路径:~/.claude/conversations/
  • 不进行持久化存储或索引
  • 数据不会离开你的计算机

性能: 基准测试、优化历史和质量评分请参阅 PERFORMANCE.md。

替代方案

每款对话历史工具要么始终加载上下文(未使用时也会消耗 token),要么需要外部运行时和数据库。Historian 可按需搜索,且零依赖。

功能historianClaude Memoryclaude-memdejaconversation-search
依赖项零内置Bun + Python + SQLite + ChromaPythonRust 工具链
后台服务否否是(端口 37777)否否
写入磁盘从不是(自动记忆文件)是(SQLite + Chroma DB)是(线索记录)是(约 10% 的索引开销)
会话启动0 个 token加载约 200 行每个会话 5-8k 个 token加载技能提示词0 个 token
空闲时的 token 开销0每个会话 200 行每个会话 5-8k 个 token每个会话的技能提示词0
搜索算法12无(读取文件)向量 + 关键词加权信号BM25 全文搜索
模糊匹配是否是(向量相似度)否否
工作流检测是否否否否
原始对话是否(仅摘要)否(压缩后的观察记录)是是(经过筛选)
维护零零工作进程守护程序、迁移技能配置重建索引

Claude Memory——Claude 内置的记忆(CLAUDE.md + 自动记忆)。可在不同会话间保存项目规则和偏好。它面向未来(例如“始终使用 ESM 导入”),而非用于搜索对话。互为补充:memory 用于规则,historian 用于查找以往的解决方案。

claude-mem——一款通过生命周期钩子捕获观察记录、将其压缩到 SQLite + Chroma 中,并在每个会话加载上下文的插件。需要 Bun、Python,以及运行在端口 37777 上的后台工作进程。真实场景测试(270 多个会话)显示:95% 的会话从未查询历史记录——始终运行的工具无论是否使用,每个会话都会消耗 5-8k 个 token。Historian 空闲时不消耗 token,每次查询消耗 500-2k 个 token,在 100 个会话中可节省约 475k 个 token。已知问题:会创建导致 --continue 出错的会话占位文件、工作进程守护程序版本冲突、安全钩子会阻止有效编辑。

deja——一款按事件和成果为会话建立索引的 Python 技能。使用加权信号排序(待办事项 > 文件 > 文本)。需要 Python 和 TodoWrite 集成。

conversation-search——一款使用 Tantivy BM25 全文搜索的 Rust MCP 服务。索引速度快(约每秒 1000 个对话),但需要 Rust 工具链和持久化磁盘索引。

桌面应用

注意: Claude Desktop 将对话存储在服务端,而非本地。~/Library/Application Support/Claude/ 中的本地 LevelDB 文件仅包含会话令牌、界面偏好设置和 Intercom 状态,不包含对话内容。Claude Desktop 支持还受到 LevelDB 锁和 Electron 沙箱机制的阻碍。

这意味着,目前无法在本地搜索 Claude Desktop 的历史记录。本项目专注于 Claude Code,它会将完整的对话历史记录存储在本地的 ~/.claude/projects/ 中。

只有在 Claude 应用关闭时,你才能从 Claude Code 获取部分 Claude Desktop 数据。此外,现已提供 DXT 软件包和构建版本,以便未来兼容;相关调查仍在进行中。欢迎使用它进行测试。

开发

git clone https://github.com/Vvkmnn/claude-historian-mcp && cd claude-historian-mcp
npm install && npm run build
npm test

软件包要求:

  • Node.js:>=20.0.0(ES 模块)
  • 运行时:@modelcontextprotocol/sdk
  • 无需外部数据库——可通过 npx 运行

开发工作流:

npm run build          # TypeScript compilation with executable permissions
npm run dev            # Watch mode with tsc --watch
npm run start          # Run the MCP server directly
npm run lint           # ESLint code quality checks
npm run lint:fix       # Auto-fix linting issues
npm run format         # Prettier formatting (src/)
npm run format:check   # Check formatting without changes
npm run typecheck      # TypeScript validation without emit
npm run test           # Lint + type check
npm run prepublishOnly # Pre-publish validation (build + lint + format:check)

Git 钩子(通过 Husky):

  • pre-commit:使用 Prettier 和 ESLint 自动格式化暂存的 .ts 文件
  • pre-push:推送前运行完整验证(格式、lint、类型检查、构建)

贡献:

  • Fork 仓库并创建功能分支
  • 提交 PR 前,使用大型对话历史记录进行测试
  • 遵循 TypeScript 严格模式和 MCP 协议标准

参考示例:

许可证

MIT


阿庇乌斯·克劳狄乌斯·卡埃库斯在元老院——切萨雷·马卡里

阿庇乌斯·克劳狄乌斯·卡埃库斯在元老院,作者为 切萨雷·马卡里(1888 年)。罗马政治家,拉丁散文之父。

评论

支持 Markdown

第一次接触 MCP?

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

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