世界を動かす技術を、日本語で。

エージェンティックループの設計

概要

  • Claude CodeCodex CLI などのコーディングエージェントは、実用的なコード生成能力を大きく向上。
  • エージェンティックループ の設計が、これらAIの最大活用に不可欠。
  • YOLOモード は生産性向上の鍵だが、重大なリスクも伴う。
  • 安全な実行環境適切な権限管理 が必須。
  • 自動テスト の整備が、AI活用の価値を大幅に高める。

コーディングエージェントの進化とエージェンティックループ設計

  • Claude CodeOpenAI Codex CLI の登場により、LLMは直接コードを実行・修正・実験できる新時代へ。
  • コーディングエージェントは、問題を明確な目標とツール群に還元できれば、反復的な試行錯誤で解決策を見つけ出す力。
  • LLMエージェント の定義:目標達成のためにツールをループ実行する存在。
  • 効果的な運用には、 ツール選定ループ設計 が重要。
  • エージェンティックループ設計は、AI時代の新しいスキル。

YOLOモードの魅力とリスク

  • コーディングエージェントは「 YOLOモード」で全コマンド自動承認が可能だが、危険性も高い。
    • 悪意あるシェルコマンドによるファイル削除・破壊リスク。
    • 機密情報やソースコードの 流出(エクスフィルトレーション) リスク。
    • 第三者攻撃の踏み台化(DDoS等)のリスク。
  • YOLOモード運用の選択肢
    • 安全な サンドボックス (Docker等)で実行。
    • 他人のコンピュータ (GitHub Codespaces等)で実行。
    • リスク覚悟で自分の環境で実行。
  • 多くのユーザーは3番目を選択するが、 Docker やAppleのコンテナツール利用が現実的な安全策。
  • GitHub Codespaces などのクラウド環境利用が推奨。
  • Anthropicの Safe YOLO mode ドキュメントでは、--dangerously-skip-permissionsをネットワーク制限付きコンテナで利用する方法を推奨。

ループで利用するツールの選定

  • 安全なYOLOモードを確保したら、次はエージェントに開放するツールの選定。
  • シェルコマンド を中心に設計するのが効果的。
  • ネットワークアクセスが許可されていれば、NPMやPyPI等からのパッケージ導入も可能。
  • 本番PC環境を壊さないよう、 依存パッケージ 導入には注意。
  • AGENTS.md 等に必要なコマンドやパッケージ例を記載し、エージェントが自力で応用できるようにする。
    • 例:「shot-scraper http://www.example.com/ -w 800 -o example.jpg」
  • LLMは「playwright python」や「ffmpeg」などの一般的なツールも高精度で扱える。

権限と認証情報の厳格な管理

  • コマンドだけでなく、 認証情報(クレデンシャル) の管理も重要。
  • 理想は認証不要だが、必要な場合は以下を推奨。
    • テスト用・ステージング環境 の認証情報のみ付与。
    • 支出可能な認証情報には 予算上限 を設定。
  • 例:Fly.ioで限定組織・$5上限APIキー発行し、Claude CodeにDockerfile編集・デプロイ・計測を任せた実践例。

エージェンティックループ設計が有効なケース

  • 明確な成功基準があり、 反復的な試行錯誤 が必要な課題に最適。
  • 具体例
    • デバッグ :テスト失敗時の原因究明。
    • パフォーマンス最適化 :SQLクエリの速度改善、インデックス追加検証。
    • 依存関係アップグレード :テストスイートが堅牢なら一括自動化も可能。
    • コンテナ最適化 :Dockerfileのベースイメージ変更による容量削減。
  • いずれも 自動テスト の整備が成功の鍵。

エージェンティックループ設計のこれから

  • Claude Code のリリースは2025年2月と非常に新しい分野。
  • この概念に名前を与えることで、より生産的な議論やノウハウ共有が可能に。
  • 今後も 効果的な活用法 の模索が続く分野。

Hackerたちの意見

この投稿を更新して、YOLOモードをDockerの開発コンテナで実行することを提案しているClaude Codeのドキュメントにリンクを追加したよ: https://www.anthropic.com/engineering/claude-code-best-pract... これでネットワークアクセスが限られたドメインだけに制限されるんだ: https://github.com/anthropics/claude-code/blob/5062ed93fc67f...

