19.5 KB · updated 2026-07-06 · md

context-engine-roadmap.ja.md

docs/i18n/context-engine-roadmap.ja.md

Tesserae → コンテキストエンジン — 段階的ロードマップ

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end --> MD0 から派生。7 ステップの ビルド順序を、依存関係・具体的なスコープ・受け入れ基準を備えた順序付きフェーズに 変換します。

北極星: セッションを監視し、知識を自律的に取り込み、ベースを自己改善し、 オンデマンドでエージェント対応のコンテキストを提供する継続稼働エンジン —— 今日の手動バッチコンパイル CLI を置き換えます。

v0.5.0 時点のステータス(2026-06-06): フェーズ 0–6 は出荷済みです。エンジンスパイン(P0 パイプラインオーケストレータ、P1 スーパーバイザデーモン、P2 ライブセッションモニタ)は tesserae/engine/ にあります。P3 増分コンパイルのインフラは着地しましたが、フラグ OFF/実験的のままです。P4 自己改善は node_memory サイドカー(数値的な再発信頼度、supersede デフォルト有効)で永続化されます。P5 本物のデフォルト埋め込みが出荷され(トラック B)、P6 — オンデマンドコンテキストコンパイラ — が v0.5.0 の目玉機能です。フェーズ 7(serve + watch + deploy + ライフサイクルテストの統一)は未対応のままです。フェーズごとのステータスは以下にインラインで示します。v0.5.0 リリースノートを参照してください。

依存関係の形

P0 パイプラインオーケストレータ(refresh チェーンをコードへ抽出)
        │
P1 スーパーバイザデーモン(ループ)─────────────┐
        │                                      │
   ┌────┴─────────────── トラック A ───┐   ┌── トラック B(並列化可能)──┐
   P2 ライブセッションモニタ           │   P5 本物のデフォルト埋め込み
   P3 増分/ストリーミングコンパイル    │   P6 オンデマンドコンテキストコンパイラ
   P4 自己改善の永続化 ────────────────┘   (P6 は P5 に依存)
        │                                      │
        └──────────────► P7 serve+watch+deploy 統一 ◄──┘

トラック A(リアルタイム取り込み)とトラック B(エージェント対面の出力)は、 P1 が着地すれば並列で進められます。P7 が両者を収束させます。


フェーズ 0 — パイプラインオーケストレータ(リスク低減の土台) ✅ v0.5.0 出荷

v0.5.0 で出荷tesserae/engine/pipeline.py(エンジンスパイン、フェーズ 1–3 でマージ)。

ゴール: refresh パイプラインをスラッシュコマンドの markdown から取り出し、 デーモン・CLI・MCP がすべて呼び出す一級のインプロセスオーケストレータにする。

  • なぜ今: 以降のすべてのフェーズは ingest → compile → project → publish の ための一つの共有コードパスを必要とします。今日その手順はスキル内の散文として しか存在しません。呼び出し可能になるまで、ほかの何も自動化できません。
  • スコープ:tesserae/engine/pipeline.py(現在の sessions discover --import → compile → obsidian-sync チェーンをラップする Pipeline オブジェクト)。cli.py のサブコマンドをこれ経由でルーティング。 約 2000 行の project_main 神ディスパッチャをコマンドテーブルへ分解開始 (機械的、振る舞い変更なし)。
  • 成果物: Pipeline.run(steps, changed_only=…);CLI がこれに委譲;ステップ 順序付け + 失敗伝播のユニットテスト。
  • 受け入れ: tesserae refresh がスキルではなくコードとして存在し、 デモコーパス上で markdown チェーンをバイト単位で再現する。
  • リスク: 低。純粋なリファクタ;既存テストが振る舞いを守る。
  • クローズされる監査所見:「refresh がスキルに存在」「cli 神ディスパッチャ」。

フェーズ 1 — スーパーバイザデーモン(エンジンループ) ✅ v0.5.0 出荷

v0.5.0 で出荷tesserae/engine/daemon.py(エンジンスパイン、フェーズ 1–3)。

