良いprogram.mdの書き方:AIエージェント指示の実践ガイド
Andrej Karpathyのautoresearchは、よく書かれたMarkdownファイルが一夜にして実際の科学的発見をするようにAIエージェントを指揮できることを証明しました。しかし、すべてのprogram.mdファイルが同じ品質を持つわけではありません。
Markdown指示の品質がAIエージェントの出力品質を直接決定します。曖昧なprogram.mdはランダムで方向性のない実験を生み出します。精確なものは積み重なる焦点を絞った改善を生み出します。
実際に機能するprogram.mdの書き方を解説します。
良いprogram.mdの構造
MLリサーチをしていても他のエージェント主導の作業をしていても、効果的なprogram.mdには5つのセクションが必要です。
1. コンテキスト:エージェントは何を知る必要があるか?
エージェントはプロジェクトへの理解がゼロの状態でスタートします。最初の仕事はインテリジェントな判断を下せるほどのコンテキストを与えることです。
含めるべきこと:
- プロジェクトが何をするか
- コードベースの概要
- 重要なファイルとその目的
- ドメイン固有の用語
- 現在の状態と既知の問題
省くべきこと:
- LLMがすでに知っている明らかな情報
- コードから読み取れる実装の詳細
- 現在の判断に影響しない履歴
2. ゴール:エージェントは何を最適化すべきか?
これが最も重要なセクションです。エージェントには明確で測定可能な目標が必要です。
autoresearchでは目標は明確です:val_bpb(検証ビット/バイト)を減らすこと。エージェントは5分間のトレーニング実行後にこれを測定できます。
自分のプロジェクトでは、エージェントが評価できる観点で成功を定義します:
- 「ページの読み込み時間を2秒未満にする」
- 「テストカバレッジを80%以上にする」
- 「バンドルサイズを少なくとも15%削減する」
「コードを良くする」のような曖昧な目標は曖昧な結果を生みます。測定可能な目標は焦点を絞った改善を生み出します。
3. 制約:エージェントは絶対に何をしてはいけないか?
制約は目標と同様に重要です。制約がなければ、エージェントはあなたが望まないクリエイティブな解決策を見つけてしまうかもしれません。例えば、「ビルド速度を改善する」ために全テストを削除するなど。
一般的な制約:
- テストファイルや評価コードを変更しない
- パブリックAPIを変更しない
- 新しい依存関係を導入しない
- メモリバジェットを超えない
- コードを読みやすく保守可能に保つ
autoresearchでは、重要な制約はtrain.pyのみを変更できることです。データパイプライン、評価コード、テストセットはロックされています。これによりエージェントがメトリクスを操作するのを防ぎます。
4. 戦略:エージェントはどのように問題にアプローチすべきか?
ここであなたのドメイン専門知識が輝きます。あなたはエージェントが知らないことを知っています。どの方向が有望でどれが行き詰まりかを。
良い戦略指示:
- 「アーキテクチャの変更前にハイパーパラメータのチューニングから始める」
- 「アテンションメカニズムに集中する——現在の実装は最適でない可能性がある」
- 「まず正則化技術を試す:ドロップアウト、重み減衰、レイヤーノルム」
- 「トレーニング時間を10%以上増加させる変更は避ける」
悪い戦略指示:
- 「何でも試す」(曖昧すぎる)
- 「学習率を0.001に変更する」(具体的すぎる——マイクロマネジメントになっている)
スイートスポットは、エージェントが生産性の高い範囲内で探索できる方向性のあるガイダンスです。
5. 評価:エージェントはどのように成功を判断すべきか?
エージェントは変更が助けになったかどうかを測定する方法を知る必要があります。autoresearchでは、これはループに組み込まれています。val_bpbが改善されれば変更を保持、そうでなければリセット。
他のコンテキストでは、評価基準を定義します:
- どのメトリクスが重要か?
- どの閾値が改善とみなされるか?
- エージェントは曖昧な結果をどのように処理すべきか?
- エージェントはいつ止まって報告すべきか?
よくあるミス
曖昧すぎる
「モデルを良くする」はエージェントに方向性を与えません。「良い」が何を意味するか、どのように測定するか、どのアプローチを最初に試すかを具体的に示します。
具体的すぎる
「47行目を学習率3e-4を使うように変更する」はAgentic Engineeringの目的を無効にします。方向性を設定することが目的であり、実装を指定することではありません。エージェントに探索させましょう。
制約を忘れる
制約がなければ、エージェントは最小抵抗の道を見つけます。それはあなたが望むものではないことが多いです。「トレーニング時間を削減する」よう指示されたエージェントは、そう言わなければトレーニングデータの半分をスキップするかもしれません。
反復しない
最初のprogram.mdは完璧ではありません。エージェントが何をするかを観察し、どこで間違えるかを見て、指示を更新します。最高のprogram.mdファイルは数十回の反復を経て進化します。
反復ループ
program.mdを書くことは一回限りのプロセスではありません。ループです:
- 最初の
program.mdを書く - エージェントを実行する
- エージェントが何をしたかをレビューする
- 何がうまくいって何がダメだったかに基づいて指示を更新する
- 繰り返す
各反復により指示がより精確になります。数ラウンド後には、一貫して良い結果を出すprogram.mdができます。
これがAgentic Engineeringの核心スキルです。コードを書くことではなく、反復を通じてエージェント指示をより効果的にすることです。
参照ライブラリの構築
最高のprogram.mdファイルは何もないところから生まれません。ドメインの深い知識——ドキュメント、論文、ベストプラクティス、例——の上に構築されています。
Webで役立つ参照資料を見つけたら、Markdownとして保存します。そしてprogram.mdを書くとき、関連するコンテキストを取り込み、特定のテクニックを引用し、エージェントが必要とする背景知識を与えることができます。
autoresearchから最高の結果を得ている研究者たちは、ただの優れたライターではありません。明確なエージェント指示に合成できる良く整理された参照資料を持つドメインエキスパートです。
SaveはどんなWebページでもクリーンなMarkdownに変換します。効果的なprogram.mdファイルを支えるための参照ライブラリの構築に最適です。Saveを無料で試す。
## Continue reading
KarpathyのAutoresearch & PROGRAM.md:あなたが眠っている間に実験を実行するAI
Andrej KarpathyのAutoresearchはAIエージェントが一晩で100以上のML実験を実行できます。program.mdと呼ばれる単一のMarkdownファイルに導かれて。仕組みとその重要性を解説します。
README.mdからPROGRAM.mdへ:MarkdownはAIのプログラミング言語になった
README.mdは人間向けでした。AGENTS.mdはコーディングアシスタント向けです。PROGRAM.mdは自律的なリサーチのためのもの。MarkdownはドキュメントからAIエージェントのプログラミング言語へと進化しました。
Karpathyが語るAIユーザーの「2つのグループ」― あなたはどちら?
Andrej KarpathyはAIの能力に対する理解の格差が広がっていると言います。一方のグループはAIをおもちゃだと思っている。もう一方は「AI Psychosis」を経験しています。その違いと、格差を越える方法を解説します。
誰でも使えるAutoresearch:眠っている間に100回のAI実験を実行する方法
KarpathyのAutoresearchはシングルGPUで一晩に100以上のML実験を実行します。仕組み、必要なもの、そして630行のPythonスクリプトがAIリサーチを変えている理由を解説します。
Written by
Jean-Sébastien Wallez
I've been making internet products for 10+ years. Built Save on weekends because I wanted my own reading library in clean markdown for Claude and Obsidian. Write here about web clipping, AI workflows, and the small things that make a personal knowledge base actually useful.