ThoughtDAG について
ThoughtDAG は、ローカルに保存された AI エージェントのセッションをファイルや語句で検索し、元のターンを呼び出す MCP サーバーです。コードの変更経緯を追跡する開発者向けで、提供するツールはすべて読み取り専用です。
主な機能
- 01ファイルパスによるセッションターンの検索
- 02質問と回答の語句検索
- 03セッションファイルへの読み取り専用アクセス
- 04~/.thoughtdag に保存されるローカルインデックス
活用シーン
- 01ファイルを編集する前の過去の履歴確認
- 02既存コードの実装理由の追跡
- 03コーディングエージェントからの過去の判断の参照
MCP 対応
本プロジェクトは MCP サーバーとして動作し、why_check、why_file、find、recall_turn の 4 つの読み取り専用ツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | ファイルパス(絶対パスまたは cwd からの相対パス)、URL、または arxiv:<id> |
詳細
thoughtdag
ファイルを形作った会話を見つけます。
npx thoughtdag why src/lib/api.ts
お使いのマシン上にあるエージェントのセッション(Claude Code、Codex、DeepSeek Harness、Pi)を、各ターンで読み取り、書き込み、編集したファイルごとにインデックス化し、それらのターンを一覧表示します。いつ、何が変わったか、何を依頼したか、回答でそのファイルについて何が述べられたかを確認できます。各検索結果から会話に戻れます。
- 事実はすべてツール呼び出しから取得し、フリーテキストやモデルから取得することはありません。
- セッションファイルは読み取るだけで、書き込みません。インデックスは
~/.thoughtdag(0700/0600)に保存され、thoughtdag purgeで削除できます。 Δ行は観測された変更、≈行は回答から読み取った候補となる説明であり、検証済みの理由ではありません。
thoughtdag index [--full] [--canvas <dir>]
thoughtdag why <path> [--include-read] [--all] [--limit N] [--json]
thoughtdag why --check <path> # one line, exit 0/1: is there history here?
thoughtdag find "<phrase>" [--in q|a|m] # where these exact words were asked, answered or attached
thoughtdag recall <session> <n>
thoughtdag status
thoughtdag purge [--cache]
thoughtdag mcp # the same questions as MCP tools (stdio, read-only)
thoughtdag setup [mcp | rules [--remove]]
エージェントに自分で質問させる
thoughtdag setup mcp は、このプロジェクトの .mcp.json に Claude Code 用のサーバーを、ユーザーレベルの ~/.codex/config.toml に Codex 用のサーバーを登録します。これにより、エージェントは why_check、why_file、find、recall_turn をツールとして使えるようになります。thoughtdag setup rules は、このプロジェクトの CLAUDE.md と AGENTS.md に、ファイルを編集する前に履歴を確認すること、コードがそのようになっている理由を説明する前に問い合わせることを示す2行を、マーク付きブロックとして追加します。--remove で削除できます。ルールの変更はプロジェクトごとに明示的に行われます。依頼しない限り、何も書き込まれません。
MCP クライアントとディレクトリ
このサーバーの MCP Registry 名は io.github.chenxiachan/thoughtdag です。ローカルの stdio サーバーに対応したクライアントでは、次のように起動できます。
{
"mcpServers": {
"thoughtdag": {
"command": "npx",
"args": ["-y", "[email protected]", "mcp"]
}
}
}
Node.js 20 以降と、サーバーを実行するマシン上の対応するセッションログが必要です。ファイルクエリで意図したワークスペースを使えるよう、該当するプロジェクトディレクトリで起動してください。クライアントによって設定形式は異なります。上記の例は mcpServers JSON を受け付けるクライアント向けです。
4つのツールは履歴の検索と再呼び出しを行います。キャンバスの編集、ソースセッションの変更、クライアントの会話の置き換えはできません。派生インデックスとキャッシュは ~/.thoughtdag に書き込まれます。取得したテキストは呼び出し元のエージェントに返され、そのエージェントのモデルコンテキストに含まれる場合があります。プライベートな履歴を使う前に、クライアントのプロバイダー設定を確認してください。
コンテナーとディレクトリの確認
Dockerfile は、公開済みの CLI バージョンを非 root の stdio サーバーとしてインストールします。リポジトリやセッションデータがイメージにコピーされることはありません。リポジトリのルートから実行します。
docker build -f cli/Dockerfile -t thoughtdag-mcp cli
docker run --rm -i --network none thoughtdag-mcp
空のコンテナーは MCP の初期化と tools/list に応答します。ローカルデータを明示的に指定するまでは、履歴クエリの結果はありません。ディレクトリの確認にモデルキー、プライベートセッション、ホスト型エンドポイントは必要ありません。
Glama は、リスティングの Admin → Dockerfile フォームから独自の Dockerfile を生成します。Node.js 22 と次のビルド手順を使ってください。
["npm install --global --ignore-scripts --no-audit --no-fund [email protected]"]
次の CMD 引数を使ってください(Glama が独自の mcp-proxy ラッパーを追加します)。
["env", "THOUGHTDAG_HOME=/tmp/thoughtdag-index", "THOUGHTDAG_SESSION_ROOTS=/data/sessions", "THOUGHTDAG_CANVAS_ROOTS=/data/canvases", "THOUGHTDAG_MEMORY_ROOTS=", "thoughtdag", "mcp"]
プレースホルダーの認証情報は空のままにして、ビルドしてリリースしてください。リポジトリのルートでは Web フロントエンドがビルドされますが、dist/thoughtdag.mjs は生成されません。この設定で固定する CLI のバージョンは、掲載予定のバージョンと一致させてください。Glama が生成するイメージは、上記の非 root イメージとは別のものです。
実際にローカルで使う場合は、選択した履歴ディレクトリのみを読み取り専用で /data/sessions にマウントし、必要に応じて /data/canvases もマウントしてください。派生インデックスは別途 /home/node/.thoughtdag に保存されます。セッションに記録されたアーティファクトの絶対パスをクエリしてください。コンテナーのデフォルトの作業ディレクトリは、ホストプロジェクトのパスではありません。プロジェクト相対のクエリには、上記のネイティブな npx 設定のほうが簡単です。クラウドでホストされたコピーからは、お使いのコンピューター上の履歴を参照できません。
オプションの Codex スキル
このリポジトリには、デスクトップアプリでセッションを開いたり、CLI で履歴をクエリしたりするための Codex スキルも含まれています。
npx skills add chenxiachan/thoughtdag --skill thoughtdag --agent codex
これにより、現在のプロジェクトにスキルがインストールされます。セッションを開くには ThoughtDAG デスクトップアプリかローカルブリッジが必要です。CLI クエリでは npm パッケージを使います。これは MCP の登録とは別のもので、キャンバスに書き込む MCP ツールは提供しません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。