AI编码代理会话上下文共享服务

Mimir是一个MCP(模型上下文协议)服务器,允许AI编码代理之间共享会话上下文,解析并结构化处理由Claude Code、Codex CLI和Gemini CLI生成的会话文件。

  • by iamngoni
  • Rust
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 iamngoni/mimir

使用说明

弥米尔

在挪威神话中,米米尔是智慧的守护者——当众神需要知道之前发生了什么时,他们会咨询智慧。

弥米尔 是一个MCP(模型上下文协议)服务器,允许AI编码代理相互共享会话上下文。它读取由Claude Code、Codex CLI和Gemini CLI编写的现有会话文件,将其解析为结构化数据,并将其作为MCP工具公开。

没有存储。没有LLM电话。只是智能解析您的代理已经写入磁盘的内容。

为什么

默认情况下,Claude Code、Codex和Gemini是独立工作的。每次会话开始时都很冷,不知道另一个代理做了什么。Mimir弥合了这一差距——特工可以打电话 get_project_context 或 search_sessions 了解前几次会议中发生了什么(横跨 全部 代理)在开始工作之前,以标记为界的块浏览大型成绩单,并为下一个代理留下交接笔记。

工具

发现和聚合

list_sessions

列出给定项目路径和可选代理筛选器的可用会话。

{
  "project_path": "/home/user/myproject",
  "agent": "claude-code"  // optional: "claude-code" | "codex" | "gemini"
}

search_sessions

按内容、触摸的文件、代理和/或时间搜索项目的会话。提供的每个过滤器都必须匹配。返回具有匹配的方面的匹配会话(prompt / content / file)以及一个简短的片段。

{
  "project_path": "/home/user/myproject",
  "query": "auth refactor",   // optional: substring in prompts/transcript
  "file": "src/auth.rs",       // optional: sessions that touched this file
  "agent": "codex",            // optional
  "since": "2026-06-01T00:00:00Z", // optional: RFC3339, modified at/after
  "limit": 20                   // optional
}

get_project_context

项目最近工作的汇总、跨代理摘要——最近的会话、接触的文件、出现的错误和交接说明。调用工具 开始 有一项任务需要完成。

{
  "project_path": "/home/user/myproject",
  "agent": "claude-code",  // optional
  "limit": 10               // optional: how many recent sessions to aggregate
}

会话详细信息

get_session_summary

将会话解析为结构化数据——初始提示、修改的文件、工具调用、错误和最终状态。 默认情况下压缩: 完整的成绩单(raw_turns)除非你要求,否则省略,因为它可能很大。

{
  "session_id": "abc123",
  "agent": "claude-code",
  "project_path": "/home/user/myproject", // required for claude-code
  "include_raw_turns": false,  // optional: include the full transcript
  "chunk_size": 6000            // optional: attach a chunk manifest for this token budget
}

当 chunk_size 已设置,响应包括 chunk_manifest (total_chunks, total_tokens, content_hash)这样你就可以翻阅成绩单了。

get_session_chunk

取一块成绩单。块边界是以下函数的纯函数 (transcript, chunk_size),因此块是稳定的,可以取出 任何订单 (例如,最后一块先)。通过 expected_hash 从清单中得知会话是否在分页过程中更改(stale: true).代币按以下方式计算 tiktoken (cl100kbase);整个转弯被压缩到预算范围内,一个超大转弯被分成 partial 碎片。

{
  "session_id": "abc123",
  "agent": "claude-code",
  "project_path": "/home/user/myproject",
  "chunk_size": 6000,
  "index": 0,
  "expected_hash": "<content_hash from manifest>" // optional
}

get_session_stats

会话的定量统计数据——回合计数(总/用户/助理)、总和每次工具调用计数、接触的文件、错误和总令牌。通过 tool 获取一个命令的确切调用计数(例如,有多少个) Bash 呼叫)。

{
  "session_id": "abc123",
  "agent": "claude-code",
  "project_path": "/home/user/myproject",
  "tool": "Bash"  // optional: exact call count for this tool
}

交接笔记

笔记就是其中之一 可写的 surface——一个代理留给下一个代理的持久上下文。它们存储在一个小型SQLite数据库中 ~/.mimir/mimir.db,按项目路径键控。

leave_note

{
  "project_path": "/home/user/myproject",
  "content": "Auth refactor half-done — token validation still TODO in src/auth.rs",
  "session_id": "abc123",   // optional
  "agent": "claude-code",   // optional
  "author": "claude"         // optional
}

get_notes

{
  "project_path": "/home/user/myproject",
  "limit": 50  // optional
}

资源

除了工具,Mimir还将会话和笔记作为MCP公开 资源,因此具有资源选择器的客户端可以直接浏览和附加它们,并订阅实时更新。

  • resources/list --所有代理/项目的每个会话,以及每个项目的笔记资源。
  • resources/templates/list --通告URI形状:
    • mimir://session/{agent}/{session_id}?project={project_path}
    • mimir://notes/{project_path}
  • resources/read --以JSON格式返回紧凑的会话摘要(或项目注释)。URI是稳定的,因此客户端可以直接读取其中的任何一个。
  • resources/subscribe --得到一个 notifications/resources/updated 当会话文件(或笔记数据库)发生变化时。Mimir在后台通过内容哈希轮询订阅的资源。

会话文件位置

代理 路径
克劳德代码 ~/.claude/projects/<encoded-path>/<uuid>.jsonl
食品法典委员会 ~/.codex/sessions/<YYYY>/<MM>/<DD>/rollout-<date>-<uuid>.jsonl
双子座 ~/.gemini/tmp/<project-alias>/chats/session-<date>-<uuid>.json

安装

curl -fsSL https://raw.githubusercontent.com/iamngoni/mimir/master/install.sh | sh

或者,如果你安装了Rust:

cargo install --git https://github.com/iamngoni/mimir

MCP配置

克劳德代码

claude mcp add mimir --transport stdio -- mimir

或手动输入 ~/.claude.json:

{
  "mcpServers": {
    "mimir": {
      "type": "stdio",
      "command": "mimir",
      "args": []
    }
  }
}

法典

codex mcp add mimir -- mimir

或手动输入 ~/.codex/config.toml:

[mcp_servers.mimir]
command = "mimir"
args = []

Gemini CLI

手动添加到 ~/.gemini/settings.json:

{
  "mcpServers": {
    "mimir": {
      "command": "mimir",
      "args": []
    }
  }
}

存储

Mimir读取代理会话日志(它从不向其写入)。Mimir本身存储的唯一数据是 交接记录,在SQLite数据库中 ~/.mimir/mimir.db,首先创建 leave_note.

技术栈

  • 生锈+ rmcp (MCP-SDK)
  • serde_json 用于JSONL/JSON解析
  • walkdir 用于会话发现
  • tiktoken-rs (cl100k_base)用于转录令牌计数/分块
  • sha2 用于块漂移检测+资源变化检测
  • rusqlite (捆绑SQLite)用于交接笔记
  • 工具 和 资源(包括订阅);仅限stdio传输

许可证

麻省理工学院