前回紹介した、AIコーディングエージェント向けローカルメモリOSS「memcp」のアップデートです。
https://zenn.dev/tech_nnyannya/articles/14b8f5156f0a20
複数のAIコーディングエージェントを併用すると起きること
最近はClaude Codeだけでなく、Codex CLIのような複数のAIコーディングエージェントを併用している人も増えてきたと思います。ただ、これをやると新たな問題が出てきます。
- Claude Codeで議論して決めたアーキテクチャの方針を、Codex CLIのセッションではもう一度説明する羽目になる
- 「あのバグ、どっちのツールで直したんだっけ」を忘れる
- 同じプロジェクトなのに、ツールを切り替えるたびにコンテキストがリセットされる
今回、memcpをCodex CLIにも対応させ、Claude CodeとCodex CLIの間で記憶を横断検索できるようにしました。
memcpとは
一言で言うと、複数のAIコーディングエージェントのセッションログをローカルのSQLiteに蓄積し、MCP(Model Context Protocol)経由でエージェント自身に検索させるツールです。
セッションが終わる
│
▼
ログを取り込む・正規化する
│
▼
ローカルのSQLiteに保存(FTS5で全文検索)
│
▼
別のセッションで、必要になったらエージェントが検索する
データは一切外部に送信されません。クラウド同期もテレメトリもなし、全部ローカルのSQLite一本で完結します。
現在提供しているMCPツールは以下の4つです。
| Tool | 説明 |
|---|---|
search_memory(query, limit) |
過去の全セッションを全文検索 |
read_session(session_id, query, max_messages) |
特定セッションのログを読む(queryで絞り込み可) |
list_recent_sessions(limit) |
直近のセッション一覧 |
ingest_session(path) |
特定のログを手動で取り込む |
何が新しくなったか:エージェント横断の記憶
ここが今回の本題です。
Claude CodeとCodex CLIは、開発元も違えば、セッションログの形式も、設定ファイルの場所も、MCPサーバーの登録方法も、何もかもが別物です。この2つの間で記憶を共有するには、それぞれのログ形式を専用のパーサーで読み、共通のスキーマ(セッション・メッセージ・ツール呼び出し)に正規化して、同じSQLiteデータベースに集約する必要がありました。
ParseFn = Callable[[Path], tuple[Session, list[Message], list[ToolCall]]]
この形のパーサーを1つ書けば、新しいエージェントに対応できる構造にしてあります。今回はこれにCodex CLI用の実装を追加し、memcp setup もCodex CLI側のMCPサーバー登録・自動取り込み設定まで一括で面倒を見るように拡張しました。
その結果、こんなことができるようになりました。
── Claude Codeでの過去のセッション ──
User: JWTのリフレッシュトークン、ローテーションはどう実装した?
Claude: Redisでスライディングウィンドウ方式の失効管理を実装しました。
(このセッションはここで終了)
── 数日後、Codex CLIで新しいセッションを開始 ──
User: 前にJWTのリフレッシュトークンの実装、どうやったんだっけ?
Codex: [search_memory("JWT refresh token rotation") を実行]
見つかりました — 2026-06-10のClaude Codeのセッションです。
Redisでトークン失効管理をするスライディングウィンドウ方式を
使っていますね。実装の詳細も読み込みましょうか?
別のベンダーの、別のツールが、自分が知らないはずの過去の作業を正確に思い出す。 これが実際に動いているのを見たとき、地味だけどかなり手応えを感じました。エージェントを切り替えるたびに文脈をゼロから説明し直す、という日常的なストレスが本当になくなります。
セットアップは memcp setup だけで、Claude Code・Codex CLI両方のMCPサーバー登録と自動取り込み設定を一括で行います。
今できること/できないこと
できること
- Claude Code・Codex CLI、両方のセッションログの取り込みとパース
- どちらのエージェントからも、MCP経由でセッションを横断検索
まだできないこと
- Codex CLI単体だと、セッション終了時の自動取り込みがまだ動かない(Codex側のフック対応待ち。手動で
memcp ingest-newを叩く必要がある) - Cursor / Windsurf など、他のエージェントはまだ未対応
- 意味検索(embedding)はまだない
おわりに
「複数のAIコーディングエージェントを併用しても記憶が分断されない」というのは、エージェントが増えていくこれからの開発体験において、地味だけど効いてくる部分だと思っています。
フィードバック・PR、お待ちしています🙏