アプリを更新した翌朝、先週の相談をもう一度読み返そうとして、手が止まりました。以前は開けていたはずの「会話履歴」のページが、どこにも見当たらないのです——壁紙アプリのストア文面のように、どの案を捨てたのか理由を確かめたいだけのときほど、焦ります。個人開発で壁紙アプリを更新し続けていると、判断の理由を会話の中に置きっぱなしにしがちで、私自身この種の行き違いに何度も覚えがあります。
結論から言うと、ページは不具合で消えたのではなく、公式の変更で意図的に廃止されたもののようです。公式の changelog(更新履歴)では、v2.28.2(10月29日)の項目に「会話履歴ページを廃止し、検索ボタンへ」という趣旨の記載があります。
ページが無くなったあとに過去の会話へ戻る入口は三つあります。あわせて、あとから探しやすい会話にしておく工夫もお伝えします。なお、画面についての記述は changelog に基づくもので、私自身の画面で確かめたものではありません。スクリプトだけは、動作を確かめたうえでお渡しします。
まず、状況を見分けます
「履歴が見つからない」には、原因が二つあります。
- 仕様が変わった: 2.28.2 以降の版で、履歴ページへの入口自体が無くなった
- 会話が消えた: 再起動や更新のあとにサイドバーが空になった
前者は、直すものがありません。探し方を切り替えるだけです。後者は別の話で、診断と復旧の手順をこちらの記事にまとめています。
見分け方はひとつです。アプリの版を確認し、2.28.2 以降なら前者を疑うことです。会話そのものは、ディスクの上に残っているのが普通です。
入口 1:検索ボタンから探す
changelog によると、履歴ページの代わりに置かれたのは検索ボタンです。画面のどこに出るかは版や配置で変わりうるため、ここでは場所を断定せず、使い方の考え方だけ書きます。
検索語は、会話の「題名」より中身の固有名詞で探すほうが当たります。たとえば、ファイル名、エラー文言、決めたことを表す短い言葉です。「あの相談」では引っかからず、storeListing のようなファイル名なら引っかかる、ということがよくあります。
入口 2:会話ナビゲーターで、ひとつの会話の中を辿る
v2.28.1(10月28日)で、会話ナビゲーターが加わったと changelog にあります。ターンごとに点が並び、長い会話の途中へ戻りやすくなるものです。
使いどころは、会話そのものは見つかったけれど、欲しい返事がどこにあったか分からないときです。検索ボタンで会話を見つけ、ナビゲーターで中を辿ります。この二段で使うのが、いちばん素直だと考えています。
入口 3:フォルダを直接検索する
アプリの画面から辿れないときは、ディスクを直接見ます。会話の実体は、ホームフォルダ直下の .gemini/antigravity/ 配下に置かれています(場所の確認方法は前掲の復旧記事に詳しく書きました)。
そのうち brain/ には、エージェントが作業中にまとめた計画やメモが入っています。次のスクリプトは、ここを検索語で引き、更新日時の新しい順に並べます。
#!/usr/bin/env bash
# find_in_brain.sh — brain 配下の文書を語で引き、新しい順に先頭 20 件を出す
# 使い方: ./find_in_brain.sh "storeListing"
set -euo pipefail
BRAIN="${HOME}/.gemini/antigravity/brain"
WORD="${1:?検索語を渡してください}"
[ -d "$BRAIN" ] || { echo "brain フォルダが見つかりません: $BRAIN"; exit 1; }
# -I: バイナリを除く / -l: 一致したファイル名だけ / -F: 正規表現でなく文字列として探す
{ grep -rIlF -- "$WORD" "$BRAIN" 2>/dev/null || true; } \
| while IFS= read -r f; do
printf '%s\t%s\n' "$(stat -c '%Y' "$f" 2>/dev/null || stat -f '%m' "$f")" "$f"
done \
| sort -rn | head -20 \
| while IFS=$'\t' read -r ts f; do
printf '%s %s\n' "$(date -d "@$ts" '+%Y-%m-%d %H:%M' 2>/dev/null || date -r "$ts" '+%Y-%m-%d %H:%M')" "$f"
doneなぜ -F を付けるかというと、検索語にドットや括弧が含まれることが多いからです。ファイル名やエラー文言をそのまま渡しても、正規表現として解釈されて取りこぼす、ということが起きません。stat と date に二通りの書き方を並べたのは、Linux(GNU 版)と macOS(BSD 版)のどちらでも動かすためです。順番にも理由があり、GNU 版を先に試さないと、Linux では BSD 流の書き方が別の意味に解釈されて、文字化けのような出力を返します。
一点、お断りがあります。conversations/ 側のファイルが平文で検索できる形式かどうかは、私は確かめておりません。このスクリプトが対象にするのは、文書として読める brain/ だけです。ここで見つからなかった場合は、前掲の復旧記事のとおり、実体の有無を更新日時で確認してください。
あとから探せる会話にする:最初の一行
三つの入口を整えても、探す手がかりが会話の側になければ、結局は当てずっぽうになります。そこで、私が運用に取り入れることにしたのが、会話の最初の一行に、探すための札を置くことです。
[wp-store 1101] ストア文面の見直し:英語の説明文を 3 案に絞る案件を表す短い名前と日付、それから一行の題名。それだけです。検索ボタンで wp-store と入れれば、その案件の会話が日付順に引ける、という狙いです。
つまずきやすいのは、会話に名前を付けず、「あとで覚えているはず」と自分の記憶に預けてしまうことだと思います。更新で画面が変わるたびに、その預け先の脆さに気づかされます。
探す仕組みは画面に任せても、探される側の準備は自分の手元に置く。 この線引きで運用するようにしています。
次の一歩
まずアプリの版を確認し、2.28.2 以降なら、次の会話の最初の一行に札を置いてみてください。過去の会話が必要になった日に、検索ボタンの一語で戻れるかどうかが、この小さな習慣の試金石になります。