あなたのハーネス、あなたの記憶
LangChain Blogの記事は、エージェント構築の主流となった「エージェントハーネス」がエージェントのメモリと密接に結びついており、クローズドなハーネスはサードパーティへの依存とロックインを招くため、メモリを自ら所有できるオープンなハーネスの重要性を主張している。
キーポイント
エージェントハーネスの定着と重要性
エージェント構築の主流手法としてエージェントハーネスが確立し、今後も存続する。Claude Codeのソースコード漏洩(51.2万行)が、主要モデルメーカーもハーネスに多大な投資をしている証拠である。
ハーネスとメモリの不可分な関係
メモリは独立したサービスではなく、ハーネスの核心的な責任と能力の一部である。ハーネスはコンテキスト(会話メッセージ、ツール呼び出し結果などの短期記憶)の管理を担う。
クローズドハーネスによるロックインの危険性
特にプロプライエタリAPIの背後にあるクローズドなハーネスを使用すると、エージェントのメモリの制御をサードパーティに委ねることになり、強力なベンダーロックインを生み出す。
オープンハーネスとメモリ所有の主張
優れたエージェント体験のためにはメモリが極めて重要であり、メモリ(ひいてはハーネス)はオープンであるべきで、自らが自身のメモリを所有する権利を持つべきである。
影響分析・編集コメントを表示
影響分析
この記事は、急速に発展するAIエージェント開発の実践現場において、技術的実装(ハーネス)とデータ主権(メモリ)の関係に警鐘を鳴らす重要な論考である。開発者や企業が将来の技術的依存とロックインのリスクを認識し、オープンなアーキテクチャの重要性を再考するきっかけとなる可能性が高い。
編集コメント
技術解説というよりは、AIエージェント開発の未来の方向性と、開発者コミュニティが直面する実存的課題(制御 vs. 利便性)についての強い主張記事。業界の重要な議論を喚起する内容。
エージェント・ハーネスは、エージェントを構築する主流な方法となりつつあり、その傾向に終わりは見えない。これらのハーネスはエージェントのメモリと密接に関連している。もしあなたがクローズドなハーネス、特に proprietary API(独自API)の背後にあるものを使用している場合、あなたはエージェントのメモリをサードパーティに委ねる選択をしていることになる。メモリは、質が高く、ユーザーを引き付けるエージェント体験を創出する上で極めて重要である。これは驚くべきロックイン(乗り換えコスト)を生み出す。メモリ、ひいてはハーネス自体もオープンであるべきであり、そうすることであなたが自身のメモリを所有できるのだ。
エージェント・ハーネスはエージェント構築の手段であり、その存在は消えないだろう。
過去3年で「エージェントシステムを構築する最善の方法」は劇的に変化した。ChatGPTが登場した当時、できるのは単純なRAGチェーン(LangChain)のみだった。その後モデルが少し向上し、より複雑なフローを作成できるようになった(LangGraph)。さらにモデルの性能が大幅に向上し、新しいタイプのスケルトンであるエージェント・ハーネスが登場した。
エージェント・ハーネスの例には、Claude Code、Deep Agents、Pi(OpenClawを駆動)、OpenCode、Codex、Letta Codeなどが挙げられる。
imageエージェント・ハーネスは消え去らない。
モデルが「ハネス(基盤コード)」の部分をますます吸収していくだろうという見方があることもありますが、それは正しくありません。実際に起こっていること(そして今後も続くであろうこと)は、2023年に必要とされていたハネスの多くが不要になったということです。しかし、その代わりに他の種類のハネスが導入されています。定義上、エージェントとはツールやその他のデータソースと相互作用する大規模言語モデル(LLM)のことです。そのような相互作用を可能にするために、LLM の周囲には常にシステムが存在します。証拠が必要でしょうか?Claude Code のソースコードが流出した際、その行数は 512,000 行に及びました。このコードこそがハネスです。世界で最も優れたモデルを開発している企業でさえ、ハネスへの投資を強化しています。
OpenAI や Anthropic の API にウェブ検索機能が組み込まれている場合、それは「モデルの一部」ではありません。むしろ、それらの API の背後に位置し、ツール呼び出しを通じてモデルとウェブ検索 API を調整する軽量なハネスの一部です。
ハネスはメモリと密接に関連している
Sarah Wooders 氏は「メモリはプラグインではない(ハネスそのものだ)」という優れたブログ記事を執筆しており、私もこれに完全に同意します。
メモリは特定のハネスとは無関係なスタンドアロンのサービスであるという見方もあるようですが、現時点ではそれは正しくありません。
ハネスの大きな責任の一つはコンテキスト(文脈)との相互作用です。Sarah の言葉によれば、
エージェントのハネスにメモリをプラグインするよう求めることは、自動車に運転機能をプラグインするよう求めることに似ています。コンテキストの管理、ひいてはメモリの管理は、エージェントハネスの中核的な機能かつ責任です。
メモリは単なるコンテキストの一種に過ぎません。短期メモリ(会話内のメッセージや、大規模なツール呼び出しの結果)はハーンドルによって処理されます。長期メモリ(セッションをまたぐメモリ)の更新と読み取りには、ハーンドルが必要です。サラは、ハーンドルがメモリとどのように結びついているかの他の多くの方法をリストアップしています:
AGENTS.md や CLAUDE.md ファイルはどのようにコンテキストに読み込まれるのか?スキルメタデータはエージェントにどのように表示されるのか?(システムプロンプト内か、システムメッセージ内か?)エージェントは自身のシステム指示を修正できるのか?コンパクション(圧縮)後に残るのは何で、失われるのは何か?インタラクションは保存され、クエリ可能になるのか?メモリメタデータはエージェントにどのように提示されるのか?現在の作業ディレクトリはどのように表現されるか?ファイルシステム情報はどの程度公開されるのか?
現在、メモリという概念は初期段階にあります。メモリについてはまだ非常に早い段階です。透明性のある観点から、長期メモリは MVP(Minimum Viable Product:最小実行可能製品)の多くの場合、一部ではないことがわかります。まずエージェントを一般的に動作させる必要があり、その後でパーソナライズについて考えることができます。これは、私たちが(業界として)依然としてメモリについて模索していることを意味します。つまり、メモリに関するよく知られた共通の抽象化は存在しません。もしメモリがより一般的になり、ベストプラクティスが発見されれば、個別のメモリシステムが意味をなすようになる可能性があります。しかし、現時点ではありません。現在、サラが述べたように、「最終的にハーンドルがコンテキストと状態をどのように管理するかは、エージェントメモリの基盤です。」
もしあなたがハーンドルを所有しないなら、あなたはメモリも所有しません。
ハーンドルはメモリと密接に関連しています。
imageクローズドなハース(harness)を使用する場合、特にそれがAPIの背後にある場合、あなたは自分のメモリを所有していません。
これはいくつかの形で現れます。
やや悪いケース:ステートフルなAPI(OpenAIのResponses APIやAnthropicのサーバー側コンパクションなど)を使用する場合、あなたはそれらのサーバーに状態を保存しています。モデルを切り替えて以前のスレッドを再開したい場合、それはもはや不可能になります。
image悪いケース:クローズドなハース(内部でClaude Codeを使用するClaude Agent SDKなど、オープンソースではないもの)を使用する場合、このハースはあなたにとって不明な方法でメモリと相互作用します。おそらくクライアントサイドにいくつかのアーティファクトを作成しますが、それらの形状はどうなっており、ハースはそれらをどのように使用するべきでしょうか?それは不明であり、したがってあるハースから別のハースへの移譲は不可能です。
imageしかし、最悪なのは別のケースです。長期メモリを含むハース全体がAPIの背後にある場合です。
この状況では、長期記憶を含むメモリに関する所有権や可視性はゼロです。ハarness(フレームワーク)が何であるか、つまりメモリをどのように使用するかさえも分かりません。さらに悪いことに、メモリ自体の所有権すら持ち合わせていません。APIを通じて一部の機能が公開されている場合もあれば、全く公開されていない場合もあり、その点については制御できません。

