Claude Codeで開発していると、こんな経験はありませんか。
「さっきまで何をしていたんだっけ?」と戸惑う瞬間です。
長時間のセッションが進むにつれ、AIが以前の決定を忘れます。
また、コーディング規約から逸脱することもあります。
これは偶然ではありません。
Claude Codeが永続的な作業環境を持たないことが根本的な原因なのです。
Redditユーザーのmarkmdev氏が開発したMeridianは、この問題に真正面から取り組んでいます。
特別なコマンドを覚える必要はありません。
対話方法を変える必要もありません。
今までと同じようにClaudeと話すだけです。
背後で自動的に記憶と文脈が保持される仕組みを実現しています。
Claude Codeが抱える構造的な問題
実際の開発でClaude Codeを使っていると、いくつかの問題に直面します。
まず、コンテキストの圧縮後に記憶が失われる問題があります。
長いセッションで蓄積された情報が、突然リセットされてしまうのです。
次に、過去の意思決定やパターンを忘れてしまう点も厄介です。
解決済みの問題も同様に忘れます。
同じミスを繰り返すこともあります。
以前に確立したパターンから外れたコードを生成することもあるでしょう。
さらに困るのが、セッションの状態によって振る舞いが変わることです。
朝と夕方で全く違う提案をしてくることもあります。
これらは単なるバグではありません。
AIが永続的な作業環境を持たないことから生じる、必然的な結果なのです。
Meridianを支える技術:Claude Codeのフックシステム
Meridianの動作を理解するには、Claude Codeの「フックシステム」について知る必要があります。
フックとは、Claude Codeのライフサイクルの特定のタイミングで自動実行されるスクリプトのことです。
開発者が.claude/settings.jsonにコマンドを設定すると、以下のようなタイミングで自動的に実行されます:
- セッション開始時
- ツール実行の前後
- コンテキスト圧縮前後
- セッション停止時
通常のAI開発では、こうした処理を「AIにお願いする」ことになります。
しかし、AIは忘れることがあります。
または、実行しないこともあります。
フックシステムを使えば、これらの処理が確実に実行されます。
AIの判断に依存せず、システムレベルで保証されるのです。
Meridianは、このフックシステムを巧みに活用しています。
セッション開始時にガイドラインを注入します。
コンテキスト圧縮後に情報を再注入します。
停止前にテストとタスク更新を強制確認します。
これにより、「推奨」ではなく「強制」の動作が実現されます。
Claudeが忘れることも、スキップすることもできない仕組みなのです。
Meridianが提供する6つの解決策
1. タスクの構造化と永続化
Meridianは承認されたプランに基づいて、構造化されたタスクフォルダを自動作成します。
.meridian/tasks/TASK-###/ TASK-###.yaml # 目標、スコープ、受入条件、リスク TASK-###-plan.md # 承認されたプラン TASK-###-context.md # 実行中のメモ、意思決定、ブロッカー、PRリンク
これは単なる規約ではありません。
フックによって強制的に実行されます。
そのため、Claudeは作業の流れを見失うことがなくなります。
過去のタスクを参照できます。
同じ間違いを繰り返すことも防げるのです。
2. プロジェクトレベルの永続的メモリ
.meridian/memory.jsonlファイルに、プロジェクトの生涯を通じて蓄積される知識が保存されます。
具体的には、以下のような情報が記録されます:
- アーキテクチャの決定
- 繰り返し使うパターン
- 過去に遭遇した問題
- 採用しなかった代替案
Claudeは起動時やリロード時に必ずこのメモリを読み込みます。
そして、過去の経験を活かして作業を進められるようになります。
3. コーディング規約の自動適用
プロジェクトの性質に応じて、異なるコーディング規約を自動的に適用できます。
以下のような種類があります:
- 標準的な開発用
- ハッカソン用(制約を緩める)
- 本番環境用(より厳格)
- TDD用(テストファースト開発)
これらは.meridian/config.yamlで切り替えられます。
project_type: standard # hackathon | standard | production tdd_mode: false # TDDを強制するかどうか
セッションごとに適切な規約が自動的に注入されます。
そのため、Claudeがコーディング標準を忘れることはありません。
4. コンテキスト圧縮後の記憶復元
これはClaude Codeの最大の問題の一つです。
Meridianはフックを使って、圧縮後も作業メモリを再構築します。
具体的には、以下を再注入します:
- システムプロンプト
- コーディングガイド
- メモリログ
- タスクバックログ
- 関連ドキュメント
そして、ツール使用を許可する前に、Claudeにこれらを読み直すことを強制します。
この仕組みにより「セッションドリフト」が完全に排除されます。
5. 作業終了前の正確性確認
Claudeが作業を終了しようとすると、フックが介入します。
以下を確認するのです:
- テストが通っているか
- リントが通っているか
- ビルドが成功しているか
- タスクファイルが更新されているか
- 必要に応じてメモリエントリが追加されているか
- バックログが更新されているか
これらは推奨事項ではありません。
必須チェックとして実行されます。
6. 開発者の作業方法を変えない設計
Meridianの重要な設計思想は、開発者の作業方法を変えないことです。
具体的には:
- 特別なコマンドを使う必要はない
- 特定のトリガーワードも不要
- Claudeとの対話方法を変える必要もない
- スクリプトを手動で実行することもない
従来通りにClaudeと対話するだけです。
Meridianが背後ですべてを処理してくれます。
実装の詳細と拡張性
興味深いのは、メモリへの保存判断基準です。
markmdev氏によると、以下の3つの質問のうち少なくとも1つに「はい」と答えられる場合のみ、メモリエントリが作成されます:
- この決定は他の機能の構築方法に意味のある影響を与えるか?
- このパターンをコードベース全体で繰り返し使いたいか?
- これは将来のミスのカテゴリを防ぐか?
すべて「いいえ」の場合、その情報はタスクコンテキストに留められます。
言語サポートについても柔軟です。
現在はJavaScriptとTypeScriptに焦点を当てています。
しかし、CODE_GUIDE.mdを更新するだけで他の言語にも対応可能です。
Pythonのサポートは近日中に追加される予定です。
PHP、C#、Terraformなども検討されています。
コンテキストウィンドウへの影響
当然ながら、これだけの情報を注入すれば、コンテキストウィンドウの一部を消費します。
markmdev氏の経験では、初期注入でコンテキストウィンドウの10-15%程度を使用するとのことです。
ただし、作業の質が向上します。
やり取りが減ることで、結果的にトークン効率が良くなることもあります。
無駄な繰り返しや説明が不要になるからです。
プロジェクトごとの独立性
Meridianは完全にプロジェクトごとに独立しています。
利用開始は簡単です。
リポジトリをクローンし、.claudeと.meridianフォルダを自分のプロジェクトルートにコピーします。
そして、Pythonスクリプトに実行権限を付与するだけです。
# 1. リポジトリをクローン git clone https://github.com/markmdev/meridian meridian-setup cd meridian-setup # 2. 2つのフォルダをプロジェクトにコピー cp -R .claude .meridian /path/to/your/project cd /path/to/your/project # 3. Pythonスクリプトを実行可能にする find .claude -type f -name '*.py' -print0 | xargs -0 chmod +x
この手順が必要な理由は、Claude Codeがフックスクリプトを直接実行するためです。
python script.pyではなく、./script.pyの形式で呼び出します。
そのため、スクリプトに実行権限が必要になります。
削除すればすぐに元の状態に戻ります。
グローバルなインストールは不要です。
システムに影響を与えることもありません。
バックグラウンドで動作するエージェントもサービスもありません。
類似ツールとの比較
Redditのコメントでは、Beads、Traycer、skilled-specなど、似た問題に取り組むツールも言及されています。
それぞれアプローチは異なります。
しかし、共通しているのは「AIに永続的な環境を提供する」という発想です。
Meridianの特徴は、開発者の作業方法を変えずに、決定論的なフックで動作を保証する点にあります。
スラッシュコマンドのワークフローとは異なります。
システムのことを意識する必要がありません。
まとめ
Claude Codeは優れたコード生成・リファクタリング能力を持ちます。
しかし、永続的なプロジェクト状態を維持するようには設計されていません。
Meridianはこのギャップを埋めます。
永続的なファイルシステム、メモリログ、決定論的なフック、安定したドキュメント、コンパクション境界を越えた一貫した注入。
これらにより、Claudeは「状態を持たないアシスタント」から「継続的に存在するチームメイト」へと変わります。
長期的なプロジェクトでClaude Codeを使っている人にとって、この仕組みは認知的な負荷と予測不可能性を大幅に減らしてくれるでしょう。
開発者が本来の仕事に集中できる環境を作ることが、Meridianの最大の価値なのです。
プロジェクトはGitHubで公開されています。
Claude Codeの限界に悩んでいる方は、試してみる価値があるでしょう。
