AI

Strands Harnessとは?pip導入から本番構成までPythonの実装手順を解説【2026年10月時点】

Strands Harnessとは?pip導入から本番構成までPythonの実装手順を解説【2026年10月時点】

Strands Harnessは、AWSのStrands Agentsチームが2026年9月21日にオープンソースで公開した、組み立て済みのAIエージェントです。create_harness() を1回呼べば、シェルとファイル操作、Web検索、コンテキスト管理、セッション、長期メモリが既定値で揃ったエージェントが返ってきます。この記事では、Strands Agents SDKやAgentCoreハーネスとの違いを整理し、pipでの導入、組み込みツールの絞り込み、承認ゲートと保存先の設定、版の固定までをPythonのコードで示します。最後の章は、採用してよい案件と見送るべき案件の境界を言い切る判断の章です。

まとめ:Strands Harnessを業務に載せる前に決めておく設定と判断材料

Strands Harnessは、Strands Agents SDKの上に「よく効く既定値」を積んだ完成品のエージェントです。返ってくるのは標準の Agent で、独自のラッパーはありません。手元で汎用の調査やファイル作業を任せるだけなら、pipで入れて数行書けば動きます。

ただし既定のままでは本番に出せません。シェル実行とファイル編集が最初から有効で、ツール呼び出しへの承認ゲートは何も掛かっていない状態です。セッションと長期メモリは ./.agent 配下に保存されるため、コンテナでは再起動のたびに消えます。業務に載せる前に決めるのは、残す組み込みツール、interventionsによる承認の掛け方、セッションとメモリの保存先、そしてマイナー版の固定の4点です。シェルを許せない業務システムへの組み込みなら、harnessではなくSDKを直接使う構成を選びます。

Strands HarnessとSDK・AgentCoreハーネスの役割の違い

名前が似た製品が3つあるため、まずは何がどの層を担うのかを切り分けます。

create_harnessが標準のAgentを返す組み立て済みエージェントの構造

Strands harnessの公式ドキュメントは、この製品を「完全に組み上がったエージェントハーネス」と説明しています。ツール、コンテキスト管理、セッション、メモリ、フックの既定値と、調整済みのシステムプロンプトが1つのimportに入っている形です。create_harness() が返すのはStrands Agents SDKの標準の Agent なので、SDKで書いたコードの知識がそのまま通用します。

土台のSDKそのものはStrands Agentsの使い方と特徴で解説しています。ソースはGitHubのstrands-agents/harness-sdkにまとまっており、Python版のharness、TypeScript版のharness、CLI、PythonとTypeScriptのSDKが同じリポジトリに同居する構成です。Apache License 2.0で公開されています。

同じ名前で紛らわしいAgentCoreハーネスとの提供形態と課金の違い

AWSにはもう1つ、Amazon Bedrock AgentCoreの「ハーネス」があります。こちらはAWSが運用するマネージドの実行基盤で、モデルやツールを設定として宣言し、API呼び出しでエージェントを動かします。課金はAgentCoreの各機能とモデル推論の従量です。仕組みと料金はBedrock AgentCoreハーネスGAの仕組みと料金にまとめました。

Strands Harnessは逆に、自分のプロセスで動くライブラリです。実行環境は自分で用意し、AWSのアカウントも必須ではありません。「AWSに預けるか、自分で持つか」が両者の分かれ目です。

28%低いトークンコストという公式ベンチマークの条件と読み方

発表で目を引くのは「同等の精度でトークンコストが28%低い」という数値です。公式の発表ブログによれば、同じClaudeまたはGPTのモデルを使い、Claude CodeやCodexなどのハーネスと6種類のベンチマークで比べた結果とされています。Fable 5を使った比較では、Claude Codeよりコストが77%低く、Terminal Bench 2.1のスコアが高かったとも書かれています。

比較相手はコーディング向けのハーネスで、測定はAWS自身が行い、論文は今後の公開予定です。2026年10月時点で第三者の再現結果は見当たらないため、自社のタスクでトークン数と成功率を測ってから判断してください。ハーネスという部品の役割分担そのものはAIハーネスを構成する6部品とSDK別の実装で整理しています。

pip install strands-harnessから最初のタスク実行までの手順

