对话历史搜索服务

一个用于搜索Claude Code对话历史的MCP服务器,支持查找过往解决方案、跟踪文件变更并从先前工作中学习。

  • by Vvkmnn
  • TypeScript
  • 本地部署
  • 179 星标
  • 更新于
在 GitHub 查看 Vvkmnn/claude-historian

使用说明

克劳德历史学家mcp

一 模型上下文协议(MCP) 用于搜索您的 克劳德代码 对话历史。查找过去的解决方案,跟踪文件更改,并从以前的工作中学习。



安装

要求:

来自shell:

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

从内部克劳德 (需要重新启动):

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

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

从任何手动配置 mcp.json:(光标、风帆等)

{
  "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.

技能

可选地,安装技能来教克劳德何时主动使用历史记录:

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

这使得克劳德在网络搜索之前、遇到错误时或会话开始时自动检查您的历史记录。MCP在没有技能的情况下工作,但技能提高了可发现性。

插件

要使用钩子和命令进行自动历史搜索,请从安装 克劳德商场 市场:

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

这 克劳德历史学家 插件提供:

钩子 (目标明确,成功后零开销):

  • 在WebSearch/WebFetch之前→ Check search scope="similar"
  • 进入计划模式之前→ Check search scope="plans"
  • 任务代理之前→ Check search scope="tools"
  • Bash错误后→ Check search scope="errors"

命令: /historian-search <query>

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

特征

MCP服务器 这让克劳德可以访问你的对话历史记录。两个工具,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"]
  }
}

方法论

如何 克劳德历史学家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/
  • 零持久存储或索引
  • 永远不要离开你的机器

演出 看 性能.md 用于基准测试、优化历史和质量分数。

替代方案

每个对话历史记录工具要么始终加载上下文(未使用时燃烧令牌),要么需要外部运行时和数据库。Historian按需搜索,零依赖。

|特点| 历史学家 |克劳德记忆|克劳德记忆|对话搜索| | ----------------------- | ----------------------- | ----------------------- | -------------------------------- | ------------------- | ---------------------------- | | 依赖项 | 零 |内置| Bun+Python+SQLite+Chroma | Python | Rust工具链| | 后台服务 | 不 |否|是(端口37777)|否|否| | 写入磁盘 | 从不 |是(自动内存文件)|是(SQLite+Chroma DB)|是| | 会话启动 | 0个令牌 |加载约200行|每次会话5-8k代币|加载技能提示|0代币| | 代币成本(闲置) | 0 |200行/课时|5-8k/课时|技能提示/课时|0| | 搜索算法 | 12 |无(文件读取)|矢量+关键字|加权信号|BM25全文| | 模糊匹配 | 是 |否|是(向量相似性)|否|否| | 工作流检测 | 是 |否|否|否| | 原始对话 | 是 |否(仅摘要)|否(压缩观察)|是|是(过滤)| | 维护 | 零 |零|工作进程、迁移|技能配置|索引重建|

克劳德记忆 --克劳德的内置存储器(CLAUDE.md +自动存储器)。在会话中保持项目规则和偏好。前瞻性(“始终使用ESM进口”);不是对话搜索。 互补的:规则的记忆,过去解决方案的历史学家。

克劳德·梅 --该插件通过生命周期挂钩捕获观察结果,将其压缩到SQLite+Chroma中,并在每个会话中加载上下文。需要Bun、Python和端口37777上的后台工作者。真实世界测试(270多个会话):95%的会话从不查询历史记录——不管怎样,始终在线的工具每次会话都要支付5-8k的令牌。Historian支付0个空闲令牌,每个查询500-2k,在100个会话中节省约475k令牌。已知问题:创建中断的存根会话文件 --continue,工作进程版本冲突,安全挂钩阻止有效编辑。

似曾相识 --Python技能,按情节和成就对会话进行索引。使用加权信号排名(待办事项>文件>文本)。需要Python和TodoWrite集成。

对话搜索 --Rust MCP服务器使用Tantivy BM25全文搜索。快速索引(约1000个对话/秒),但需要Rust工具链和持久磁盘索引。

桌面

注: Claude Desktop将对话存储在服务器端,而不是本地。本地LevelDB文件(~/Library/Application Support/Claude/)仅包含会话令牌、UI首选项和内部通信状态,不包含对话内容。Claude Desktop支持也被阻止 LevelDB锁 和 电子沙盒.

这意味着 当前无法搜索Claude Desktop的本地历史记录.本项目的重点是 克劳德代码,它在本地存储完整的对话历史记录 ~/.claude/projects/.

您可以从Claude Code获得一些Claude Desktop,但是 仅当Claude应用程序关闭时此外,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钩子(通过赫斯基):

  • 预承诺:自动格式化已暂存 .ts 使用Prettier和ESLint的文件
  • 预推:在推送之前运行完整验证(格式、lint、类型检查、构建)

贡献:

  • 分叉存储库并创建功能分支
  • 在提交PR之前,使用大量对话历史记录进行测试
  • 遵循TypeScript严格模式 MCP协议 标准

从示例中学习:

许可证

麻省理工学院


Appius Claudius Caecus在参议院 通过 凯撒 马卡里 (1888).罗马政治家,拉丁散文之父。