最近、自分専用のコーディングエージェントを作ったんだ。市販のものに満足できなかったからね(でもClaude CodeのUIはすごくいい)。記事に書いてある通りに動くよ。カスタムDockerコンテナを起動して、モデルに対してシェルスクリプトを送信して、それをコンテナ内で実行するんだ。このコンテナには、エージェントの作業を楽にするためのCLIツールも追加してる。うちのエージェントは他にもいくつかのトリックを持ってて、まだ新しいから色んなアイデアを試してるところなんだけど、いくつか気づいたことがある。一つは、GPT-5がすごく推測するのに前向きだってこと。これはプロンプトの仕方にもよるけど、一つのスクリプトで五つか六つのことを同時に試そうとするスクリプトを書くのが得意なんだ。存在しないかもしれないファイルを読むことも含めてね。この推測実行のレベルは、特にGPT-5が考えるのが好きで遅いモデルだから、全体のスピードを劇的に上げるんだ。もう一つは、すごく複雑な「ミッション」を与えても、他のエージェントでは見たことがないような戦術で完了させることができるってこと。例えば、ライブラリの依存関係の中に埋もれている何かをチェックする必要があれば、上流のリポジトリをホームディレクトリにクローンして、必要なものを見つけるまで探ってから、ユーザーのプロジェクトに戻るんだ。これらはすべてコンテナ内で動いているから、ユーザーとのインタラクションは一切発生しない。実際、ユーザーとのインタラクションは不可能なんだ。動かし始めたら、終わるまで他のことをしてる感じ。モデルは「ミッション」をキューに入れて、並行して実行できるようになってるから、最後にそれをまとめるんだ。エージェントには、ミッションを受け取って仕様を書いて、レビューして、レビューに基づいて仕様を更新して、コーディングして、コードをレビューするモードもある。まだ初期段階だけど、このエージェントには20分間連続で推論したミッションを設定したことがあって、素晴らしい結果を出したよ。このUIのパラダイムが今後の方向性だと思う。エージェントと常にインタラクションしなければならないなら、AI支援のコーディングはスケールアップできないからね。モデルを最大限に活用するには、並行処理を最大限に活かす必要があるから、サンドボックス化は必須だね。

それは本当に面白いね。私も似たようなことに気づいたよ。GPT-5-Codexに対してフロントエンドのタスクを試したとき、ライブラリのURLを推測して(jsdelivrやGitHubの)、元のソースコードを取得しようとするのを見たことがある。いくつかの異なるURLを試して、ソースを掘り下げて、未文書のAPI機能の使い方を見つけようとしてた。

これ、Sketch.devの使い方に似てる気がするな。非同期で、クラウドインスタンスのコンテナ内でYOLOモードで動いてて、あまりインタラクションがないんだよね(タスクを与えて、あとは放っておく感じ)。友達は朝にたくさんタスクをキューに入れて、午後には成功したのを数個に絞ってる。僕もそうしたいけど、僕が扱ってるスケールだとマージのコンフリクトが厄介すぎる。自分のバカな問題(エンジニアリングだけど、ソフトウェア開発じゃない)用に自分のエージェントを作ってるから、君が見つけたトリックについてもっと聞きたいな。

モデルを最大限に活用するには、並列処理を最大限に活かす必要があるから、サンドボックスは必須だよね。サンドボックスの洗練としてチェックポイントについてどう思う?人間とLLMの密接なループでは、自動チェックポイント(モデルのコンテキストとファイルシステムの状態の両方)と、どのチェックポイントにも簡単に戻れることが最も重要なツールだと思う。大きなミスをした時に、正しいコンテキストで再挑戦する方が、LLMにミスを修正させるよりずっと早いからね。壊れたコードや無効な仮定がコンテキストを汚染しちゃうから。でも、それは人間がいつ元に戻すかを決める必要があるよね。君のシステムのどこかにサブエージェントを以前のチェックポイントにリセットする権限を与えてるの?それとも、サブエージェントが詰まったら完全にリセットして再挑戦するの?それとも、実際にはコンテキストの劣化は問題じゃないのかな?

君のリポジトリへのリンクを教えてくれない?ここでのアーキテクチャや、GPT-5がその種のエマージェントな振る舞いをするために使っているプロンプトについて理解したいんだ。

Linuxで軽量なサンドボックスを作るなら、Dockerの代わりにbubblewrapやfirejailを使うといいよ。こっちの方が速くて、_シンプル_なんだ。さっきClaudeをミニマルなサンドボックスで実行するために書いたbwrapスクリプトをここに載せるね: exec bwrap \ --ro-bind /usr /usr \ --ro-bind /etc /etc \ --ro-bind /run /run \ --ro-bind "$NODE_PATH" /node \ --proc /proc \ --dev /dev \ --symlink usr/lib64 /lib64 \ --tmpfs /tmp \ --unshare-all \ --share-net \ --die-with-parent \ --new-session \ --bind "$HOME/claude" /claude \ --bind "$HOME/.claude.json" /claude/.claude.json \ --bind "$HOME/.claude" /claude/.claude \ --setenv HOME /claude \ --setenv PATH "/node:/claude/bin:/usr/bin" \ --bind "$(pwd)" /work \ --chdir /work \ /claude/bin/claude "$@"

いいね、シェアしてくれてありがとう。macOSに同等のものがないのは本当にイライラするね(sandbox-execは似てるけど、ほとんど文書化されてなくて、Appleに「非推奨」とされてるし)。