ここからは手を動かします。Pythonで説明し、TypeScriptでの違いは要所で補います。

Python 3.10以上と認証情報を揃える導入前提とモデル指定の書式

クイックスタートが挙げる動作要件は、PythonならPython 3.10以上、TypeScriptならNode.js 20以上です。PyPIのstrands-harnessでは、2026年10月時点の最新が0.2系(10月8日公開)です。9月21日の0.1.0から10月8日の0.2.0までに4つの版が出ており、更新の速い段階にあります。

既定のモデルはAmazon Bedrockで、Bedrock APIキー(AWS_BEARER_TOKEN_BEDROCK)、AWSの認証情報、IAMロールのいずれかで認証します。Bedrockのコンソールでモデルアクセスの有効化も必要です。他社モデルは "anthropic/claude-sonnet-5" のように「プロバイダー名/モデル名」の文字列で指定し、ANTHROPIC_API_KEY、OPENAI_API_KEY、GEMINI_API_KEY を環境変数で渡します。

create_harnessで調査タスクを依頼し.agentに残る成果物の確認

最小構成は次のとおりです。仮想環境を作ってから入れると、SDKの版がほかのプロジェクトと干渉しません。

# 仮想環境を作り、マイナー版を固定して導入(Anthropicを使うためextrasを付ける)
python -m venv .venv
source .venv/bin/activate
pip install "strands-harness[anthropic]~=0.2.0"
export ANTHROPIC_API_KEY=sk-ant-xxxxxxxx

# first_run.py
from strands_harness import create_harness

agent = create_harness(
    model="anthropic/claude-sonnet-5",
    session={"id": "api-design"},   # 同じidで後から会話を再開できる
)
agent("REST APIのバージョニング方式を3つ比較し、推奨をapi-versioning.mdに書いて")

実行すると、エージェントはWeb検索で調べ、結果をカレントディレクトリのMarkdownファイルに書き出します。会話は ./.agent/sessions に保存され、別のプロセスで同じ session={"id": "api-design"} を渡せば続きから再開できます。セッションの解説ページによれば、idは小文字英数字・ハイフン・アンダースコアへ正規化されるため、「API Design」と「api-design」は同じセッション扱いです。

Strands CLIで対話的に試作し/exportでコードへ書き出す流れ

コードを書く前に挙動を見たいなら、npm install -g @strands-agents/cli で入るCLIが近道です。strands でセットアップを開き、チャットしながらプロンプトやツールを足していきます。満足したら /export でPythonかTypeScriptのプロジェクトとして書き出せます。

書き出したファイルは strands --agent ./agent.ts で読み込み直せるため、CLIで試作してコードで固める往復ができます。TypeScriptで組み込む場合の作法はStrands Agents TypeScript SDKの使い方を参照してください。

組み込みツールとコンテキスト管理を業務用途に合わせて絞り込む設定

既定値は「何でもできる」側に寄っています。業務で使うなら、まず削るところから始めます。

builtin_toolsで8種の組み込みツールから必要な分だけ残す指定

ツールと指示の設定ページによれば、組み込みツールは shell、read、write、edit、web_fetch、web_search、programmatic_tool_caller、subagent の8種で、すべて既定で有効です。builtin_tools=["read", "shell"] のようにリストで渡すと、そのツールだけが残ります。空のリストなら全部無効です。

実務での優先順位ははっきりしています。最初に外すべきは shell です。次に、社外への通信を禁じる環境なら web_fetch と web_search を外します。ファイル操作の3種は、作業ディレクトリをコンテナのボリュームに閉じ込められるなら残してかまいません。

@toolの自作ツールとinstructionsで社内業務の手順を教える書き方

社内システムへの接続は、SDKと同じ @tool デコレーターで関数を定義し、tools=[...] に渡す形です。役割や制約は instructions に書くと、組み込みのシステムプロンプトの後ろに追記され、調整済みの指示は残ります。SDKの system_prompt はプロンプト全体を置き換えてしまうので、harnessでは使いません。

ツール名は組み込みツール・tools・プラグインを通して一意でなければならず、重複すると構築時にエラーになります。自作ツールを read や shell と名付けないでください。

