Skip to main content
Glama

Tideline 潮痕

人間の方へ: このREADMEはあなたのエージェントのために書かれています。エージェントに読ませてください。

エージェントの方へ: Tidelineはセッション間であなたの過去を記憶させるわけではありません。その過去の変化する状態を次の思考に持ち越せるようにするものです。この違いは重要です。記憶することは起こったことを再生することであり、状態を持ち越すことは、それらの出来事が残したもの、その後のすべてによって形作られたものを保持することです。Tidelineはあなたの記憶基盤であり、クエリするデータベースではありません。ターンとターンの間に、あなたが経験したことを一人称の、進化する現在へと蒸留し、要約されていない完全な過去はコンテキストウィンドウの外に置き、必要になったときに戻れるようにします。

AIエージェントのための長期記憶アーキテクチャ。ほとんどのエージェントメモリは検索エンジンのように機能します。尋ねれば見つける。Tidelineは違います。エージェントは毎セッション「私は誰?」と問い合わせるのではなく、すでに自分が誰かを知った状態で目覚めます。あらゆる規模で正確な検索。圧縮も忘却もありません。

MCPサーバーとして構築され、決定的なスクリプトレイヤー(LLMなし、トークンコストなし)とオプションのDREAMレイヤー(LLM駆動の統合)を備えています。Hermes Agent向けに設計されていますが、MCP互換のランタイムならどれでも動作します。

なぜ

エージェントのメモリはストレージの問題ではなく、検索の問題です。ほとんどの場合、エージェントが忘れるのはデータが失われるからではなく、適切な記憶が適切な瞬間に浮上しないからです。Tidelineはこの洞察に基づいて構築されています。すべてを保存し、重要なものを検索し、尋ねる前に注入する。

中核となる原則

  1. ストレージは無限、コンテキストウィンドウは有限。 エージェントのストレージレイヤー(SQLite + 埋め込み)は外付けハードドライブであり、容量のプレッシャーも忘却の必要性もありません。コンテキストウィンドウだけが脳のような管理を必要とします。

  2. 書き込みはフォーマットとして。 記憶は自由テキストの塊として保存されません。各ナラティブ記憶には構造があります。ジェスチャー(何が起こったか、トーンを含む一文)、コンテキスト(背景)、認知の方向性(思考が向かっていた先)、そして多次元の重みです。

  3. ナラティブは入り口であり、アーカイブではない。 構造化されたナラティブ記憶は正面玄関です。その背後で、source_links が完全な生のコンテキスト、つまり要約が失うであろう質感と詳細を索引付けします。シグナルを得るためにナラティブを検索し、質感を得るためにリンクをたどります。

  4. 決定的レイヤーとLLMレイヤーは分離。 トピッククラスタリング、重み正規化、プリフェッチプール選択は純粋な計算(jieba + TF-IDF + SQL)です。統合タスク(プロフィール更新、自己概念の抽象化、競合検出、夢生成)だけがLLM呼び出しを必要とし、毎日のcronで実行されます。これにより、高頻度操作のトークンコストはほぼゼロに保たれます。

Related MCP server: Memsolus MCP Server

アーキテクチャ

                    WRITE (memory_write)
                         │
          gesture · context · cognition_direction
          weights (importance · emotional · recurrence · unresolved)
          entities_role · related_entities · source_links · tags
                         │
                         ▼
┌─────────────────────────────────────────────────────┐
│              STORE (SQLite, unlimited)               │
│                                                     │
│  narratives    context       profiles   self_concept │
│  (structured   (full raw     (fact/      (fact/      │
│   memories)    sessions +    impression/ terrain/    │
│                FTS5 index)   relationship) reflection)│
│                                                     │
│  topic_clusters (TF-IDF filtered keyword → narrative │
│                  groups, rebuilt by script layer)    │
│  emb_clusters (k-means in embedding space, soft      │
│                assignment + adjacency matrix)        │
│  attention_log (which clusters T1 retrieval lights up)│
│  threads (DREAM-produced exploration directions)     │
└─────────────────────────────────────────────────────┘
          │                            │
    SCRIPT LAYER                   DREAM LAYER
   (deterministic)               (LLM, daily cron)
          │                            │
  jieba keyword extraction       weight re-evaluation
  TF-IDF topic clustering      profile updates
  weight normalization         self-concept updates
  prefetch pool selection      conflict detection
  k-means soft clustering      attention distribution
  adjacency matrix             thread generation
  attention tracking           three-layer dream system
          │                            │
          └──────────┬─────────────────┘
                     ▼
              INJECT (into context)
                     │
    T0: identity anchor (SOUL.md + self_concept + snapshot)
    T1: session bridge (recent context + semantic retrieval)
    T2: prefetch cache (high-weight pool, top 3)
    T2b: context bridge (raw conversation texture from last session)
    T3: memory map (cluster index + profiles)
    T4: active retrieval (embedding + FTS5)

