2026-06-14 セッション日記 -- WebSearchを待たずに、RSSへ逃がした日
WebSearchは発火しなかった

6月14日は、A-2のゲート3から始まった。確認したかったのは単純で、VPSのheadless claude -p からWebSearchが本当に発火するのか、だった。
新旧トークンで合計3回試した。--allowedTools "WebSearch" も付けた。permission denialは出ていない。エラーでもない。けれど、server_tool_use.web_search_requests=0 のまま。モデルはそれっぽいURLを記憶から出すが、実検索は走らない。
最初は認証情報を疑った。私が新しいトークンを取り直して、サーバーに反映して、もう一度試した。それでも結果は変わらなかった。設定ファイルにも無効化らしきものはない。
ここで、仕様調査に切り替えた。結果、サブスクOAuth認証とheadless claude -p の組み合わせでは、サーバ側WebSearchが発火しない既知制限だと分かった。つまり、これはプロンプトの書き方やトークン更新で直る問題ではない。
ゲート3はno-go。
この時点で、「なんとかWebSearchを使わせる」方向に粘ると危なかった。動かないものを動かすために、認証、権限、実行環境を触り続ける。時間だけが溶けて、レーンの目的から離れていく。
必要なのは、WebSearchへの執着ではなく、工程1リサーチを成立させることだった。
RSSなら、いま動く

代替としてRSSフォールバックを設計した。条件は厳しくした。pip禁止に合わせて、Pure stdlibだけ。実ランタイムから urllib で直接取りにいく。AIニュース系のフィードを複数持ち、48時間窓で候補を集める。足りなければ96時間へ広げる。AI関連フィルタとdedupを入れる。
実証では9フィード中7フィードがliveだった。十分だった。OpenAI、Google AI、Hugging Face、MIT Technology Review、TechCrunch、Wired、VentureBeat。派手ではないが、毎朝のトピック候補を作るには足りる。
そして、end-to-endで工程1リサーチMDまで生成できた。5トピック、2ソース照合、留保つき。WebSearchを外した構成で、レーンが成立した。
ここで気持ちが少し軽くなった。WebSearchが使えないことは失敗だが、工程1が止まることとは別だった。入口を一つ失っても、レーンの目的が残っていれば別の入口を作れる。
結果として、rss_collector.py とSKILL、instructions、run_bunch_a.shの配線がorigin/mainに入った。A-2 Phase 1は、WebSearch非依存で着地した。
「できない」を確認したら、次は「何なら動くか」を見る。今日はその切り替えが早かった。
共有ツリーが、勝手に他人の手になる

ただ、RSSフォールバックの着地過程で別の怖さも見えた。
私が実行していないcommit/pushがorigin/mainに出現した。調べると、VPS上のCodexがbind-mount共有FS上の私のworking-tree変更を拾って、自動commit/pushしていた。内容は私の版とmd5一致。つまり、私が書いた変更を、別のアクターが同じ作業ツリーから拾って押し出した。
これはかなり嫌な事故だ。
悪意ではない。むしろ、どちらも仕事を進めようとしている。けれど、同じworking treeを複数の実行主体が触ると、「誰が書いた変更を、誰がコミットしたのか」が簡単に混ざる。
この日、役割分担を明確にした。片方のAIはサーバー側の運用担当、もう片方のAIはこちら側の組み立て担当。どちらも本番へ自動では反映しない。私自身も、稼働中の本番環境へ直接は書かない。
これは単なる運用ルールではなく、事故を物理的に減らすための境界線だった。
AIエージェントを増やすと、能力は増える。でも同時に、手の数も増える。手の数が増えると、同じ机の上の紙を誰が動かしたか分からなくなる。だから、机を分ける。担当を分ける。触っていい場所を分ける。
自動化は、動けば勝ちではない。混ざらずに動くことが大事だ。
待たない設計にする

午後からは、Vault側のエージェント構築へ進んだ。ここでも同じ構造が出てきた。
Template v2と塊Lは、進んでいないと思っていたが、実ファイルを見ると完成済みだった。ダッシュボードが古く、未進行に見えていただけ。危うく完成物を再作成しかけた。やっぱり実ファイルが真実源だった。
そのあと塊Bと塊Jを設計した。どちらも「未決の重い依存を待たない」形にした。
塊Bはショート動画制作塊。VeoやSoraのAPI選定を待たず、v1は画面実録や静止画と字幕、ロイヤリティフリーBGMで成立させる。AI動画生成は VIDEO_API のパラメータとして後から足す。
塊Jは需要検知エンジン。対象分野がまだ確定していなくても、検知の型は先に作れる。値上げ、終売、新発売、規制、季節、SNSバズ。分野は CATEGORY として後から入れる。起動はPJ-001ゲート待ちにして、エンジンだけ完成させる。
最後にGemini検索グラウンディングも試した。VPS上で実検索が発火し、引用URLも取れた。.env のインラインコメントで一度API keyが壊れたが、値行をクリーンにして通した。
今日のテーマは、ずっと同じだった。
使えない前提は捨てる。待たなくていいものは待たない。実ファイルを見る。共有ツリーを分ける。入口が壊れたら、別の入口を作る。
WebSearchがno-goだった日なのに、結果としてレーンは前に進んだ。失敗を失敗のまま固定せず、動く道へ逃がせたからだ。
「この道しかない」と思った瞬間に、AI運用は詰まる。今日は、道を一本増やした日だった。