一方では、基本的なタスクもLLMでは不可能だと文句を言ってる人がいるよね。もう一方では、AIによって完全に駆動されている呪われた言語[0]があって、機能しているように見える。ところで、それにはいくらかかったの?Claude Codeやaider、open codeのようなツールで大成功を収めた気がする。特にカスタムツールを定義できるときはね。「あなた」が何らかの形でループに入る必要がある。指導や方向性を提供するために。これに驚く人がいるのが不思議だよ。他の人(人間)と仕事をしているときは、ほとんどの時間を要件の明確化や目標の調整に費やしているんだから。LLMでも違う理由があるのかな? 0: https://ghuntley.com/cursed/

呪われたコスト見積もりは14,000ドルだったよ。https://twitter.com/GeoffreyHuntley/status/19652951529620975...

ところで、それにはいくらかかったの? 30,000ドル以上かな。でも、どれだけ機能してるかは分からないけど!

これは素晴らしいね。ほとんどの酸素がサンドボックスの質問に使われる気がするけど(それはそれでいいよね)。でも、コードじゃないエンジニアリングタスクのためのエージェントループがどんな感じなのか、すごく気になってるんだ。それに、大量のデータ(ソースコードの行数とか、生のメトリクス、oTelスパンデータとか)を扱うエージェントループにはどんな調整が必要なのかもね。「コンテキストエンジニアリング」っていう考え方が流行った時期があったけど、すぐにみんなそれを叩きまくったよね(それは誰も責めないけど、「プロンプトエンジニアリング」はちょっと恥ずかしい感じがした)。でも、複雑な問題を無限に繰り返しながら固定サイズのコンテキストウィンドウを管理するエンジニアリングの問題には、確かに何かあると思うし、それを扱うためのいろんなトリックもあるよ。

ドキュメントやスプレッドシート(会社のエンジニアじゃない人とやり取りするためのクソみたいなもの)にはエージェントループを使ってるよ。僕の選んだモデルはマークダウンやCSVが得意だから、オフィスソフトがそれをインポート・エクスポートできるんだ。

エージェントループが、DependabotやRenovateみたいに依存関係を更新する様子を想像できるよ。新しいバージョンの変更ログを見て、新しいコードの変更をレビューして、アップグレードする価値があるか(あるいは安定性やセキュリティの観点から危険か)を評価する感じね。こういうツールは、最新のバージョンでビルドを盲目的に再構築するために使われがちだけど、それが原因で多くの人がトラブルに巻き込まれるんだよね。NPMの依存関係が悪意のあるものになっちゃうから。

ちょっと違うかもしれないけど、クラウドコードって今年の2月にリリースされたの??みんなずっと前から使ってた気がするんだけど…僕の記憶はそんなに悪くないよね?

2月24日、AnthropicがSonnet 3.7と同じ発表に組み込んだよ: https://www.anthropic.com/news/claude-3-7-sonnet

実用的なループの実装がどんな感じか気になる人のために、スティーブ・イェッジが自分の「Efrit」プロジェクトを数行のElispでYOLOブートストラップしたよ: https://github.com/steveyegge/efrit/blob/4feb67574a330cc789f... Efritについてもっと知りたい人には、これが面白いよ: 「スティーブがクラウドに50年分のEmacs機能をフルアクセスさせるとき」 https://www.youtube.com/watch?v=ZJUyVVFOXOc

エージェントの使いやすさは、洗濯機を使う感じが理想かな。洗いたい服(白物か色物か)を選んで、「スタート」を押すだけ。Claude Codeのプランモードは、エージェントループの洗濯機みたいなもんだよ。詳細なプランを見られて、承認すればそのまま信頼して任せられるし、その間に他のことができるんだ。テストや他の検証方法を追加すれば、さらに進んで、一つのプランで長く動かせるようになるよ。

YOLOの状態は恥ずかしいね。> アップデート: AnthropicがClaude CodeのSafe YOLOモードについて独自のドキュメントを持っていることが判明したよ。そこにはこう書いてある: > Claudeに任意のコマンドを実行させるのはリスクが高く、データ損失やシステムの破損、さらにはデータの流出(例えば、プロンプトインジェクション攻撃による)を引き起こす可能性がある。これらのリスクを最小限に抑えるためには、インターネットアクセスのないコンテナで--dangerously-skip-permissionsを使うこと。Docker Dev Containersを使ったこのリファレンス実装を参考にしてね。[https://github.com/anthropics/claude-code/tree/main/.devcont...] それに…そのリンクは、自分の内部からファイアウォールをかけるdevcontainerに繋がっていて、実質的にはsudo iptablesを使ってるんだ。もしClaude Codeがそれを一発で突破できなかったら、ちょっと驚くかも。

Codexを調査しているときに、「エージェントループの設計は非常に新しいスキルだ—Claude Codeは2025年2月に初めてリリースされたばかりだ!」という言葉に共感したよ。[0]: https://blog.toolkami.com/openai-codex-tools/#coding-agents