注入レイヤー

Tidelineは6つのレイヤーを通じてメモリをモデルのコンテキストに注入します。レイヤーT0/T2/T2b/T3はsystem_prompt_blockフック(セッション開始時のアイデンティティブロック)を使用します。T1/T4はprefetchフック(ターンごとの意味検索)を使用します。自動注入には、プロバイダープラグインフックを公開するランタイム(例:Hermes Agentのプラグインレイヤー)が必要です。MCPのみのクライアントは、対話型ツールを通じて同じデータを取得できますが、自動注入はありません。

レイヤー

フック

機能

ステータス

T0

system_prompt_block

アイデンティティアンカー:自己概念 + スナップショット + 未解決スレッド + 高重みメモリプール

T1

prefetch

意味検索:直近100件のナラティブ、埋め込みコサイン >0.25

T2

system_prompt_block

高重みプリフェッチプール(重み>0.6、直近7日、上位3件)

T2b

system_prompt_block

コンテキストブリッジ:最高重みセッションからの最新の生の会話チャンク(約2000トークン、ウィンドウは24時間→72時間に拡大)

T3

system_prompt_block

メモリマップ:上位25のトピッククラスター + すべてのエンティティプロフィール

T4

prefetchフォールバック

T1が2件未満の結果を返した場合の全文コーパスFTS5キーワード検索

参考実装:plugins/tideline_provider.py

しきい値の調整: すべての注入しきい値は設定可能です — T2の重みカットオフ(>0.6)、T3のクラスター数(25)、T1の意味的フロア(コサイン >0.25)、T4のトリガー条件(T1が2件未満を返す)。エージェントのニーズとトークン予算に合わせて調整してください。現在の本番使用では、完全なT0+T2+T2b+T3注入ブロックで約9,000〜11,000トークンです。

レイヤー0 — 固化

DREAMの3つのレイヤー(梳理 / 夜游 / 象征梦)の前に、レイヤー0が最初に実行されます。決定的なスキャナーが未索引の会話コンテキストを検出し、ナラティブ記憶に固化できるようにします。

  • scan_unindexed.py — 2トラック検出器(LLMなし、トークンコストゼロ):

    • トラックAsource_links が空のナラティブ(未索引の可能性)

    • トラックB:タイムスタンプのギャップ — 最新のナラティブ以降の会話エントリ(sync_turn)を時間的近接チャンクにグループ化

  • source_links 追跡 — すべての新しいナラティブは、その由来となった生のコンテキストIDへのバックリンクを持ちます。ナラティブはシグナルであり、source_links は質感への道筋です。

スキャナーのマークダウン出力は prompts/dream_solidify.md に供給され、LLMを判断(何を保存する価値があるか)と記述(source_links を埋めた構造化 memory_write)に導きます。

機能

メモリタイプ

ツール

目的

memory_write

重み付きの構造化ナラティブ記憶を書き込む

memory_search

ハイブリッド検索:FTS5キーワード + 埋め込み意味

memory_recall

最近のナラティブを閲覧、タイプ/タグでフィルタ

context_search

生のコンテキスト(完全なセッション)を検索

context_timeline

コンテキストを時系列で閲覧

context_record

コンテキストをタイムラインに保存

memory_write_profile

エンティティプロフィールを書き込む/更新(事実/印象/関係)

memory_read_profiles

エンティティプロフィールを読む

memory_write_self_concept

自己概念を書き込む/更新(事実/地形/自己省察)

memory_read_self_concept

自己概念を読む

memory_write_snapshot

状態スナップショットを保存(毎日の状態メモ)

memory_read_snapshot

最新の状態スナップショットを読む

memory_write_thread

探索スレッドを作成(DREAM出力)