「モデルがハarnessの機能をますます吸収していく」と人々が言うとき、彼らが本当に意味しているのはこれです。つまり、メモリに関連する部分は、モデルプロバイダーが提供するAPIの背後に隠れていくということです。
これは極めて警戒すべき状況です。メモリが単一のプラットフォーム、ひいては単一のモデルにロックインされることを意味します。
モデルプロバイダーにはこれを行う強いインセンティブがあります。そして、彼らはすでにその動きを開始しています。Anthropicは「Claude Managed Agents」をリリースしました。これは、事実上すべての機能をAPIの背後に配置し、自社のプラットフォームにロックインするものです。
ハarness全体がAPIの背後にあるわけではありませんが、モデルプロバイダーはより多くの機能をAPIの背後に移動させるインセンティブを持っており、すでにその取り組みを行っています。例えば、Codexはオープンソースですが、OpenAIエコシステム外では使用できない暗号化された圧縮サマリーを生成します。
なぜ彼らはこれを行っているのでしょうか?メモリは重要であり、モデル単体からは得られないようなロックイン効果を生み出すからです。
メモリは重要であり、ロックイン効果を生む
メモリは初期段階のものですが、その重要性が誰にでも明らかです。それは、ユーザーとのインタラクションを通じてエージェントが改善されることを可能にし、データフラインホイールを構築できます。それは、各ユーザーにパーソナライズされたエージェントを提供し、彼らの欲求や使用パターンに適応するエージェンティックな体験を構築することを可能にします。
メモリがない場合、同じツールにアクセスできる誰にでもエージェントが簡単に複製されてしまいます。
メモリがある場合、独自のデータセット、つまりユーザーのインタラクションと好意のデータセットが構築されます。この独自データセットにより、差別化され、ますます知的な体験を提供できます。
これまで、モデルプロバイダーを切り替えることは比較的容易でした。それらは類似しているか、同一のAPIを持っています。確かに、プロンプトを少し変更する必要がありますが、それほど難しくはありません。
しかし、これはすべてステートレスであるためです。
関連する状態が一つでも存在すると、切り替えははるかに困難になります。なぜなら、このメモリが重要だからです。そして、切り替えると、それにアクセスする権利を失うことになります。
物語をお聞かせしましょう。私には社内用のメールアシスタントがあります。これは、エンタープライズ対応のOpenClawsを構築するためのノーコードプラットフォームであるFleetのテンプレートの上に構築されています。このプラットフォームにはメモリが組み込まれており、過去数ヶ月にわたってメールアシスタントとインタラクションするにつれて、メモリが蓄積されました。数週間前、私のエージェントは誤って削除されてしまいました。私は非常に腹が立ちました!同じテンプレートからエージェントを作成しようと試みましたが、体験は著しく劣っていました。私の好み、トーン、すべてを再教える必要がありました。
私のメールエージェント削除のプラス面は、記憶がどれほど強力かつ定着しやすいかを実感させられたことです。
Open Memory、Open Harnesses
記憶はオープンである必要があり、エージェント体験を開発する誰かが所有する必要があります。これにより、実際に制御できる独自のデータセットを構築できます。
記憶(そしてそれゆえハarnesses)はモデルプロバイダーとは分離されているべきです。あなたのユースケースに最適なモデルを試すための選択肢を求めているはずです。モデルプロバイダーは、記憶を通じてロックインを生み出すようインセンティブを与えられています。
これが私たちが Deep Agents を構築する理由です。Deep Agents は以下の特性を持っています:
オープンソースであること
モデル非依存(model agnostic)であること
agents.md や skills などのオープンスタンダードを使用すること
記憶を保存するための Mongo、Postgres、Redis などへのプラグインを持つこと
LangSmith Deployment を介してデプロイ可能であり、セルフホスト可能で、任意のクラウドにデプロイできること
記憶ストアとして機能する独自のデータベースを持てること
任意の標準的なウェブホスティングフレームワークの背後で動作すること
あなたの記憶を所有するためには、Open Harness を使用している必要があります。
今日 Deep Agents をお試しください。
レビューと意見を提供してくれたいくつかの人々に感謝します:
Sydney Runkle。彼女は Deep Agents と記憶に関する多くの優れた作業を行っています。
Viv Trivedy。エージェントハarnesses における主要な声です。
Nuno Campos。金融エージェントのためのコンテキストエンジニアリングに関する優れた著作を持っています。
Sarah Wooders。Letta の CTO です。同社は状態保持エージェント(stateful agents)の最前線に位置し続けています。
原文を表示
imageAgent harnesses are becoming the dominant way to build agents, and they are not going anywhere. These harnesses are intimately tied to agent memory. If you used a closed harness - especially if it’s behind a proprietary API - you are choosing to yield control of your agent’s memory to a third party. Memory is incredibly important to creating good and sticky agentic experiences. This creates incredible lock in. Memory - and therefor harnesses - should be open, so that you own your own memory
Agent Harnesses are how you build agents, and they’re not going anywhere
The “best” way to build agentic systems has changed dramatically over the past three years. When ChatGPT came out, all you could do were simple RAG chains (LangChain). Then the models got a little better, and could create more complex flows (LangGraph). Then they got a lot better, and that gave rise to a new type of scaffolding - agent harnesses.
Examples of agent harnesses include Claude Code, Deep Agents, Pi (powers OpenClaw), OpenCode, Codex, Letta Code, and many more.
imageAgent harnesses are not going away.
There is sometimes sentiment that models will absorb more and more of the scaffolding. This is not true. What has happened (and will continue to happen) is that a lot of the scaffolding needed in 2023 is no longer needed. But this has been replaced by other types of scaffolding. An agent, by definition, is an LLM interacting with tools and other sources of data. There will always be a system around the LLM to facilitate that type of interaction. Need evidence? When Claude Code’s source code was leaked, there was 512k lines of code. That code is the harness. Even the makers of the best model in the world are investing heavily in harnesses.
When things like web search are built into OpenAI and Anthropic’s APIs - they are not “part of the model”. Rather, they are part of a lightweight harness that sits behind their APIs and orchestrates the model with those web search APIs (via nothing other than tool calling).
Harnesses are tied to memory
Sarah Wooders wrote a great blog on why “memory isn’t a plugin (it’s the harness)”, and I couldn’t agree with it more.
There is sometimes sentiment that memory is a standalone service, separate from any particular harness. At this point in time, that is not true.
A large responsibility of the harness is to interact with context. As Sarah puts it:
Asking to plug memory into an agent harness is like asking to plug driving into a car. Managing context, and therefore memory, is a core capability and responsibility of the agent harness.
Memory is just a form of context. Short term memory (messages in the conversation, large tool call results) are handled by the harness. Long term memory (cross session memory) needs to be updated and read by the harness. Sarah lists out many other ways the harness is tied to memory:
How is the AGENTS.md or CLAUDE.md file loaded into context?How is skill metadata shown to the agents? (in the system prompt? in system messages?)Can the agent modify its own system instructions?What survives compaction, and what's lost?Are interactions stored and made queryable?How is memory metadata presented to the agent?How is the current working directory represented? How much filesystem information is exposed?
Right now, memory as a concept is in it’s infancy. It’s so early for memory. Transparently, we see that long term memory is often not part of the MVP. First you need to get an agent working generally, then you can worry about personalization. This means that we (as an industry) are still figuring out memory. This means there are not well known or common abstractions for memory. If memory does become more known, and as we discover best practices, it is possible that separate memory systems start to make sense. But not at this point in time. Right now, as Sarah said, “ultimately, how the harness manages context and state in general is the foundation for agent memory.”
if you don't own your harness, you don't own your memory
The harness is intimately tied to memory.
imageIf you use a closed harness, especially if its behind an API, you don’t own your memory.
This manifests itself in several ways.
Mildly bad: If you use a stateful API (like OpenAI’s Responses API, or Anthropic’s server side compaction), you are storing state on their server. If you want to swap models and resume previous threads - that is no longer doable.
imageBad: If you use a closed harness (like Claude Agent SDK, which uses Claude Code under the hood, which is not open source), this harness interacts with memory in a way that is unknown to you. Maybe it creates some artifacts client side - but what is the shape of those, and how should a harness use those? That is unknown, and therefor non-transferrable from one harness to another.
imageBut worst is something else - when the whole harness, including long term memory is behind an API.
In this situation, you have zero ownership or visibility into memory, including long term memory. You do not know the harness (which means you don’t know how to use the memory). But even worse - you don’t even own the memory! Maybe some parts are exposed via API, maybe no parts are - you have no control over that.
imageWhen people say that the “models will absorb more and more of the harness” - this is what they really mean. They mean that these memory related parts will go behind the APIs that model providers offer.
This is incredibly alarming - it means that memory will become locked into a single platform, a single model.
Model providers are incredibly incentivized to do this. And they are starting to. Anthropic launched Claude Managed Agents. This puts literally everything behind an API, locked into their platform.
Even if the whole harness isn’t behind the API, model providers are incentivized to move more and more behind APIs - and are already doing so. For example: even though Codex is an open source, it generates an encrypted compaction summary (that is not usable outside of the OpenAI ecosystem).
Why are they doing this? Because memory is important, and it creates lock in that they don’t get from just the model.
Memory is important, and it creates lock in
Although memory is early, it is clear to everyone that it is important. It is what allows agents to get better as users interact with them, and allows you build up a data flywheel. It is what allows your agent to be personalized to each of your users, and build up an agentic experience that molds to their desires and usage patterns.
Without memory, your agents are easily replicable by anyone who has access to the same tools.
With memory, you build up a proprietary dataset - a dataset of user interactions and preferences. This proprietary dataset allows you to provide a differentiated and increasingly intelligent experience.
It’s been relatively easy to switch model providers to date. They have similar, if not identical, APIs. Sure, you have to change prompts a little bit, but that’s not that hard.
But this is all because they are stateless.
As soon as there is any state associated, its much harder to switch. Because this memory matters. And if you switch, you lose access to it.
Let me tell a story. I have an email assistant internally. It’s built on top of a template in Fleet, our no-code platform for building Enterprise ready OpenClaws. This platform has memory built in, so as I interacted with my email assistant over the past few months it built up memory. A few weeks ago, my agent got deleted by accident. I was pissed! I tried to create an agent from the same template - but the experience was so much worse. I had to reteach it all my preferences, my tone, everything.
The plus side of my email agent deleted - it made me realize how powerful and sticky memory could be.
Open Memory, Open Harnesses
Memory needs to be opened, owned by whomever is developing the agentic experience. It allows you to build up a proprietary dataset that you actually control.
Memory (and therefor harnesses) should be separate from model providers. You should want optionality to try out whatever models are best for your use case. Model providers are incentivized to create lock in via memory.
This is why we are building Deep Agents. Deep Agents:
Is open source
Is model agnostic
Uses open standards like agents.md and skills
Has plugins to Mongo, Postgres, Redis and others for storing memories
Is deployablevia LangSmith DeploymentSelf hostable, can be deployed on any cloud
Can bring your own database to serve as a memory store
behind any standard web hosting framework
In order to own your memory, you need to be using an Open Harness
Try out Deep Agents today.
Thank you to a few people for review and thoughts:
Sydney Runkle, who is doing a lot of great Deep Agents and memory work
Viv Trivedy, who is a leading voice on agent harnesses
Nuno Campos, who has some great writing on context engineering for finance agents
Sarah Wooders, who is CTO of Letta, a company that has consistently been at the forefront of stateful agents
関連記事
[AINews] 今日は何も大きな出来事はありませんでした
Anthropic が RSI の兆候を示し、OpenAI の ChatGPT が月間アクティブユーザー数で 10 億人を突破。SpaceX AI は IPO について説明しているが、最も重要なのは AIE WF のチケット確保とイベント参加である。
MiniMax M3 の紹介:最先端の 3 つの能力を統合した初のオープンウェイトモデル
MiniMax が、コーディングとエージェント機能、100 万トークンのコンテキスト長など、3 つの最先端機能を組み合わせた初のオープンウェイトモデル「M3」を発表しました。
Datasette Agent のバージョン 0.1a4 がリリース
Simon Willison が、Datasette 1.0a30 で追加された JavaScript プラグインフックを活用し、エージェント機能の改善を含む新バージョン「datasette-agent 0.1a4」を公開した。