はじめに
VS Code拡張機能「Input Assistant for Claude Code」のv1.11.0をリリースしました。
今回のアップデートの目玉は「思考ノート」です。ローカルLLMを使って、コーディングセッションの内容をバックグラウンドで自動要約し、プロジェクトごとにコンテキストを蓄積していく実験的機能です。
v1.10.0で不要な機能を大幅に削除して身軽になった拡張機能に、「自分自身が欲しかった」新しい機能を一つだけ追加しました。
この拡張機能について
Claude Code、OpenAI Codex、Gemini Code Assistなど、VS Code Terminalで動くAIコーディングアシスタントを使うとき、日本語・韓国語・中国語などのIME入力でEnterキーが誤送信される問題を解決する拡張機能です。
VS Code Marketplaceで「Input Assistant for Claude Code」と検索してください。
思考ノートとは何か
一言で言うと
コーディング中のターミナルI/Oをバックグラウンドで観測し、ローカルLLMが定期的に要約してノートを作る機能です。
着想のきっかけ:座禅いぬ氏のDMN
この機能のきっかけは、座禅いぬ氏(@zazen_inu)のQiita記事でした。
[考え続けるコンテキストエンジニアリング:DMNを実装する]
脳科学のデフォルトモードネットワーク(DMN)——人間が安静時に脳がバックグラウンドで情報を統合・整理する仕組み——をAIワークフローに応用するというアイデアで、ObsidianとClaudeを組み合わせた実装が紹介されていました。
もう一つ、座禅いぬ氏の記事[AIがなくても生きていける]
でカーネマンの「ファスト&スロー」——直感的な「速い思考(System 1)」と論理的な「遅い思考(System 2)」——について触れられていたことも、この機能の内部コードネーム「System 2」の着想元になりました。
紙に書く行為がSystem 2を強制起動させるように、ローカルLLMがバックグラウンドで「遅い思考」を代行する、というイメージで思考ノートを実験的に作ってみました。
なぜ作ったのか
Claude Codeとの長いセッションで、「さっき何を議論していたか」「このプロジェクトで前回どこまで進んだか」を忘れることが多くありました。AIに毎回コンテキストを説明し直すのは非効率です。
座禅いぬ氏のDMNアイデアと、Input Assistantの「I/O通過点」としての立地が結びついて、「セッション中のやりとりをローカルLLMに静かに観察させて、自動的にメモを残す」という設計が生まれました。
すべての処理はローカルで完結します。外部APIには一切送信しません。
書いていて思いましたが、メモの保存先をObsidianにしたら、さらにおもしろい事ができるかもしれませんね。
仕組み:Record Pulse と Review Pulse
思考ノートは2段階の「蒸留」メカニズムで動きます。
Record Pulse(観測要約)は、ターミナルのI/Oバッファが一定量溜まったタイミングで発火します。直近のやりとりを要約し、プロジェクト別のノートに追記します。「今この瞬間に何をやっているか」のスナップショットです。
Review Pulse(定期統合)は、一定時間の入力アイドル後に発火します。蓄積されたRecord Pulseの結果を統合し、グローバルノートを更新します。「このプロジェクト全体で何が起きているか」を俯瞰するレビューです。
Record PulseとReview Pulseにはそれぞれ独立したシステムプロンプト(recordSystemPrompt / reviewSystemPrompt)を設定できます。「観測時は事実ベースで簡潔に」「統合時はパターンや矛盾も含めて」といったカスタマイズが可能です。
プロジェクト別 + グローバルの二重管理
v1.10.0で追加したプロジェクト管理機能と連動しています。Record Pulseは現在のプロジェクトのノートを更新し、Review Pulseはグローバルノートを更新します。
プロジェクトAで作業中はプロジェクトAのコンテキストが蓄積され、プロジェクトBに切り替えればプロジェクトBのコンテキストに切り替わります。グローバルノートにはプロジェクト横断の洞察が残ります。
セットアップ
必要なもの
- VS Code + この拡張機能(v1.11.0以降)
- ローカルLLMサーバー(Ollama、LM Studio、またはOpenAI互換サーバー)
手順
1. ローカルLLMを起動する
Ollamaの場合:
# インストール(まだの場合)
# https://ollama.com からダウンロード
# モデルを取得して起動
ollama pull gemma3:4b
ollama serve
2. 拡張機能の設定で有効化する
入力パネルを開き(Ctrl+K Ctrl+J)、Settings タブ → 思考ノートサブタブで以下を設定します。
- Enable: ON
-
LLM Preset:
ollama(デフォルト)、lmstudio、またはcustom - Model: ドロップダウンからモデルを選択(Ollamaの場合は自動取得)
- 接続テスト: ボタンを押して接続確認
初回有効化時にプライバシー通知が表示されますが、設定や他の機能の操作はブロックされません。
ガイドタブにもLevel 4「Experimental」としてStep 10「思考ノートを試す」を追加しているので、初めての方はそちらも参考にしてください。
3. Activity Barのサイドパネルを確認する
有効化すると、Activity Barに「Input Assistant」パネルが表示されます。
ここで思考ノートの内容、LLM接続状態(緑/赤ドット)、次回アクションのカウントダウンが確認できます。
パネルを開いている間は5秒間隔で自動リフレッシュされ、閉じると停止します(リソース効率化)。
推奨モデル
サイドパネルのヘルプにハードウェア別の推奨モデルが載っていますが、ざっくり以下の通りです。
| ハードウェア | 推奨モデル | 用途 |
|---|---|---|
| 軽量(8GB RAM) | gemma3:4b |
まず試すならこれ |
| 標準(16GB RAM) | gemma3:12b |
バランス型 |
| 高性能(32GB+) |
qwen2.5:32b等 |
より高品質な要約 |
サイドパネルの使い方
ノートの確認
サイドパネルにはプロジェクトノートとグローバルノートが折りたたみ式で表示されます。コーディングを進めるうちに、Record PulseとReview Pulseが自動的にノートを更新していきます。アイドル状態ではクールダウン残秒数や入力待機状態がステータスに表示されるので、次のパルスがいつ発火するかも把握できます。
入力パネルへの挿入
サイドパネルのナビゲーションアイコンから入力パネルを開き、「入力パネルに挿入」ボタンで思考ノートの内容を入力テキストに追加できます。蓄積されたコンテキストをAIへの指示に手動で含める方式です。
当初は自動注入も実装していましたが、意図しないタイミングでコンテキストが挿入される問題があったため、手動挿入に変更しました。実際に使ってみると、必要なときだけ明示的に挿入するほうが制御しやすいです。
I/O Feed
サイドパネル内にリアルタイムのI/Oフィードを表示できます。配置は上部・下部・非表示から選択可能です(feedPosition 設定)。
選択範囲送信(Ctrl+Shift+Q / Cmd+Shift+A)でエディタのテキストを送信した場合も、I/Oバッファに反映されます。
画面としては、以下の感じになります。
設計上の判断
なぜ「System 2」から「思考ノート」に改名したのか
前述の通り、座禅いぬ氏の記事で触れられていたカーネマンのSystem 1 / System 2がコードネームの由来です。
ただ、実際にユーザーに説明すると「System 2って何?」という反応がほとんどでした。
認知科学に馴染みのないユーザーにとって、「思考ノート」のほうがUIラベルとして直感的です。
なぜすべてローカル処理なのか
思考ノートはバックグラウンドで何度もパルスを回す仕組みです。これをクラウドAPIでやると、要約のたびにトークンを消費し、APIコストが積み上がります。ローカルLLMならコストゼロで無制限にパルスを回せる。バックグラウンド処理との相性が圧倒的に良いです。
もう一つの利点はネットワーク非依存であること。オフライン環境や回線が不安定な場面でも、ローカルLLMさえ起動していれば思考ノートは動き続けます。
データは ~/.input-assistant/system2/ にJSONLとMarkdownファイルで保存されます。
保存先パスは設定でカスタマイズ可能です。
macOS対応と堅牢化
v1.11.0リリース後、macOS環境でのテストを実施し、いくつかの問題を発見・修正しています。
初期化プロセスの堅牢化
バックグラウンド初期化に冪等性ガードを追加しました。二重実行によるリスナー蓄積を防止し、activate() 内のイベント登録順序も修正しています。思考ノートは拡張機能の起動をブロックしない2段階初期化パターン(同期コア + 非同期バックグラウンド)を採用しており、今回の修正でその設計がより堅牢になりました。
防御的フォールバック
サイドパネルの表示モード(text / ecg / minimal)に不正な値が手動入力された場合にパネルが空白になる問題を修正。不正値は text に自動正規化されます。設定をJSONで直接いじるユーザーがいることを想定した防御です。
macOS 既知の問題(調査中)
macOS環境で思考ノートが有効な場合、Electronレベルのエラーが報告されています。
拡張機能のコードに直接的な原因は見られませんが、テストとして思考ノートを無効にするとエラーが再現しないため、相関関係を調査中です。
現在の機能一覧
| カテゴリ | 機能 |
|---|---|
| 入力 | 日本語IME対応、Webviewベース入力パネル |
| 多言語UI | 6言語対応(en, ja, fr, de, zh-cn, ko) |
| 翻訳 | 7プロバイダー対応(Google Cloud, DeepL, OpenAI, Gemini, Claude, ローカルLLM, 非公式) |
| 履歴 | 入力履歴(50件)、お気に入り(20件)、検索機能 |
| Guardrails | AI別の設定テンプレート自動挿入(多言語対応) |
| マルチAI | Claude Code, OpenAI Codex, Gemini Code Assist, VS Code Chat |
| プロジェクト管理 | データをプロジェクト別にスコープ、切替・作成・削除 |
| ガイド | 4レベル段階的チュートリアル(10ステップ) + VS Code Walkthrough |
| 思考ノート 🆕 | ローカルLLM推論エンジン、プロジェクト別コンテキスト蓄積、サイドパネル |
実験的機能であるということ
思考ノートは「実験的」と位置づけています。自分自身が毎日使ってみて、ワークフローに定着するかを確認している段階です。
macOSでのエラーについて、既知の問題も含め、まだ荒削りな部分があります。
今のところ思考ノートは毎日のコーディングで実際に使っていますが、もし使わなくなったら、それも正直に報告してから次に進みます。
95%の機能は失敗する。それでいい。
インストール
VS Code Marketplaceで「Input Assistant for Claude Code」と検索するか、以下のコマンドでインストールできます。
ext install swiftwand.cc-jp-input
参考記事:
- 考え続けるコンテキストエンジニアリング:DMNを実装する by 座禅いぬ氏
- AIがなくても生きていける by 座禅いぬ氏