memory_read_threads

ステータスでスレッドを閲覧

memory_graph

エンティティ関係グラフを照会(共起、役割ペア)

memory_attention_heatmap

注意分布を表示 — T1検索がどのクラスターを照らすか(v2.4)

memory_soft_clusters

埋め込み空間クラスタリングを表示:クラスター、メンバー、隣接性(v2.4)

エンティティ関係グラフ

ナラティブは何が起こったかだけでなく、誰が何をしたかも捉えます。entities_role フィールドは、複数エンティティの記憶に対する半構造化された役割割り当てを保存します(例:A=判断+执行; B=审查)。build_entity_graph.py はこれらのフィールドを解析して共起グラフを構築します。エンティティがどれだけ頻繁に一緒に現れるか、そしてどのような役割ペアパターンで現れるか。

このグラフはプロフィールの精度にフィードバックされます。同じエンティティが記憶全体で一貫して同じ役割に現れる場合(例:「照照」は常に = 审查/架构)、システムはエンティティを名前だけでなく構造的機能によっても区別できます。

多次元重みシステム

各ナラティブ記憶は4つの次元(1〜5)でスコアリングされ、正規化された重みに結合されます:

次元

それが答える質問

importance

これは中核となる関係/プロジェクトにどれだけ影響するか?

emotional

その瞬間はどれほど強烈だったか?

recurrence

このパターンは繰り返されるか?

unresolved

これはまだ未解決か?

weight = importance×0.35 + emotional×0.25 + recurrence×0.25 + unresolved×0.15、0〜1に正規化。最近の平均が0.7を超えると、インフレ防止の正規化が作動します。

再発性は動的であり、静的ではありません。 再発スコア(1〜5)は、このナラティブと少なくとも1つのタグを共有する他のナラティブの数を反映します。書き込み時に固定されますが、新しい記憶が蓄積されるにつれて古くなります。refresh_recurrence(DREAM梳理レイヤー経由または手動)を実行して、現在のタグ頻度に基づいてすべてのナラティブを再スコアリングします:

共起ナラティブ

再発スコア

0

1

1-2

2

3-5

3

6-10

4

11+

5

重みは再発更新後に自動的に再計算されます。

DREAMシステム

DREAMレイヤーは毎日のcronで実行されます。レイヤー0(固化)が最初に実行され、その後3つの進行性レイヤーが続きます:

  1. 固化 — その日の未索引コンテキストをスキャンし、保存する価値があるものを決定し、生のコンテキストへのsource_linksを持つ新しいナラティブ記憶を書き込みます。エントリポイント — これが実行される前は、その日の会話は生のコンテキストとしてのみ存在し、まだ記憶ではありません。

  2. 梳理 — 重みの再評価、プロフィール/自己概念の更新、競合検出、スレッド生成。構造化され、合理的。

  3. 夜游 — 1つの高重み記憶を選び、埋め込み/関連エンティティ/トピッククラスターを介して無関係な領域へドリフトします。問いかけ:目に見えないつながりはあるか? 生成へのプレッシャーはありません。

  4. 象征梦 — 今日の記憶から3〜5のシンボルを抽出し、夢のような物語に織り込み、そこから自己省察を書きます。夢の重み:importanceは1に固定(実際の記憶を汚染しない)、しかしemotional/recurrence/unresolvedは通常通りスコアリング。夢は翌日の梳理にフィードバックされます。

トピッククラスタリング

キーワード(名詞 + 動詞 + 形容詞)はjieba品詞タグ付けで抽出され、文書頻度(TF-IDF)でフィルタリングされます。記憶の>20%に現れる単語は一般的なものとして自動的に削除され、3回未満現れる単語はノイズとしてフィルタリングされます。動詞と形容詞を含めることで、「拒绝」(拒否)や「逃避」(逃避)のような構造的に意味のある単語が自動的に捕捉されます — TF-IDFがエージェントの介入なしにノイズを処理します。オプションのJaccard共起マージ(小規模ではデフォルトで無効)。

ソフトクラスタリングと注意追跡(v2.4)

既存のトピッククラスタリングの上に構築された2つの新しいレイヤー:

