育てる対象はプロンプトだけではない
今回の試作を通じて得られた最大の気付きは、「改善のレバーはプロンプトの文面だけではない」という点でした。プロンプトは「何をやるか」を定義するものに過ぎません。出力の品質は、プロンプトの外部にある「モデルが推論時に何を参照しているか(コンテキスト)」と、「エージェントを駆動する仕組み(ハーネス)」に大きく左右されます。
まず効果的なアプローチとなるのが、「入力(コンテキスト)の作り込み」です。本システムでは、AI考古学者にgit logコマンドを実行する権限を与えていますが、それとは別に、ハーネス側で統計を先に集計して調査の出発点として渡しています。
例えば、ファイルごとの変更回数や変更行数、最終更新日、関与したコミッター数などのメタデータです。「すべてのファイルを浅く探索させる」のではなく、最初から信号の強い情報や、変更が集中しているファイル、関与者の多いファイルにエージェントの注意を向けさせることが狙いです。モデルが一度に扱えるコンテキストの容量は有限であるため、「何を入力するか」と同じくらい、「何を入力から排除するか」が成果物の質に大きく影響します。
次にツールと権限です。allowedToolsは、対象が広ければ良いというものではありません。使用しないツールや役割の曖昧なツールは、かえってエージェントの判断を誤らせる原因になります。そのため、実行ログを見ながら「使用されなかったツールは除外する」「広すぎた権限は制限する」といった細かな調整を行います。一度設定して終わりにするのではなく、システムを稼働させるたびにブラッシュアップしていく対象です。
そして、エージェントを駆動し続ける仕組みそのものも、同様に育てる対象となります。 明示的にセッションの継続・再開や外部状態の引き継ぎを設計しなければ、無人で実行されるエージェントは、稼働のたびに新規セッションに近い状態から始まります。これはさながら、「前夜の記憶を持たずに出社する、日替わりの交代制エンジニア」のような状態です。適切なコンテキストを引き継がせなければ、毎晩ゼロから全く同じ調査を繰り返してしまいます。
そこで、前回のレポート内容や「どこまで調査が完了したか」というステータスを永続化し、翌晩の入力データとして引き継がせることもできます。また、生成された出力の検証や安全性の担保についても、プロンプトによる指示でAIに委ねるのではなく、確実に動作するコード側の仕事として実装することが可能です。
プロンプト、コンテキスト、そしてハーネスの3要素は、それぞれ全く異なる要因でエラーを引き起こします。日々の実行結果を評価しながら、これら3つの要素すべてをバランスよくアップデートしていく。これこそが、「コードを書くシステムを育てる」というアプローチの本質であると実感しています。
小さく始めて、実行結果で直す
Agentic Automationの導入にあたっては、最初から大規模な自動化基盤を構築する必要はありません。初期段階では、シンプルなシステムプロンプト、実行用のスクリプト、出力先のファイル、端的なログ出力の仕組みさえあれば十分に機能します。
まずはローカル環境で実行し、出力を精査します。内容に、一般論が多いと感じたらプロンプトを削り、分析の根拠が薄い場合はGitのログや具体的なファイルパスを併記するよう指示を追加します。また、予期せぬ操作を行うリスクがあれば、ツールの実行権限を厳しく制限します。
無人で回す以上、「壊れたときに気づける」設計も欠かせません。maxTurnsに達して途中で打ち切られたり、APIがエラーを返したりして、翌朝レポートが空になっていることもあります。私はプログラム側で「対象ファイルが想定通り更新されているか」を確認し、満たさなければ自動コミットを行わずに失敗として通知する、というガードを入れています。成功時だけ静かにコミットし、失敗時だけ手元に知らせが届く。この非対称さが、放置運用を成り立たせます。
このような小さな修正を実直に積み重ねていくプロセスこそが、まさに「コードを書くシステム」を実用的なレベルへと育てる作業そのものなのです。
単発でAIにコードを生成させるだけなら、その一瞬のプロンプトエンジニアリングが重要視されるかもしれません。しかし、エージェントを継続的に稼働させるシステムを運用する場合、真に注視すべきは日々の実行結果です。どの成果物が業務に貢献し、どの指示が曖昧で、どの権限が広すぎたか。これら小さな修正の積み重ねこそが、「コードを書くシステム」を実用レベルへと育てる作業そのものです。
今回ご紹介した「AI考古学者」は、やや遊び心を取り入れたユニークなユースケースの1つです。
しかし、このアプローチの背後にある思想は極めて実務的です。「人間が手動で行うには骨が折れるが、放置しておくと将来的に不利益を被る業務」を特定し、その業務をAIエージェントが処理できる明確なタスク単位へと分解します。そして適切な実行環境(ハーネス)を構築し、得られた成果物をレビューする。効果が薄ければ止め、手応えがあれば改良してまた走らせる。この繰り返しが軸になります。
これからのエンジニアリングにおいては、単に「コードを書く」だけでなく、「コードを自動生成するシステム自体を育てる」という視点が重要になります。
筆者は、このように「手作業では億劫だが、後々になって大きな価値を生む業務」から優先してAIエージェントへと委ねていく方針をとっています。
高度で賢い自動化の手法を選択できるようになった現代において、こうしたAgentic Automationの仕組みをソフトウェア開発の現場へ組み込んでいくアプローチは、生産性を飛躍的に高める新たな選択肢となるはずです。
