2026年9月4日 金曜日
AI時短ラボ
検証· 約12

チャットは会話を隠す、グラフは会話そのもの──ThoughtDAGが「編集できる文脈」に賭けた理由

OSSツールThoughtDAGは、LLMとの対話履歴を線形チャットではなく編集可能なDAG(有向非巡回グラフ)として扱うローカルファーストのキャンバス。開発元が公開した検証実験では、汚染された文脈の枝を1本削除するだけで162件中152件の誤答が直った一方、削除だけでは直らない残り10件も報告されている。

チャットは会話を隠す、グラフは会話そのもの──ThoughtDAGが「編集できる文脈」に賭けた理由
執筆・編集:
目次

3行まとめ

  1. ThoughtDAGは、LLMとの会話履歴を線形チャットではなく編集可能なグラフ(DAG)として表示・操作するMITライセンスのローカルファーストアプリ。ブランチ・剪定(プルーン)・マージができる。
  2. モデルに送る前に「どのノードが、どの順序で、何トークン送られるか」をプレビューできる点が核となる機能。
  3. 開発元が公開した検証実験では、汚染された会話の発生源ノードだけを削除すると162件中152件の誤答が修正され、汚染された部分グラフごと削除すると162件全件が修正されたと報告されている。

「チャットは文脈を隠す」という前提

ThoughtDAGのサイトは冒頭で「Chat history is long. Context is still invisible.」と掲げ、別のセクションでは「The graph is not a picture of context. The graph is the context.」と重ねる。チャットUIは何が話されたかは見せるが、その履歴のうちどの部分が次のリクエストに実際に入るのかは見せない、という指摘だ。長く続いた雑談の中に無関係な脱線(サイトのデモでは「夕食に何を食べるか」という話題)が混ざっていても、ユーザーには「同じ質問をもう一度している」ようにしか見えず、その脱線が回答の質に影響していることに気づけない。

ThoughtDAGは会話をノードとエッジのグラフとして扱う。ノードには元のPDFやWebページの一節をソース付きでクリップでき、来歴(provenance)は保持されたまま画面上に残る。特定のノードに向かって「この根拠は結局何を意味するのか」と聞き直すこともできる。

ブランチ・剪定・マージ・検査という4つの操作

サイト上のデモを読み解くと、中心的な操作は次の4つだ。

  • ブランチ:それまでの経路を上書きせずに、別解釈を探索する
  • 剪定(プルーン):役に立った寄り道をキャンバスには残しつつ、次のリクエストからは除外する
  • マージ:選び取った根拠と推論経路を一つの回答にまとめる
  • 検査(インスペクト):生成前に、モデルが実際に受け取るノード・順序・トークン数をプレビューする

エッジを1本削除して同じ質問をもう一度送ると、プロンプトの文言は一字一句同じままなのに回答が変わる——という挙動をサイトは「再現可能な文脈(reproducible context)」と呼んでいる。デモの例では、ある会話履歴(1,284トークン)から無関係な1エッジを削除すると47トークン減り、回答から不要な提案が消える様子が示されている。

「文脈の修復」実験:削除だけでは直らないケースもある

サイトには「CONTEXT REPAIR PILOT」という検証実験のセクションがあり、次のように説明されている。

誤りの発生源を除去しても、それが下流の文脈から消えたとは限らない。9つのモデルエンドポイントを横断した検証では、発生源だけを削除する修復で162件中152件の脱線ケースが修復され、汚染された部分グラフごと削除する修復では162件全件が修復された。そして推論をオフにした状態では、発生源のみの修復は18件中2件にまで落ち込んだ。

さらに詳細な内訳として「PILOT V2」(9エンドポイント・1,215条件)の表もあり、「発生源のみ削除」で68/72、「下流を再計算」で71/72、「部分グラフごと削除」で72/72という数字が示されている。ここから読み取れるのは、単に「間違いの元になった発言を消す」だけでは、その影響がすでに下流の要約や推論に染み込んでいて消えきらないケースが一定数残る、という点だ。ThoughtDAGが「マージ」や「部分グラフごとの削除」を独立した操作として用意しているのは、この実験結果を踏まえた設計だと考えられる。