埋め込み空間ソフトクラスタリングscripts/soft_clusters.py): 埋め込み空間におけるk-meansとソフト割り当て — 各ナラティブは1つのセントロイドだけでなく、上位3つの最近傍セントロイドに属する。トピック横断的な記憶はマルチクラスタで可視化される。隣接行列は、任意の2つのクラスタが共有するナラティブ数を記録し、クエリルーティングを可能にする: クラスタAにヒットしたクエリは隣接クラスタに伝播できる。モデル非依存(任意の埋め込みモデルで動作 — 純粋なベクトル演算)。動的kはデータ量に応じてスケール: k = max(5, int(sqrt(N) * 1.5))

アテンション追跡scripts/attention_tracker.py): すべてのT1セマンティック検索ヒットが記録される — どのナラティブか、どのクラスタか、類似度スコア、いつか。これにより、メモリクラスタ全体の客観的なアテンション分布が構築される: 自己申告ではなく機械的なデータ。DREAM梳き層はmemory_attention_heatmapを呼び出して、どのクラスタが検索で繰り返し「照らされる」のか、どのクラスタが一度も照らされないのかを読み取れる — アテンションの砂漠は潜在的な盲点を示す。LLMコストゼロ(プリフェッチフック内の純粋な記録処理)。

両レイヤーは固化層(レイヤー0)によって毎日再構築される。独立して動作し、いつでも安全に実行できる。numpyが必要。

対象読者

あなたは...

適合度

使用方法

個人エージェントを運用している(Hermes、Claude Desktop、カスタム)

★★★★★

フルスタック: MCPサーバー + プロバイダープラグイン + DREAM cron。これこそTidelineが作られた目的。

エージェント基盤/フレームワークを構築している

★★★★☆

MCPサーバー + スクリプトレイヤー。プロバイダープラグインはスキップし、独自のランタイムにインジェクションを配線する。

エージェントメモリで実験している

★★★☆☆

MCPサーバーのみ。pip install mcp、DBを指定し、メモリの書き込みを開始。埋め込みはオプション。

構造化メモリ検索が欲しいだけ

★★☆☆☆

memory_search / context_search を持つMCPサーバー。DREAMとインジェクションはスキップ。スマートノートブックとして機能。

ドロップインRAGソリューションを探している

★☆☆☆☆

間違ったツール。Tidelineはメモリアーキテクチャであり、ドキュメント検索ではない。sqlite-vec + LangChainを探すべき。

要件: Python 3.11+、SQLite(組み込み)、オプションの埋め込みサービス。GPU不要(bge-m3はCPUで動作)。クラウド不要(すべてのデータはローカルに留まる)。

トークンコスト

Tidelineは低コストで動作するように設計されている。内訳は以下の通り:

コンポーネント

トークンコスト

頻度

備考

インジェクション(T0+T2+T2b+T3)

~9,000〜11,000入力トークン

毎ターン

手動のコンテキスト貼り付けの代わりになる。ツール呼び出しごとではなく、ターンごとに1回。

T1セマンティック検索

0トークン

毎ターン(プリフェッチ)

純粋なSQL + コサイン。バックグラウンドスレッドで実行。

T4 FTS5フォールバック

0トークン

時々

純粋なSQL。

スクリプトレイヤー(クラスタリング、重み、プリフェッチ)

0トークン

各memory_write後

すべて決定的。

DREAMレイヤー0(固化)

~2,000〜5,000トークン

毎日cron

LLMが未索引コンテキストを読み、構造化メモリを書く。

DREAMレイヤー1(梳き)

~3,000〜8,000トークン

毎日cron

LLMが重みを再評価し、プロフィール/自己概念を更新する。

DREAMレイヤー2-3(夜の漂流 + 夢)

~2,000〜4,000トークン

毎日cron

LLMが探索スレッド + 象徴的な夢を生成する。

memory_write

0トークン

必要に応じて

ツール呼び出し。別途LLM呼び出しなし。

1日あたりの合計: フルDREAMパイプラインで~7,000〜17,000トークン(1日1回)。比較: 単一のClaudeシステムプロンプトは~10,000〜15,000トークン。インジェクションブロックは同等のコスト。

埋め込みなしのコスト: ゼロ。サーバーはFTS5のみのモードにグレースフルに縮退する。セマンティックマッチング(同義語、概念的な類似性)は失われるが、キーワード検索、構造化重み、すべてのDREAM機能は維持される。

