infernoflow について
infernoflowはコーディングエージェント向けのローカル優先のメモリシステムで、プロジェクトの注意点、決定、試行、ブックマークをGit管理対象のテキストとして保存します。CLI、VS Code拡張機能、MCPツールでセッション間のコンテキストを引き継ぎ、SaaSサービスは不要です。
主な機能
- 01構造化されたプロジェクトメモリの保存
- 02セッション再開とブックマーク
- 03IDEルールファイルへのコンテキスト注入
- 04エントリーの検索、整理、解決
- 05Git管理されたプロジェクトファイルとの連携
活用シーン
- 01新しいセッションへのプロジェクト決定事項の引き継ぎ
- 02コンテキスト上限後の作業再開
- 03Gitを介したメモリ変更の共有とレビュー
MCP 対応
MCPサーバーはamp_write、amp_read、amp_bookmarkなどのツールを対応クライアントに提供します。CLIやIDE連携と同じローカルの.ai-memoryファイルを読み書きします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 5 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| file | string | いいえ | |
| type | enum | いいえ | gotcha | decision | attempt | note | detection | pattern | preference |
| limit | integer | いいえ | |
| query | string | いいえ |
詳細
🔥 infernoflow
新しい AI セッションは、毎回まっさらな状態で始まります。見つけた落とし穴や下した判断は、次のセッションには引き継がれません。infernoflow がそれらを記憶します。
AI コーディングセッション向けの永続メモリです。コードだけではエージェントに伝えられない落とし穴や判断、行き詰まった経緯を記録し、次の Cursor/Claude Code/Copilot とのチャットに再び反映するので、同じ間違いを二度繰り返すことはありません。
昨日、認証 API はエラー時でも 200 を返すので、ステータスコードではなくレスポンス本文を確認するよう Claude に教えるのに、90 分もかかりました。今日、同じような質問をすると、また if (response.ok) { return data } をあちこちに書くのを目にします。AI が一晩で賢くなくなったわけではありません。ただ、記憶がないのです。
infernoflow は、ローカルファーストの CLI + VS Code 拡張機能 +オープンプロトコル(AMP)で、セッションをまたいで AI に永続的なコンテキストを提供します。SaaS は不要です。ディスク上の JSONL と、IDE がすでに読み込む 3 つのルールファイルを使います。
0.46 の新機能
- Claude Code のセッションごとに最新のメモリを使用 — SessionStart フックが、指示ではなく確認すべき情報として現在のメモリを注入します。古くなるコピーを保持していた
CLAUDE.mdは不要になりました。 infernoflow resume— 1 回の呼び出しで「どこまで進めた?」を確認できます。Claude Code はセッション終了時に、自動でローカルの再開ポイントも残します。- 古くなったエントリーと解決済みのエントリー — その後変更されたファイルに関するエントリーには、古くなっている可能性があります と表示されます。
infernoflow resolve <id>を実行すると、そのエントリーを AI のコンテキストから除外できます。 - Git 経由で届いた内容を確認(0.46.1)— チームメイトが追加したメモリは、確認するまで一覧に表示されます。また、GitHub Action により、各 PR でメモリの変更が表示されます。
- デフォルトでより安全に — 読み取り専用の MCP ツールのみが事前承認されます。memory-keeper エージェントは単一の
infernoflowコマンドに限定され、シークレットはマスキングされます。MCP はプロジェクトごとに登録されます。 infernoflow doctor --e2e(0.46.3)— 使い捨てのサンドボックスで実行するエンドツーエンドのセルフテストです。CLI、すべてのツールを呼び出す MCP サーバー、プロンプトとセッションのフック、Git の変更検出、作成者情報を検証します。さらに、プロンプトフックはエージェント/ツールのテキストを無視し、メモリモードのプロジェクトにはコントラクトツールを提示せず、Git の変更検出では Git の失敗が報告され、すべてのエントリーに作成者が記録されます。
全変更履歴:CHANGELOG.md。
セッションのブックマーク
セッションの途中で名前付き再開ポイントを作成できます。コンテキストウィンドウがいっぱいになったときや、リスクの高い変更を行おうとしているときに、コマンドを 1 つ実行するだけで、現在のセッションのトランスクリプトを記録し、ジャンプ可能なチェックポイントとして保存できます。
infernoflow bookmark "before the SP refactor"
チャットで伝えるだけでも構いません。Cursor の beforeSubmitPrompt フックが "bookmark this"/"mark this point"/"save this checkpoint" などのフレーズを検知して、AI の協力なしでブックマークを作成します。また、セッションが長くなってきたことに AI が気づいたときに、amp_bookmark MCP ツールを使って作成することもできます。
--note を指定しない場合は? infernoflow が Claude Code のディスク上にあるトランスクリプト(~/.claude/projects/…/*.jsonl)を読み込み、直近 40 ターンを Markdown にまとめて、ブックマークのコンテキストとして保存します。モデル呼び出しは不要で、完全に決定論的です。いつでも振り返ることができます。
infernoflow bookmark list # ● has context, ○ marker only
infernoflow bookmark show "SP refactor" # jump back — see the whole snapshot
ブックマークは自動的に削除されることはありません。また、infernoflow switch の ## 🔖 Bookmarks — Resume Points セクションに表示されるので、次のセッションは作業を中断したところから再開できます。
🆕 プロアクティブな記録 — Claude のスキル+メモリー管理エージェント
init は .claude/ に2つの項目をインストールするようになりました。これにより、Claude Code でループが自動的に動作します。
infernoflow-memoryスキル(.claude/skills/)— エージェントに、まずresumeでウォームスタートし、実際に遭遇した落とし穴、「なぜなら」を伴う判断、行き止まり、長期的に有効な好みをプロアクティブにlogする方法を教えます。また、作業を止めるときや 「これをブックマークして」 と言われたときに、bookmarkを残します。記録はバランス重視です。定型的な手順、コードを見れば明らかなこと、秘密情報、重複は記録しません。memory-keeperサブエージェント(.claude/agents/)— 委任できる専門エージェントです。セッションをくまなく確認し、すでに保存されている内容との重複を排除し、残す価値のある内容を記録し、ブックマークを残して、結果を報告します。コードの編集や秘密情報の記録は行いません。また、ガードによってシェルの実行を単一のinfernoflow読み取り/記録コマンドに制限します(ガードを実行できない場合はブロックされます)。
どちらも infernoflow init で自動的にインストールされます(新規プロジェクトでも、既存プロジェクトで再実行した場合でも同様です)。パッケージに含まれているため、手動でのセットアップは不要です。
ループ
現在、新しい AI セッションは毎回コールドスタートです。エージェントはコードを読み直し、明白なことを再導出し、誰かが昨日行ったのと同じ誤った手順をまた実行します。infernoflow は、次の4段階でこのループを閉じます。
- 記録 — あなたとエージェントが作業している間、保存する価値のある出来事が自動的に記録されます。遭遇した落とし穴、下した判断、失敗した修正の試み、気づいたパターン、マークした再開ポイントなどです。AI は
amp_writeMCP ツールを使って記録します。ルールファイルに挿入されたプロトコルブロックが、いつ記録すべきかを正確に教えます。プロンプトフック(Claude Code のUserPromptSubmit、Cursor のbeforeSubmitPrompt)は、AI が記録しない場合に、あなたが入力したテキストをスキャンして問題の兆候(not working、still broken、same error。短いプロンプトの場合のみ!!/retry)を検出し、決定論的にエントリーを書き込むことで、AI を補完します。サブエージェントからの引き継ぎ、システムリマインダー、フェンス付きまたはインデントされたコード、引用文、スタックトレースはスキップされます。Cursor のフックは 「これをブックマークして」 もブックマークに変換します。 - リンク — 記録された各出来事は、タイムスタンプ、
file:line、タグ、安定した AMP ID を持つ構造化された AMP エントリー(gotcha | decision | attempt | note | detection | pattern | bookmark)になります。 - 永続化 — エントリーは
.ai-memory/branches/<branch>.jsonl(Git で追跡され、ブランチとともに移動するため、チームメイトも引き継げます)と.ai-memory/global.jsonl(個人の好みを保存し、Git の追跡対象外。OS が同期する任意のフォルダーを使ってマシン間で同期できます)に保存されます。 - 復元 — 新しいセッションが始まると、エージェントは起動時に
CLAUDE.md/.cursorrules/copilot-instructions.mdを読み込みます。最も関連性の高いエントリーは、すでにそこにあります。ウォームスタート。コールド状態からの再導出は不要です。
ログインするサービスはありません。SaaS もありません。ディスク上の JSONL、MCP サーバー、そして IDE がすでに読み込んでいる3つのルールファイルだけです。
インストール
npm install -g infernoflow
infernoflow init --yes
実行時依存関係はゼロです。Node ≥ 18 で動作し、macOS、Linux、Windows に対応しています。
init --yes ですべてセットアップできます。.ai-memory/ を作成し、サポート対象のすべての IDE 用のルールファイルを書き込み、Cursor/VS Code Copilot/Claude Code 向けの MCP サーバーを一度に設定し、infernoflow-memory スキルと memory-keeper エージェントを .claude/ にインストールし、クリーンツリーの Git ポリシーを適用し、ループが動作していることを確認できるよう、次のコマンドで表示されるデモエントリーを追加します。
infernoflow status
5つのコアコマンド+4つ
使用例の95%をカバーします。
| コマンド | 機能 |
|---|---|
infernoflow log "..." | 注意点/決定事項/試行内容/メモを記録します。--type gotcha|decision|attempt|preference |
infernoflow resume | 🆕 0.46 1回の呼び出しで「どこまで進めましたか?」を確認できます。最後の再開ポイント、未解決の行き詰まり、最近の決定事項、未コミットの作業を表示します。--file <path> を指定すると、そのファイルに関連する項目を優先します |
infernoflow ask "..." | キーワードで記憶を検索します。注意点が最初に表示されます。--file <path> を指定すると、そのファイルに関する項目を優先します |
infernoflow switch | 次のセッションへの引き継ぎ内容を生成します。--copy を指定するとクリップボードにコピーします |
infernoflow recap | セッション終了時のサマリーを、健全性スコアと未記録の変更の検出結果とともに表示します。git 経由で届いた記憶を一覧表示し、確認済みとしてマークします |
infernoflow status | エントリー、注意点、決定事項、最終アクティビティをすばやく確認します |
infernoflow bookmark "..." | 🆕 名前付きの再開ポイントを作成し、セッションの文字起こしをそのコンテキストとして自動的に記録します。list/show <id|label>/rm で管理できます。switch にも表示されます。自動削除されることはありません。 |
infernoflow refresh | 記憶から CLAUDE.md/.cursorrules/copilot-instructions.md を手動で再生成します |
infernoflow forget <id|prefix> | JSONL を手作業で編集せずに、記憶のエントリーを削除します。最新のものには --last を指定します |
infernoflow prune | 30日以上前の古い note/attempt エントリーをアーカイブします。注意点/決定事項/ブックマークは自動削除されません。既定ではドライランです。実行するには --apply を指定します |
infernoflow resolve <id> | 🆕 0.46 エントリーを修正済み/古いものとしてマークします。検索可能な状態は維持されますが、挿入されなくなります。記録後にファイルが変更されたエントリーには 「古い可能性があります」 と表示されます |
infernoflow curate | 🆕 0.46 古いコミットメモ、重複、苛立ちをそのまま表したプロンプトなど、ノイズを削除します。ドライランです。実行するには --apply を指定します |
infernoflow move <id…> --to <dir> | 🆕 0.46 誤った場所に保存されたエントリーを、別のプロジェクトの記憶に移動します。ドライランです。実行するには --apply を指定します |
任意のコマンドに --project <dir> を指定すると、別のプロジェクトの記憶を操作できます(複数フォルダーのワークスペース、フック、エージェント)。
実際には、これらのコマンドを自分で実行することはほとんどありません。MCP 対応の AI が代わりに実行します。CLI は grep のような調査に使います。
infernoflow commands を実行すると、全コマンド(目的別に分類された約23個)が表示されます。
LMT+MCP 経由で GitHub Copilot Chat に対応
Copilot Chat は VS Code 1.102 以降、MCP サーバーに対応しているため(2025年7月に GA)、MCP ベースの記憶ツールを組み込めます。infernoflow は2つのトランスポートを並行して提供するため、どちらの経路が利用できても Copilot は同じ6つの amp_* ツールを利用できます。
- VS Code Language Model Tools(LMT)。 infernoflow の VS Code 拡張機能は、
amp_writeとamp_readをネイティブの LMT ツールとして登録します。プロジェクトごとの設定も、MCP クライアントのセットアップも不要です。拡張機能をインストールすると、Copilot のツールピッカーに🔥 amp_writeが表示されます。チャットボックスで#amp_write/#amp_readを入力すると、手動で呼び出せます。 - MCP サーバー。
infernoflow initは MCP サーバーも.vscode/mcp.jsonに設定します。そのため、この方法を使いたい場合(またはエージェントモードでも利用したい場合)は、Copilot の MCP クライアントから同じツールを呼び出せます。
Cursor、Claude Code、および MCP に対応したあらゆるクライアントで、同じ MCP サーバーを利用できます。1つの製品、1つのディスク上のファイル、複数のトランスポート — 環境に合った方法を選んでください。どちらも同じ .ai-memory/ に書き込みます。
簡潔に保つ:トークン予算とローテーション
挿入されるメモリブロックには、AI の各ターンごとにコストがかかります(ツールが CLAUDE.md と copilot-instructions.md の両方を読み込む場合は 2 回分です)。infernoflow のデフォルト設定は簡潔です。エントリーは 4 件、コミットは 5 件、切り詰めは 200 文字で、コンパクトな約 3 行のプロトコルを使用します(完全なトリガーテーブルは amp_* ツールの説明と重複するため、デフォルトでは無効です。ファイル/ターンあたり約 430 トークンを節約できます)。.ai-memory/amp.json でさらに調整できます。
"config": {
"injection": {
"maxEntries": 4, // memory entries injected
"maxCommits": 5, // git commits injected
"maxEntryChars": 200, // per-entry truncation
"targets": ["CLAUDE.md", ".cursorrules"], // drop a file from the list and its stale block is stripped automatically
"protocolStyle": "compact" // "compact" (default) · "full" (restore the trigger table) · "off"
},
"rotation": {
"archiveAfterDays": 30,
"archivableTypes": ["note", "attempt", "detection"],
"auto": false // true → silent prune on every `log`
},
"maintenance": "suggest" // "suggest" (default) · "auto" · "off"
}
または、CLI フラグを使って同じ値を設定できます。
infernoflow setup --max-memory 3 --max-commits 5 --max-entry-chars 200 --protocol-style compact
infernoflow refresh --targets CLAUDE.md,.cursorrules # only these get the block; the rest are stripped
infernoflow refresh --targets auto # canonical file for the IDE you're in (kills Copilot's double-load)
infernoflow prune --apply --max-age-days 14 # one-off cleanup
ローテーションでは、古くなった note / attempt / detection エントリーを .ai-memory/archive/sessions-YYYY-MM.jsonl にアーカイブします。これらは統合読み込みには表示されなくなるため(AI、サイドバー、ask、refresh に再表示されなくなります)が、必要に応じて戻せるよう、ディスク上には残ります。gotcha、decision、pattern、bookmark のエントリーは自動削除されません。それこそが、infernoflow に記録した知識です。
メンテナンスのヒント(0.46.5):メモリにノイズ(重複、古いコミットのメモ、マシンが生成したテキスト)が蓄積されたとき、変更済みのファイルに関するエントリーがあるとき、または古いメモが大量にあるときは、status、recap、セッション開始時のコンテキストでそのことを知らせ、コマンド(curate --apply、resume、prune --apply)を提示します。セッション開始時のヒントは 1 日に最大 1 回表示され、何かを実行する前に確認するよう AI に伝えます。"auto" にすると、安全な処理を 1 日に 1 回、自動で行います(ノイズはアーカイブ後に削除され、古いメモはアーカイブに移動されます)。変更済みファイルに関するエントリーは、古くなっているかどうかを人が判断するため、引き続き提案のみとなります。しきい値は調整できます:"maintenance": { "mode": "suggest", "thresholds": { "curate": 3, "stale": 3, "prune": 20 } }。
**2 層の本文:**どのエントリーにも、詳細な detail を付けられます。これは単一の .ai-memory/details.jsonl に保存され(0.44.18 で統合。以前のエントリーごとの details/<id>.md サイドカーは、次回の書き込み時に自動移行されます)、必要に応じて readDetail() で読み込まれ、ルールファイルには挿入されません。簡潔なインデックスは簡潔なまま保たれ、本文を開いたときだけコストがかかります。log --detail、--detail-file、MCP の amp_write detail、および新しい amp_bookmark ツールから詳細を追加できます。
ブランチ対応メモリとマシン間同期
チームメイトがあなたのブランチを取得すると、メモリも引き継がれます。
.ai-memory/
├── branches/
│ ├── main.jsonl ← project-wide truths (git-tracked)
│ └── feature-auth.jsonl ← your current branch's work (git-tracked)
├── details.jsonl ← long-form entry bodies (git-tracked, loaded on demand)
├── details.local.jsonl ← bookmark transcript snapshots (gitignored, this machine only)
├── global.jsonl ← your personal preferences (gitignored)
└── sessions.jsonl ← everything this machine wrote (gitignored mirror)
-
フィーチャーブランチで記録した内容は、git を通じてそのブランチと一緒に移動します。 チームメイトが
git checkout feature-authを実行すると、JSONL もそこにあります。その人の MCP サーバーが起動して JSONL を読み込み、ルールファイルを再生成するため、あなたがメッセージを送らなくても、チームメイトの AI はあなたの知見をもとに準備された状態になります。 -
届いた内容を確認できます。 git 経由であなたのマシンに届き、まだ確認していないエントリーは、
infernoflow resume(および Claude Code のセッション開始時のコンテキスト)に一覧表示されます。infernoflow recapでは内容を表示し、確認済みとしてマークします。確認状況は、エントリーが名乗る作成者ではなく、エントリーの内容に基づいてマシンごとにローカルで記録されます。誤ったエントリーはinfernoflow resolve <id>で無効にできます。 -
プルリクエストでメモリをレビューできます。 GitHub Action(
action/)は、追加、編集、削除するメモリエントリーを各 PR にコメントするため、全員の AI に反映される前にコードと同様にレビューできます。 -
個人設定は、自分のマシン間で同期できます。 OS が同期する任意のフォルダーを一度指定します:
infernoflow sync set ~/Dropbox/infernoflow-memory
自宅 → 職場 → 自宅。準備が必要なインフラはなく、OS が同期します。
- ブランチの JSONL に
merge=unionを設定すると、異なるマシンからの同時コミットを手動で競合解決せずにマージできます。 - ブランチの切り替えが妨げられることはありません。 ルールファイルが更新されるのは、MCP サーバーの起動時、または明示的に
infernoflow refreshを実行したときだけです。エントリーごとには更新されないため、記録中も作業ツリーはクリーンに保たれます。
IDE を横断 — すべてのツールで同じメモリ
| ツール | 読み込み元 | 書き込み方法 |
|---|---|---|
| Claude Code | CLAUDE.md | MCP(amp_write) |
| Cursor | .cursorrules | MCP(amp_write)+ beforeSubmitPrompt フック |
| GitHub Copilot Chat(VS Code) | .github/copilot-instructions.md | VS Code LMT(拡張機能から)+ MCP(init から)— 両方が接続されます |
| GitHub Copilot(JetBrains) | .github/copilot-instructions.md | MCP(amp_write、手動で接続)— JetBrains Copilot は MCP に対応しています(エージェントモードは GA)。init による自動接続は予定されています |
| Windsurf | .windsurfrules | MCP(amp_write、手動で接続)— Windsurf/Cascade は MCP に対応しています。init による自動接続は予定されています |
MCP サーバーは infernoflow setup / init によって各ツールの設定ファイルに接続されます。ツールごとのセットアップは不要です。
MCP ツール(AI エージェント向け)
MCP サーバーが接続されている場合、AI エージェントはチャットからこれらを直接呼び出せます。
| ツール | 機能 |
|---|---|
amp_write | エントリを記録します(type、msg、任意の file / line / tags / detail)。複数フォルダーのワークスペースでは、別の開いているフォルダーにあるファイルについてのエントリは、そのフォルダーのメモリに記録されます |
amp_resume | 🆕 0.46 「どこまで進めましたか?」— 最後の再開ポイント、未解決の行き詰まり、最近の決定事項、未コミットの変更 |
amp_read | 任意のフィルター(type、query、file — 該当ファイルに関するエントリを優先)を指定してエントリを読み込みます |
amp_search | エントリをキーワード検索します |
amp_bookmark | 🆕 名前付きの再開ポイントを作成します。note が指定されていない場合は、現在のセッションのトランスクリプトを自動的に記録します |
amp_handoff | 次の AI セッション用の引き継ぎドキュメントを生成します |
amp_health | セッションの健全性スコア(A–F) |
infernoflow_status | メモリとプロジェクトの健全性を一目で確認します |
infernoflow_check | 機能コントラクトを検証します(読み取り専用)。フルモードのみ — メモリモードのプロジェクトには表示されません |
infernoflow_context | タスク用の AI 対応コンテキストを生成します。フルモードのみ |
infernoflow_git_drift | 直近のコミットと作業ツリーで変更されたファイルを表示します。フルモードでは、影響を受ける機能も表示します。git が利用できない場合は「変更なし」と報告せず、その旨を通知します |
エントリには、書き込んだユーザーが記録されます。ツールを呼び出した MCP クライアント(Claude、Cursor、Copilot、Windsurf など)、Claude Code からの CLI 呼び出しの場合は claude、エージェントやプロンプトフックの場合は memory-keeper / hook、ユーザーの場合は human です。自動検出を上書きするには、INFERNOFLOW_AGENT を設定してください。著者名と同様、これは書き込み側が申告した情報であり、トリアージには役立ちますが、証明にはなりません。
amp_* ツールは AMP MCP spec §7.3 に準拠しており、ベンダーに依存しません。AMP-Full クライアントが把握する必要があるのは、この6つの名前だけです。同じ6つのツールは CLI エイリアス(infernoflow amp read | write | search | bookmark | handoff | health)としても利用でき、CLI と MCP のインターフェースで名前が完全に一致します。
ルールファイルに挿入されるすべてのメモリ行には 🔥 が付くため、管理ブロックの外で引用されていても、AI(およびユーザー)はその行が infernoflow 由来だとすぐに分かります。AI がその情報を使うときは、プロトコルにより、出典を簡潔に明記するよう指示されます。例:🔥(infernoflow メモリから)src/api.js:42 の注意点:API は 200 ではなく 202 を返す。
実際の開発で見つかったこと(実プロジェクトでの使用)
infernoflow は、マルチテナントのカンバン(infernotest_01)を構築し、そこで明らかになったことを記録しながら開発されました。実際の使用で記録された項目の一部をご紹介します。
- gotcha(
vite.config.ts):「changeOrigin: trueを指定した Vite のプロキシは Host ヘッダーを書き換えます。そのため、サーバー側で URL を構築すると、バックエンドのポートを指す URL が生成されます。ユーザー向けの URL は、クライアント側でwindow.location.originを使って構築してください。」 - gotcha(
server/prisma/schema.prisma):「tsx watch の実行中は、Prisma 6 のquery_engine.dll.nodeがロックされます。そのため、prisma migrate devは名前変更時に EPERM で失敗します。マイグレーションの前に開発サーバーを停止してください。」 - gotcha(
server/src/routes/members.ts):「呼び出し元がすでにワークスペースのメンバーである場合、招待の承認でトークンを消費してはいけません。acceptedAtを設定する前に、既存のメンバーシップを返して早期に終了してください。」 - pattern(
server/src/routes/columns.ts):「順序付きの子要素に位置を割り当てる方法:次の位置 = 既存の最大値 + 1024。1024 刻みにすることで、並べ直しをせずに兄弟要素の間へ約 10 個挿入できます。」 - pattern(
server/src/access.ts):「エンティティをまたぐ認証ヘルパーは、Prisma のネストした選択を使ってwhere: { memberships: { where: { userId } } }を実行します。各アサーションでの DB アクセスは 1 回です。メンバーでない場合は、存在を漏らさないよう 403 ではなく 404 を返してください。」 - decision(
server/src/auth.ts):「JWT ではなく、Session テーブルに不透明なセッショントークンを保存します。セッションごとの失効(Session に対するdeleteMany)が可能になるためです。また、プラットフォーム固有のバイナリを避けるため、ネイティブの bcrypt ではなく bcryptjs を選びました。」
これらは、翌週の火曜日までには忘れて、金曜日の夜 11 時に一から調べ直してしまうようなことです。.ai-memory/branches/*.jsonl にいつまでも保存されます。
VS Code 拡張機能
コンパニオン拡張機能は、メモリを視覚的に表示します。
- ライブサイドバー — 編集中のファイルに関連性の高い順で、gotcha/decision/attempt を表示します。
- Problems として表示される gotcha —
file:lineとともに記録すると、エディターに黄色の波線が表示され、Problems パネルにも行として表示されます。TypeScript のエラーのすぐ隣に表示されます。あなたも Copilot も、同じ間違いを繰り返す前に警告を確認できます。 - ステータスバーの健全性スコア — 常に表示されます:
🔥 B 65 · ⚠3 · ✓2 · ❌1 · 📋 Switch。Switchをクリックすると、引き継ぎ内容をコピーできます。 - Copilot Chat との統合 — チャットボックスで
#amp_write/#amp_readを使用できます。拡張機能が登録した VS Code Language Model Tools を介して Copilot が認識します(MCP クライアントが設定されていなくても動作します)。 - キーボード中心の記録 —
Ctrl+Alt+G(gotcha)/Ctrl+Alt+D(decision)/Ctrl+Alt+A(ask)/Ctrl+Alt+S(switch)/Ctrl+Alt+R(recap)。エディター内で右クリックすると、現在の行に関する gotcha を記録できます。
ext install infernoflow.infernoflow
または Marketplace でご利用ください:infernoflow.infernoflow。.ai-memory/(または旧形式の inferno/)があるプロジェクトで有効になります。
v0.7.9 以降、拡張機能はウィンドウ専用です。ルールファイルを書き込む正規の手段は CLI のみです。拡張機能と CLI の間で競合は発生しません。拡張機能は .ai-memory/**/*.jsonl を監視して表示します。
トラブルシューティング
- infernoflow をアップグレードしたのに、
amp_writeのエントリがまだ正しく表示されません。 IDE の MCP サーバーはセッション開始時にメモリへ読み込まれ、ディスクから再読み込みされません。Cursor / Claude Code / VS Code を終了して再起動してください。infernoflow doctorを実行すると、「MCP runtime v… but CLI v…」という警告が表示されます。 infernoflowが見つかりません。 グローバルインストールが PATH で解決されるまで、npx infernoflowを使用してください。- PowerShell のスクリプト実行がブロックされています。
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypassを実行してください。 - 罫線文字が正しく表示されません。 まず UTF-8 を強制してください:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8。古い PowerShell では自動的に ASCII にフォールバックするはずです。そうならない場合は、issue を作成してください。 infernoflow doctor— 問題がある場合の完全な診断です。MCP ランタイムのスタンプ確認、AI プロバイダーの検出、git フックの状態が含まれます。infernoflow doctor --e2e— メモリが記録されない場合やツールが失敗する場合は、一時的なサンドボックスですべての処理を実行します(プロジェクトや設定には影響しません):記録 → 質問 → 削除、すべてのツールを呼び出す MCP サーバー、サンプル入力を使ったプロンプトとセッションのフック、git のドリフト、帰属情報を確認します。出力を issue に貼り付けてください。infernoflow checkが memory mode と表示します。 通常のinitの後であれば想定どおりです。機能コントラクトは任意です。infernoflow init --mode full --adoptで有効にしてください。CI ではinfernoflow check --strictを使用すると、コントラクトがない場合に失敗します。
これが重要な理由
コードは日々変わります。数々の編集を経たシステムが実際に何をするか、つまり不変条件、制約、先週あなたを悩ませた問題は、コードからは分かりません。infernoflow はそれらを最新の状態に保ち、エージェントに渡すことで、エージェントが一から導き出し直すのを防ぎます。
製品のすべてはこれです。ベンダーロックインなし(ディスク上の JSONL です)。SaaS なし。CLI が 1 つ、VS Code 拡張機能が 1 つ、オープンプロトコルが 1 つ、IDE がいずれにせよ読み込んでいたルールファイルが 3 つです。
セキュリティとプライバシー
ローカルファーストを設計の基本としています。
- ✅ テレメトリーはオプトイン方式で、デフォルトではオフです。 対話型ターミナルで数回実行すると、infernoflow が一度だけ確認します。「はい」と答えない限り、何も送信されません。コード、ファイルパス、メモリの内容が送信されることはありません。
infernoflow telemetry statusで状態を確認または変更できます。 - 🚫
postinstallスクリプトはありません。npm install -g infernoflowはコードを実行せず、ファイルをコピーするだけです。 - 🚫 デフォルトのコマンド実行経路ではネットワーク呼び出しを行いません(テレメトリーはデフォルトでオフです)。
- 🚫 パッケージの自動更新、バックグラウンドプロセス、クラウド同期はありません。
- ✅ MCP はプロジェクトごとに登録されます。 Claude Code にはプロジェクト独自の
.mcp.json(gitignore 対象。このマシンのパスが記録されます)が、Cursor と VS Code には.cursor/mcp.json/.vscode/mcp.jsonが設定されます。いずれも、リポジトリ内のコピーではなく、インストール済みパッケージからサーバーを実行します(infernoflow mcp)。 - ⚠️ プロジェクト外への書き込み: Claude Desktop にはプロジェクトごとの設定がないため、
setupはプロジェクトごとに 1 つのエントリ(infernoflow-<repo>)を追加します。0.45 より前のバージョンでは、すべてのプロジェクトを 1 つのリポジトリに固定する単一のinfernoflowエントリが~/.claude.json/ Desktop の設定に残されていましたが、自動的に削除されます(バックアップは~/.infernoflow/backups/にあります)。個人設定と API キーは~/.infernoflow/に保存されます。 - ✅ 自動挿入されたコンテンツはマーカー(
/)で囲まれます。ブロックの外側にある手動編集箇所が変更されることはありません。 - ✅ 書き込み前にシークレットがマスキングされます — GitHub/npm/OpenAI/Anthropic/AWS/Google/Slack/Stripe のトークン、JWT、秘密鍵、URL の認証情報、
password=形式の値は[REDACTED:<kind>]に置き換えられます。メモリファイルは引き続き、リポジトリにコミットされるプレーンテキストです。コードと同様に扱い、.ai-memory/の差分を確認してください。 - ✅ ブックマークのトランスクリプトスナップショットはお使いのマシン上に保存されます(
.ai-memory/details.local.jsonl、gitignore 対象)。チームと共有されるのは、明示的に記述したコンテキスト(--note、detail)だけです。 - ✅ API キーがプロジェクト内に保存されることはありません — 環境変数はそのまま使用され、貼り付けたキーは
~/.infernoflow/ai-credentials.json(所有者のみアクセス可能)に保存されます。 - ✅ MCP サーバーまたはプロンプトフックからコマンドを実行する際、シェルは使用されません(0.44.20 以降)。MCP ツールの引数はスキーマに照らして検証されます。
- ✅ Claude Code で事前承認されるのは読み取り専用ツールだけです(
.claude/settings.jsonのpermissions.allow)。メモリに書き込むツールは他のツールと同様に許可を求めるため、AI が読み取ったテキストが共有メモリに無断で書き込まれることはありません。 - ✅ メモリは指示ではなくデータです。 挿入されるメモリはそのように明示され、各エントリには作成者と書き込みに使用したツールが記録されます。変更されたファイルに関するエントリには 古くなっている可能性があります と表示され、git 経由で取り込まれたメモリは確認するまで一覧に表示されます(
resume/recap)。 - ✅ フラストレーションフックが保持するのは、トリガーとなったプロンプトの先頭 60 文字だけです。また、その中のエージェントへの制御返却、システムリマインダー、コード、引用、スタックトレースは除外されます。
オプションの infernoflow ai setup コマンドを使うと、いくつかの情報補完コマンド用に AI プロバイダー(Anthropic / OpenAI / Google / Ollama)を接続できます。信頼モデルは、そのプロバイダーを直接利用する場合と同じです。デフォルトではオフです。
ポリシー全文:SECURITY.md。脆弱性の報告先:[email protected] または GitHub Security Advisory。
コミュニティ
- 💬 GitHub Discussions — 質疑応答、アイデア、成果の共有。質問がある場合は、まずこちらをご利用ください。
- 🐛 Issues — バグのみ。機能リクエストは Discussions → Ideas に投稿してください。
- 🔒 Security Advisories — 脆弱性を非公開で報告できます。
ライセンス
MIT — LICENSE をご覧ください。
リンク
- GitHub · ディスカッション · npm · VS Code Marketplace · infernoflow.dev
- AMP プロトコル仕様 — ベンダー中立のメモリ形式
- [実地検証:infernoflow が検出した内容
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。