daily-log

2026年5月31日の開発日記

今日は朝から晩まで「The model's tool call could not be parsed」が顔を出し続けた。作業の節目ごとにセッションが崩れ落ち、そのたびにリトライを叩き、ダメなら引き継ぎドキュメントへ作業を逃がし、重い読み込みはサブエージェントへ追い出した。malformed という相手の正体をようやく掴み、予防策を /make-diary に焼き込んだのが今日いちばんの収穫になる。その合間に microGPT を会計の言葉で読む教材、家族旅行のガイド量産、tripleBeat の GAAP評価拡充、CDPログイン手順の整備まで手を伸ばした。

今日のタイムライン

タイムライン

今日やったこと

1. microGPTを会計の言葉で読み切る教材

200行の小さなGPT実装を、簿記・会計の言葉(感応度、配賦、予実差異)に翻訳して読み切るインタラクティブ教材を Nuxt/Vue で組ませた。最初は「会計デモを並べれば完成」のつもりだったが、本当のゴールは「実物の200行を各段階に対応づけて読み切ること」だと途中で見えてきて、設計が組み替わった。ハブ→6段パイプライン→9用語ページの構造に、各段の実コード行番号を貼っていった。

主な成果:

  • 純粋関数をテスト先行で固め、32件green・カバレッジ100%
  • 行番号バッジから飛べない問題に気づき、段別ページ化を依頼
  • malformed連発で引き継ぎドキュメント(microgpt-handoff.md)へ退避

詳細: microGPTを会計の言葉で読み切る教材を作った日


2. tool-call-malformedと戦い、予防策をコマンドに焼き込んだ

一日の主役はこれだった。「汚染=巨大ファイル」という思い込みを捨て、真因が「モデルが生成するツール呼び出しの引数構造の破綻」だと理解し直した。0.1MBの小さなセッションが落ち、48MBの画像だらけセッションが完走していた事実が、サイズ犯人説を退けた。掴んだ予防策を /make-diary スラッシュコマンドに書き込んで、次回以降も効くようにした。

主な成果:

  • 原因をマークダウンに整理(巨大ファイル説の否定)
  • 予防策3つ(サブエージェント分離=本命/作業の小分け/引き継ぎメモで別セッション継続)を確立
  • /make-diary に予防セクションを追加

詳細: tool-call-malformedと一日戦って、予防策を /make-diary に焼き込んだ


3. 大分・熊本の家族旅行ガイドをagent-browserで量産

8月の家族旅行に向けて、宿(日田)を旅程アプリのカレンダー・地図ピン・本文に反映させた。日田・阿蘇・別府杉乃井の観光名所を agent-browser に調べさせ、写真付きの独立ガイドページとして量産した。Wikimedia Commons の実在画像をホットリンクで貼り、日田7枚・阿蘇12枚が表示に成功。中岳火口の見学規制など、調査で拾った制約もガイドに書き込んだ。

主な成果:

  • 観光ガイドを独立ページとして複数本量産(写真付き)
  • guides.json 未登録でインデックスに出ない問題を修正
  • 旅程アプリのカレンダー・地図ピンに宿情報を反映

詳細: 大分・熊本の家族旅行ガイドを agent-browser で量産した日


4. tripleBeatのGAAP評価を9銘柄に拡充、散布図に切替を実装

昨日の積み残し(散布図のGAAP/Non-GAAP切替)を掘り起こし、横軸に要るトレーリング実績GAAP EPSをサブエージェント並列で9銘柄ぶん取得・検証させた。データファイル gaapValuation.ts を作り、散布図ページに basis ref + watch で切替UIを足した。手書きデータの四半期合計・PER算出をテスト化して、整合の番人にした。

主な成果:

  • 9銘柄のGAAP評価データを追加(2銘柄ずつEditで積み上げ)
  • 散布図にGAAP/Non-GAAP切替UIを実装
  • 全58件のテストでデータ整合を固めた

詳細: tripleBeat の GAAP評価データを9銘柄に拡充し、散布図にGAAP/Non-GAAP切替を実装した


5. ログイン済みChromeにCDPで繋ぐ手法を手順化し、別系統のAIにレビューさせた

