Claude Code 始めました
Throughline を npm に公開した — Claude CodeのツールI/OをSQLiteに退避するhook

Throughline っていうClaude Code用のhookプラグインをnpmに公開した。

何をするか

Claude Codeのセッションで、コンテキストの大半は「ツールI/O」の残骸で埋まってる。ファイルを読んだ中身、grepの結果、Bashの出力。AIがその場で使って、判断して、次に進んだ時点で役目を終えてるデータ。でも最後までコンテキストに居座ってトークンを食い続ける。

Throughlineは会話を3層に分けて管理する。

中身コンテキストへの注入
L2会話本文(ユーザー発言 + AI応答)直近20ターンはそのまま注入
L1L2を要点を欠落させない程度(1/5)に要約したもの20ターンより古いターンはL1を注入
L3ツールI/O・システムメッセージ・thinking注入せずSQLiteに退避、必要になったらClaude自身が取り出す

ツールI/Oはコンテキストから完全に抜くので、読み終わったgrep結果やBash出力がセッション最後まで居座らない。古い会話は1/5に圧縮されるが要点は残るので、数十ターン前の判断の文脈もちゃんと追える。

手元の50ターンセッションで実測すると、125,000トークン使ってた会話が、13,000トークンに収まる。

インストール

npm install -g throughline
throughline install

install~/.claude/settings.json にhookを登録する。PC内の全Claude Codeプロジェクトで自動で動く。プロジェクトごとの設定は不要。

セッション間の引き継ぎ

Throughlineは会話をSQLiteに退避してるので、/clear してもデータ自体は残ってる。次のセッションに記憶を持ち越したい時は、前のセッションで /tl って打つ。

/tl を打った時だけ、次のセッションに引き継がれる。打たなければ新規セッションとして始まる。並行ウィンドウを開いても、VSCodeを再起動しても、「/tlを打たない限り誤爆しない」ようにできてる。

引き継ぎ時には、前のClaudeが書いた「次の一手メモ」と、最終ターンの内部推論(thinking)も一緒に渡る。次のClaudeは「過去ログを読む」じゃなく「中断地点から続ける」モードで動く。

トークンモニター

副産物として、マルチセッション対応のトークンモニターもついてくる。

throughline monitor
[Throughline] 1 セッション
▶ Throughline  2ed5039c  ████░░░░░░░░░░░░░░░░  205.1k /  21%  残 794.9k  claude-opus-4-6

transcriptのJSONLからAPIの実測値(message.usage)を読むので、文字数÷4の推定じゃなくて正確な値が出る。1Mコンテキストの自動検出にも対応。

要件

  • Node.js 22.5+(node:sqlite 組み込みモジュールを使うため)
  • Claude Code(hooks対応)
  • Claude Max契約(L1要約のHaiku呼び出しに使う、APIキーは不要)
  • Windows / macOS / Linux

依存関係

ゼロ。npmに公開してるtarballは .mjs ファイルだけ。ビルドもネイティブバインディングも不要。


設計の経緯や試行錯誤は こちらの記事 に書いた。

Throughline — GitHub

MIT。バグ報告・PRも歓迎です。