Claude CodeやCodexのようなコーディングエージェントを使っていて、「この中身、自分でも組めるのでは」と一度は思った人は多いと思う。モデルにツールを渡してループを回しているだけ、と頭では分かっている。ところがいざ自作しようとすると、会話履歴が長くなって文脈があふれる問題、シェルを実行する前に人間の承認を挟む仕組み、計画モードと実行モードの切り替え、作業メモの永続化……と、地味で面倒な部品が芋づる式に必要になる。モデルそのものよりも、その「外側の足回り」を作るほうがずっと骨が折れる。
Microsoftはこの足回りを、オープンソースのMicrosoft Agent Frameworkに create_harness_agent() という1関数として丸ごと入れてきた。BUILD 2026で正式に披露された機能で、PythonとC#/.NETの両方から同じ思想で使える(ライセンスはMIT)。これは「モデル」ではなく「ハーネス(harness)」、つまりコーディングエージェントの骨格そのものを部品化した、という点で他のモデル発表とは毛色が違う。
ハーネスとは何を指すのか
聞き慣れない言葉だが、Microsoftの定義は拍子抜けするほど素直だ。公式ブログAgent Harness in Agent Frameworkはこう言い切っている。
Agent harness is the layer where model reasoning connects to real execution: shell and filesystem access, approval flows, and context management across long-running sessions.
ここで挙げられている三つ、すなわちシェルやファイルへのアクセス、承認フロー、長時間セッションをまたいだ文脈管理が、ハーネスの構成要素そのものだ。要するにハーネスとは「モデルの頭脳」と「現実の操作」をつなぐ配線盤であり、コーディングエージェントを名乗るなら避けて通れない泥臭い部分を、まとめてここに押し込む。チュートリアル記事Build your own clawでは「コーディングエージェントとは、モデルとハーネスのことだ(a coding agent is a model plus a harness)」とまで言い切っており、思想がはっきりしている。
自前で書くと何行になるかを1関数に畳む
Agent Harnessが束ねている部品は、これまで各自がスクラッチで書いていたものばかりだ。手作りした場合と比べると、何を肩代わりしてくれるのかが見えてくる。
| 必要な機能 | 自作だと | Agent Harness |
|---|---|---|
| ツール呼び出しのループ | 自前で実装 | function invocation 内蔵 |
| 会話履歴の保持 | 自前で管理 | history persistence 内蔵 |
| タスク分解・進捗管理 | TODOリストを手組み | TodoProvider |
| 計画/実行のモード分け | 状態管理を自作 | AgentModeProvider |
| Web検索 | ツール定義を用意 | HostedWebSearchTool |
| 作業メモの永続化 | ファイル入出力を実装 | file memory / file access |
| 危険な操作の承認 | ガード処理を自作 | tool approval 内蔵 |
| 文脈あふれ対策 | 圧縮ロジックを自作 | context compaction 内蔵 |
実際のコードは驚くほど短い。PythonのチュートリアルMeet your agent harness and clawに出てくる例はこうだ。
pip install agent-framework
agent = create_harness_agent(
client=client,
agent_instructions=FINANCE_INSTRUCTIONS,
tools=get_stock_price,
disable_todo=True,
disable_web_search=True,
)
client にモデルのクライアントを渡し、agent_instructions で役割を書き、自前のツールを tools で足すだけ。あとは履歴の保持も承認も圧縮もハーネスが面倒を見る。要らない部品は disable_todo や disable_web_search のようなフラグで個別に切れる(計画モードを外す disable_mode、メモを外す disable_memory などもある)。最初から全部入りで、引き算で削っていく設計だ。.NET側は chatClient.AsHarnessAgent() という拡張メソッドで、NuGetパッケージは Microsoft.Agents.AI。APIの形は違っても発想は揃えてある。
いちばん面白いのは文脈圧縮の作り込み
個人的にこのハーネスで一番うなったのは、context compaction(文脈圧縮)を真面目に部品化している点だ。長く動かすエージェントの最大の敵は、会話履歴がコンテキストウィンドウを食いつぶすことにある。ここをサボると、エージェントは数十ターンで「さっき何をしていたか」を見失う。
Agent Harnessはこれを、ループの途中でトークン使用量を監視して履歴を自動圧縮することで防ぐ。Pythonでは直近の数ターンだけ残す SlidingWindowStrategy(keep_last_groups=3) のような戦略を差し込めるし、.NET側はさらに踏み込んで、複数の戦略を連鎖させるパイプラインを組める。
new PipelineCompactionStrategy(
new ToolResultCompactionStrategy(CompactionTriggers.MessagesExceed(7)),
new SlidingWindowCompactionStrategy(CompactionTriggers.TurnsExceed(4)),
new TruncationCompactionStrategy(CompactionTriggers.GroupsExceed(12)));
「ツール結果が7メッセージを超えたらまずそこを畳む」「ターンが4を超えたら古い会話を窓から外す」「グループが12を超えたら切り詰める」といった具合に、何を・いつ・どう捨てるかを段階的に指定できる。ツールの巨大な出力ログから先に潰す、という発想は実際にコーディングエージェントを長時間回した人ほど刺さるはずだ。手で書くと地獄のように細かいこの部分が、設定の組み合わせで済む。
シェル実行の承認も同じ温度感で用意されている。Pythonなら @tool(approval_mode="always_require") を付けたツールが呼ばれるたびに user_input_requests が立ち、人間が y/n で許可するまで止まる。公式も「ローカルでシェルを実行するなら隔離環境で動かし、明示的な承認を必ず挟むこと」と釘を刺している。エージェントに rm -rf を握らせる怖さを、フレームワーク側が前提として織り込んでいるわけだ。
「組む」だけでなく「運ぶ」ところまで
ハーネスで組んだエージェントを本番に乗せる導線も同時に出てきた。Foundry Hosted Agentsを使うと、作ったエージェントをコンテナ化されたサービスとしてMicrosoft Foundryのマネージド基盤にデプロイできる(BUILD 2026のまとめ記事)。アイドル時はゼロまでスケールダウンし、再開時にはファイルシステムをそのまま復元する。セッションごとにVMが分離され、ハーネスが吐くOpenTelemetryのトレースは追加配線なしでApplication Insightsに流れる。.NETでは .AddFoundryResponses() と .MapFoundryResponses()、Pythonでは ResponsesHostServer が入口になる。
なお、Microsoftはこのハーネスで組む対話型エージェントを社内で「claw」と呼んでいる。チュートリアルの定義では「計画し、ツールを使い、物事を覚え、安全に代理で動く、CLIスタイルのエージェント」。要するにClaude CodeやCodexのような存在を、自分のドメイン向けに自作しよう、という想定だ。
どう嬉しいのか
実務目線で言うと、これは「コーディングエージェントの作り方が公開された」というより「エージェントの足回りがコモディティ化し始めた」サインだと受け止めている。これまで各社が秘伝のタレのように抱えていた圧縮戦略・承認フロー・モード管理が、ベンダーフレームワークの引数になった。差別化のレイヤーが、足回りの実装からその上の業務知識やツール設計へと一段押し上げられる。
逆に注意したいのは、全部入りゆえのブラックボックス化だ。圧縮や承認をハーネス任せにすると、「なぜこの履歴が消えたのか」「なぜこのツールが止まったのか」がフレームワーク内部の挙動に依存する。だからこそ最初から OpenTelemetry のトレースが組み込まれている意味は大きい。自作の社内エージェントを構想しているなら、ゼロから配線盤を作る前に、まず pip install agent-framework で create_harness_agent() を一度動かし、自分が本当に手で握りたいのはどの部品かを見極めるのが、いまのいちばん安い学習コストだと思う。