Google提唱の「SKILL.state」について。プロンプトに型の概念を導入
本記事では、AIエージェントの性能を高めるための「SKILL.state」という手法について、ざっくり理解します。
株式会社ナレッジセンスは、生成AIやRAGを使ったプロダクトを、エンタープライズ企業向けに開発しているスタートアップです。
この記事は何
この記事は、「SKILL.state」の論文について、日本語で簡単にまとめたものです。
本題
ざっくりサマリー
「SKILL.state」は、長時間稼働するエージェントの精度を上げるための新しい手法です。Google とPurdue大学の研究者らによって2026年8月に提案されました。

AIエージェントを使っていると、「会話が長引くほどバカになる」という感覚はありませんか?
なぜこれが起きるかというと、AIに入力している文字数が長過ぎることが原因です。
どういうことかというと、Claudeのような通常のAIサービスでは、過去の履歴を全部読ませています。しかし、LLMに文章を詰め込み過ぎると、一気に精度が劣化してしまいます[1]
そこでSKILL.stateでは、「会話履歴」をAIに入力しない仕組みを提案しています。その代わりに「現在の実行状態(State)」だけを明示的に渡すという仕組みです。
問題意識
ClaudeなどのAIエージェントでは、「長時間のタスクになると、コンテキストが膨張して破綻していく」という課題があります。
どういうことかというと、Claudeなどと会話すると、会話のターンを繰り返すごとに、過去の内容も全て、AIへの入力として送信されています。(以下の感じです↓)

Anthropic公式『Context windows』より
なので、会話が続くほど、AIへの入力内容が膨れ上がり、AIが重要な約束などを忘れてしまう問題が発生し始めます。
こうした「膨張問題」の対応は、最近、かなりホットなテーマです。
以前、こうした問題に対して、「過去の会話履歴をどうやって圧縮するか」という角度のアプローチを紹介しました[2]。
今回は、また別のアプローチです↓
手法
SKILL.stateは、ざっくりいうと、コンテキストの中に会話履歴を「入れず」、代わりに 「型が定義された構造化データ(State)」を注入する手法です。

イメージとしては、AIに毎回「現状のまとめJSON」を更新させる という感じです。
具体的な手順は以下です。
【事前の準備】
-
型(スキーマ)の定義
- あらかじめ、その業務で管理すべき状態の「型」を決めておく
- →例:バグ調査のタスクであれば、「現在の調査フェーズ」「検証済みの仮説」「特定したエラーログ」など、バグ解決に必要な項目を定義したJSON形式です
【毎ターンでエージェントに渡す、コンテキストを決める時】
-
過去を捨てて、現状だけを渡す
- LLMに渡すのは、「固定のスキル指示」「現在の構造化された実行状態(State)」「最新の観測結果」の3つだけ(上図の右側)
- 長い会話履歴は渡さないのがポイント
-
差分(パッチ)による状態更新
- LLMは現在の状況を基に、「思考プロセス」と「次のアクション」を出力
- 同時に、事前に決めた「型」に従って、現在のStateをどう更新するかという「状態の差分(JSONパッチ)」を出力
-
思考プロセスは破棄、JSONのみ更新
- 生成された状態の更新(JSONパッチ)は適用、LLMの思考プロセスは完全に破棄
- 更新された「最新のState」だけが、次のステップの入力として引き継がれる
この手法の面白いところは、「スキル」という業界スタンダードな手法に一石を投じているところです。「スキル」は確かに柔軟性があって便利ですが、確かに、手順が完全に決まってるなら、もっと厳密に型化したほうがトークン効率が良いのは間違いないです。
成果
- あらゆるベンチマーク(SkillExecBench、InterCode CTF、Sierra τ-Bench)において、SKILL.stateは既存の手法を上回るタスク成功率を達成
- 特にInterCode CTFでは、過去の仮説や発見したフラグを状態として保持することで、最強のベースラインから+7.8ポイントの精度向上を達成
- トークン消費を大幅に削減
- 外部ノイズ(無関係なテレメトリなど)が混入する環境でも、ノイズは状態更新時に弾かれるため、高い精度を維持
実験内容と結果の詳細(結構面白いです)
実験1:200ステップの長めタスクで検証
この実験では、倉庫管理のシミュレーションタスクを、10ステップ〜200ステップまで長さを変えて実行させます。「正しい行動を取れた割合」がスコアです。
- 200ステップ時点で、従来手法(履歴追記型のReActなど)はスコアが0.74〜0.88まで落ちる(履歴が長くなりすぎて、序盤の情報を見失うため)
- SKILL.stateは0.94を維持
- しかもこのとき、従来手法(要約型)は累計617万トークンを消費するのに対し、SKILL.stateは12万トークンで済む

実験2:ノイズを混ぜたらどうなるか
この実験では、観測に、タスクと無関係なログ(ロボットのバッテリー残量とか、サーバーのCPU使用率とか)を毎ターン大量に混ぜます。
- ReAct方式は、この無関係ログも全部履歴に溜め込むので、スコアが0.53まで劣化
- SKILL.stateは、State更新の時点で「これは要らない情報」とフィルタされ、ノイズが次のプロンプトに持ち越されないので、0.97以上を保持
実験3:外部で勝手に状況が変わったら
エージェントの知らないところで、第三者が勝手に在庫を動かします。その後「実は動きました」というアラートが来るという実験です。
- 従来手法は、履歴の中の古い情報(「アイテムは棚42にある」みたいな過去の観測)に引きずられて、アラートを受け取った後も5〜8ターン間違い続けてしまう
- SKILL.stateは、判断の根拠が「現在のState」しかないので、アラートでStateを書き換えた瞬間に正しく動く(0ターンで復帰)。
実験4:現実的なタスクでも効くか
作り物のベンチマークだけでなく、公開ベンチマーク(Linuxのハッキング課題100問、カスタマーサポート業務)でも検証
→ハッキング課題では、正答率54.2%で、最も強い従来手法より7.8ポイント高く、トークン消費は6割減
実験5:「短いから勝ってるだけでは?」の検証
ここまでの結果に対して、当然「プロンプトが短いから速くて安いのは当たり前。精度もたまたまでは?」という疑問が出ます。そこで、従来手法のプロンプトも、SKILL.stateと同じ約1,800トークンに強制的に切り詰めた比較も行われています。
→結果、単純に古い履歴を切り捨てる方式はスコア0.18、AIで賢く圧縮する方式(LLMLingua)でも0.22まで崩壊。SKILL.stateだけが0.94を保持。
まとめ
この手法は、AIエージェントの精度を上げるためのユニークな手法です。
弊社では普段、「ChatSense Cowork」という自立型AIエージェントを提供しています。その際、お客様から「エージェントに長期タスクを任せると、最後の方で命令を守らなくなる」という相談をよくいただきます。
SKILL.stateの良いところは、過去のテキスト履歴に依存せず、システムとしての「状態」を明確に管理することです。完全にマニュアルを守っておけば良いような決定論的なタスクでは、SKILL.stateはかなり相性が良いです。
みなさまが業務でエージェントシステムを構築する際も、選択肢として参考にしていただければ幸いです。
今後も、AIの回答精度を上げる工夫や研究について、記事にしていこうと思います。我々が開発しているサービスはこちら。
Discussion