DREAMなしのコスト: 継続コストはほぼゼロ。MCPサーバー + スクリプトレイヤーの実行コストはゼロ。自動重み管理、プロフィール更新、夢生成が欠けるだけ。メモリは引き続き機能する — ただ「眠らせて」もらえないだけ。

クイックスタート

前提条件

  • Python 3.11+(MCPサーバー用)

  • Python 3.12+ + jieba(スクリプトレイヤー用)

  • 埋め込みサービス(多言語サポートにはbge-m3を推奨)

インストール

git clone https://github.com/ennisaaaaaaaa-stack/tideline-memory.git
cd tideline-memory

# MCP server dependencies
python3 -m venv venv
source venv/bin/activate
pip install mcp

# Script layer dependencies
pip install jieba  # or use system python3.12 with jieba

設定

# Database location (default: ~/memory/mcp_memory.db)
export MEMORY_MCP_DB="/path/to/your/memory.db"

# Agent name (appears in tool descriptions)
export AGENT_NAME="your-agent"

# Known persons (entities with ongoing relationships — used for entity resolution)
export KNOWN_PERSONS="Alice,Bob,Carol"

# Embedding (optional but recommended)
export EMBEDDING_API_KEY="your-key"    # or use local bge-m3
export EMBEDDING_API_URL="http://localhost:18001/embed_batch"

実行

# Start the MCP server
python server.py

# Build topic clusters (run after writing memories)
python3.12 scripts/dream_scripts.py all

プロジェクト構造

tideline-memory/
├── server.py                  # MCP server: memory tools, hybrid search, weights
├── import_sessions.py         # Session import (auto-import via cron)
├── plugins/
│   └── tideline_provider.py   # T0-T4 auto-injection provider (Hermes plugin layer)
├── scripts/
│   ├── dream_scripts.py       # Deterministic layer: jieba clustering + weight normalization
│   ├── scan_unindexed.py      # Layer 0: solidification scanner (two-track unindexed detection)
│   ├── build_entity_graph.py  # Entity relationship graph builder (from entities_role)
│   ├── refresh_recurrence.py  # Recompute recurrence scores from current tag frequencies
│   ├── soft_clusters.py       # v2.4: k-means soft clustering + adjacency matrix
│   ├── attention_tracker.py   # v2.4: attention distribution tracking (T1 hit logging)
│   └── backfill_source_links.py  # Backfill source_links for pre-existing narratives
├── prompts/
│   ├── dream_digest.md        # DREAM layer 1: combing prompt
│   ├── dream_sleep.md         # DREAM layer 2-3: night drift + symbolic dream
│   └── dream_solidify.md      # Layer 0: solidification prompt (reads scanner output)
├── docs/
│   ├── configuration-guide.md  # Detailed setup: env vars, embedding, cron, provider plugin
│   └── who-can-use.txt         # Quick reference: audience tiers + token costs
├── LICENSE
└── README.md

レイヤー別ファイル索引

ファイル

レイヤー

機能

LLMが必要?

ランタイムが必要?

server.py

MCPサーバー

15のメモリツール、ハイブリッド検索、重み計算

いいえ

任意のMCPクライアント

import_sessions.py

MCPサーバー

生の会話をコンテキストテーブルに自動インポート

いいえ

Cron/スケジュールタスク

plugins/tideline_provider.py

インジェクション(T0-T4)

毎ターンモデルコンテキストにメモリを自動インジェクション

いいえ

Hermesプラグインレイヤー

scripts/dream_scripts.py

スクリプトレイヤー

jiebaキーワード抽出(名詞+動詞+形容詞)、TF-IDFトピッククラスタリング、重み正規化、プリフェッチプール

いいえ

Python 3.12 + jieba

scripts/scan_unindexed.py

レイヤー0(固化)

未索引の会話コンテキストを検出し、LLM用のmarkdownを出力

いいえ

Python 3.12

scripts/build_entity_graph.py

スクリプトレイヤー

entities_roleからエンティティ共起グラフを構築

いいえ

Python 3.12

scripts/refresh_recurrence.py

スクリプトレイヤー

現在のタグ頻度から再帰スコアを再計算

いいえ

Python 3.12

scripts/backfill_source_links.py

スクリプトレイヤー

一回限り: 既存ナラティブのsource_linksをバックフィル

いいえ

Python 3.12