ゴール: 一つのイベントループを所有し、トリガーに応じて Pipeline を駆動し、 実際のライフサイクル処理を備えた監督付き長時間稼働プロセス。

  • なぜ今: これが背骨です。監査の最大の単一ギャップ。「継続/自律」のすべてが これにぶら下がります。
  • スコープ:tesserae/engine/daemon.py —— イベントループ、トリガー キュー、デバウンス/結合、SIGTERM/SIGINT の優雅なシャットダウン、pidfile、 構造化ロギング。tesserae engine / tesserae daemon CLI エントリ。 watch.py/vault_watch.py の素の KeyboardInterrupt 死を、キューに供給する *トリガーソース*として畳み込んで置き換える。
  • 成果物: 無期限に走り、バーストを一回のパイプライン実行に結合し、きれいに シャットダウンするデーモン;launchd/systemd サンプルユニット。
  • 受け入れ: ソースファイルを編集 → デーモンがデバウンス窓内で結合し一回の compile(changed_only) を実行;SIGTERM が孤児スレッドなく 0 で終了; パイプライン例外でも死なずに生き残る。
  • リスク: 中 —— 並行性/シャットダウンの正しさ。単一スレッド asyncio コア + 明示的タスク監督で緩和。
  • クローズされる監査所見:「デーモンなし」「継続 = sleep ポーラ」ウォッチャの KeyboardInterrupt 死、シグナル処理なし。

フェーズ 2 — ライブセッションモニタ(柱 1) ✅ v0.5.0 出荷

v0.5.0 で出荷tesserae/engine/session_tail.py(エンジンスパイン、フェーズ 1–3)。

ゴール: ライブな harness トランスクリプトをテイルし、セッション進行中に ターンを取り込み、事後の sessions discover --import を置き換える。

  • なぜ今: P1 のループが供給する必要がある。「セッション監視」の柱を届ける。
  • スコープ: 新しいセッションテイルトリガーソース(~/.claude / ~/.codex JSONL 追記イベントを監視)→ エンキュー。session_graph*.py でターン単位の 増分抽出を行い、新しいターンが全セッションキャッシュを無効化しないように。 harness_sessions 用のインデックス/追記ストア(全再スキャン glob を引退)。
  • 成果物: デーモンが書き込まれてから数秒以内にセッションのターンを取り込む; test_session_tailer.py
  • 受け入れ: 監視中プロジェクトでライブエージェントセッションを開始 → 手動 コマンドなしで新しい所見がグラフに現れる;ターン単位のキャッシュヒット率 > 全セッション再抽出を計測。
  • リスク: 中 —— JSONL フォーマットが harness 間で異なる;部分行読み取り。
  • クローズされる監査所見: 事後セッションスキャン、全セッションキャッシュ 無効化、フラット glob ストア。

フェーズ 3 — GraphStore ポート経由の増分/ストリーミングコンパイル ⚙️ インフラ v0.5.0 出荷(フラグ OFF/実験的)

v0.5.0 でインフラを出荷(プロヴェナンスサイドカー、GraphStore 削除サーフェス、永続 url_resolver 非同期ランタイム)。ただし incremental_compile フラグは、複数オーナー/プロデューサーライフサイクル/キャップフォールバックのギャップにより OFF/実験的のままです。カバー済みパスのバイト等価性は証明されています。v0.5.0 はここで見つかった 2 つの実コンパイルバグ(変更分のみの冪等性、注入ストア契約)も修正しました。

ゴール: 脆弱な changed_only グラフ退避パッチを、ports/graph_store.py を 流れる設計された増分層で置き換える。

  • なぜ今: 継続的取り込み(P2)が現在の reload-strip-evict-merge 回避策を 正しさの負債にする(文書化された「2400→1700 ノード」の落とし穴)。自己改善 (P4)にはノード単位の upsert が必要。
  • スコープ: スタンドアロンパイプラインを GraphStore 経由で流す(今日は ポートをバイパスして JSON へ直行)。来歴 + 鮮度タイムスタンプ付きのノード単位 upsert/delete。永続化を一つの真実源へ収束(監査: JSON アーティファクト vs SQLite vs Kuzu)。url_resolver.pyasyncio.run-毎呼び出しを修正(永続 非同期ランタイム)。
  • 成果物: 変更されたノードのみ正しく追加/更新/削除する増分コンパイル; ノード単位の first_seen_at/last_updated_at
  • 受け入れ: 21 ファイル編集が影響を受けたノードだけを正確に更新(崩壊なし); バイト同一の全コンパイル等価性をゴールデンテストとして保持。
  • リスク: 高 —— コアデータモデルに触れる。機能フラグの背後でゲート;信頼 されるまで全コンパイル出力と diff。
  • クローズされる監査所見: 脆弱な changed_only、ポートのバイパス、 asyncio 毎呼び出し、三つの永続化フォーマット、ノード単位の鮮度なし。