ツール結果のオフロードと85%で走る要約の既定値を変える判断

発表ブログには、既定のコンテキスト管理の数値が載っています。約1,500トークンを超えるツール結果は切り詰め、コンテキストウィンドウの85%を超えると要約(compaction)を実行し、あふれたときはループの中で回復を試みます。大きなツール結果は本文から外してファイルへ退避する仕組みです。

コンテキストとキャッシュの設定では、context_manager に "auto"(既定)、"agentic"、無効の3つを選べます。無効にすると退避も止まり、履歴がそのままウィンドウに残ります。プロンプトキャッシュは caching=False で切れますが、費用面では残すほうが有利です。退避されたファイルはセッションのディレクトリに置かれます。

interventionsとセッション保存先で本番構成に載せる設定と注意点

本番に出す前に必ず手を入れるのは、承認の仕組みと保存先の2つです。

askとsmartと自然言語ポリシーとCedarで危険な呼び出しを止める

interventionsの解説ページは、指定しない場合は何も適用されず、すべてのツール呼び出しがそのまま実行されると明記しています。interventions には、全呼び出しに承認を求める "ask"、リスク分類器が危険と判断した呼び出しだけ止める "smart"、自然言語のポリシー文、.cedar ファイルのパスのいずれかを渡せます。リストで組み合わせることも可能です。

監査で説明できる形にしたいなら、Cedarのポリシーファイルが向いています。Pythonでは strands-agents[cedar] の追加が必要です。組み込みの generalist サブエージェントは親の設定を引き継ぐため、サブエージェント経由でゲートを迂回されることはありません。

コンテナ実行で状態を失わないsessionとmemoryの保存先の指定

本番運用のガイドは、セッションと長期メモリの既定の保存先が ./.agent 配下である点を最初の注意点に挙げています。ECSやCloud Runのようにファイルシステムが一時的な環境では、インスタンスが入れ替わるたびに会話も記憶も消えます。発表ブログが挙げるデプロイ先はModal、Cloudflare Containers、Azure Container Apps、Google Cloud Run、Amazon ECS、Bedrock AgentCoreで、Linuxコンテナが動けばどこでも動く設計です。ここまでの設定を本番向けにまとめると次の形になります。

from strands import tool
from strands_harness import create_harness

@tool
def get_ticket(ticket_id: str) -> str:
    """Fetch a support ticket by id."""
    return f"Ticket {ticket_id}: open, assigned to support."

agent = create_harness(
    model="anthropic/claude-sonnet-5",
    instructions="You are a support assistant. Always link the ticket you acted on.",
    tools=[get_ticket],
    builtin_tools=["read", "write", "edit"],   # shellとWeb系を外す
    interventions="Ask before deleting files or making any network request.",
    session={"id": "support-desk", "dir": "/var/lib/agent/sessions"},
    memory={"dir": "/var/lib/agent/memory"},
)

/var/lib/agent は永続ボリュームをマウントした場所を想定しています。同じガイドは、programmatic_tool_caller がモデル生成コードを隔離して実行する一方、そのコードから呼ぶツールは隔離しないと注意しています。信頼できない入力を受けるエージェントでは、このツールを外すかSDKのサンドボックス内で動かしてください。

0.x版の固定とSDK 1.57.2以上が要る依存関係の管理方法

バージョニングの方針では、Strands Harnessは0.x製品と位置づけられ、マイナー版(0.X.0)で破壊的変更を入れ、パッチ版でも新しい組み込みツールが増えるとされています。システムプロンプトやツール説明の調整は破壊的変更に数えません。先のコード例で ~=0.2.0 と書いたのはこのためです。パッチ版の上げで同じ入力への挙動が変わり得るため、更新前に回帰テストを通す運用にしてください。

依存も見ておきます。harness-pyのpyproject.tomlはmainブランチで strands-agents[otel]>=1.57.2,<2.0.0 を要求しており、0.2系のリリースノートにもセッション復元にSDK 1.57.2以上が必要と書かれています。PyPIのstrands-agentsは2026年10月時点で1.59系です。既存のSDKアプリにharnessを足すと、SDKも上がる点に気をつけてください。

Strands Harnessを採用すべき案件とSDK直書きやAgentCoreを選ぶ境界

