C:/Program Files/Git/clear でセッション一覧が汚れる問題を根絶する
AIコーディングCLIの /clear は履歴削除ではなく残骸セッションを増やす。空セッションの自動退避(猶予は対象別)・clear専用hookでの可視化・新規会話ショートカットの3点で機械的に潰す手順
約3.9万トークンの節約 (API料金換算で約58円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「C:/Program Files/Git/clear でセッション一覧が汚れる問題を根絶する」は、AIのしつけカテゴリのAI指示書(MDファイル)です。AIコーディングCLIの /clear は履歴削除ではなく残骸セッションを増やす。空セッションの自動退避(猶予は対象別)・clear専用hookでの可視化・新規会話ショートカットの3点で機械的に潰す手順この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約3.9万トークン(API料金換算で約58円)・92%のトークンを節約できます。
- カテゴリ
- AIのしつけ
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約4.2万トークン
- この巻物使用時
- 約3,500トークン
- 節約量
- 約3.9万トークン (約58円)
- 更新日
- 2026-08-20
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/c-program-files-git-clear/raw を読み込んで、この指示書どおりに実装して"
中身
Claude Code の /clear でセッション一覧が汚れる問題を根絶する
VSCode 拡張(および CLI)で /clear を多用すると、セッション履歴が「中身のない残骸」で埋まり、
さらに「押したか分からず何度も押す」という体験の悪化が起きる。この指示書はその3つの原因を分離して
機械的に潰す手順。AI エージェントに読ませればそのまま実装できる。
前提の理解(ここを間違えると対策を誤る)
/clearは履歴の削除コマンドではない。 「会話文脈をリセットして新しいセッションを始める」機能。 だからセッション一覧からは何も消えない。一覧から消す操作は各行のゴミ箱アイコン(下記の通り 「非表示化」であって実体削除ではない)。/clearは押すたびに残骸セッションを1件作る。 そのセッションの JSONL には/clearの コマンド記録(<command-name>/clear</command-name>等)しか入っていない。数KB・実発言0件・応答0件。- 拡張のゴミ箱アイコンは実体を消さない。 セッション ID を「非表示リスト」に足すだけで、
JSONL は
~/.claude/projects/<プロジェクトdir>/<uuid>.jsonlに残り続ける。 - hook が返す文字列は VSCode 拡張の UI に描画されない。
statusLine設定もスキーマ上は 受理されるが webview 側に描画実装が無い(拡張の bundle をgrep -o "statusLine[A-Za-z]*"で 確認できる: extension.js に数件ヒット / webview に0件)。可視化したいなら「AI の応答に言わせる」しかない。
対策1: 残骸セッションを自動で一覧から外す(掃除の自動化)
常駐スクリプト(Python/Node どちらでもよい)を 30 秒間隔で回し、次の条件を全て満たす JSONL を
~/.claude/projects/_deleted-backup/_empty/ へ move(削除ではなく退避) する。
- ファイルサイズが小さい(例: 200KB 未満。大きいものは読まずに除外して誤検出と I/O を防ぐ)
typeがuser/assistantの行のうち、本文が空でないものが0件 (<local-command-caveat><command-name><command-message>のようなコマンド記録は「発言」に数えない。 1件でも実発言・実応答を見つけた時点で即 false を返す=早期打ち切り)- 最終更新から一定時間が経っている
最後の「猶予時間」の設計がキモ:
| 対象 | 猶予 | 理由 |
|---|---|---|
| 通常のセッション(実発言あり) | 600 秒 | 書き込み中・稼働中を絶対に触らないため長めに取る |
| 空の残骸セッション | 90 秒 | 実発言0・応答0で失う情報が無く、実体も退避先に保全されるので長く待つ意味がない |
同じ猶予を使い回すと「10分間は残骸が一覧に居座る」=人間には「消えていない」と体験される。 空セッション専用の短い閾値を別定数で持たせること。
実装メモ:
- 退避先は「バックアップ」であり削除ではない。復元できる形を保つ(過去のセッションは資産)。
- スクリプトを書き換えたら常駐プロセスの再起動が必須(起動時のコードを保持するため)。 再起動手順は「heartbeat ファイルの PID を kill → heartbeat を削除 → 再起動」。heartbeat を消さないと 「最近生きている」と誤判定して再起動がスキップされることがある。
- 単一インスタンス保証は heartbeat ファイル(PID + mtime による stale 判定)で行う。
対策2: /clear したことを可視化する(二重押しの防止)
多くのエージェント CLI には SessionStart 系の hook に「起動理由」のマッチャがあり、
/clear 由来の起動だけで発火させられる(例: matcher に clear を指定)。UI に描画されないので、
hook の出力で「応答の1行目に必ず印を出せ」とエージェント自身に指示するのが唯一効く経路。
hook スクリプトの骨子(Node、依存ゼロ):
#!/usr/bin/env node
import fs from "node:fs"; import os from "node:os"; import path from "node:path";
let sid = "";
try { sid = JSON.parse(fs.readFileSync(0, "utf8") || "{}").session_id || ""; } catch {}
const hhmm = new Date().toLocaleTimeString("ja-JP", { hour: "2-digit", minute: "2-digit" });
try {
fs.writeFileSync(path.join(os.homedir(), ".claude", "last-clear.json"),
JSON.stringify({ at: new Date().toISOString(), session_id: sid }, null, 2));
} catch {}
process.stdout.write(
`【/clear 直後のセッション】${hhmm} に /clear が実行され、この会話は文脈ゼロの新セッション。` +
`最初の応答の1行目に必ず \`🧹 /clear 済み(${hhmm})\` と表示せよ(省略禁止)。\n`);
- stdin が空でも落ちないようにする(hook の呼ばれ方は環境差がある)。
- 時刻をファイルにも残すと「本当に発火したか」の診断ができる。
- 効果: 印が出れば実行済み、出なければ未実行と判断できるので同じ操作を繰り返さなくなる。
対策3: そもそも /clear を使わない(推奨)
VSCode 拡張には「新しい会話」コマンドがあり、キーボードショートカット(Ctrl/Cmd+N)は既定で無効。 ユーザー設定で有効化する:
{ "claudeCode.enableNewConversationShortcut": true }
これで Claude パネルにフォーカスして Ctrl+N を押すと新しい会話が開く。利点:
- 画面が明示的に切り替わるので「押したか分からない」が構造的に起きない(=二重押し不能)
/clearのようなコマンド記録だけの残骸セッションが作られない- 設定変更の反映はウィンドウの再読み込み(
Developer: Reload Window)または次回起動時
導入後の検証(ここまでやって初めて「直った」と言える)
- 掃除スクリプトを1回パスで実際に実行し、ログに「残骸を退避した」旨が出ることを確認する。
- 稼働中セッションの JSONL が無傷であることをサイズ・mtime で確認する(最重要の退行チェック)。
- 常駐プロセスが生きていることを PID で確認する(heartbeat の PID がプロセス一覧に居るか)。
- 可視化 hook は
echo '{"session_id":"test"}' | node <hook>で単体実行し、出力文字列を目視する。 - UI 側の見え方(印が出るか、ショートカットが効くか)だけは人間の1回確認に残る。ここは正直に伝える。
落とし穴
- 「一覧から消えない」を
/clearの不具合と誤診しない。仕様であり、原因は別(残骸の蓄積・非表示化の仕組み)。 - 猶予時間を一律に長く取ると「消えない」体験が残る。逆に一律に短くすると稼働中セッションを触る危険がある。対象別に分ける。
- 残骸を削除しない。退避(move)にする。誤検出時に戻せる状態を必ず残す。
- スクリプト修正後の常駐再起動を忘れると「直したのに直っていない」になる。
よくある質問
+「C:/Program Files/Git/clear でセッション一覧が汚れる問題を根絶する」とは何ですか?
AIコーディングCLIの /clear は履歴削除ではなく残骸セッションを増やす。空セッションの自動退避(猶予は対象別)・clear専用hookでの可視化・新規会話ショートカットの3点で機械的に潰す手順
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約4.2万トークンかかりますが、この巻物を使えば約3,500トークンで済みます。差し引き約3.9万トークン(API料金換算で約58円)・92%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
AI運用ルールを機械的に守らせる hook 設計 — ルール文が守られない本当の理由
チームでAIエージェントを使うと運用ルールが必ず守られなくなる。真因は「読んでいない」ではなく hook がそのマシンで登録されていない/委譲先が沈黙して壊れていること。禁止=実行前拒否・誘導=依頼時の具体コマンド注入・担保=セッション開始時の自己修復の3層、明示例外の短命トークン、warn→blockの段階昇格、BOM/サンドボックス/timeout など失敗が沈黙する罠と、環境依存で落ちないテストの作り方までを実測ベースでまとめた導入手順。
マキモノ検索スキル — AIが自分で巻物を探して使えるようになるMD
あなたのAIエージェント (Claude Code等) にこのMDを読ませると、開発タスクを受けたとき自動でマキモノAPIを検索し、最適な指示書を取得してから作業するようになります。導入は貼るだけ。
無人AIセッションのバックグラウンド委譲が静かに殺される事故を潰す
ヘッドレスで起動したAIエージェントがバックグラウンド委譲した子プロセスは、ターン終了で kill されるのに親は exit 0 を返す。機械的に deny するフック、通知の作り方、対応中フラグの戻し忘れ、Windows製worktreeがLinux側から解決できない罠までを含む恒久対策。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア