maniacs.club
← 一覧に戻る
サーバー + Web UI + CLI MIT

chist-server

Claude Code・Codex・Cursor CLI・Antigravity CLI の履歴をひとつの SQLite に取り込み、Web UI・MCP サーバー・コマンドラインのどこからでも横断全文検索する。取り込みと検索は Python 標準ライブラリだけで動きます。

chist-server
docs/screenshot.png — Web UI の検索画面

機能

4つのソースをひとつのインデックスに

JSONL 3種に加え、Antigravity CLI の SQLite 内 protobuf も .proto なしでデコードして正規化します。

日本語が引ける全文検索

FTS5 の trigram トークナイザを使うため、既定の unicode61 では引けない日本語の部分一致が検索できます。

増分インジェスト

未変更ファイルは mtime+size でスキップ。変更分は先頭4KBのハッシュで検証してバイトオフセットから再開します。

MCP サーバー

MCP 2026-07-28 を stdio / streamable HTTP で実装。エージェント自身が search_history・list_sessions・get_session で過去を引けます。

複数マシンの集約

各マシンがローカルで取り込み、差分だけを中央サーバーへ push。project_key(git remote 由来)でマシンやツールをまたいで同じプロジェクトをまとめます。

シークレットのマスキング

表示時にマスクし、集約サーバーでは保存前にマスクします。既知のプレフィックス、ラベル付きの値、認証情報を含むコマンドを検出します。

インストール

ローカルなら Docker も不要です。複数マシンで使う場合だけ、リバースプロキシの背後で集約サーバーを Docker で動かします(Svelte の UI はイメージ内でビルド済みなので、サーバーに Node は不要)。

python3 -m chist ingest              # 増分インポート
python3 -m chist search 'trigram'    # 全文検索
python3 -m chist show <ext_id>       # 会話を読む

# MCP として登録する
claude mcp add --transport http chist https://chist.example.com/mcp

技術スタック

Python 3.9+ 標準ライブラリのみ(取り込み・検索) SQLite FTS5 / trigram Svelte SPA MCP 2026-07-28 Docker / Traefik
初回インジェスト
14.9秒
2回目(差分なし)
0.1秒未満
検索レイテンシ
約0.05秒
DBサイズ
130MB

対応状況と制限

セキュリティアプリを直接公開しない前提の設計です。/mcp と / ・/api/* はプロキシ側で保護し、CHIST_TOKEN がなければサーバーは起動しません。
整理chist prune で期間・ソース・セッション・本文一致を指定して削除できます。条件なしでは何もしません(全削除は提供しない)。MCP には prune を公開していません。
検索の制限3文字未満のクエリは自動的に LIKE にフォールバックします。tool_call / tool_result は保存はしますがインデックスしません(全行の70%以上を占め、ノイズになるため)。
既知の制限Cursor CLI にはタイムスタンプとモデル名がなく、Codex の reasoning は多くが暗号化されています。Antigravity CLI は .proto なしの解析です。

ほかのアプリ