0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codexのセッション引き継ぎを自動化する軽量CLI「llmctx」を作りました

0
Posted at

こんにちは。強です。

私は長らく無課金開発で粘ってきたのですが、ついに課金してしまいました。

ChatGPT Plusです。

5月頃にはGitHub Copilot Freeも少し使っていました。どのAIベンダーがよいか、どのツールが優れているかなど、いろいろな意見があると思いますが、とりあえず私はChatGPT Plusを選びました。

最近は、AIに実装から検証までを繰り返させる「ループエンジニアリング」のような話をよく見かけます。

一方、私はまだプロンプトを入力して、返ってきた応答を確認しながら進める開発をしています。

セッションを切り替えるのが面倒だった

AIコーディングツールを使っていると、

「セッションは細かく区切ったほうがよい」

という話をよく見かけます。

長いセッションを続けるよりも、作業単位でセッションを分けたほうが、コンテキストが整理されて応答も安定しやすい、という考え方です。

たしかにその通りなのですが、実際にセッションを切り替えようとすると、次の問題が出てきます。

セッションを切り替えたい
        ↓
現在の状態や次にやることをまとめる
        ↓
次のセッションへ貼り付ける

私が知っていた方法は、主に次の2つでした。

  1. 自分で現在の状態や、次にやることをまとめる
  2. 前のセッションの最後に「引き継ぎ資料をまとめて」とCodexへ依頼する

そして、まとめた内容を次のセッションへ貼り付けます。

ほかの方法を知らなかったので、毎回このようにしていました。

ただ、毎回同じことをするのは面倒です。

セッションを切り替えるたびに、自動で最低限の引き継ぎ情報が作られ、そのまま次のセッションで読み込まれてほしいと思いました。

欲しかったもの

そこで、自分が欲しいものを整理しました。

プロジェクト名は llmctx です。

目標は、できるだけ軽いCLIツールにすることです。

欲しかった機能は次のようなものでした。

  • 導入が軽い
  • セッション切り替え時に、次のセッションへ渡す簡単な情報を自動生成する
  • SessionStartUserPromptSubmitStopなどのHookをトリガーにする
  • 会話内容の保存、引き継ぎ情報の生成、読み込みを自動化する
  • ワークスペースごとに情報を分離する
  • 一つのワークスペースに含まれる複数リポジトリを横断して扱う

長期記憶や高度な検索システムを作りたいわけではありません。

次のセッションで、

  • 今、何をしているのか
  • 次に何をするのか
  • 何に注意する必要があるのか

が分かれば十分です。

既存ツールも調べてみた

作り始めたあとで、似たようなツールがないか調べてもらいました。

特に近かったのが claude-mem です。

比較すると、次のような違いがあります。

llmctx claude-mem
主目的 作業の再開地点を残す 長期記憶を構築する
保存単位 user/assistantターン ツール操作を含む観測
出力 session.md DB+検索結果+要約
データ構造 Markdown+JSONL SQLite+ベクトルDB
LLM依存 MVPではほぼ不要 要約や検索で強く使用
導入負荷 軽い 比較的重い
人間による確認 ファイルを直接読める UIや検索経由が中心
方向性 「現在地」 「過去を思い出す」

似たようなことを考えている人は、やはりいるのだなという印象でした。

ただ、私が欲しいのは長期記憶ではありません。

過去の情報を大量に蓄積して検索するというより、作業を再開するための小さな引き継ぎファイルが欲しいだけです。

そのため、llmctxではMarkdownとJSONLを中心にして、できるだけ単純な構成にしています。

Codexで実装しました

せっかくChatGPT Plusへ課金したので、実装にはCodexを使いました。

そして、ひとまずMVPが完成しました。

GitHubで公開しています。

詳しい使い方はREADMEに書いてあります。

大まかな流れとしては、ビルドしたバイナリを適当な場所へ置き、initコマンドを実行します。

そこで、使用するワークスペースやリポジトリ、logや引き継ぎ情報を保存するディレクトリなども設定します。

設定後はHookを通して、会話内容の保存やsession.mdの生成、次のセッション開始時の読み込みが行われます。

別のワークスペースで再びinitを実行すると、そのワークスペースも別のコンテキストとして登録されます。

たとえば、ワークスペースAとワークスペースBを行き来した場合でも、それぞれに対応したsession.mdが生成され、保存され、読み込まれます。

また、一つの開発対象が複数リポジトリに分かれている場合でも、同じワークスペースのコンテキストとしてまとめて扱えます。

あくまで簡易的な引き継ぎツールです

llmctxは、何でも記憶してくれる高度なAIメモリシステムではありません。

あくまで、セッションを切り替えたあとに作業を再開しやすくするための、簡易的な引き継ぎツールです。

内部で生成しているsession.mdも、人間が直接読んだり編集したりできます。

データベースや常駐サーバーを用意せず、できるだけ小さく、壊れたときにも中身を確認できる構成を目指しました。

まだMVP段階ですが、同じようにCodexのセッション切り替えを面倒に感じている人がいれば、試してもらえるとうれしいです。

興味のある方は、どうぞ使ってみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?