Claude Codeの強さは、モデル単体ではなく「ハーネス」にあります。LangChainが公開したDeep Agentsなら、その骨格をオープンソースで再現できます。

この記事では、LangChain創業者のHarrison Chase氏が紹介したコミュニティ記事を軸に、Deep AgentsでClaude Code風のコーディングエージェントを組み立てる手順を整理します。

この記事でわかること

  • Claude Code型エージェントが動く4つの仕組み
  • create_deep_agentで揃う標準機能の全体像
  • カスタムツールとサブエージェントを足した実装例
  • 本番運用で自分が担うべき残り2割の作業

https://github.com/langchain-ai/deepagents

Claude Codeの正体は「ハーネス」

Claude Codeを使ったとき「モデルが賢い」と感じるのは自然です。ただし、コーディングエージェントの本体はLLMそのものではありません。ツール呼び出しを回すループ、ファイル操作、計画、コンテキスト管理を束ねるエージェントハーネスが、会話を「作業」に変えています。

LangChainの公式ブログでは、Deep Research・Manus・Claude Codeといった長時間タスク向けエージェントに共通する設計として、次の4点が挙げられています(参考)。

  1. 計画ツール — タスクを分解し、進捗を追跡する
  2. サブエージェント — 重い調査を別コンテキストに切り出す
  3. ファイルシステム — 大きな結果を会話外に退避する
  4. 詳細なシステムプロンプト — ツールの使い方を具体例付きで指示する

興味深いのは計画ツールの性質です。Claude CodeのTodoリストは実処理を行わない「ノーオペ」に近く、リストを書く行為そのものがコンテキストエンジニアリングとして機能します。長いセッションでも当初の目的を見失いにくくする仕掛けです。

Deep Agentsが提供するもの

Deep Agentsは、LangChainとLangGraphの上に載ったMITライセンスのエージェントハーネスです。READMEでも「Claude Codeに触発され、汎用性をさらに広げた」と明記されています(参考)。

create_deep_agentを呼ぶだけで、次の機能が標準装備されます。

カテゴリ 主な機能
計画 write_todosでタスク分解・進捗管理
ファイル ls read_file write_file edit_file glob grep
委譲 taskでサブエージェントを起動
実行 サンドボックス連携時のexecute
記憶 チェックポインタとAGENTS.mdによる永続化
安全 interrupt_onで危険な操作前に一時停止

エコシステム上の位置づけは明確です。LangGraphが実行ランタイム、LangChainのcreate_agentが軽量ハーネス、Deep Agentsが計画・ファイル・サブエージェントまで含む本格ハーネスです。単発のツール呼び出しならLangChainで足りますが、リポジトリ横断の修正や調査のように手順が長い作業ではDeep Agentsの抽象化コストに見合う場面が多いです。

最小構成から始める

まずはループだけ動かします。pip install deepagentsのあと、モデルとカスタムツールを渡すだけです。

from deepagents import create_deep_agent

def get_weather(city: str) -> str:
    return f"It's always sunny in {city}!"

agent = create_deep_agent(
    model="anthropic:claude-sonnet-4-6",
    tools=[get_weather],
    system_prompt="You are a helpful assistant.",
)

result = agent.invoke(
    {"messages": [{"role": "user", "content": "What's the weather in Tokyo?"}]}
)

.invoke()を呼ぶと、モデルがツールを要求する限りループが回り、テキストだけ返った時点で終了します。while文を自前で書く必要はありません。モデル指定はprovider:model形式で、OpenAI・Anthropic・Google・Baseten・Ollamaなどツール呼び出しに対応したLLMなら差し替え可能です。

2026年6月21日、Harrison Chase氏はXでコミュニティ記事「Build your own Claude Code with Deep Agents」を紹介し、オープンウェイトのGLM-5.2が特に相性が良いとコメントしています。Z.aiの公式発表では、GLM-5.2はSWE-bench Proで62.1%、Terminal-Bench 2.1で81.0%を記録し、長時間のコーディングエージェント向けに設計されたと説明されています(参考)。Deep Agentsはモデル非依存なので、こうしたオープンウェイトモデルをバックエンドに載せ替えて試す動線が用意されています。

コーディングエージェントの組み立て手順

Towards AIのSreejith Sreejayan氏の記事では、Claude Codeの解剖に沿って7要素を順に再現しています(参考)。実装の流れを要約すると次のとおりです。

1. カスタムツールを足す

組み込みのファイルツールに加え、テスト実行などプロジェクト固有の関数を@toolデコレータで登録します。出力はトークン上限を意識して切り詰めるのが実務的です。生のcatsedより専用ツールを使うよう、システムプロンプトで明示するのが定石です。

2. サブエージェントを定義する

コードベース全体を検索するような重い作業は、専用サブエージェントに任せます。親エージェントの会話は要約結果だけを受け取るため、コンテキストが膨らみにくくなります。

code_searcher = {
    "name": "code-searcher",
    "description": "コードベース内の特定ロジックの所在を調べる",
    "system_prompt": "grepとglobで調査し、要約だけ返す。編集はしない。",
}

キー名はsystem_promptです。promptでは動きません。

3. シェル実行と承認ゲートを設定する

LocalShellBackendを渡すとexecuteツールが有効になります。同時にinterrupt_onwrite_fileexecuteの前に人間の承認を挟めます。プロンプトで「大事なファイルを消さないで」と頼むのは安全策になりません。拒否はハーネス側のルールで強制する必要があります。

4. セッションをまたいで覚えさせる

InMemorySaverなどのチェックポインタとthread_idを組み合わせると、同一会話の途中状態を保持できます。memory=["./AGENTS.md"]を渡せば、コーディング規約やプロジェクト方針をファイル経由で読み書きする長期記憶も使えます。

5. 全部をつなぐ

記事の最終例では、計画・探索・編集・テスト・委譲・サンドボックス・永続化を100行未満でまとめています。コンテキストのオフロードと要約はハーネスが自動処理するため、開発者はツール定義とプロンプト設計に集中できます。

すぐ試すならDeep Agents Code

ライブラリを組む前に挙動を掴みたい場合は、同じSDK上のターミナルエージェントDeep Agents Codedcode)が近道です。curl -LsSf https://langch.in/dcode | bashで導入し、セッション内の/modelコマンドでモデルを切り替えられます(参考)。Claude Codeと同様の対話型コーディング体験を、別プロバイダのモデルで試す用途に向いています。

自分で仕上げるべき2割

Deep Agentsはループ・計画・ファイル・委譲・永続化の骨格を無料で提供します。一方で、次の3点はライブラリが代行しません。

  • システムプロンプトの調整 — どのツールをいつ使うか、失敗時にどう立て直すかは反復チューニングが必要です
  • サンドボックスの設計 — OSレベルでコマンドを隔離しないと、エージェントはツールが許す範囲で何でも実行できます
  • ツールの品質 — テストランナーや検索が不安定なら、エージェントの出力も不安定になります

コスト面も見落としがちです。計画・サブエージェント・長いループはAPI呼び出しが積み上がります。単純な質問には通常のチャットの方が速く安い場面も多いです。

Claude Codeの強みは1年以上の実運用で磨かれたプロンプトと挙動にあります。Deep Agentsはその設計思想をオープンに再現する土台です。まず最小構成で動かし、自分のリポジトリ用にツールとサブエージェントを足していくのが現実的な入り方です。