AIエージェントに何かツールを追加したのに、挙動がまったく変わらない。そんな経験はないでしょうか。自分も先日、まさにこれにハマりました。原因を掘り下げていくと「ハーネス」という言葉に行き着き、AIエージェントの構造そのものへの理解が一段深まりました。今回はその顛末を、同じようにAIエージェントを触り始めたインフラエンジニアの方向けに整理してみます。
事の発端:PowerShell 7を入れたのに、何も変わらなかった
このブログの運用ではClaude CodeというAIエージェントを使い、PowerShell経由でWordPressのAPIを叩く作業をしています。ある時、既存のPowerShell(5.1)に特有の癖のあるバグに遭遇し、Codexとも相談のうえ「新しいPowerShell 7を入れれば解決するのでは」という話になりました。
実際にPowerShell 7をインストールし、共存させる設定も確認しました。ところが、Claude Codeに同じ処理をやらせても、挙動はまったく変わりません。OS上にはPowerShell 7が確かに存在しているのに、AIエージェントが使うシェルは相変わらず古いPowerShell 5.1のままだったのです。
掘り下げてわかったこと:モデルとハーネスは別物
なぜOS側を変えても挙動が変わらないのか。AIエージェントの中身を整理すると理由が見えてきました。
AIエージェントは大きく2つの層でできています。
- モデル本体: テキストを受け取ってテキストを返すだけの存在。それ自体はファイルにもシェルにもネットワークにも直接触れません
- ハーネス: モデルに「道具(ツール)」を与え、実際にOS上で処理を実行する側。Claude CodeというアプリケーションそのものがこのAIエージェントのハーネスにあたります
私が使っている「PowerShellを実行する」というツールは、ハーネス側が「powershell.exeを呼ぶ」とあらかじめ決めて実装したものでした。OS環境にPowerShell 7を追加しても、それは「使える選択肢が増えた」だけで、ハーネス側のツール定義自体は変わりません。だから挙動が変わらなかったわけです。
一休みポイント: 何を直せば直るのか
❌ OS側に新しいツールを入れれば、AIエージェントも自動的にそれを使うはずだ
→ 実際はハーネス側の実装が特定のツールに固定されていて、OS環境を変えても影響しない
✅ ハーネスのツール定義そのものを変えるか、エージェントの側から明示的に新しいツールを名指しで呼び出す必要がある
→ 今回であれば、Claude Codeの中から`pwsh`コマンドを明示的に呼び出すことで、PowerShell 7の恩恵を受けられる
「環境を整えれば動く」と「エージェントに実際にその環境を使わせる」の間には、意外と距離があります。
インフラ屋にしっくりくる例え
この構造、Difyでワークフローを組んだことがある人には「エージェントモード」が一番近いと思います。
Difyの「ワークフロー」モードは、人間があらかじめノードの流れを固定する設計図です。それに対して「エージェントモード」は、人間が用意するのは「使える道具一式」までで、どの道具をどの順番で・何回使うかはモデル自身がその場で判断します。
Claude Codeのハーネスも同じで、私に「ファイル操作」「シェル実行」「ブラウザ操作」といった道具を用意してくれていますが、それらをどう組み合わせて使うかは、会話の流れを見ながらその都度判断しています。今回のPowerShellの一件も、事前に決められた手順ではなく、その場のやり取りの中で見えてきた話でした。
ユーザー側で触れる部分・触れない部分
ここまでだと「結局ハーネスは全部ブラックボックスなのか」と思うかもしれませんが、そうではありません。ハーネスという枠組みの中には、固定部分と、ユーザー側で調整できる拡張レイヤーの両方があります。
- 固定部分(触れない): 各ツールの内部実装、モデルのツール呼び出しループそのもの
- 拡張レイヤー(触れる): 権限モード(自動実行か都度確認か)、プロジェクトごとのルール指定、外部サービスとの連携設定、追加の道具立て
今回のPowerShellの挙動は前者(固定部分)でしたが、例えば「破壊的な操作の前には必ず確認を求める」といった安全策は、後者(拡張レイヤー)として用意されている仕組みです。週刊AIニュースの回で触れた「ガードレール」の話とも根っこは同じで、AIエージェントに何かをやらせるときは、モデルの賢さだけでなく、この土台の設計がどうなっているかを意識する価値があります。
教訓
ツールを増やしたのに挙動が変わらないとき、疑うべきは「モデルが賢いかどうか」ではなく、「そのツールを実際に呼び出す土台(ハーネス)がどう実装されているか」であることが多い、というのが今回の学びです。OS環境とエージェントの実行環境は、思っている以上に別物として扱う必要があります。
次のアクション
AIエージェントの挙動で「なぜこれが変わらないんだろう」と引っかかったときは、一度「モデルの限界」と「ハーネスの実装」を切り分けて考えてみることをお勧めします。AIエージェントに実行権限を渡す際の環境設計という意味では、週刊AIニュース記事で扱った「ガードレール」の話とも通じるところがあるので、あわせて読んでみてください。

コメント