Mole に AI ツールの整理とメンテナンスを加える
休暇を使って、Mole にもう一つ役立つ機能を加えたいと思いました。不要になった AI のキャッシュ、古いセッションや worktree を整理し、以前入れたまま長く使っていない AI ツールを削除する機能です。
以前、数百本の Mac アプリの削除後の残留を検証していたときにも、AI の不要データを整理したいという声が多く届いていました。ただ、当時の私には、その「不要データ」の多くが大事なものに見えていました。AI Coding の会話記録は重要な資産だと思っていたので、Mole では主に本当のキャッシュや古いバージョンだけを扱っていました。
ところが AI を使い続けるうちに、自分の Mac にも、あまり役立たなくなった生成物やセッション、worktree がたまってきました。やはり必要な仕事だと思い、取りかかることにしました。opencode.db が一つで 62 GB になったという相談もあり、今回はデスクトップアプリもコマンドラインツールも入れ、サインインして実際に使ってから、残したものを調べました。
どうやって調べたか
インストールと削除だけだった前回と違い、今回は利用できたツールにサインインし、自分のプロジェクトで実際に使いました。質問する、エージェントを動かす、コードのインデックスを作る、定期実行のタスクを設定する。多くのデータは実際に使って初めて現れるので、入れただけで開かないアプリでは大半が見えません。ツールごとに、AI がインストール前と後の Mac を比べ、ホームフォルダ、~/Library、/usr/local/bin、シェルの設定に何を書き込んだかを測って台帳に記録しました。そのうえで Mole の「ステータス」でプロセス数とメモリ使用量を確認し、Mole でアンインストールしてから、Mole が挙げなかったものが残っていないかホームフォルダ全体を名前で検索しました。足りなかったものはその夜のうちにコードへ加え、もう一度テストしています。
デスクトップアプリは 13 本を試しました。Devin、OpenCode、Trae、Trae CN、TRAE SOLO CN、Kiro、Qoder、QoderWork、Qoder CN、Lingma、CodeBuddy CN、WorkBuddy、Doubao Work です。実際に使えたのは 12 本で、Lingma はサインイン後に利用枠がなかったため、書き込まれたファイルだけを測りました。コマンドラインでは Amp、opencode、Kimi CLI、Kimi Code、Factory Droid、Copilot CLI、Gemini CLI、Qwen Code、iFlow をインストールして動かし、もともと Mac にあった Claude Code、Codex、Grok、Cursor Agent を合わせて 13 本になります。CC Switch が対応しているツールの一覧にならって、OpenClaw、Hermes、Pi が削除後に何を残すかも測りました。Amp は出来がよく、はっきりした個性があると感じました。Qoder CN はその日に試した中国の AI 製品の中で、おそらくいちばんよく、全体にすっきりしていてわかりやすいものでした。使えなかったものもあります。今回の検証では Gemini CLI に個人の Google アカウントでサインインできず、Qwen Code と iFlow はどちらも自分でエンドポイントとキーを用意する必要があります。
使ってみて初めて、何を書き込むかがわかる
いちばん目に見えたのはメモリです。13 本のデスクトップアプリを同時に開くと合計で約 23 GB を使い、CodeBuddy CN だけで 41 個のプロセス、4.49 GB になりました。ほとんどが VS Code か Electron 系のアプリで、一つのウインドウの後ろに helper が連なっています。そのため Mole の「ステータス」では、アプリごとに子プロセスをすべて合算して 1 行にまとめています。ただのプロセス一覧では、実際に誰がメモリを使っているのか見分けにくいからです。
もっと意外だったのは、システムへの小さな変更です。Devin、CodeBuddy、Kiro、Kimi Code は ~/.zshrc に PATH やシェル統合の行を追加し、Kiro、Trae、Trae CN は初回起動時に root が所有するコマンドのリンクを /usr/local/bin に置きます。アプリを消すと、このリンクはどこも指さなくなります。WorkBuddy は ~/.local/bin に python3.12 を置いたので、以後ターミナルで python3.12 と打つとそちらが動きます。さらに 127 MB の uv Python までインストールしていて、そのときの私の感想は「思ったより行儀が悪い」でした。いちばん面白かったのは Kimi CLI です。一度実行すると、もうメンテナンスしていないと告げたあと、何も聞かずに新しい Kimi Code をダウンロードしてインストールし、.zshrc を書き換え、古いコマンドの名前を kimi-legacy に変えました。
容量の面では、TRAE SOLO の Work モードは初回に約 1 GB のツールをダウンロードし、展開すると 3.1 GB になります。中身は LibreOffice、FFmpeg、OpenJDK を同梱した一式です。デスクトップツール 6 本は、それぞれタスクを 1、2 回こなしただけで、合わせて 5.2 GB のデータを書き込みました。毎日使っている私の ~/.codex はすでに 24 GB で、そのうち 17 GB がセッションです。Claude デスクトップアプリの 14 GB のうち 12 GB は、Cowork が使う Linux 仮想マシンでした。opencode のデータベースはイベント単位で記録するので、一度の質問でメッセージ本文の 3 倍以上を書き込み、セッションを削除してもファイルは縮みません。62 GB に達した人がいるのはおそらくこのためです。
スキルにも落とし穴がありました。スキルのインストーラーの多くは、そのエージェントを持っているかどうかに関係なく、すべてのエージェントのフォルダに skills/ を書き込みます。そのため Qwen Code、iFlow、Droid を一度も使ったことがないのに、私の Mac には ~/.qwen、~/.iflow、~/.factory がありました。Mole の最初のバージョンはこれらを 2.4 MB のツールとして数え、インストール済みのスキルを残存ファイルとして扱う寸前でした。
アンインストールしても残るもの
最初の一巡で 14 本のアプリを削除したあと、改めて検索すると、Mole が挙げなかったドットフォルダがまだ十数個見つかりました。~/.kiro、~/.qoder、~/.qodersec、~/.lingma、~/.codebuddy などに加え、Kiro が ~/.aws に置くサインイン用のトークンファイルもあります。どれも ~/Library の下にはなく、名前がアプリと一致するとも限らないので、一本ずつ調べるしかありませんでした。複数の製品で共有されているものもあります。Trae CN と TRAE SOLO CN は ~/.trae-cn を、Qoder と QoderWork は ~/.qoder を共有しているので、片方を削除するときに、もう片方がまだ使っているフォルダを挙げてはいけません。国際版の Trae を試したときには、Trae CN のフォルダを自分のものとして扱い、しかもキャッシュが最初からチェックされていることもわかりました。修正後、そのリストは 33 行から 14 行になりました。
もう一つの驚きはプロセスでした。翌朝もう一度確認すると、削除したはずの ~/.kimi-code と ~/.factory が復活していました。前の晩にターミナルで開いたままにしていた kimi と droid のセッションがまだ生きていたからです。プログラムのファイルはすでにゴミ箱に入っているのに、プロセスはそのフォルダにログを書き続けていました。続いて gemini、qwen、iflow、amp のセッションもまだ動いていることがわかりました。コマンドラインツールにはウインドウがなく、ターミナルのタブを閉じても終了するとは限りません。アンインストールする前に、動いていないことを確かめておくと安心です。
使ってみると、普段よく使う Claude、Codex、Cursor は節度を保っていると改めて感じました。一方で、インストーラーのダウンロード時に、経路の追跡や集計のためクリップボードへ勝手に書き込むものもあり、そこまでやるのかと思いました。起動するとトークンをもらうキャンペーンのポップアップが出るものもあり、我慢しながら使う感じです。
そんな中で Qoder はうれしい驚きでした。節度があり、見た目もよく、余計なことをしていない。中国からこういうソフトウェアがもっと出てきてほしいです。応援しています。
先に自分で確かめることもできます
ここで紹介する確認に Mole は要りません。ターミナルだけで十分で、下のコマンドはどれも読み取るだけで何も変更しません。
まず、AI ツールがシェルの設定に行を追加していないか確認します。
grep -nE "codeium|codebuddy|kiro|kimi|lmstudio|\.local/bin" ~/.zshrc ~/.bashrc ~/.zprofile 2>/dev/null
各行の先頭にはファイル名と行番号が出ます。その行を追加したツールがもうなければ、テキストエディタでその行を削除してかまいません。事前にファイルをコピーしておき、編集後は新しいターミナルウインドウを開いて、すべて正常に動くか確かめてください。
次に、/usr/local/bin の中でアプリを指しているコマンドと、もう機能していないリンクを探します。
ls -l /usr/local/bin | grep "\.app/"
find /usr/local/bin -maxdepth 1 -type l ! -exec test -e {} \; -print
1 行目はアプリの内部を指すコマンドを、2 行目はリンク先がなくなったリンクを一覧にします。後者の多くは削除済みのアプリが残したもので、root の所有なので、削除には管理者パスワードが必要です。
すでに削除したコマンドラインのエージェントが、まだ動いていないか確認します。
ps -axo pid,lstart,command | grep -E "kimi|droid|gemini|qwen|iflow|amp|opencode" | grep -v grep
これは名前による文字検索です。完全なコマンドとプロセス ID を見て、本当に対象の AI ツールか確かめます。amp は無関係な単語にも含まれます。確認できたものを元のターミナルで終了し、ウインドウが見つからなければ kill とそのプロセス ID を使います。
最後に、これらのツールがどれだけ容量を使っているか測ります。
du -sh ~/.codex ~/.claude ~/.grok ~/.gemini ~/.cursor ~/.local/share/opencode 2>/dev/null
これらのフォルダにはセッションの履歴が入っています。削除する前に、あとで見返したくなるかどうかを決めてください。コピーを残さずに削除した AI との会話は元に戻せません。
大きなフォルダの中身を確かめる
一つの AI ツールのフォルダにも、再生成できるキャッシュ、ダウンロードしたモデル、会話、プロジェクト、他のツールと共有する設定が入ります。名前がキャッシュに見えても、すべて捨ててよいわけではありません。手動なら再生成できるものから確認し、自分の作業はタイトル、日付、バックアップを見ます。worktree は未コミットの変更に加え、コミットが残したいブランチに保存されているかも確認します。
セッションを消して opencode.db が縮まなくても、削除に失敗したとは限りません。SQLite の説明では、削除したレコードのページは通常再利用のため残り、ファイルは縮みません。圧縮は空いたページを回収する作業で、さらに会話を消すことではありません。不要なセッションを決めてからデータベースを保守し、二つを一つの大きな削除操作にしないようにします。
Mole がいまどう扱うか
AI ページは現在 Preview にあり、次のリリースに向けて検証を続けています。入口は「クリーン」画面の遠くにある月で、AI ツールのデータが見つかったときだけ現れ、不要なら設定で非表示にできます。中に入ると、Mole はツールを一つずつ見ていき、見つけたものを「消したら後悔するかどうか」で三つの段に分けます。キャッシュと古いバージョンは自動で再生成されるので最初からチェックが入ります。セッションと worktree は自動では再生成されないので、自分で確認して選びます。長く使っていないツールとメンテナンス項目は最後に並び、こちらもチェックは入りません。
セッションの段では、保存期間を過ぎた Codex の古いセッションを 15、30、90、120 日で絞り込め、展開すると1件ずつタイトルと日付が表示され、個別にチェックを外すこともできます。Mole はまずセッションファイルをゴミ箱にコピーし、それから Codex 自身の削除コマンドを呼ぶので、Codex のインデックスは整合したままです。Claude Code については、プロジェクトフォルダがなくなったセッションだけを挙げます。使い終わった worktree は、未コミットの変更がないことを git が証明できる場合にだけ表示され、作業がすでにメインブランチにマージされていればその旨も添えます。
今回いちばん時間をかけたのは、使っていないツールの段です。Mole は npm、pipx、uv、公式インストーラー、Homebrew が使う決まった場所から AI のコマンドラインツールを探し、30 日間使われておらず、動いてもいないものだけを挙げます。削除するときは、プログラム本体、それを指すコマンドのリンク、設定、セッション、サインイン情報をまとめて処理します。別の製品がまだ使っているデータは残します。Antigravity も ~/.gemini にデータを置き、opencode のデスクトップアプリはコマンドライン版とセッションのデータベースを共有しているからです。使っていないツールが 4 本を超えると、大きい 3 本がそれぞれ 1 行になり、残りは 1 行にまとめられます。Claude Code と Codex はこの一覧に入りません。それらのフォルダはデスクトップアプリの状態でもあるからです。
sudo npm でシステムのフォルダに入れたコマンドラインツールも一覧に出て、削除するときは管理者パスワードを一度だけ入力します。使うほど大きくなる opencode の opencode.db は、セッションを消したあとの空き領域がファイルの 1 割を超え、ファイル自体も 200 MB を超えていれば、この段で圧縮を提案します。セッションは一つも消さず、空いた領域をディスクに返すだけで、圧縮の前に opencode を終了しておく必要があります。
アンインストールの側では、上で触れたドットフォルダが確認用の行として挙がるようになり、最初はチェックが入っていません。複数の製品で共有されているフォルダは、ほかの製品がまだインストールされている間は挙げません。/usr/local/bin にある root 所有のコマンドのリンクもアンインストール時に一覧に並び、Mole の管理者用ヘルパーを通してゴミ箱に移されます。通常のファイルはゴミ箱に残っている間なら取り戻せます。Homebrew で入れたプログラムは Homebrew の削除コマンドを使います。データベースのセッションには書き出した復元ファイルと手順が必要で、すべてをゴミ箱から戻すだけでは元に戻せません。復元用コピーも残っている必要があります。
これらの変更は、Mole の次のバージョンに含まれます。
まだできていないこと
まだ手をつけていないこともあります。AI ツールが追加したシェル設定の行を、Mole が書き換えることはしません。代わりに、アンインストールの詳細でどの行かを示す予定です。Cursor や Conductor などのツールが作る worktree は、まだ私の Mac に実際のデータがないため対象に入れていません。この検証時点では、opencode と Devin の古いセッションを日数で個別に片付ける機能はありませんでした。MiniMax は今回は実機で検証していないため、まだ対応していません。
追記:OpenCode と Devin の古いセッション
10 月 1 日に OpenCode と Devin の古いセッションへの対応をソースに追加しました。保存期間で絞るほか、作業フォルダが確実になくなったものを扱います。オフラインのディスクや読めないフォルダは削除済みとはみなしません。先に復元用コピーを保存してからツールの削除方法を使い、結果を確認します。OpenCode は書き出した JSON、Devin は選んだセッションと関連レコードの復元ファイルを残し、復元手順も付けます。ツールが実行中、または確認に失敗した場合は整理しません。次の Preview 向けの変更で、当時の公開ダウンロードには含まれていませんでした。ユーザーの実際のデータベースで空く容量もまだ測っていません。
以前の 700 本以上の検証も合わせると、ソフトウェア開発の基本を守っていない製品が少なくないことに驚きます。思っていたほど専門的でも、すっきりしているわけでもありません。だからこそ Mole は今のシンプルさを保ち、できることを深め、不要なデータを取らず、ローカルファイルや会話内容をアップロードしないようにしたい。利用統計すら入れず、この細かさを続けていきたいと思います。
Mole に面倒を見てほしい AI ツールがあなたの Mac にあれば、あるいはいちばん困っている片付けがあれば、ディスカッションで教えてください。これまで検証したアプリはすべて検証済みアプリの一覧にあります。手作業で片付けたい場合は、AI コーディングツールの片付けガイドで解説しています。
検証に加え、整理してよいと確認できたものを機能に入れていきます。長く手入れを続けることになりそうです。