12.4 KB · updated 2026-07-31 · md

engine-consolidation.ja.md

docs/i18n/engine-consolidation.ja.md

自動統合 — エンジンのスリープサイクル

<!-- translations:start -->

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

<!-- translations:end -->

脳は休息中に記憶を統合します。眠っている間、その日の生の経験は再編成され、圧縮され、統合されます——最近のうるさいものは永続的な構造に折り畳まれます。Tesseraeのエンジンも同じことをします。プロジェクトがアイドル状態になると、常にオンのデーモンは次の編集を待つことをやめ、静かな時間に既に知っていることを再編成します:圧縮して忘れ、誰も取得していない知識を未使用で褪色させ生き残ったもの間の新しい接続を発見します。

これまで、そのパスはあなたが要求した場合にのみ実行されていました——メモリ圧力下でtesserae refresh、または明示的なtesserae distill。エンジンはすべてのファイルとセッションイベントで再コンパイルしましたが、自動的には統合されませんでした。スリープサイクルがこのギャップを埋めます:tesserae engineを実行し続けると、休息中に統合が発生し、覚えるコマンドはありません。

階層化されたメモリシステンのすべてと同様に、これはオプトインしない限りノーオペレーションです——デーモンはアイドル状態で統合しますが、その下の蒸留はTESSERAE_AGENT_DISTILLが設定されている場合にのみ機能します。

いつ発生するか

専用統合スレッドは固定チェック間隔(デフォルト30秒)で目覚め、単調アクティビティクロックに対して2つの独立したトリガーを評価します:

  • アイドルトリガー。 プロジェクトが少なくとも--consolidate-idle秒間トリガーイベントもパイプラインも実行されていません(デフォルト300秒= 5分)。これは「休止中の統合」です——エンジンが作業を停止したことに気づき、休止を使用しました。前回の統合以降のフロアはスラッシングを防ぐため、ちょうど静かになった忙しいプロジェクトは敏感なトリガーでは統合されません。
  • 上限トリガー。 前回の統合以降アクティビティに関係なく少なくとも--consolidate-every秒が経過しました(デフォルト21600秒= 6時間)。これにより、継続的に忙しいプロジェクトでも、静かな瞬間がないのではなく定期的に統合されることが保証されます。これを0に設定すると上限が無効になります——その場合、アイドルが唯一のトリガーです。

すべての編集、セッションターン、または再コンパイルはアクティビティクロックを増やすため、アイドルウィンドウは本当の休息中にのみ経過します。両方のクロックは単調で、ウォールクロックではなく、アーティファクトに永続化されません——統合タイミングはバイト決定論的グラフを乱すことはできません。

実行される内容 — 3つの操作

各発火は.tesserae/graph.jsonから編集されたグラフをロードし(ファイルが存在しない場合はパスをスキップ)、順序で3つの統合操作を実行します。それらは一緒に、休んでいる脳がすることを反映しています:最近のうるさいものを圧縮し、再度訪問されないものを褪色させ、生き残ったもの間の新しい関連付けを配線します。

1. 圧縮/忘却 — 蒸留

tesserae refreshが各エージェントのメモリを再編成、圧縮、安全に忘れるために使用するのと同じmaybe_distill_on_refreshエントリポイントを呼び出します。その関数は内部的に三重ゲートされ、エージェントごとの失敗で発生することはありません:

  1. オプトインゲート ——TESSERAE_AGENT_DISTILL=1(またはconfig.json{"agent_distill": {"enabled": true}})。デフォルトではオフ;設定するまで、周期全体は安全なノーオペレーションです。
  2. エージェントごとのウォーターマーク ——前回の蒸留以来結論が変わっていないエージェントはスキップされます。
  3. エージェントごとのメモリ圧力 ——蒸留されていない結論がコンテキスト読み取りの半分に収まらなくなったエージェントのみが統合されます(MemGPTスタイルトリガー)。

したがって、統合がスケジュール上で発火する場合でも、オプトインして実際に十分な新しいメモリを蓄積したエージェントに対してのみ機能します。蒸留が生成するものについては、階層化されたエージェントメモリを参照してください。

2. 不使用による忘却 — 年齢だけではなく検索上のLRU減衰

蒸留の減衰は、もはや作成年齢だけによって駆動されません。すべての読み取り表面は、それが返す結果に対するアクセスを記録します——last_accessed_ataccess_count——node_memoryサイドカーに記録し、graph.jsonには記録されません。蒸留パスが減衰を計算する前に、そのライブアクセス状態を作業ビューにマージするため、作成以来取得されていない結論は減衰して吸収または降格の対象となり、最近読み取られた結論は年齢に関係なく新鮮に保たれます。これは検索最近性、メモリに適用されたLRU(最近最も使用されない)直感です:継続的に取得する知識は保持されます;誰も要求しない知識は最初に褪色します。空のサイドカーは古い年齢のみの動作を正確に再現するため、完全に後方互換です。

3. 関連付け — 新しい接続を発見

最終操作は、生き残ったもの間の*新しい*関係を探します。蒸留されたメモを埋め込み、意味が近いペアをリンクします——埋め込みゲート、実際の埋め込みバックエンドが構成されている場合にのみ実行されます(ハッシュスタブはスキップされ、ノイズリンクは生成されません)。発見はプロジェクト内およびエージェント間で実行され、発見する接続はfederation_semanticマーカーを持つshares_concept_withエッジとして作成されます。

重要なことに、これらの発見されたエッジは、.tesseraeの下のサイドカーオーバーレイに書き込まれ、絶対にgraph.jsonには書き込まれません。オーバーレイはサイクル間で蓄積されます——各関連付けパスは、以前のパスが発見したものに対して重複排除および拡張します。読み取り時(クエリ、PPR拡張、フェデレーションビュー)に、オーバーレイはメモリ内のみでグラフにマージされます。エージェントビューオーバーレイと同じように——バイト決定論的graph.jsonは絶対に触れられません。操作全体がラップされ、デーモンループに発生することはありません。

安全性と決定性

  • コンパイルゲートの下で実行します。 統合は再コンパイルと同じロックを取得するため、コンパイルと直列化され、決して重複しません。保留中のコンパイルは進行中の統合を待ち、その逆も然り——グラフは書き込み中に読み込まれることはありません。
  • デーモンループに発生することはありません。 パス全体がラップされています;エラーはログに記録され、スレッドはループを続けます。失敗した統合はエンジンを停止させることはありません。
  • ゲートがオフの場合、ノーオペレーション。 TESSERAE_AGENT_DISTILLが未設定の場合、パスは高価なものをロードせず、すぐに返すため、スリープサイクルを開いたままにしておくことは本質的にコストがかかりません。
  • 決定論的アーティファクト、変更なし。 蒸留されたアーティファクトは入力が与えられれば決定論的のままです;スリープサイクルは蒸留がいつ実行されるかのみを変更し、を生成するかは決して変更しません。アイドル時間はgraph.jsonまたは蒸留層に漏洩することはありません。
  • graph.jsonはバイト冪等を保持します。 新しい操作は実行されません。アクセス状態はnode_memoryサイドカーに存在し、発見された接続は累積オーバーレイにあります——両方とも.tesseraeの下、両方ともメモリ内でのみ読み取り時にマージされます。権威あるグラフバイトは検索履歴または発見されたリンクの影響を受けません。
  • クリーンシャットダウン。 統合スレッドはデーモンの停止イベントを観察し、Ctrl-C /シャットダウン時に迅速に終了します。これはロング実行モード機能のみです:tesserae engine ... --onceは決してそれを開始しません。

CLIフラグ

フラグデフォルト効果
--consolidate / --no-consolidateonスリープサイクルを完全に有効または無効にします。デフォルトで有効(蒸留ゲートが設定されていない場合、ノーオペレーション)。
--consolidate-idle SECONDS300休止ウィンドウ:この多くの秒のアクティビティなし後に統合します。
--consolidate-every SECONDS21600上限:アクティビティに関係なく、最低限この頻度で統合します。0は上限を無効にします。
--consolidate-check SECONDS30統合スレッドがトリガーを再評価するために目覚める頻度。

フリートの動作(--all)

tesserae engine --allは1つのプロセスですべての登録されたプロジェクトを最新に保ちます。各プロジェクトユニットは同じノブを持つ独自の統合スレッドを取得し、すべてのユニットは1つのフリート全体のコンパイルゲートを共有します——したがって、1つのプロジェクトの統合はフリート全体のコンパイルとシリアル化され、どれとも重複しません。

完成した例

蒸留をオンにしてから、より高速なスリープサイクルでエンジンを実行します——60秒のアイドル後に統合し、関係なく最低30分ごと:

export TESSERAE_AGENT_DISTILL=1
tesserae engine \
  --consolidate-idle 60 \
  --consolidate-every 1800 \
  --consolidate-check 15

いつものようにエディタとエージェントで作業してください;エンジンが観察し、デバウンスし、各変更を再コンパイルします。1分間停止するとアイドルトリガーが発火します:統合スレッドがコンパイルゲートを取得し、メモリ圧力下のエージェントを蒸留します——再編成、圧縮、安全に忘れて——その後、スリープに戻ります。30分のマークを過ぎて一度も停止せずに作業を続けると、上限も発火するため、容赦ないプロジェクトはまだ統合されます。

エンジンは実行を続けるが、統合を手動tesserae distill実行に任せるには、--no-consolidateを渡します。アイドル時に実行するが、固定スケジュールでは決して実行しないようにするには、--consolidate-every 0を渡します。