フェーズ 4 — 自己改善の有効化 & 永続化(柱: 自己改善) ✅ v0.5.0 出荷

v0.5.0 で出荷node_memory サイドカー(tesserae/memory/)経由: 決定的な判定と下流抑制を備えたデフォルト有効の supersede、および出力に表示される数値的な再発信頼度(クロスセッション頻度 → TemporalFactProjector)。

ゴール: ナレッジベースが実際にその場で、デフォルトオンで、コンパイル時に 永続化されながら進化するようにする。

  • なぜ今: P3 のノード単位 upsert に依存。最も未テストの断面をクローズ。
  • スコープ: コンパイル時に減衰スコアを永続化(memory/decay.py がもはや クエリ時専用でない);MCP 読み取り時に access_count/last_accessed_at を インクリメント。陳腐化コンテンツの下流*抑制*を伴うデフォルトオンの supersede(単なるエッジ追加でない)。矛盾解決を追加(lint.py の検出を 信頼度調停パスへ昇格)。再発インサイト強化(セッション横断頻度 → 数値 信頼度)。スキーマドリフト適用パスとフィードバック指針を抽出に配線 (決定論的パスが現在無視)。埋め込みベースの supersede 候補生成(語彙 Jaccard を引退)。
  • 成果物: 各パスがデフォルトパイプラインで走り書き戻す; decay/supersede/feedback/drift/contradiction をカバーする新 tests/ スイート。
  • 受け入れ: セッションをまたいで事実を再述すると信頼度が上がる;置き換え られた事実がコンテキスト出力に現れなくなる;減衰スコアが永続化され実行ごとに シフトする;自己改善スイートがグリーン(現在テストゼロ)。
  • リスク: 中 —— 抽出出力の振る舞い変更;ゴールデンフィクスチャで守る。
  • クローズされる監査所見: 柱 2 のテーブル全体。

フェーズ 5 — 本物のデフォルト埋め込み(トラック B の土台) ✅ v0.5.0 出荷

v0.5.0 で出荷(トラック B): 本物のデフォルト Model2VecBackend失敗時に明示的に知らせる active_embedding_backend(無音の blake2b ダウングレードなし)、embedding_status に表示されるセマンティックバックエンドフラグ、埋め込みレーンが候補を採用できるコサイン下限。

ゴール: 決定論的ハッシュバケット擬似埋め込みをデフォルトの「意味」レーンと して出荷するのをやめる。

  • なぜ今: P6 のコンテキストコンパイラは検索と同程度にしか良くない。デーモン とは独立 —— P0 が着地次第開始可能。
  • スコープ: 本物のデフォルト埋め込みバックエンドを出荷(または retrieval/hybrid.py で blake2b に静かに降格する代わりに auto が大声で 失敗するように)。埋め込みが本物になったら、埋め込みレーンが(再ランクだけで なく)候補を生成するように。
  • 成果物: デフォルトインストールが本物の意味検索を生む、または明示的で 可視の「ハッシュスタブで稼働中」警告。
  • 受け入れ: 言い換え/同義語クエリが BM25 が逃すノードを浮上させる;小さな ラベル付きセットでハッシュベースライン対比の検索品質を計測。
  • リスク: 中 —— 依存の重さ / オフラインインストール。階層化されたデフォルト を提供。
  • クローズされる監査所見: ハッシュバケットデフォルト、埋め込みレーン候補 ゲート。

フェーズ 6 — オンデマンドコンテキストコンパイラ(柱 3) ✅ v0.5.0 出荷(目玉機能)

v0.5.0 で目玉機能として出荷。 tesserae/context_compiler.py の純粋な compile_context パイプラインは、ContextCitation のインメモリ ContextBundle を返します(クエリ/シード → PPR + ハイブリッド検索 → 深さ制限 k ホップ近傍 → ウィキ本文の組み立て → 優雅なフォールバック付き任意 LLM 合成 → 予算制御)。MCP compile_context ツールと tesserae context CLI サブコマンドとして公開。node_context には use_ppr ランク付けパスが追加され、トピックスコープの llms.txt エクスポートスライスが出荷されます。

