サブエージェントを並列で回して教材の図をSVGに作り直した一日と、その進捗管理
サブエージェントを並列で回して教材の図をSVGに作り直した一日と、その進捗管理
朝いちばん、教材の原図が蔵書データベースに入っているものと思って探しに行った。 入っていなかった。 「じゃあ今からスキャンします」と返して、その日の作業は原図の取り込みから始まった。
手元の資格試験用テキスト2冊に載っている図を before/after の形でSVGに作り直し、税務大学校が公開している講本をもとにした講座に組み込む。 それが今やっていることだ。 進め方は専用スキル(zeimu-figure)に書いてあるので、セッションを開くたびにそれを読ませて現在地を確定させる。 結果から言うと、この作業だけで丸一日が溶けた。
器を先に決めた
いきなり図を描かせると、あとで様式が揃わずに全部やり直しになる。
そこで午前は計画書づくりに充てた。
memo/2026-09-03/ に計画書を書かせ、判断が要る4件はHTMLの3択ボタンで答えた。
Codexのレビューは6周目でようやく承認になった。
決まったのは次の4点だ。
- 生成の器はレジストリ方式にする
- 対象は2冊
- before は yomitoku で切り出し、全数を原図と照合する
- after は既存の節へ差し込み、要素ごとに出どころを表示する
この4点が固まったのは08:10だった。 ここから先、エージェントに渡す指示文はすべてこの決定の写しになる。
5体に分けた全数照合
before の全数照合は、ページ範囲でバッチに割ってサブエージェント5体に分担させた。 最初に返ってきた1体分は、機械検査で指摘0件、全数目視の報告でも判定が一致した。 加えて、原図にある表をOCRが拾っていないという切り出し漏れが58件挙がってきた。 1枚ずつ原図と突き合わせなければ出てこない種類の抜けで、全数照合に回した意味がここに出た。
同じころ、別リポジトリで走らせていた取り込みセッションから連絡が届いた。 2冊とも取り込みは終わっていた。 ただし、頼んだIDへの改名がそのセッションの権限で拒否されたので handoff.json のフィールドを正としてほしい、という但し書きが付いていた。 08:40 にはそのセッションのアイドル通知も来た。 突き合わせは済んでいたので、追加で頼むことはなかった。
before のギャラリーは dev サーバー(3200番)に置き、/lessons の末尾に dev 専用のカードを3枚足して入口を作った。
ここまでを50ファイルで一度コミットした。
学習ゲートは理由を付けてスキップした。
走っているエージェントを止めるか、畳ませるか
昼前、コミットしたあとも3体が動いたままだった。 経過時間は24分、9分、7分。 止めていいものか分からなかったので、そのまま聞いた。
一応確認ですけど、まだサブエージェント動いてるじゃないですか。それは大丈夫なんですか?
返ってきた説明はこうだった。
3体が書くのは candidates/ 配下のSVGと自分の生成スクリプトだけで、公開ディレクトリ、台帳、法令スナップショット、講本本文には書かない指示にしてある。
それなら途中で落ちても、残るのは未コミットの書きかけファイルだけになる。
それを聞いて、止めるのではなく畳ませることにした。
サブエージェントにも今のところで一旦おしまいにしてもらって、進捗をドキュメントに残すようにしてもらえませんか?
中断指示は次のツール実行のタイミングで届く。
描きかけの1枚はきりのいいところで止め、生成スクリプトが通る状態で保存させた。
そのうえで、完了した図、途中の図、迷った点、参照した一次資料を handoff-batch-*.md に書いてから終わる形にした。
このうち1体は、中断指示が届いた時点でまだ作図に入っていなかった。 完了0枚、未完13枚。 それでも独自数値と検算、共通部品の骨組みは生成スクリプトに残っていて、引き継ぎメモにも書き出された。 成果ゼロで捨てるのと、「どこまで調べて何に迷ったか」が文章で残るのとでは、次のセッションの立ち上がりがまるで違う。
この時点で1冊目のSVGは124枚になった。
バッチをどう受け入れたか
午後にかけて、1バッチあたりの受入手順が型になった。
- 機械検査(
[object Object]の混入、NaN、生成器が候補をバイト一致で再現するか) - before/after を並べたシートを撮って全数を目視
- ワードマーク注入
- レビュー記録を追記
- コミット
2冊目のラウンド1(70枚)は、生成器7本すべてが候補をバイト一致で再現した(差分0)。 機械検査を先に通しておくと、目視で追う点が様式と数値だけに絞られる。
途中、サブエージェントのどれかが dev サーバーを再起動しようとして失敗した、という通知が来た。 起動は禁止事項にしてある。 3200番を叩いたら HTTP 200 が返ったので、ポート使用中で失敗しただけだと分かった。
ラウンド2の途中でセッションのコンテキストが82%まで来た。 進捗計画書を更新させてから、セッションを切り替えた。
止まったセッションをどこから復元するか
切り替えようとしたところ、その前のセッションが途中で進まなくなっていた。 こちらにはバグとしか見えなかった。
新しいセッションでは、まずモデルを変えて開いた。 そのうえで、状況の復元に何を読ませるかを指定した。
モデル変更したので、それで続きやってもらいたいんですけど、コミットじゃなくてセッションの履歴を見てほしいですね。多分コミットしてないんですよ。
直前の作業はコミットに残っていない。 git から復元させると、止まる直前に何をどこまでやっていたかを丸ごと取りこぼす。 計画書と進捗ファイルを突き合わせたうえで、前セッションのログを一次資料として読ませた。
分かったのは、止まった原因が利用上限(15:30リセット)だったことだ。 バグではなかった。 ラウンド3に出した5体は全員そこで落ちていて、成果は0枚だった。
ところが、そのリセットまで待って再開する、という段取りになりかけた。 アカウントを変えてログインし直した時点で解消済みだったので、そこは止めた。
いや、あの、上限リセット待つ、待たなくていいっすよ。何やってんすか。えっと、もうすでにそれは解消済みですよ。
制約が見えたときに待つ判断そのものは正しい。 ただし、その制約がまだ生きているかはこちらしか知らない。 15:20 に、落ちたときと同じ指示文で5体を再投入した(1体だけ、書きかけの生成スクリプトの扱いを1段落足した)。
分母を固定して聞く
再開したところで、全体の進み具合を確認した。
全体的な進捗を教えてほしいです。1冊目は一旦全部終わったんですよね。あと今2冊目でこれ何分の何ですか?
返ってきた数字はこうだった。 1冊目は124枚中123枚が受入済み。 2冊目は172枚中109枚が受入済みで、残る63枚のうち43枚が作図中、20枚が未着手だった。
バッチ名で報告されても、全体のどこにいるかは分からない。 分母を固定して分子だけを聞くと、ラウンドをまたいでも同じ物差しで比べられる。 以降の報告はこの形に揃い、135/172、160/172 と上がっていった。
受入の途中で落ちたものもある。 1枚は差し戻して描き直させ、他のバッチと同じ様式になったのを確認してから合格にした。 通達のURLが404になっているという指摘が2体から上がったので、現行URLに直させた。 テストは28件 pass、ギャラリーを再生成しても差分は出なかった。
夕方、最後のバッチ(12枚)が機械検査を再現性差分0で通り、目視も全数合格した。 2冊目は172枚すべてが受入済みになった。 両冊とも作図が終わった。
今日の学び
- 走行中のサブエージェントは、止めるより畳ませる。書き込み先を候補ディレクトリと自分の生成スクリプトに限定してあれば、途中終了しても壊れるものはない。「完了した図、途中の図、迷った点、一次資料」を書かせて終わらせると、成果0枚のバッチでも次が速い
- セッションが止まったときの一次資料はコミットではなくセッション履歴になる。止まる直前にやっていた作業ほど、コミットに残っていない
- 「上限だから待つ」の判断は、その制約がまだ生きているかを確かめてからにする。アカウントを変えた事実はこちらしか知らない
- 進捗は分母付きで持つ。バッチ名の報告は、そのバッチの中でしか意味を持たない
残っていること
コミットとプッシュは済ませた。
origin/main に30コミット(前セッション分の23と、このセッションの7)が上がっている。
ただ、終わったのは作図だけだ。 朝の決裁では、after を既存の節へ差し込んで要素ごとに出どころを表示するところまでを1本と決めている。 その差し込みはこれからになる。 図が揃ったことと、講座として読めることは別だ。