Claude Code・Codex・Cursor CLI・Antigravity CLI の履歴をひとつの SQLite に取り込み、Web UI・MCP サーバー・コマンドラインのどこからでも横断全文検索する。取り込みと検索は Python 標準ライブラリだけで動きます。
JSONL 3種に加え、Antigravity CLI の SQLite 内 protobuf も .proto なしでデコードして正規化します。
FTS5 の trigram トークナイザを使うため、既定の unicode61 では引けない日本語の部分一致が検索できます。
未変更ファイルは mtime+size でスキップ。変更分は先頭4KBのハッシュで検証してバイトオフセットから再開します。
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
| セキュリティ | アプリを直接公開しない前提の設計です。/mcp と / ・/api/* はプロキシ側で保護し、CHIST_TOKEN がなければサーバーは起動しません。 |
|---|---|
| 整理 | chist prune で期間・ソース・セッション・本文一致を指定して削除できます。条件なしでは何もしません(全削除は提供しない)。MCP には prune を公開していません。 |
| 検索の制限 | 3文字未満のクエリは自動的に LIKE にフォールバックします。tool_call / tool_result は保存はしますがインデックスしません(全行の70%以上を占め、ノイズになるため)。 |
| 既知の制限 | Cursor CLI にはタイムスタンプとモデル名がなく、Codex の reasoning は多くが暗号化されています。Antigravity CLI は .proto なしの解析です。 |