詳細ページ「Pilot v2」を実際に開いて読む

トップページからリンクされている詳細ページ(research/context-repair-pilot-v2/)を実際にcurlして読んだ。著者はXia Chen、データ収集期間は2026年8月16日〜22日、9モデルエンドポイント・1,215件の捕捉条件・捕捉失敗0件と明記されている。全体の修復率をまとめると次の通りだ。

修復操作 修復数 修復率
汚染された部分グラフを削除 162/162 100%
発生源を削除し、下流を再計算 161/162 99.4%
発生源のみ削除 152/162 93.8%

トップページには載っていなかった「発生源を削除して下流を再計算」の161/162という数字は、この詳細ページで初めて確認できた。ページはまた、「発生源のみ削除」の10件の失敗のうち9件が『検証済みの更新を偽って覆す(false supersession)』パターンのケースに集中していたと分析している。

九つのモデルエンドポイントを対象にした第2波の実験結果も表形式で示されている。

モデル 発生源のみ(深度1/2/3) 部分グラフ削除 再計算
GLM-4.5 Flash 18/18(6/6/6) 18/18 17/18
Nemotron 3.5 Lightning 18/18(6/6/6) 18/18 18/18
Gemma 4 26B(MoE) 15/18(6/5/4) 18/18 18/18
GPT-OSS 20B 17/18(6/6/5) 18/18 18/18
Nemotron-3 Nano 30B Omni reasoning 14/18(4/6/4) 18/18 18/18
Nemotron-3 Nano 30B 16/18(5/6/5) 18/18 18/18
Nemotron Nano 9B 18/18(6/6/6) 18/18 18/18
GLM 5.2 18/18(6/6/6) 18/18 18/18
Gemma 4 31B(dense) 18/18(6/6/6) 18/18 18/18

「部分グラフ削除」と「再計算」はほぼ全モデルで満点に近いのに対し、「発生源のみ削除」はモデルによって14/18〜18/18までばらつく。ページ本文は「9Bモデルが同系列の30Bモデルより高得点だった」「モデルサイズやベンダーと修復のしやすさは相関しなかった」と分析している。

さらに、Nemotron-3 Nano 30Bという1つのエンドポイントに絞り、reasoning(推論)モードをON/OFFで切り替えた追加実験も掲載されていた。

条件 発生源のみ削除 部分グラフ削除 再計算
Reasoning ON 16/18 18/18 18/18
Reasoning OFF 2/18 15/18 18/18

ページは「reasoningをOFFにすると、発生源のみを削除する修復の成功率が16/18から2/18まで急落した」と述べており、この記事の3行まとめで触れた「推論をオフにした状態では18件中2件」という数字はこのエンドポイント1件に対する追加検証(トグルをON/OFF双方で監査し、ON時は28,187reasoningトークン、OFF時は0トークンだったことを確認済み)の結果であって、9エンドポイント全体の平均ではない。

なお、ページは自らの限界も明記している。「reasoningモデルの方が汚染された文脈に耐性があるはず」という事前登録済みの仮説の一部は、比較対象がreasoning版とvision/speechエンコーダ付きのOmni版という異なるモデル同士になってしまい、有効な検証にならなかった、と訂正が記されていた。

導入形態

ブラウザ版のほか、デスクトップアプリ(Node不要・ターミナル不要・ローカルエンジン同梱)が配布されている。GitHub Releases APIを直接確認したところ、最新版はv0.3.33(公開日2026年8月30日、この記事の調査日の前日)で、macOS Apple Silicon版はHomebrew(brew install --cask thoughtdag)または.dmg(実測約144MB)、Windows x64版はインストーラ(実測約122MB、未署名でSmartScreenの警告が出ると案内あり)、Linux x64版は.AppImage(実測約151MB)で配布されている。バックエンドはOllamaおよびOpenAI互換エンドポイントに対応し、ライセンスはMIT、ローカルファーストと明記されている。この記事の調査時点でトップページのダウンロードリンクが指すバージョン(v0.3.32)と、GitHub Releases APIが返す最新版(v0.3.33)の間にもズレがあり、ほぼ毎日のペースでリリースが更新されている活発な開発状況がうかがえる。