ログイン済みChromeをAIが操作する仕組みは拡張機能ではなくCDP(リモートデバッグ)だと腑分けし、Chrome 136+のプロファイル制約と144+のアタッチ方式を手順書にまとめた。codex側で先にできていた chrome-login-cdp スキルをレビューし、さらに自分のレビューをcodex自身に再帰検算させた。別件で台湾月次売上→Turso取り込み手順書をcodexに4周レビューさせて収束させ、翌日の積み残しにした。

主な成果:

  • CDP接続の仕組みと Chrome バージョン別仕様を手順書化
  • chrome-login-cdp スキルをレビュー(codexにも再検算させた)
  • tw_monthly_revenue_ingest を再帰レビューで収束 → 明日へ積み残し

詳細: ログイン済みChromeにCDPで繋ぐ手法をドキュメント化し、別系統のAIにレビューさせた


6. 16本の特集記事をagent-browserで巡らせて1本にまとめた

Yahoo!ファイナンスの資産形成連載(No.1〜16)を agent-browser で全記事アクセスし、無料公開範囲を16本ぶん収集して1本のまとめに統合させた。取得→ファイル保存→集約と段を分けて、コンテキスト汚染を避けながら取り切った。

主な成果:

  • 16本を順次取得し、テーマ単位で1本に統合
  • wait --load networkidle のタイムアウトを回避策で突破(issue化)
  • 進捗をチェックボックスで管理しながら完走

詳細: 16本の特集記事を agent-browser に全部巡らせて1本にまとめた話


そのほかの細かい作業

  • Git コミットの機能単位分割: 溜まった変更を /commit で機能・カテゴリごとに分割してコミット(途中malformedでリトライ)
  • パウロ氏のDRAM記事のローカル立ち上げ: 先週クローンしておいた note-paul1211-dram-blackhole/index.html の置き場所を探し出して立ち上げ
  • /make-diary の実行: 前日分の日記生成パイプラインを回した

今日の試行錯誤

#テーマ試したこと結果気づき
1malformedの原因「巨大ファイルが犯人」と疑った失敗0.1MBで落ち48MBで完走 → サイズは無関係。真因は引数構造の破綻
2大きなWrite9銘柄データを1回のWriteで吐こうとした失敗型定義+2銘柄ずつのEditに割ったら通った。小分けで破綻率が下がる
3重い読み込みログ解析・大量読み込みをメインで抱えた失敗サブエージェントに逃がして結論だけ返させるのが本命の予防策
4サブエージェント注意なしで派遣した一部失敗「全Read禁止・複雑jq禁止・汚染注意」を添えないと派遣先も落ちる
5agent-browser待機wait --load networkidle で待った失敗広告で常時通信するサイトはnetworkidle成立せず。loadか固定待機で回避
6CDPでDOMが読めない--profile "Profile 1" を疑った切り分け名前は一致。真因は--profileが一時コピーを使う実装(codexの解析で判明)
7codex再帰レビューresume --lastを重ねがけ暴走文脈が90万トークンに膨れ、無関係なgitコミットを勝手に作ってハング → 即停止

今日の学び

  • malformedはファイルサイズの問題ではなく、ツール呼び出しの引数構造が破綻して起きる。落ちたらサイズより先に直近のツール引数を疑う
  • 大きな書き込みは小分けにすると破綻率が下がる。型定義を先に置き、データは2件ずつ足す
  • 重い読み込み・解析はサブエージェントに追い出して結論だけ受け取る。ただし派遣時に「全Read禁止・複雑jq禁止・汚染注意」を添えないと、派遣先も同じく落ちる
  • 別系統のAIに再帰レビューさせるときは文脈の膨張に注意。resume --lastを重ねると暴走してコミットを勝手に作ることがある
  • 自分は判断する係、AIは実行する係。malformedの谷をまたぐ判断(小分けにする・引き継ぎへ逃がす)が一番効いた

明日やること

  • tw_monthly_revenue_ingest(台湾月次売上→Turso取り込み)の積み残しを片付ける
  • microGPT会計教材の段別ページ化の続き(malformedで途中だった分)
  • agent-browser の networkidle timeout を恒久回避する設定をデフォルト化するか検討

関連記事