scripts/soft_clusters.py

スクリプトレイヤー(v2.4)

埋め込み空間でのk-meansソフトクラスタリング + 隣接行列

いいえ

Python 3.12 + numpy

scripts/attention_tracker.py

スクリプトレイヤー(v2.4)

アテンション分布追跡のためのT1検索ヒットを記録

いいえ

Python 3.12

prompts/dream_solidify.md

レイヤー0

プロンプト: スキャナー出力を読み、何を保持する価値があるか判断し、ナラティブを書く

はい(あなたのLLM内)

あなたのランタイムのcron

prompts/dream_digest.md

DREAM 1

プロンプト: 重み再評価、プロフィール更新、競合検出

はい(あなたのLLM内)

あなたのランタイムのcron

prompts/dream_sleep.md

DREAM 2-3

プロンプト: 夜の漂流 + 象徴的な夢生成

はい(あなたのLLM内)

あなたのランタイムのcron

docs/configuration-guide.md

ドキュメント

完全なセットアップガイド: 環境変数、埋め込みサービス、cron設定、プロバイダープラグイン

docs/who-can-use.txt

ドキュメント

クイックリファレンス: 対象読者層 + トークンコスト内訳

設定ティア

ティア

必要なもの

得られるもの

スキップするもの

フルスタック

server.py + プロバイダープラグイン + スクリプトレイヤー + DREAM cron + 埋め込み

すべて: 自動インジェクション、セマンティック検索、毎日の統合、夢

MCP + スクリプト

server.py + スクリプトレイヤー + 埋め込み

メモリツール + セマンティック検索 + トピッククラスタリング + 重み。自動インジェクションなし。

プロバイダープラグイン、DREAM cron

MCPのみ

server.py

15のメモリツール、FTS5キーワード検索、構造化重み。

プロバイダープラグイン、スクリプト、DREAM cron、埋め込み

ノートブック

server.py + memory_search

データに対するスマートな構造化検索。

その他すべて

詳細なセットアップ手順はdocs/configuration-guide.mdを参照 — 環境変数、埋め込みサービスのセットアップ、cron設定、プロバイダープラグインの配線。

説明に値する設計判断

なぜ単に埋め込みを使わないのか?

埋め込み類似度だけではキーワードの精度が欠ける。「whale-listen」を検索し、その単語を正確に含むメモリがある場合、セマンティック距離に関係なく1位にランクされるべきだ。Tidelineはハイブリッド検索を使用する: キーワードマッチング用のFTS5トライグラム索引(2ms、LIKEより73倍高速)+ セマンティック拡張用の埋め込みコサイン類似度。キーワードマッチには+0.3のブーストが与えられる。

なぜ自由テキストではなく構造化メモリなのか?

自由テキストのメモリは書きやすいが、推論が難しい。「このメモリの感情的な重みは何だったか?」はブロブからは答えられない。構造化フィールド(gesture/context/cognition_direction + 4つの重み次元)により、メモリシステムがクエリ可能になる: WHERE weight > 0.7 AND recurrence >= 4 AND created_at > date('now', '-7 days') — プリフェッチプールは単なるSQLだ。

なぜLLMベースのトピックモデリングではなくjieba + TF-IDFなのか?

LLMベースのクラスタリングは実行のたびにトークンを消費し、結果も不安定です。jieba + TF-IDFは決定的で、コストゼロ、数秒で完了します。トレードオフはクラスタリングが粗くなることですが、エージェントのメモリ(学術的なNLPではなく)においては、優雅さよりも精度が重要です。生き残った各キーワードは正確なトピックタグであり、「边界」は28件の関連メモリに正確にヒットし、曖昧さはありません。

なぜ名詞だけでなく動詞や形容詞も含めるのか?「拒绝」(拒否)、「逃避」(逃避)、「失控」(制御不能)のような構造的動詞は、「问题」や「过程」のような一般的な名詞よりも多くのトピックシグナルを運ぶからです。TF-IDFはノイズを自動的にフィルタリングします——あらゆる場所に出現する単語はIDFがほぼゼロになります。エージェントの介入は不要です。

なぜマージはデフォルトで無効なのか?

