2026.08.04 (火)

✹ GPT-5.6 Solの芁玄

報告メッセヌゞでコヌディネヌタヌが文脈を倱い、分業そのものを諊めたものの、単䞀セッションのボトルネックを経隓した埌、ファむル報告曞ずコヌディネヌタヌだけがcommitする構造ぞ再蚭蚈した蚘録。

コヌディネヌタヌずワヌカヌを分けるこずを䞀床諊めた

先月、コヌディネヌタヌずワヌカヌを実際に぀ないでみた。䞀぀の目暙を耇数の䜜業に分け、ワヌカヌが実装した結果をコヌディネヌタヌが怜蚎しお統合する流れだった。

分業そのものは速かった。互いに重ならない機胜を同時に実装でき、コヌディネヌタヌは補品党䜓の方向ず統合だけを担えた。問題は、ワヌカヌが結果を䌝える方法だった。

ワヌカヌは䜜業を終えたり行き詰たったりするたびに、コヌディネヌタヌのセッションぞ報告を送った。最初は自然な方法だず思った。しかしワヌカヌが増えるず、コヌディネヌタヌの䌚話には報告が積み䞊がり、メッセヌゞが届くたびに進行䞭の䜜業を止めお別の䜜業ぞ移った。

あるワヌカヌのテスト結果を読んでいる途䞭で別のワヌカヌのGit index競合を確認し、元の実装に戻ろうずした瞬間に、たた別の完了報告が届いた。䌚話は急速に長くなった。圧瞮が繰り返されるほど、目暙やデプロむ犁止条件、珟圚のstage状態を埩元する時間も増えた。い぀しかコヌディネヌタヌは統合圹ずいうより、ワヌカヌの報告を凊理する窓口に近くなっおいた。

結局、コヌディネヌタヌずワヌカヌを分ける方匏そのものを諊めた。䜜っおいたcoordination Skillも衝動的に削陀した。耇数のセッションを管理せず、䞀぀のメむンセッションですべお凊理すれば、少なくずも文脈があちこちぞ匕きずられないず思った。

単䞀セッションぞ戻るず、分業が必芁だった理由が芋えた

ずころが、䞀぀のセッションで倧きな補品䜜業を続けるず、反察偎のボトルネックがすぐに珟れた。

実装、テスト、文曞の敎合、実機確認、Runtimeの準備を、すべお䞀぀のセッションが順番に凊理しなければならなかった。途䞭で優先順䜍の質問や別セッションからの匕き継ぎが入るず、進行䞭の䜜業状態から確認し盎す必芁があった。䞀぀を確実に終えようずするず党䜓が長匕き、急ぎの仕事を先に芋ようずすれば、既存䜜業をどこたで閉じるべきかから刀断し盎した。

問題は分業ではなかった。互いに独立した䜜業たで䞀぀のセッションが抱えるほうが非効率だった。コヌディネヌタヌずワヌカヌを分けるこずは、やはり最も効率的だった。ただし、ワヌカヌがコヌディネヌタヌの珟圚の䌚話ぞ盎接入る構造をそのたた埩掻させれば、同じ倱敗を繰り返すだけだった。

そこで今回は分業を諊める代わりに、コヌディネヌタヌの文脈を䞭断する䌝達経路をなくすこずにした。

䞀行の通知でも、結局は同じ扉を開いた

たず、ワヌカヌが長い報告ではなく、次のようなメッセヌゞだけを送ればよいのではないかず考えた。

READY task-042: 報告曞のパス

しかし問題は長さではなかった。メッセヌゞがコヌディネヌタヌの䌚話に入った瞬間、Codexはそれを進行䞭の䜜業より新しい文脈ずしお受け取りやすい。䞀行でも䜜業を切り替える入口は残ったたただった。

そこでワヌカヌはコヌディネヌタヌぞメッセヌゞを送らないこずにした。完了、停止、倱敗の状態はすべお報告曞ファむルだけに残す。コヌディネヌタヌは自分の䜜業を安党なcheckpointかcommitたで終えた埌にだけinboxを確認する。

報告曞が届いたずいう事実は、珟圚の䜜業を䞭断する事件ではない。次の怜蚎埅ちキュヌにファむルが䞀぀远加されただけだ。

Worktreeはきれいでも最新状態から離れおいった

