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 の実行: 前日分の日記生成パイプラインを回した
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | malformedの原因 | 「巨大ファイルが犯人」と疑った | 失敗 | 0.1MBで落ち48MBで完走 → サイズは無関係。真因は引数構造の破綻 |
| 2 | 大きなWrite | 9銘柄データを1回のWriteで吐こうとした | 失敗 | 型定義+2銘柄ずつのEditに割ったら通った。小分けで破綻率が下がる |
| 3 | 重い読み込み | ログ解析・大量読み込みをメインで抱えた | 失敗 | サブエージェントに逃がして結論だけ返させるのが本命の予防策 |
| 4 | サブエージェント | 注意なしで派遣した | 一部失敗 | 「全Read禁止・複雑jq禁止・汚染注意」を添えないと派遣先も落ちる |
| 5 | agent-browser待機 | wait --load networkidle で待った | 失敗 | 広告で常時通信するサイトはnetworkidle成立せず。loadか固定待機で回避 |
| 6 | CDPでDOMが読めない | --profile "Profile 1" を疑った | 切り分け | 名前は一致。真因は--profileが一時コピーを使う実装(codexの解析で判明) |
| 7 | codex再帰レビュー | resume --lastを重ねがけ | 暴走 | 文脈が90万トークンに膨れ、無関係なgitコミットを勝手に作ってハング → 即停止 |
今日の学び
- malformedはファイルサイズの問題ではなく、ツール呼び出しの引数構造が破綻して起きる。落ちたらサイズより先に直近のツール引数を疑う
- 大きな書き込みは小分けにすると破綻率が下がる。型定義を先に置き、データは2件ずつ足す
- 重い読み込み・解析はサブエージェントに追い出して結論だけ受け取る。ただし派遣時に「全Read禁止・複雑jq禁止・汚染注意」を添えないと、派遣先も同じく落ちる
- 別系統のAIに再帰レビューさせるときは文脈の膨張に注意。
resume --lastを重ねると暴走してコミットを勝手に作ることがある - 自分は判断する係、AIは実行する係。malformedの谷をまたぐ判断(小分けにする・引き継ぎへ逃がす)が一番効いた
明日やること
- tw_monthly_revenue_ingest(台湾月次売上→Turso取り込み)の積み残しを片付ける
- microGPT会計教材の段別ページ化の続き(malformedで途中だった分)
- agent-browser の networkidle timeout を恒久回避する設定をデフォルト化するか検討