0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

サブエージェントを使う日、使わない日 ── 3ヶ月で固まった4つの分岐基準

0
Posted at

Claude Cowork を社内AXに使っている私の実践ログです。社内固有名・個人名は伏せています。

「とりあえずサブエージェントに投げる」を3週間続けて、月次のコスト通知を見た瞬間、椅子から転げ落ちそうになった。前月比2.4倍。

正直しんどい。

私はそこから本気でサブエージェントの運用を見直して、結局「使う日」と「使わない日」を切り分けるシンプルな4基準に落ち着いた。これがその記録です。

何が問題だったのか

最初は単純に喜んでいた。Claude Code でサブエージェント(Task tool)を呼ぶと、自分の文脈を汚さずに別の作業を並走できる。リサーチ、コード探索、PRレビュー、何でも投げた。

ただ、慣れてくると見えてきたのが3つの落とし穴。

  1. トークン消費の二重計上 ── 親の文脈には「結果」だけが返ってくるので軽そうに見えるが、子は子で独立した文脈を持っていて、長い指示を渡すと指示文ごと毎回課金される。
  2. 同じ作業を3回やる現象 ── 「同じ調べ物を別エージェントに3回頼んだ」あるある。子は親の記憶を持っていない、当たり前なんだけど、これ毎回やられると地味に効く。
  3. 判断の丸投げ問題 ── 「リサーチして結論を出して」と投げると、子が勝手に方針を決めて帰ってくる。これが一番怖い。

うん、便利だからこそハマる。

私の判断:サブエージェントは「並列」と「孤立」のためだけに使う

結論から言うと、私は サブエージェントを「並列性」か「孤立性」のどちらかを取りに行く時だけ 使うことにした。それ以外は、面倒でも親の文脈で直接読み書きしたほうが安いし、判断のブレも少ない。

賛否あると思う。「いやそれ手作業の重さに戻ってない?」と言われたこともある。でも私はこっちのほうが結果としてアウトプットが速い、と感じている。

いや、というか正確には「速く出せた回数」が増えた、が近い。

4つの分岐基準(コピペで使えるチェックリスト)

ノートに貼ってある、本物のチェックリストをそのまま置きます。

[サブエージェントを呼ぶ前のチェックリスト]
( ) 1. 並列にやりたい作業が他に2つ以上ある?
       → No なら親で直接やる
( ) 2. 触るファイルが10個超え、または長い検索ログが返る?
       → No なら親で直接やる(短いログは親に置いた方が後で参照できる)
( ) 3. 子に渡す「最終判断の許可」を明示している?
       → 例: 「決めずに3案返してこい」「結論は私が出す」
( ) 4. 同じ調べ物を直近1時間で別エージェントに頼んでいない?
       → Yes なら結果ファイルを使い回す

4つ全部に「Yes/許可済み」が付かないなら、親でやる。これだけ。

ちなみにこの4番、私は outputs/_agent_cache/ という雑なフォルダを作って、子が返してきたレポートを日付名で全部置いてある。次に同じ問いが出たら、まずここを grep する。これ、地味に効く。

ハマったところ

私が3ヶ月で踏んだ地雷を、対処込みで残しておきます。

1. 「リサーチして結論まで出して」と投げた → 子が勝手にアーキを決めて帰ってきた

最初こうしようとして失敗した。子は良かれと思って結論を出すんだけど、こちらの暗黙の制約(既存スタックとの互換性とか)を知らないので、的外れな結論が3割混じる。

対処: 指示文に「結論は出さない、選択肢をN個・各trade-offつきで返せ」を明文化。

2. 子に「親が今やってる作業」を伝え忘れて、全く独立した解を返された

これは設計が悪い、私が悪い。

対処: 子へのプロンプトの冒頭に必ず「親はこの瞬間 X をやっている。ゴールは Y。あなたは Z を任されている」を書く。テンプレ化した。

3. 同じ依頼を別エージェントに3連投したら、3回別の答えが返ってきた

当たり前なんだけど、初回は「ばらつき」として面白く眺めていた。コスト見て笑えなくなった。

対処: 上の4番のキャッシュ運用。雑でもいい、ファイルに残す。

4. 子のレポートが2000行返ってきて、親に貼った瞬間に文脈が溢れた

これが意外な伏兵。

対処: 子に「最終出力は400字以内のサマリ + 詳細はファイルに書け」を必ず指定。ファイルパスだけ親に渡してもらう。

5. 「並列に3つ走らせよう」とやったら、3つとも同じ場所を編集して衝突した

これが一番痛かった。並列性を取りに行ったつもりが、ファイルロック相当の管理が無くて荒れた。やってよかった——とは正直言えない週でした。

対処: 並列で走らせる子には、最初に「触っていいパスのホワイトリスト」を必ず渡す。重なりそうな日は1本に直列化。

じゃあ「親で直接やる」って具体的に何

ここは聞かれる。私の中では3つだけ。

  • Grep / Glob で自分でファイル特定 → Read で読む
  • 軽い検索なら親の文脈に結果を置いて、そのまま判断に使う
  • 「結論を出すための材料集め」は子に投げず、自分でやる(判断の根が親に残る)

結局、子に出していいのは「材料集めの広さ」や「長時間のコード走査」みたいな、捨ててもいい中間生成物を返してもらう仕事だけ、というのが私の現状の解釈です。

観点として:課題設計の話に少しだけ寄り道

私が日中見ている N限(新卒の実務試験型インターン)でも、似た議論がある。学生に「90分の課題で結論まで出してください」と渡すと、暗黙の制約を読み違えて的外れな解が混じる。対して「3案 + trade-off」と最初から書くと、評価する側もされる側も話が早い。

サブエージェントの設計と、人間の課題設計、構造が驚くほど近い。最近そう思っています。

まとめ

  • サブエージェントは便利だが、何も考えずに使うとトークンが2-3倍になる(これ実体験)
  • 私は「並列」か「孤立」のどちらかを取りに行く時だけ使うことにした
  • 4基準のチェックリストで毎回判定、4つ揃わないなら親で直接やる
  • 子に渡すプロンプトには必ず「親の状況」「許可されている判断の範囲」「出力形式」を書く
  • 同じ調べ物の結果は雑でもいいからファイルに残す、これだけで再呼び出しが激減する

みなさんはサブエージェント、どう運用していますか? 「うちはこの基準で分けてる」「いやそもそも親一本でやってる」など、コメントで教えてください。「全部子に投げる派」の運用も気になっています。


Claude Cowork を社内AXの相棒として毎日使っているエンジニアの実践ログです。

私が日中見ている事業は「N限(Ngen)インターン」── 新卒の実務試験型(ワークサンプル型)インターンを企業に提供しています。AI時代の新卒採用に関心がある方は、下記からどうぞ。

シリーズ: Claude Cowork で社内AXを回す

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?