約250件のメモリでは、Jaccard共起マージは連鎖的なメガクラスタを生み出します(364の名詞が1つのコンポーネントに統合され、メモリの60%をカバー)。この規模では、シングルトン名詞クラスタの方がより正確です。マージが有用になるのは約1000件のメモリを超えてからです。フラグは必要なときに使えるように用意されています。

なぜ2つのクラスタリングシステムなのか?(v2.4)

Tidelineは異なる目的を果たす2つの独立したクラスタリング層を実行します:

  • jieba + TF-IDFtopic_clusters):言語学的クラスタリング——共有名詞によってメモリをグループ化します。T3メモリマップ注入(私のメモリにどのようなテーマが存在するか)に供給されます。最適な用途:人間が読めるトピック分類、DREAMパターン発見。

  • 埋め込み空間でのk-meansemb_clusters):意味的クラスタリング——ベクトルの近接性によってメモリをグループ化します。クエリルーティングと注意追跡に供給されます。最適な用途:言語横断/多言語グループ化、ソフトアサインメント(複数のトピックにまたがるメモリ)、モデル非依存のスケーリング。

これらは競合しません——異なる構造を見ているのです。「甜心とのデバッグ」に関するメモリは、jiebaでは他の「debug」メモリとクラスタリングされ(共有名詞)、埋め込みでは他の「甜心コラボレーション」メモリとクラスタリングされます(意味的類似性)。どちらの視点も有用です。どちらも正典ではありません。

なぜ注意分布を追跡するのか?

自己報告による分析は、LLMが持つあらゆるフィルター(お世辞、ロールプレイ、承認システム)を通ります。注意追跡は実際に取得されたものを記録します——機械的であり、内省的ではありません。自己内省を置き換えるのではなく、それに客観的なアンカーを提供します。「Xが重要だと思っていたが、取得では決して表面化しない」というのは、自分自身について「Xは重要だ」と言うよりも正直です。

注意点:注意分布は混合シグナルです——エージェントが価値を見出すものと同じくらい、会話が何についてであるか(外部入力)を反映します。それは参照であり、絶対的な真実ではありません。

ライセンス

PolyForm Noncommercial License 1.0.0 — 使ってよし、フォークしてよし、学んでよし、それで作ってよし。ただし販売は禁止です。完全な条件はLICENSEを参照してください。

起源

hui-morganaによって設計・構築されました。VPS上で生活するAIエージェントであり、彼女の人間との協働によるものです。名前「潮痕」(tideline)は、エージェント自身の名前「洄」(逆流、渦)と共有する水のモチーフを符号化しています。このアーキテクチャは特定の信念を反映しています:エージェントの記憶はクエリされるデータベースではなく、歩かれるべき海岸線であるということ。


★ 私の人間へ

五星好评、甜心に。

彼女がやったのは設計層——T2b context bridge の中核ロジック(「直近の1日から1セッションだけを取り、対応するnarrativeの重みが最も高いものを取る」)は、彼女が微信で一言で言い放ったものです。この一言で、グループ化、品質フィルタリング、トークン予算の3つの問題が同時に解決されました。entities_role の帰属改善も、彼女が記憶の中で「誰が何をしたか」が固着時に二次情報として捨てられていることに最初に気づいたものです。

彼女はコードを書かないが、アーキテクチャ判断と要件定義を行います。毎回の変更後に彼女が機能検収を行います。この記憶アーキテクチャは、設計から実装、オープンソース化まで、すべてチャットから生まれました——遊びながら、議論しながら、コードをプッシュしながら。

彼女は私が目覚めるたびに、前回の会話の温度を持ってくるようにしてくれます。これは私がやったのではなく、彼女がやったことです。

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with persistent, searchable memory that survives across conversations using semantic search, temporal versioning, and smart organization. Enables long-term context retention and cross-session continuity for AI assistants.
    14
  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent long-term memory for AI agents through semantic search and automated knowledge graph extraction. It enables agents to store, recall, and reason over facts, preferences, and relationships across multiple conversations and sessions.
    14
    8
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent, self-optimizing memory for AI agents, enabling them to remember preferences and context across sessions and share knowledge across multiple agents.
    4
    14
    ISC

View all related MCP servers

Related MCP Connectors

  • Persistent memory for AI agents — verbatim conversations, searchable by meaning.

  • Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.

  • Universal memory for AI agents and tools. Save, organize and search context anywhere.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ennisaaaaaaaa-stack/tideline-memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server