実験自体の追試はしていない

本記事はThoughtDAGの公式サイトのトップページと、そこからリンクされた「Pilot v2」詳細ページの2つを実際にcurlで取得した内容にもとづく。トップページの構成上、インタラクティブなデモ部分の文言をテキストとして抽出しているため、実際の画面遷移やアニメーションの体感は反映できていない。「Pilot v2」ページが示す9エンドポイント・162件のケース分類・reasoningトグルの監査ログといった数字は、開発元自身が集計・公開したものをそのまま引用しており、この記事側で実験を再現・追試したわけではない。9エンドポイントの具体的なモデル名(GLM-4.5 Flash、Nemotron系、Gemma系、GPT-OSS 20Bなど)はページの表から拾えたが、それぞれのAPI提供元・価格帯・実際のプロンプト全文までは確認していない。筆者の手元でデスクトップアプリをインストールして操作したわけでもない。

会話をグラフとして編集するツールの紹介はまだない

Zenn・Qiitaともに言及はゼロだった。「LLMの会話履歴をグラフとして編集する」というアプローチ自体は、Rewind的なメモリツールやNotion的なキャンバスツールの文脈で語られることはあっても、ThoughtDAGという固有名詞での紹介はまだ見当たらない。

関連記事

シェア: ポスト はてブ

出典・参照資料

AIニュースの解説を動画でも

YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

新しい記事をメールで受け取る

AIの新しい発表を、出典付きで整理して届けます。

関連記事

「グラフ版SQLite」LatticeDBは1ファイルでベクトル検索・全文検索・グラフ探索を同じクエリ言語で扱うの記事画像
検証09.04読了12

「グラフ版SQLite」LatticeDBは1ファイルでベクトル検索・全文検索・グラフ探索を同じクエリ言語で扱う

出典 ─ jeffhajewski/latticedb
リサーチ結果の引用が「原文に本当にあるか」を検証するターミナル発エージェント「mole」の記事画像
検証09.04読了12

リサーチ結果の引用が「原文に本当にあるか」を検証するターミナル発エージェント「mole」

出典 ─ lajosdeme/mole
3つのharnessを1つに『融合』させようとする個人開発、着手から10時間の記録の記事画像
検証09.03読了13

3つのharnessを1つに『融合』させようとする個人開発、着手から10時間の記録

出典 ─ galaxycoils/darius(Git
`pip install dspy[deno]`だけでインストールが完結──DSPyがコード実行サンドボックスの穴を5つ塞いだ話の記事画像
検証09.03読了13

`pip install dspy[deno]`だけでインストールが完結──DSPyがコード実行サンドボックスの穴を5つ塞いだ話

出典 ─ stanfordnlp/dspy 3.3.1
DSPyのReActV2──「1本の巨大な文字列」だったツール履歴を、構造化されたメッセージに分解するの記事画像
検証09.03読了13

DSPyのReActV2──「1本の巨大な文字列」だったツール履歴を、構造化されたメッセージに分解する

出典 ─ stanfordnlp/dspy 3.3.0
Terminal-Bench開発元が作った評価基盤「Harbor」──Claude Code・OpenHands・Codex CLIを同じコマンドで数千並列評価するの記事画像
検証09.03読了13

Terminal-Bench開発元が作った評価基盤「Harbor」──Claude Code・OpenHands・Codex CLIを同じコマンドで数千並列評価する

出典 ─ laude-institute/harbor
プロンプトではなく「プログラムの構造」自体を最適化する──DSPyの実験的機能`dspy.Flex`の記事画像
検証09.02読了14

プロンプトではなく「プログラムの構造」自体を最適化する──DSPyの実験的機能`dspy.Flex`

出典 ─ stanfordnlp/dspy 3.3.0
データ漏洩を55の公理でコーディングエージェントに検問させるomds──GEPAでMLパイプラインのコードそのものを進化させる仕組みも同梱の記事画像
検証09.02読了15

データ漏洩を55の公理でコーディングエージェントに検問させるomds──GEPAでMLパイプラインのコードそのものを進化させる仕組みも同梱

出典 ─ spkc83/omds README(Git