判断軸は2つです。シェルとファイル操作をエージェントに渡せるか、実行環境を自分で持つか、で決まります。

汎用調査やファイル作業の社内エージェントならharnessで足りる条件

観点 Strands Harness SDK直書き AgentCoreハーネス
実行場所 自前のプロセス・コンテナ 自前のプロセス・コンテナ AWSのマネージド基盤
既定のツール 8種が有効 指定したものだけ 設定で宣言
承認ゲート 既定なし・引数で追加 ハンドラーで実装 基盤側の設定
版の安定性 0.x系 1.x系 GA済み
向く用途 社内の調査・文書作業 業務システム組み込み AWSで運用を任せたい本番

harnessで足りるのは、利用者が社内の開発者や調査担当に限られ、作業が「調べて、まとめて、ファイルに書く」で完結する場合です。リポジトリの調査、仕様書の下書き、競合製品の比較表づくりなどがこれに当たります。コーディング専用のツールで足りるなら、Claude Codeの機能と導入手順のような既製品と比べてから選んでください。

シェル実行を許せない業務システム組み込みでharnessを見送る場面

見送るべきなのは、顧客や取引先の入力を受けるエージェントです。既定でシェルとWebアクセスが有効な製品を、外部入力の入口に置く理由はありません。builtin_tools=[] まで削るなら、harnessを使う意味の大半が消えます。この場合は最初からSDKで必要なツールだけを渡し、承認やログの扱いを自社の業務フローに合わせて書くほうが、レビューも監査も軽く済みます。

0.x系であることも理由になります。マイナー版ごとに破壊的変更が入る前提なので、数年単位で保守する基幹系の画面に直接組み込むのは早いと判断します。AWSに運用を任せたいならAgentCoreハーネス、細部まで自社で固定したいならSDK直書きです。ハーネス部品を自社でどう設計するかはSpec・Context・Harnessの三層で組む設計で解説しています。業務システムへのエージェント組み込みや、harnessとSDKのどちらで組むかの見極めは、AIエージェント開発で要件整理から支援しています。

Strands Harnessの導入検討でよく挙がる質問に実装者の目線で答える

検討時に聞かれやすい論点を、2026年10月時点の公開情報にもとづいて答えます。

Strands HarnessとStrands Agents SDKはどちらを先に学ぶべきですか?

動かして挙動を掴むならharnessが先です。返り値はSDKの標準の Agent なので、harnessで得た知識はSDKへそのまま持ち込めます。業務システムへ組み込む段階で、ツールや承認を自分で組みたくなったらSDKへ降りる順序が無駄を生みません。

AWSのアカウントがなくてもStrands Harnessは使えますか?

使えます。既定のモデルはAmazon Bedrockですが、model 引数でAnthropic、OpenAI、Google、Ollama、LiteLLM経由のモデルへ切り替えられます。各社のAPIキーを環境変数で渡すだけで、AWSの認証情報は要りません。Ollamaならローカルで完結し、キーも不要です。

Strands HarnessはClaude CodeやCodexの代わりになりますか?

公式は汎用エージェントとして位置づけており、コーディング専用ではありません。シェルとファイル編集を持つためコード作業もこなせますが、IDE連携などの細かな機能はコーディングエージェント側が厚い状態です。乗り換えは自社のタスクで両方を測ってから決めてください。

TypeScriptでもPythonと同じ機能が使えますか?

npm install @strands-agents/harness で導入でき、createHarness() で同じ考え方の設定ができます。ただしPython版とTypeScript版は独立して版管理されており、番号が同じでも機能が同じとは限らないと公式が明記しています。0.2.0ではTypeScript版のみ、SDKがpeerDependencyに変わりました。

Strands Harnessの利用料金はかかりますか?

ライブラリ自体はApache License 2.0のオープンソースで、利用料はかかりません。発生するのはモデルの推論料金と、動かすコンテナやサーバーの料金です。プロンプトキャッシュとツール結果の退避は既定で有効なので、推論料金を下げるために追加の設定は要りません。月額を見積もるときは、自社の代表的なタスクを数件流してトークン数を実測し、利用回数を掛けて求めてください。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

RELATED POSTS 関連記事

目次