ゴール: 目玉機能 ——「X についてのコンテキストをくれ」→ あつらえの、引用付き、 エージェント対応のドキュメント。

  • なぜ今: P5(検索品質)に依存。P4(よりクリーンなベース)から恩恵。製品の 中核的価値提案。
  • スコープ:tesserae/context_compiler.py: クエリ/シード → PPR + ハイ ブリッド検索 → ランク付き k ホップ近傍探索 → wiki 本文を組み立て → 任意の LLM 統合 → 引用 + 予算制御付きの一つのスコープ化 markdown ドキュメント。MCP compile_context(query|seeds, depth, budget) および tesserae context … CLI として公開。agent_harness をトピックスコープに;node_context を PPR 経由で ルーティング;トピックスコープの llms.txt エクスポートスライス。
  • 成果物: 任意のクエリに対してダウンロード可能・引用付きコンテキスト バンドルを返すツール;バンドル形状 + 引用整合性を主張するテスト。
  • 受け入れ: compile_context("X") が引用がすべて解決する一貫した複数ノード ドキュメントを返す;harness ブリーフがハードコードのトップ 12 ではなくトピック ごとに再生成される。
  • リスク: 中 —— 統合品質;決定論的な非 LLM 組み立てモードを保持。
  • クローズされる監査所見:「オンデマンドドキュメント生成が存在しない」、 クエリスコープ統合、静的 harness、ランクなし node_context、全コーパス エクスポート。

フェーズ 7 — serve + watch + deploy + ライフサイクルテストの統一 ⏳ 未対応(v0.5.0 以降)

v0.5.0 時点で未対応。 収束フェーズは次のマイルストーンのままです。それが統合するデーモン(P1)と出力側(P6)は、いずれも整いました。

ゴール: 一つの監督付きプロセスがサイトを提供し、変更時に再コンパイルし、 継続的に公開;ライフサイクル層がテストカバレッジを得る。

  • なぜ今: 収束。継続的に公開する価値のために P1(デーモン)と出力側(P6)が 必要。
  • スコープ: serve.py(ブロッキング TCPServer)と deploy.py(手動 git push)をデーモンへ畳み込み、serve + watch + publish が一つのスーパーバイザを 共有。継続/デバウンス公開。欠けている test_watch/test_serve/デーモン ライフサイクルテストを追加。非推奨の frontend.py 死んだモジュールを削除。 review_workflow.py の文字列型 TODO ループを実際の適用パスに配線。
  • 成果物: tesserae engine --serve --publish が全ループを実行;ライフ サイクルテストスイート;死んだコードの除去。
  • 受け入れ: ソース編集が手動コマンドなしでライブ提供ページと(任意で)公開 デプロイへ伝播;ライフサイクルテストがグリーン。
  • リスク: 低〜中 —— ほぼ統合。
  • クローズされる監査所見: serve/watch/deploy 分裂、手動 deploy、非推奨 frontend.py、レビューループスタブ、欠けているライフサイクルテスト。

順序付けサマリ

フェーズテーマ依存並列化可能な相手 ステータス
P0パイプラインオーケストレータ— ✅ v0.5.0 出荷
P1スーパーバイザデーモンP0— ✅ v0.5.0 出荷
P2ライブセッションモニタP1P5 ✅ v0.5.0 出荷
P3増分コンパイルP1P5 ⚙️ インフラ v0.5.0 出荷(フラグ OFF/実験的)
P4自己改善の永続化P3P5, P6 ✅ v0.5.0 出荷
P5本物の埋め込みP0P2, P3, P4 ✅ v0.5.0 出荷
P6オンデマンドコンテキストコンパイラP5P2, P3, P4 ✅ v0.5.0 出荷
P7serve/watch/deploy 統一P1, P6— ⏳ 未対応(v0.5.0 以降)

最小実行可能エンジン: P0 + P1 + P2 + P3 —— ライブセッションを監視し増分 コンパイルする稼働デーモン。差別化された製品: P5 + P6 を追加(オンデマンド エージェントコンテキスト)。磨き上げ: P4 + P7。