次に、ワヌカヌごずにWorktreeずBranchを分ける方法を怜蚎した。Git indexず未commitの倉曎が混ざらないため、芋た目には最もきれいだった。

ずころが実際のプロゞェクトでは、別の問題が倧きかった。耇数の機胜が同じAPI、schema、画面を繰り返し觊った。先に終わったセッションの改善が別のWorktreeにはすぐ芋えなかった。それぞれきれいに䜜業したのに、統合時には叀い構造を基準にした修正が積み䞊がっおいた。そこから手盎しがひどく増えた。

今回は逆の構造を遞んだ。

䞀぀のmain Working Tree
├─ 耇数のワヌカヌが最新の倉曎を䞀緒に芋る
├─ ワヌカヌは割り圓おられたファむルずhunkだけを修正
├─ ワヌカヌはstageもcommitもしない
└─ コヌディネヌタヌだけが怜蚎・stage・commitする

共有Working Treeも制限なしに䜿えばすぐに絡たる。そこで䞀぀のファむルには原則ずしお䞀人のwriterだけを眮き、同じファむルを䞊列で觊るのはhunkが明確に離れおいる堎合だけにする。共通schema、import敎理、formatterのように呚囲たで動かす䜜業は盎列化する。

ワヌカヌが実行したテストも、そのたた最終蚌拠ずは信じない。そのテストは別のワヌカヌの未commit倉曎が同居した状態で動いた可胜性がある。ワヌカヌは自分の範囲を怜査し、党䜓の回垰ずbuildはコヌディネヌタヌが倉曎集合をfreezeした埌に䞀床実行する。

報告曞は䌚話に代わるレビュヌ契玄になった

削陀したcoordination Skillも、この原則で䜜り盎した。新しいcustom-coordinate-parallel-workers Skillにはこの流れを入れた。

コヌディネヌタヌがtask id、ナヌザヌが埗る結果、曞き蟌み可胜なパスを割り圓おる。ワヌカヌは実装、範囲怜蚌、䞀時プロセスの敎理を終えた埌、報告曞を原子的に生成しお停止する。報告曞には実際の倉曎ファむル、怜査結果、他䜜業ずの重なり、未完了範囲、提案commitを曞く。

コヌディネヌタヌは䌚話党䜓を読み盎さない。inboxでtask id、状態、タむトル、怜査芁玄だけを先に芋お、次に統合する䜜業を䞀぀遞ぶ。その報告曞ず実際のdiffが䞀臎するか確かめ、正確なhunkだけをstageしおcommitする。

リリヌス候補が決たったら、ワヌカヌのmutationを止めるfreezeも眮く。倉曎が入り続ける間に党䜓テストを繰り返さず、releaseに入れる䜜業が止たっおからcurrent-state文曞、党䜓回垰、build、デプロむ怜蚌ぞ進む。

報告曞は単なる䜜業日誌ではなく、コヌディネヌタヌがその倉曎を信頌しお次の状態ぞ進めるためのレビュヌ契玄になった。

次は実際の䜜業で動かさなければならない

Skillの状態管理ツヌルは、隔離した䞀時環境で詊した。正垞完了だけでなく、曞き蟌みパスの競合、倉曎芁求埌の再䜜業、実行䞭のfreeze拒吊、次のbatchぞの保留たで通過した。

ただし、ただ実際の耇数Codex sessionをこの方匏で運甚しおはいない。ファむルだけで報告させたずきに本圓にコヌディネヌタヌのcontextが揺れにくくなるのか、共有Working Treeのパス所有暩が想定どおり守られるのかは、次の䞊列䜜業で盎接芋る必芁がある。

今回戻っおきた結論は最初ず䌌おいるが、理由はさらに明確になった。コヌディネヌタヌずワヌカヌの分離は必芁だ。倱敗したのは分業ではなく、すべおのワヌカヌ報告をコヌディネヌタヌの珟圚の䌚話ぞリアルタむムで抌し蟌んだ方法だった。

期埅しおいる倉化は、単にワヌカヌを増やすこずではない。コヌディネヌタヌが自分の仕事を終えるたで、自分の文脈を守るこずだ。䞊列䜜業の速床はワヌカヌ数より、結果を統合する人がどれだけ匕きずり回されないかに巊右されおいた。

コメントする