# Agent NAS: ドキュメント全体 > Agent NAS は、「1 回の実行」を軸に設計したネットワーク接続ストレージです。エージェントの実行は、それぞれ隔離されたブランチで作業し、短命で範囲の狭いリースを通してデータにアクセスします。すべての変更は追跡でき、元に戻せます。記憶は、出どころつきの普通のファイルです。対外的には、エージェントがすでに話せる言葉、つまりファイル、Git、S3、MCP で話します。 状況:コンセプトと仕様ドラフト v0.2(2026 年 11 月)。参照実装はまだありません。 コンテンツのライセンスは CC BY 4.0 です。 --- # Agent NAS:AI エージェントのためのネットワーク接続ストレージ > Agent NAS は、「1 回の実行」を軸に設計したネットワーク接続ストレージです。エージェントの実行は、それぞれ隔離されたブランチで作業し、短命で範囲の狭いリースを通してデータにアクセスします。すべての変更は追跡でき、元に戻せます。記憶は、出どころつきの普通のファイルです。対外的には、エージェントがすでに話せる言葉、つまりファイル、Git、S3、MCP で話します。 **エージェントが働き、あなたが主導権を握り続ける場所。** 「実行」を基本単位にする NAS。実行ごとに専用のブランチとリースを持ち、すべての変更は追跡でき、元に戻せます。記憶は、読んで、直して、持ち出せるノートです。 ## 概要 - **カテゴリ**: AI エージェントのためのネットワーク接続ストレージ。エージェントネイティブ・ストレージ(agent-native storage)とも呼びます。 - **基本思想**: アクセスの単位はアカウントではなく **実行** です。実行はブランチの上で作業し、リースを通じてアクセスし、記録を残します。 - **4 つの約束**: 範囲が限られていること、復元できること、説明責任を果たせること、検査できること。 - **中核の名詞**: Tree、Commit、Principal、Run、Lease、Record。 - **コンセプト**: 名前のついた 9 つのコンセプトを、作業・権限・知識の 3 つのグループに分けています。 - **インターフェース**: データ面:マウント、Git、S3、WebDAV。制御面:MCP、HTTP、CLI。 - **仕様**: ドラフト v0.2。準拠レベルは L0 Files から L4 Sync までで、それぞれに実行可能な受け入れテストがあります。 - **状況**: コンセプトと仕様の段階で、参照実装はまだありません。L0 と L1 は、既存の部品で今日から作れます。 - **ライセンス**: コンテンツは CC BY 4.0 です。 ## なぜ今なのか この 1 年で、すでに 4 つのことが起きました。 - **エージェントはファイルで働きます。** [AGENTS.md](https://agents.md)、[Agent Skills](https://agentskills.io/specification)、Git で支えられた記憶([Letta Context Repositories](https://www.letta.com/blog/context-repositories/))、長い出力をファイルに書き出す [動的なコンテキスト発見](https://cursor.com/blog/dynamic-context-discovery) によって、ファイルはエージェントの作業媒体になりました。 - **間違いは速く、高くつきます。** 2026 年 4 月、あるコーディングエージェントが、無関係なファイルで見つけた権限の広すぎるトークンを使い、[ある会社の本番データベースと、同じボリュームにあったバックアップを 9 秒で削除しました](https://www.theregister.com/software/2026/04/27/cursor-opus-agent-snuffs-out-startups-production-database/5224442)。 - **人間は、すべての手順をレビューできません。** Anthropic の報告では、ユーザーは [許可プロンプトの 93% から 97%](https://claude.com/resources/articles/auto-mode-default-in-claude-code) を承認しています。管理された実験では、人間が見つけたのは、仕込まれた危険なコマンドの 13.6% だけでした。 - **記憶が攻撃面になりました。** [2026 年の複数の研究](https://arxiv.org/abs/2606.04329) は、永続的な記憶に書き込まれた悪意ある指示がセッションをまたいで生き残ること、入力時や検索時だけで守っても効果が薄いことを示しています。 ストレージのベンダーも動いています。[QNAP QuAgent](https://www.qnap.com/en/software/quagent)、[Synology DSM Agent](https://www.synology.com/en-us/beta/2026_DSM_Agent_1_0_Beta/release_note)、[TrueNAS MCP](https://truenas.github.io/truenas-research-labs/) はいずれも、エージェントに筐体を管理させます。しかし、私たちの知る限り、その中のデータの上で、ほかのエージェントが安全に作業するための、セルフホストできて、オープンで、検証できる契約は、まだありません。[Agent NAS と既存のアプローチとの比較](https://agentnas.com/ja/compare/) を参照してください。 ## 4 つの約束 | 約束 | 意味 | 実現するもの | | --- | --- | --- | | 範囲が限られている | 実行が触れるのは、そのリースが指すものだけで、リースは期限どおりに効力を失います。信頼できない内容を読んだセッションは、機微なデータと外向きの経路を同時に持てません。 | [Capability Lease](https://agentnas.com/ja/concepts/capability-lease/)、[Trust Labels](https://agentnas.com/ja/concepts/trust-labels/) | | 復元できる | 書き込みはまずブランチに入り、保護されたデータはレビューされたマージでしか変わりません。削除はソフトで、スナップショットはどのリースの権限の外にもあります。 | [Agent Branch](https://agentnas.com/ja/concepts/agent-branch/)、[Human Gate](https://agentnas.com/ja/concepts/human-gate/) | | 説明責任を果たせる | すべての変更が、誰が行ったか、誰のためか、どのリースの下か、何を読んだかに答えられます。 | [Flight Recorder](https://agentnas.com/ja/concepts/flight-recorder/) | | 検査できる | 記憶は出どころつきの普通のノートで、索引は捨てて再構築でき、すべてのデータをエクスポートできます。 | [Agent Home](https://agentnas.com/ja/concepts/agent-home/)、[Agent Memory](https://agentnas.com/ja/concepts/agent-memory/)、[Budgeted Reads](https://agentnas.com/ja/concepts/budgeted-reads/)、[Cascade Forget](https://agentnas.com/ja/concepts/cascade-forget/) | ## 9 つのコンセプトと、3 つの問い Agent NAS は、名前のついた 9 つのコンセプトを提案します。それぞれに専用のページがあり、引用できる定義、仕組み、小さく始める方法、インターフェースのスケッチ、仕様が求めること、そして正直な限界を載せています。 ### 作業 作業はどこで行われ、何が起きたのか。 - AN-01 [Agent Home (エージェント・ホーム)](https://agentnas.com/ja/concepts/agent-home/): ロールごとのディレクトリ。履歴つきで、普通のファイルのまま持ち出せます。 - AN-02 [Agent Branch (エージェント・ブランチ)](https://agentnas.com/ja/concepts/agent-branch/): 実行ごとに、コピーオンライトのブランチで作業します。メインに届くのは、レビューを経たマージだけです。 - AN-03 [Flight Recorder (フライトレコーダー)](https://agentnas.com/ja/concepts/flight-recorder/): 実行ごとに、ハッシュでつながれた記録を残します。実行が何を読んだかも含みます。 ### 権限 誰が、誰の許可で、何をしてよいのか。 - AN-04 [Capability Lease (ケイパビリティ・リース)](https://agentnas.com/ja/concepts/capability-lease/): 1 回の実行のための、期限と予算つきの狭い認可。子リースは、より狭くしかできません。 - AN-05 [Human Gate (ヒューマン・ゲート)](https://agentnas.com/ja/concepts/human-gate/): 元に戻せない、外へ出る、権限を広げる操作の前にだけ現れ、実際の差分を見せます。 - AN-06 [Trust Labels (トラスト・ラベル)](https://agentnas.com/ja/concepts/trust-labels/): 2 つの小さなラベルとセッション汚染で、Rule of Two を実現します。 ### 知識 エージェントは何を知り、どう読み、どう忘れるのか。 - AN-07 [Agent Memory (エージェントの記憶)](https://agentnas.com/ja/concepts/agent-memory/): 読んで直せるノートが真実で、索引は捨てられるキャッシュです。 - AN-08 [Budgeted Reads (予算つき読み取り)](https://agentnas.com/ja/concepts/budgeted-reads/): ファイルを、アウトライン、節、行範囲、全文のいずれかで読みます。予算に収まるよう、段階的に粗くします。 - AN-09 [Cascade Forget (カスケード忘却)](https://agentnas.com/ja/concepts/cascade-forget/): 系譜に沿って派生物を削除し、履歴は保持クラスで扱い、できなかったことを報告します。 ## 4 つの層と、6 つの名詞 Store 層は成熟したストレージをそのまま使います。その上のすべての層は、そこから再構築できます。中核は 6 つの名詞、Tree、Commit、Principal、Run、Lease、Record だけです。ストレージエンジンは発明しません。革新は契約にあります。 - **Interface(インターフェース)**: エージェント、人間、ツールがすでに使っているインターフェースに、機能を投影します。ゲートウェイは状態を持たず、誰が何をしてよいかを決めることはありません。 (マウント(POSIX), Git, S3, WebDAV/SMB, MCP, HTTP, CLI, A2A(任意)) - **Trust(信頼)**: 認可の唯一の地点。決定的なポリシーで、判断にモデルは関わりません。 (プリンシパルと実行, Capability Lease, ポリシーエンジン, Human Gate, Trust Labels, Credential Broker, Flight Recorder) - **Memory(記憶)**: ノートを、検索できる知識に変えます。すべて、下の層から再構築できます。 (Agent Memory, Budgeted Reads, Cascade Forget, 索引, 保守ジョブ, 系譜) - **Store(ストア)**: 履歴を持つツリー。成熟したファイルシステムのスナップショット、Git、またはバージョン管理されたオブジェクトストレージの上に作ります。 (Tree, Commit, Agent Branch, ファイルシステムのスナップショット, Git, オブジェクトストレージ) - **Sync(同期、任意)**: ノード間のレプリケーションと共有。あえて最後にしています。まず単一のノードを正しく作ります。 (Git リモート, スナップショット転送, リースリンク, ハンドオフバンドル) [アーキテクチャを読む](https://agentnas.com/ja/architecture/)。 ## 1 回の実行の旅 1. **リースを申請する。** 調査エージェント Cleo のオーケストレーターが、この実行のために [Capability Lease](https://agentnas.com/ja/concepts/capability-lease/) を申請します。`/shared/launch` を読み、変更を提案でき、有効期間は 4 時間です。所有者があらかじめ決めたポリシーの範囲に収まっているため、自動で承認されます。 2. **作業を始める。** NAS が実行と、そのブランチ `cleo/run_91ab` を作り、サンドボックスがそのブランチを普通のディレクトリとしてマウントします。Cleo は [Agent Home](https://agentnas.com/ja/concepts/agent-home/) から、`AGENTS.md` とレビュー済みの記憶を読みます。 3. **予算の中で読む。** 長いレポートを [Budgeted Reads](https://agentnas.com/ja/concepts/budgeted-reads/) で読みます。まず 400 トークンのアウトライン、必要に応じて特定の行範囲です。すべての読み取りは、実行の読み取りマニフェストに加わります。 4. **ブランチで作業する。** 変更は [Agent Branch](https://agentnas.com/ja/concepts/agent-branch/) に入ります。共有の `main` は、さしあたり何も変わりません。 5. **ゲートに出会う。** Cleo はウェブページを読んだので、[Trust Labels](https://agentnas.com/ja/concepts/trust-labels/) により、そのセッションは `external` の汚染を持ちます。`main` へのマージを提案すると、ポリシーが [Human Gate](https://agentnas.com/ja/concepts/human-gate/) を要求します。所有者は、NAS が計算した実際の差分と、信頼できない出典を携帯電話で見て、承認します。 6. **記録を残す。** マージは、出どころつきのコミットを作ります。何を読み、何を書き、誰が何を承認したかが、ハッシュでつながれた形で [Flight Recorder](https://agentnas.com/ja/concepts/flight-recorder/) に入ります。 7. **記憶を整理する。** Cleo は新しい事実をいくつかノートにします。このセッションは外部コンテンツを読んでいるので、これらの [Agent Memory](https://agentnas.com/ja/concepts/agent-memory/) のノートはまず隔離に入ります。想起はできますが、人間がレビューするまで自動読み込みはされません。 8. **忘れる。** 数週間後、顧客が忘れてほしいと求めます。[Cascade Forget](https://agentnas.com/ja/concepts/cascade-forget/) が系譜に沿って関連する要約と索引を削除し、カバーできなかった範囲を明記した報告を出します。 ## エージェントがすでに話せる言葉で話す 始めるのに新しい SDK は要りません。ファイルの読み書き、Git や S3 の利用、MCP ツールの呼び出しができるエージェントなら、どれでも Agent NAS を使えます。下のセッションは、予定しているコマンドラインのイメージを示すだけのものです。 *セッションのイメージ* ```bash $ nas lease create --role cleo --paths "/shared/launch/**" --actions read,write,propose --ttl 4h lease lse_7Qk3 · run run_91ab · branch cleo/run_91ab · expires 16:00 $ nas mount --lease lse_7Qk3 ~/work # plain files, on a branch $ ./draft-release-notes.sh # the agent works with ordinary tools $ nas propose --into main gate gt_2Mx4 waiting for approval: merge cleo/run_91ab into main (4 files) $ nas gate approve gt_2Mx4 # the owner, from another terminal or a phone merged · commit 91ce3a7 · record 18211 ``` [すべてのインターフェースを見る](https://agentnas.com/ja/interfaces/)。 ## 私たちが賭けているもの 何年も通用することを願う設計は、何に賭けているのか、賭けが外れたらどうなるのかを述べるべきです。 - **エージェントは、これからもファイルシステムと Git を主な作業媒体にする。** そうでなければ、Agent Home はエクスポート形式に格下げされますが、ほかのコンセプトは成り立ちます。 - **「1 回の実行」は、これからも認可と説明責任の自然な単位である。** 長く動き続ける自律プロセスが現れたなら、リースは予算つきの更新を重ねる形になります。 - **プロンプトインジェクションは、見通せる将来のうちには、モデル層で根絶されない。** 根絶されたなら、Trust Labels は多層防御の安価な一層になります。 - **人間の注意は、これからも希少である。** 完全な自動化が十分に信頼できるものになれば、Human Gate は事前承認ポリシーに道を譲り、監査の記録は残ります。 7 つの賭けすべては [設計原則](https://agentnas.com/ja/principles/) にあります。 ## このサイトは、エージェントにも読めます すべてのページに Markdown 版があり、サイトは `llms.txt` を公開し、読み取り専用の小さな MCP サーバーを動かしています。ターミナルで試してみてください。 *ターミナル* ```bash curl -H "Accept: text/markdown" https://agentnas.com/what-is-agent-nas/ curl https://agentnas.com/llms.txt curl -X POST https://agentnas.com/api/search \ -H "content-type: application/json" \ -d '{"query": "capability lease", "limit": 5}' ``` ドキュメントサーバーを MCP クライアントに追加します。 *mcp.json* ```json { "mcpServers": { "agentnas-docs": { "url": "https://agentnas.com/mcp" } } } ``` ## 最初によくある質問 ### Agent NAS を一言で言うと? 「1 回の実行」を軸に設計したネットワーク接続ストレージです。エージェントの実行は、それぞれ隔離されたブランチで作業し、短命で範囲の狭いリースを通してデータにアクセスします。すべての変更は追跡でき、元に戻せます。記憶は、出どころつきの普通のファイルです。 ### ダウンロードできるソフトウェアはありますか? まだありません。Agent NAS は現在、コンセプトと仕様ドラフト(v0.2)の段階です。L0 と L1 は、Git、ファイルシステムのスナップショット、小さなゲートウェイで今日から作れます。参照実装 v0 の目標は 2027 年の前半です。[ロードマップ](https://agentnas.com/ja/roadmap/) を参照してください。 ### NAS ベンダーが出している AI エージェントとは、何が違いますか? それらのエージェントは、筐体を管理します。Agent NAS が定めるのは、筐体の中のデータの上で、ほかのエージェントがどう作業するかです。ブランチ、リース、記憶、忘却。両者は補い合い、ベンダーの筐体は Overlay 構成の土台になりえます。 ### 既存のストレージを置き換えますか? 置き換えません。Overlay の構成は、既存の NAS、オブジェクトストア、Git ホストの前にゲートウェイを置き、その中の 1 つのディレクトリやバケットだけを管理します。 ### プロンプトインジェクションを防げますか? 防げません。インジェクションのあとに起きることを限定し、その結果を可視化して、元に戻せるようにします。正直な限界は [セキュリティ](https://agentnas.com/ja/security/) のページにあります。 ### いつでも抜けられますか? はい。すべてを、普通のファイルと Git の履歴としてエクスポートできます。これはオプション機能ではなく、設計上の保証です。 [すべての質問](https://agentnas.com/ja/faq/)。 ## 現在の状況 > **状況.** Agent NAS は、コンセプトと仕様ドラフトの段階です(v0.2、2026 年 11 月)。v0.2 は地に足をつけるための改訂で、13 のコンセプトを 9 つに絞り、それぞれに小さく始める方法と正直な限界を書きました。参照実装はまだありません。 - [仕様ドラフト](https://agentnas.com/ja/spec/): 準拠レベルと、実行可能な受け入れテスト。 - [ロードマップ](https://agentnas.com/ja/roadmap/): 現在、次、今後、そして取り組まないこと。 - [このプロジェクトについて](https://agentnas.com/ja/about/): ライセンス、引用の仕方、参加の方法。 --- 正規 URL: https://agentnas.com/ja/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Agent NAS とは? > Agent NAS は、エージェントの「1 回の実行」を軸に設計したネットワーク接続ストレージです。エージェントの実行は、それぞれ隔離されたブランチで作業し、短命で範囲の狭いリースを通してデータにアクセスします。すべての変更は追跡でき、元に戻せます。記憶は、出どころつきの普通のファイルです。対外的には、エージェントがすでに話せる言葉、つまりファイル、Git、S3、MCP で話します。 ## 一段落で言うと Agent NAS は、エージェントが長く作業するのに必要なものをすべて預かります。指示、スキル、記憶、作業中のもの、履歴です。従来の NAS が気にしなかった問いに答えます。この実行は何に触れるのか、間違えたら元に戻せるのか、誰が何を承認したのか、記憶はどこから来たのか。新しいストレージエンジンではありません。成熟したストレージ(ファイルシステム、Git、オブジェクトストア)の上に載る **契約** であり、エージェントとデータの間の権限、隔離、追跡、記憶がどう動くべきか、そしてそれをどう検証するかを定めます。 ## 名前を分解して読む - **Agent(エージェント)**: 誰かに代わって動く AI システム。複数のステップにわたって読み、判断し、ツールを使います。Agent NAS では、エージェントは **ロール** に属し、1 回ごとの作業が **実行** です。 - **Network-attached(ネットワーク接続)**: ネットワーク越しに、多数のクライアントから同時にアクセスされます。家庭の LAN でも、チームのサーバーでも、クラウドのリージョンでも同じです。特定のサンドボックスや特定のマシンには縛られません。 - **Storage(ストレージ)**: 永続的で、履歴を持ち、エクスポートできます。ストレージが真実の源で、「賢い」ものはすべてそこから導出され、捨てて再構築できます。 ## Agent NAS であるための条件 1. **アクセスの単位は実行です。** 実行ごとに、共有キーや人間のアカウントではなく、専用の [リース](https://agentnas.com/ja/concepts/capability-lease/) を持ちます。 2. **既定で隔離され、元に戻せます。** 書き込みはまず [ブランチ](https://agentnas.com/ja/concepts/agent-branch/) に入り、保護されたデータはマージでしか変わらず、削除はソフトです。 3. **すべての変更が追跡できます。** 誰が、誰のために、どのリースで、何を読んで行ったか([Flight Recorder](https://agentnas.com/ja/concepts/flight-recorder/))。 4. **記憶は出どころつきのファイルで、索引は捨てられます**([Agent Memory](https://agentnas.com/ja/concepts/agent-memory/))。 5. **既存のインターフェースで提供されます。** マウント、Git、S3、MCP。新しいプロトコルではありません。 6. **AI の層を外しても、まともな汎用 NAS のままで、** すべてのデータを完全にエクスポートできます。 ## Agent NAS ではないもの - **新しいストレージエンジン、ファイルシステム、ベクトルデータベースではありません。** それらはすべて、既存の部品として使います。 - **サンドボックスではありません。** 計算を隔離するものではなく、エージェントとデータの関係を制約します。サンドボックスと併用してください。 - **プロンプトインジェクションの特効薬ではありません。** 被害を限定するもので、インジェクションが起きること自体は止めません。[セキュリティ](https://agentnas.com/ja/security/) を参照してください。 - **エージェントフレームワークではありません。** エージェントがどう推論し、計画し、モデルを呼ぶかは定めません。 ## 誰のためのものか、誰には不要か - **すでに `AGENTS.md` と Git を使っている開発者:** 保護されたメインライン、元に戻せる実行、追跡できる記録がほしい人。 - **複数のエージェントを動かすチーム:** 共有のツリー、エージェントの変更のレビュー、「実際には何を読んだのか」への答えが必要な人。 - **個人用のエージェントを持つ個人:** 記憶を自分の手元に置き、読めて、直せて、持ち出せるようにしたい人。 - **顧客データを扱う組織:** 保持と忘却を書き込み時の明示的な選択にし、正直な忘却レポートが必要な人。 > **誰には不要か.** エージェントが 1 つで、気軽にやり直せるデータしかないなら、Agent NAS は **不要** です。`AGENTS.md` を置いた Git リポジトリで十分です。データが大事になり、エージェントが増え、「実際に何を読み、何を変えたのか」を知りたくなったときに、居場所ができます。ほかのケースは [ユースケース](https://agentnas.com/ja/use-cases/) にあります。 ## Agent NAS とベンダーの管理エージェント | 問い | NAS ベンダーの管理エージェント | Agent NAS | | --- | --- | --- | | エージェントは何をするか? | 自然言語でこの NAS を管理し、会話を操作に変えます。 | 筐体の中のデータの上で作業します。読み、書き、記憶し、記録を残します。 | | アクセス権はどう与えるか? | ユーザーの権限を流用し、危険な操作には二重の確認を求めます。 | 1 回の実行に結びついた短命のリース:パス、操作、期限、予算。 | | 何かあったらどうなるか? | 確認とログに頼ります。 | 書き込みはブランチに入り、削除はソフトで、スナップショットはどのリースの外にもあります。 | | 記憶はどこにあるか? | アシスタントやベンダーのサーバー側。 | エージェントの Home に、出どころつきのノートとして置かれ、索引は捨てられます。 | | 信頼できない内容は? | 他のテキストと同じようにモデルに入ります。 | `external` ラベルがつき、読んだあとの影響の大きい操作はゲートを通ります。 | | 抜けるときは? | ベンダー次第です。 | すべてを、普通のファイルと Git の履歴としてエクスポートできます。 | ## 次に読むもの - [9 つのコンセプト](https://agentnas.com/ja/concepts/): 1 つずつ専用のページがあり、小さく始める方法も載せています。 - [アーキテクチャ](https://agentnas.com/ja/architecture/): 4 つの層、6 つの名詞、1 回の実行の旅。 - [セキュリティ](https://agentnas.com/ja/security/): 脅威モデル、対策、正直な限界。 - [FAQ](https://agentnas.com/ja/faq/): よくある質問への短い答え。 --- 正規 URL: https://agentnas.com/ja/what-is-agent-nas/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # 9 つのコンセプト > Agent NAS は、名前のついた 9 つのコンセプトの上に成り立っています。3 つの問いに答えるものです。作業はどこで行われ、何が起きたのか。誰が、誰の許可で、何をしてよいのか。エージェントは何を知り、どう読み、どう忘れるのか。 コンセプトの名前は造語で、どの言語でも英語のまま使い、各言語の版では説明を添えます。各ページは、単独で引用できる 1 つの定義から始まり、解決する課題、仕組み、小さく始める方法、インターフェースのスケッチ、仕様が求めること、借りたものと正直な限界へと続きます。準拠レベルは、実装がそのコンセプトをいつサポートすべきかを示します。[仕様](https://agentnas.com/ja/spec/) を参照してください。 > **「新しい」について.** 9 つのコンセプトの多くは、成熟した部品を組み合わせたものです。各コンセプトのページには、何を借りたのか、本当に新しいのは何かを書いています。まとめた一覧は [比較](https://agentnas.com/ja/compare/) のページにあります。 ## 3 つのグループ ### 作業 作業はどこで行われ、何が起きたのか。 - AN-01 [Agent Home (エージェント・ホーム)](https://agentnas.com/ja/concepts/agent-home/): ロールごとのディレクトリ。履歴つきで、普通のファイルのまま持ち出せます。 - AN-02 [Agent Branch (エージェント・ブランチ)](https://agentnas.com/ja/concepts/agent-branch/): 実行ごとに、コピーオンライトのブランチで作業します。メインに届くのは、レビューを経たマージだけです。 - AN-03 [Flight Recorder (フライトレコーダー)](https://agentnas.com/ja/concepts/flight-recorder/): 実行ごとに、ハッシュでつながれた記録を残します。実行が何を読んだかも含みます。 ### 権限 誰が、誰の許可で、何をしてよいのか。 - AN-04 [Capability Lease (ケイパビリティ・リース)](https://agentnas.com/ja/concepts/capability-lease/): 1 回の実行のための、期限と予算つきの狭い認可。子リースは、より狭くしかできません。 - AN-05 [Human Gate (ヒューマン・ゲート)](https://agentnas.com/ja/concepts/human-gate/): 元に戻せない、外へ出る、権限を広げる操作の前にだけ現れ、実際の差分を見せます。 - AN-06 [Trust Labels (トラスト・ラベル)](https://agentnas.com/ja/concepts/trust-labels/): 2 つの小さなラベルとセッション汚染で、Rule of Two を実現します。 ### 知識 エージェントは何を知り、どう読み、どう忘れるのか。 - AN-07 [Agent Memory (エージェントの記憶)](https://agentnas.com/ja/concepts/agent-memory/): 読んで直せるノートが真実で、索引は捨てられるキャッシュです。 - AN-08 [Budgeted Reads (予算つき読み取り)](https://agentnas.com/ja/concepts/budgeted-reads/): ファイルを、アウトライン、節、行範囲、全文のいずれかで読みます。予算に収まるよう、段階的に粗くします。 - AN-09 [Cascade Forget (カスケード忘却)](https://agentnas.com/ja/concepts/cascade-forget/): 系譜に沿って派生物を削除し、履歴は保持クラスで扱い、できなかったことを報告します。 --- 正規 URL: https://agentnas.com/ja/concepts/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # アーキテクチャ > Agent NAS は 4 つの層と、任意の同期層でできています。Interface は機能を既存のインターフェースに投影し、Trust は認可の唯一の地点で、Memory はノートを検索できる知識に変え、Store は履歴を持つツリーを保管します。Memory 層はまるごと削除して再構築でき、Store は成熟したストレージをそのまま使います。 ## 4 つの層と、任意の同期 - **Interface(インターフェース)**: エージェント、人間、ツールがすでに使っているインターフェースに、機能を投影します。ゲートウェイは状態を持たず、誰が何をしてよいかを決めることはありません。 (マウント(FUSE、NFS、SMB), Git, S3 互換, WebDAV, MCP, HTTP API, CLI, A2A(任意)) - **Trust(信頼)**: 認可の唯一の地点。決定的なポリシーエンジンで、判断にモデルは関わりません。先に記録し、それから実行します。 (プリンシパルと実行, Capability Lease, ポリシーエンジン, Human Gate, Trust Labels, Credential Broker, Flight Recorder) - **Memory(記憶)**: ノートを、検索でき、予算つきで読める知識に変えます。すべて、下の層から再構築できます。 (ノートの規約, 索引(全文、ベクトル、グラフ), Budgeted Reads, 保守ジョブ, 系譜, Cascade Forget) - **Store(ストア)**: 履歴を持つツリー。成熟したファイルシステムのスナップショット、Git、またはバージョン管理されたオブジェクトストレージの上に作ります。記憶やラベルの意味は理解しません。 (Tree, Commit, Agent Branch, ファイルシステムのスナップショット, Git, オブジェクトストレージ) - **Sync(同期、任意)**: ノード間のレプリケーションと共有。あえて最後にしています。まず単一のノードを正しく作ります。 (Git リモート, スナップショット転送, リースリンク, ハンドオフバンドル) - **Memory 層は再構築できます。** 索引をすべて削除して作り直しても、Store のノートは完全に読めます。 - **ゲートウェイは状態を持ちません。** 永続的な状態はすべて Store と Trust の記録の中にあり、ゲートウェイは自由に再起動でき、水平にスケールできます。 - **Trust は認可の唯一の地点です。** NAS 自身のバックグラウンドジョブ(索引づけ、保守)も含みます。それらも `svc:*` プリンシパルとしてリースを持って動きます。 - **Store は、記憶やラベルの意味を理解しません。** メタデータつきのツリーを保管するだけです。 - **先に記録し、それから実行します。** 影響の大きい操作は、まず意図の記録を書かなければなりません。 ## 細い腰:6 つの名詞 設計全体が 6 つの名詞だけに依存しています。ラベル、ゲート、記憶、読み取りマニフェストは、その上に作られた規約です。 | 名詞 | 意味 | 重要な不変条件 | | --- | --- | --- | | Tree | 履歴を持つディレクトリツリー。 | どのコミットも再現できる。内容ハッシュ、または同等の変更検出がある。 | | Commit | 1 回の不変の変更。 | 出どころのメタデータを持つ:`principal`、`on_behalf_of`、`run`、`lease`。 | | Principal | 認証でき、責任を問える主体。 | 種別は `human`、`agent`、`service`、`node`。`agent` は 1 回の実行ではなく、ロールに属する。 | | Run | 開始、終了、目的、責任者を持つ 1 回の実行。 | ルートリースを 1 つ持ち、ブランチを 1 つ所有する。 | | Lease | 実行の認可。 | 期限がある。狭めることしかできない。失効できる。予算を持つ。 | | Record | 追記のみの記録。 | ハッシュでつながれている。先に記録し、それから実行する。 | ## Store 層:契約と、選べるエンジン Store の契約は、エンジンが提供するか、ゲートウェイがエミュレートします。実装は複数のエンジンを組み合わせてもかまいません。たとえばテキストは Git、大きなファイルはスナップショットです。契約は、エンジン、ハッシュ関数、ディスク上の形式を定めません。 1. アトミックなコミット。 2. 安価なフォーク。理想的には O(1) に近く、最悪でもコピーに退化する程度。その場合はクォータと TTL が必須。 3. 不変のスナップショット。 4. 変更検出:内容ハッシュか、同等の手段。 5. 2 つのコミットの間の差分。 6. 標準的な形式での完全なエクスポート:ディレクトリ、Git の履歴、プレーンテキストの `.nas/` メタデータ。 | エンジン | 向いているもの | フォークのコスト | 注意 | | --- | --- | --- | --- | | Git(worktree を含む) | テキスト、記憶、スキル、小さなコードベース | 低い | 大きなファイルには LFS か外部ストレージが必要。バイナリのマージは苦手。 | | ファイルシステムのスナップショットとクローン(ZFS、btrfs、APFS) | 大きなディレクトリ、混在するファイル | ほぼ O(1) | ファイルシステム次第。マシン間のコピーには send/receive が必要。 | | バージョン管理されたオブジェクトストレージ(Tigris のフォーク、lakeFS、S3 とマニフェスト) | データセット、大きなファイル | ほぼ O(1) | ゲートウェイがファイルのビューを提供する必要がある。 | | 普通のディレクトリとコピー | Lite の出発点 | O(n) | 小さなデータ向けのみ。クォータと TTL が必須。 | > **復旧の経路は、被害の範囲の外に置く.** スナップショットとバックアップは所有者のプリンシパルが持ち、どのリースにも「スナップショットの削除」や「バックアップの削除」を含めることはできません。これは 2026 年 4 月の事故から得られる最も直接的な教訓です。復旧の経路は、それが守るものの被害の範囲の外になければなりません。 - 保存時の暗号化は下の層が提供します。`sensitive` の保持クラスは独自の鍵ドメインを使うので、鍵を破棄すれば粉砕できます。 - 重複排除と粉砕は両立しません。`sensitive` クラスは、鍵ドメインをまたいで重複排除しません。 ## 1 回の実行の旅 1. **申請する。** オーケストレーター(または所有者)が、実行のためのリースを申請します。パス、操作、期限、目的。**ポリシーの範囲** の中なら自動で発行され、外なら Human Gate に回ります。 2. **開始する。** NAS が `run` とブランチ `/` を作り、リースを実行に渡します。サンドボックスはそのブランチをマウントします(または `git clone` します)。 3. **作業する。** エージェントは、普通のファイルツールで読み書きします。読み取りは **読み取りマニフェスト** にたまり、セッション汚染もそれに合わせて更新されます。範囲外のアクセスは拒否され、記録されます。 4. **コミットする。** 変更は自動(デバウンス)または明示的にコミットされ、すべてのコミットが出どころのメタデータを持ちます。 5. **提案する。** `propose` が **Agent PR** を作ります。差分、意図、読み取りマニフェストの要約、チェック結果、ラベルの要約です。 6. **裁定する。** ポリシーエンジンが判断します。チェックに通り、リスクが低ければ自動でマージ。保護されたデータ、外向きの操作、Rule of Two 違反が関わるなら Human Gate へ。明らかに禁じられていれば拒否します。 7. **マージして記録する。** マージは、出どころつきのコミットを作り、Record を書きます。 8. **締めくくる。** リースは期限切れになり、ブランチは TTL のあとに回収され、読み取りマニフェストと Record は保持ポリシーに従って残ります。 **読み取りの経路:** リクエスト、リースの確認、ラベルの確認(現在のセッション汚染がこの読み取りを許すか)、予算の計上、Store からの読み取り、読み取りマニフェストへの記録、内容と証拠ポインタの返却。 > **先に記録し、それから実行する.** 影響の大きい操作(マージ、削除、共有、外向きの送出、リースの変更)は、まず意図の記録を書かなければなりません。書けなければ、その操作は失敗します(fail closed)。読み取りは読み取りマニフェストに入り、まとめて書き出されるため、読み取りごとに同期する必要はありません。 ## デプロイの形 | 形 | 説明 | 向いている人 | | --- | --- | --- | | Lite | 単一のマシン、単一のユーザー:ゲートウェイのプロセスが 1 つと、ローカルのストレージ(Git またはファイルシステムのスナップショット)。L0 から L1。 | 個人と、試してみたい開発者。 | | Overlay | 既存の NAS やオブジェクトストアには手を付けず、前にゲートウェイを置いて、その中の 1 つのディレクトリやバケットだけを管理します。マウントと S3 のビューはゲートウェイを経由します。 | **もっとも現実的な出発点:** すでに筐体を持っている人。 | | Team | 複数のユーザーとエージェント、1 台のサーバーか小さなクラスター。L0 から L3。ゲートの通知とコントロールルーム。 | 小さなチーム。 | | Cloud | ホスト型のマルチテナントサービス、強い隔離。L0 から L3。 | 自前のハードウェアを持たない人。 | 原則:専用のハードウェアは要りません。常時稼働するマシンならどれでも構いません。アクセラレーターは任意です。埋め込みと要約には小さなモデルで足りますし、外部のサービスを呼んでも構いません。 ## 既存の部品で v0 を作る | 機能 | 今日使える部品 | | --- | --- | | Store とブランチ | Git と worktree、btrfs や ZFS のスナップショット、または Tigris と lakeFS(オブジェクトストレージ)。 | | 保護されたメインライン | Forgejo、Gitea、GitHub のブランチ保護、または lakeFS の保護ブランチ。 | | リース | トークン交換を備えた OAuth 認可サーバー(たとえば Keycloak)と、パスのプレフィックスと操作を検査するリソースサーバー。または数百行の署名サービス。 | | 記録 | 追記のみの SQLite テーブルと日次のハッシュ、コミットの Git トレーラー、OpenTelemetry のエクスポート。 | | ゲート | PR レビューとプッシュ通知、`nas gate approve` の CLI。 | | 記憶 | `memory/` の下の Markdown と SQLite FTS5。ベクトルストアはあとから。 | | ラベル | 取り込みディレクトリに `external` を付け、実行単位のセッション汚染はゲートウェイで保持する。 | | インターフェース | NFS、SMB、FUSE のマウント、SSH または HTTPS 経由の Git、S3 ゲートウェイ、小さな MCP サーバー。 | この表が言っているのは、**L0 と L1 には新しい発明は要らない** ということです。新しいのは、それらを組み合わせる契約と、それを検証するテストです。[仕様](https://agentnas.com/ja/spec/) を参照してください。 ## 運用 - **バックアップ:** 3-2-1。スナップショットとバックアップは所有者のプリンシパルのもので、どのリースも触れられません。四半期ごとに復元訓練を行い、記録を残します。 - **アップグレード:** ゲートウェイは状態を持たないので、ローリングでアップグレードできます。Store の形式を変えるときは、必ず移行とロールバックの計画を添えます。Memory 層は丸ごと再構築できます。 - **監視:** リースの発行率と拒否率、ゲートのキューの長さと承認率(承認率が 95% を超え続けるなら、ゲートが多すぎるので、まとめるかポリシーを締めます)、ブランチの数と年齢、索引の鮮度、記録チェーンの検証、クォータ。 - **容量:** ブランチには TTL とクォータがあり、回収エリアには保持期間があり、導出データには予算があります。 ## コントロールルーム 人間向けのインターフェースは、ウェブページでも、CLI でも、チャットボットでも構いません。必須ではありません。L0 から L1 は、CLI と既存の Git プラットフォームだけで動かせます。 - **アクティビティのタイムライン:** 実行ごとにまとめ、誰が何をし、何を読んだか。 - **ゲートの受信箱:** 承認待ちの操作を、Gate Card で表示します。 - **ロールのディレクトリ:** ロールごとの Home、リース、予算、最近の実行。 - **記憶ブラウザー:** ノートと出典、未レビューの隔離エリア、保守の提案。 - **ブランチと PR:** 未マージのブランチと回収エリア。 - **忘却コンソール:** 要求、系譜のプレビュー、レポート。 人間は SMB や WebDAV から直接見ることもできます。`/humans//Agent Activity/` は、普通のファイルでできた読み取り専用のアクティビティビューです。 --- 正規 URL: https://agentnas.com/ja/architecture/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # インターフェース > Agent NAS は、データ面にはファイルを、制御面にはツールを使います。バイトはマウント、Git、S3 を流れ、認可、承認、記憶、検索、説明は MCP、HTTP、CLI を通ります。どのインターフェースも同じデータの投影であり、意味の違いは、なかったことにせず、明示的なエラーで表します。 ## 指針 1. **データ面にはファイル、制御面にはツール。** バイトはマウント、Git、S3 を流れ、認可、承認、記憶、検索、説明は MCP、HTTP、CLI を通ります。 2. **ゲートウェイは状態を持ちません。** 認可は Trust 層のただ 1 つの地点でだけ行われます。 3. **どのインターフェースも投影です。** 意味の違いは、明示的なエラーのマッピングで表します(たとえば「ゲート待ち」は、説明ファイルを添えた `EACCES` に対応します)。S3 にブランチがあるようには装いません。 4. **ツールの面は狭く。** エージェントに向けた MCP ツールは 10 個以内です。人間や運用者向けの操作は、別のオペレーター用インターフェースに置きます。 5. **アダプターがプロトコルの変化を隔離します。** MCP や A2A のバージョンの変化が及ぶのは、アダプターだけです。 ## インターフェースの一覧 | インターフェース | 面 | 対象 | マッピング | レベル | | --- | --- | --- | --- | --- | | マウント(FUSE、NFS、SMB) | データ | エージェント、人間、あらゆるプログラム | ブランチのビュー。エラーのマッピングは下記 | L0 | | Git(SSH、HTTPS) | データ | エージェント、人間、CI | 実行のブランチは Git のブランチ。Agent PR はマージリクエスト | L0 | | S3 互換 | データ | データパイプライン、バッチ処理 | バケットは 1 つのツリーのブランチビューに対応。バージョン ID はコミット | L0(任意) | | WebDAV | データ | 人間(Finder、エクスプローラー) | 読み取り専用のアクティビティビュー | L0(任意) | | CLI `nas` | 制御 | 人間、スクリプト | HTTP API と 1 対 1 | L0 | | HTTP API | 制御 | オーケストレーター、コントロールルーム | すべて `POST` と JSON。フィールドは `snake_case` | L1 | | MCP | 制御 | エージェント | 9 つのツール(下記) | L1、L2 | | A2A | 制御 | 他のエージェント | タスクは `inbox/` と `outbox/` に対応 | L4(任意) | ## MCP のツール面 エージェントに向けたツールは 9 つだけです。 | ツール | 何をするか | 必要なリースの操作 | 備考 | | --- | --- | --- | --- | | `nas_list` | ディレクトリを一覧する。ラベルとレビュー状態つき | `list` | リースの外のパスは見えません。 | | `nas_read` | 予算つきの読み取り:ビュー、範囲、予算 | `read` | [Budgeted Reads](https://agentnas.com/ja/concepts/budgeted-reads/) | | `nas_search` | 検索(全文、任意でベクトル)。スニペットとポインタを返す | `read` | 隔離エリアは既定で除外されます。 | | `nas_write` | ブランチの中のファイルに書く。任意で `intent` を添える | `write` | ほとんどのランタイムはマウントを直接使うので、不要です。 | | `nas_branch` | ブランチの作成、チェックポイント、復元、一覧 | `write` | [Agent Branch](https://agentnas.com/ja/concepts/agent-branch/) | | `nas_propose` | Agent PR を作る | `propose` | ゲートが起動することがあります。 | | `nas_lease` | より狭い子リースを申請する。現在のリースと予算を照会する。より広い権限を要求する(ゲート経由) | なし | [Capability Lease](https://agentnas.com/ja/concepts/capability-lease/) | | `nas_remember` | ノートを書く。出典と種類つき | `write` | [Agent Memory](https://agentnas.com/ja/concepts/agent-memory/) | | `nas_recall` | ノートを想起する:予算つきで、出典とレビュー状態つき | `read` | [Agent Memory](https://agentnas.com/ja/concepts/agent-memory/) | > **人間と運用者だけの操作.** `explain`、`gate approve/deny`、`forget`、`trash restore`、`label admin`、`lease revoke`、`policy edit` は、エージェントには **公開されません**。これらの操作は保証そのものを変えるもので、制約を受ける側が呼べるべきではありません。エージェントは、一部(権限の拡大、忘却)を **要求** することはできますが、実行はできません。 ## マウントの意味 - マウントは **1 つのブランチと 1 つのリース** に結びつきます。リースの期限が切れると、マウントは読み取り専用になり、その後アンマウントされます。 - 自動コミット(デバウンス。たとえば静かな状態が 5 秒続いたあと)。`fsync` がコミットを起動します。 - リースの外のパスは、**ディレクトリの一覧に現れません**。これは情報の漏えいを減らし、プロンプトインジェクションの攻撃面も小さくします。 - サンドボックスにやさしい:root は不要。FUSE か NFS のどちらか一方で、カーネルモジュールは要らず、読み取り専用のマウントもできます。 | 状況 | POSIX のエラー | 説明 | | --- | --- | --- | | リースの外のパス | `ENOENT`(見えるが拒否されるときは `EACCES`) | 拒否は記録されます。 | | クォータまたは予算の枯渇 | `EDQUOT` | 実行が自分でペースを落とせるようにします。 | | ゲート待ち | `EACCES`。説明は `/.nas/pending` に置く | エージェントが延々と再試行するのを防ぎます。 | | リースの期限切れ | `ESTALE`、その後は読み取り専用 | ブランチはそれ自身の TTL が切れるまで残ります。 | ## Git - 実行のブランチは `/` と名づけます。`main` は保護されており、サーバー側の `pre-receive` フックが直接のプッシュを拒否します。 - `nas propose` が Agent PR を作ります。 - コミットには、`Run:`、`Lease:`、`Principal:` などのトレーラーが自動で付きます。 ## S3 - バケットは 1 つのツリーのブランチビューに対応し、オブジェクトのバージョン ID はコミットです。 - ブランチのように S3 にない意味は、バケットのプレフィックスかリクエストヘッダー(`x-nas-branch`)で表します。これは **縮退した投影** です。データパイプラインは読み書きできますが、ブランチの完全な体験は得られません。 - リースは、STS 形式の一時的な認証情報として渡されます。 ## A2A(任意) - 受け取ったタスクは、`inbox/` にタスクファイルとして入り、成果物は `outbox/` に置かれます。 - Agent Card が、ロールのスキルと、必要なリースを宣言します。 - **NAS は A2A の参加者ではありません。** ロールのために動くランタイムが参加者です。NAS が担うのは、タスクと成果物の保管、ハンドオフバンドル、リースだけです。 ## HTTP API の規約 - **すべてのエンドポイントが `POST` を使い、パラメーターは JSON のボディに入れます。** レスポンスのフィールドは、常に `snake_case` です。 - パスにはバージョンを付けます:`/v1/...`。 - 冪等性:書き込み操作は `idempotency_key` を受け取ります。 - ページネーション:`cursor` と `limit`。 - 予算とレート制限は、レスポンスヘッダー(残りのバイト数、残りのリクエスト数)で返し、ランタイムが自分でペースを落とせるようにします。 予算つきの読み取りのリクエストとレスポンスは、おおよそ次のようになります。 *予算つきの読み取り* ```http POST /v1/files/read { "path": "/agents/cleo/memory/notes/customer-acme.md", "view": "outline", "budget_tokens": 400 } 200 OK { "view": "outline", "tokens": 212, "generated": false, "truncated": false, "content": "# Acme\n## Renewal (L12-L18)\n## Contacts (L19-L31)\n## Open issues (L32-L40)", "evidence": [ { "pointer": "nas://home-box/agents/cleo/memory/notes/customer-acme.md@9f2c1de#L1-L40" } ] } ``` エラーは、統一された構造を使います。 *エラーレスポンス* ```json { "error": { "code": "gate_required", "message": "This merge requires human approval.", "retryable": false, "request_id": "req_01JB7W2X4N", "details": { "gate_id": "gt_2Mx4" } } } ``` ## 発見 - 機械が読める入口は、このサイトと同じです。`/.well-known/ai-catalog.json`、MCP の Server Card、`llms.txt`。 - `nas://` の証拠ポインタを解決して検証するエンドポイント。 - MCP の `server/discover`。 --- 正規 URL: https://agentnas.com/ja/interfaces/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # セキュリティ > Agent NAS は、プロンプトインジェクションを防ぎません。注入されたあとに起きることを限定します。範囲の狭いリースで実行が触れられるものを区切り、ブランチで間違いを元に戻せるようにし、Rule of Two で、信頼できない内容を読んだセッションが機微なデータと外向きの経路を同時に持てないようにし、追跡できる記録を残します。 ## 範囲と信頼の前提 - **守るもの:** NAS の中のデータと履歴、認可の境界、記録の完全性、記憶の追跡可能性。 - **守らないもの:** NAS の外でエージェントが行うこと、計算そのものの隔離(それはサンドボックスの仕事です)、モデル提供者の側で起きること。 - **信頼の前提:** 信頼できる計算基盤(TCB)は、NAS のゲートウェイ、ポリシーエンジン、記録サービスです。ホストは侵害されておらず、サンドボックスが計算を隔離しています。TCB が侵害されれば、このページの保証は成り立ちません。 ## Rule of Two:セッションの不変条件 3 つの性質:**[A]** セッションが信頼できない内容を読んだ、**[B]** リースが機微なデータの読み取りを許す、**[C]** リースが保護された状態の変更や外向きの通信を許す。1 つのセッションでこの 3 つがそろったとき、C を起動する呼び出しは、自動では通りません。 | シナリオ | A | B | C | 結果 | | --- | --- | --- | --- | --- | | ウェブページを要約して、ブランチ上のノートにする | はい | はい | いいえ(ブランチのみ) | 自動:ブランチの中への書き込みは C に数えません。 | | ウェブページを読んだあと、`main` へのマージを提案する | はい | はい | はい | Human Gate。 | | 公開データだけを読み、作業用の領域に書く | はい | いいえ | いいえ | 自動。 | | 外部のメールを読んだあと、メールを送る(外向きの送出) | はい | はい | はい | ゲート。`secret` が関わるなら拒否。 | これは Meta の [Agents Rule of Two](https://ai.meta.com/blog/practical-ai-agent-security/) を **ストレージの境界** に実装したものです。Meta 自身も、これはリスクを減らすための経験則であって終着点ではなく、最小権限の代わりにもならないと強調していて、私たちも同じように使います。仕組みは [Trust Labels](https://agentnas.com/ja/concepts/trust-labels/) にあります。 ## 脅威モデル | 脅威 | NAS が強制できること | NAS にできないこと | 残るリスク | | --- | --- | --- | --- | | T1 間接プロンプトインジェクション(ファイル、ウェブページ、メール経由) | Rule of Two、リースによる限定、ブランチ、ゲート。 | インジェクションが起きること自体の阻止、起きたあとにリースの範囲内で行われる悪意ある動作の阻止。 | リースの範囲内での悪用。 | | T2 認証情報の漏えい(エージェントが長期の鍵を読む) | 長期の認証情報は実行の手元に置かない。シークレットスキャナーが `secret` をマークする。短い TTL。 | エージェントが、リースの範囲内のデータを、承認された外向きの経路へ送ることの阻止。 | リースの範囲内のデータの流出。 | | T3 広すぎる権限と操作ミス | 範囲の狭いリース、ブランチ、ソフト削除、どのリースの外にもあるスナップショット。 | NAS の外の副作用を元に戻すこと。 | NAS の外への影響。 | | T4 記憶への毒入れ(ロールをまたぐ拡散を含む) | 出どころと汚染、隔離、レビュー済みのものだけ自動読み込み、ロールバック。 | もっともらしく見える誤った事実の見分け。 | レビュアーが通してしまった毒。 | | T5 リースの盗難や再利用 | 短い TTL、失効できる、任意の保持者バインド(DPoP、mTLS)。 | TTL の間の悪用の阻止。 | TTL の窓。 | | T6 承認疲れと、ろくに見ない承認 | まれなゲート、NAS が差分を描画、承認をダイジェストに束縛、承認率の監視。 | 人間に注意深く見させること。 | 人為的なミス。 | | T7 ログの改ざん | ハッシュチェーン、任意の外部アンカー。 | アンカーがないとき、root がログを壊すのを防ぐこと。 | 悪意のある管理者。 | | T8 データの持ち出し(外向きの送出、共有、検索結果) | 外向きの送出にはリースの操作とゲートが必要。`secret` は外へ出せない。導出物はラベルを引き継ぐ。 | 人間が承認したあとの漏えいの防止、隠れチャネル。 | 承認後の漏えい。 | | T9 サプライチェーン(スキル、MCP サーバー、プラグイン、モデル) | スキルや外部 MCP サーバーの内容は `external` として扱う。スキルのディレクトリは特定のコミットに固定できる。ランタイムのマニフェストは記録に書く。 | サードパーティのコードが無害だと保証すること。 | 固定してしまった悪意あるバージョン。 | | T10 リソースの枯渇(ブランチ爆弾、予算の枯渇、読み取りのループ) | クォータ、TTL、予算、ブレーカー。 | 正当な大きなタスクと暴走の区別。 | 局所的なサービス拒否。 | ## 対策 - **ポリシーエンジン:** 決定的(Cedar や Rego 形式)、既定は拒否、拒否するときは読める理由と該当したルールを返す。**LLM は呼び出さない**。 - **認証情報ブローカー:** 長期の鍵はブローカーが持つ。承認された外向きの操作の中でだけ、実行のために短命の下流トークンを発行する。 - **隔離と鍵:** ロールごとに 1 つの Home とパス空間を持つ。`sensitive` の保持クラスは別の鍵ドメインを使う。 - **サプライチェーン:** スキル、MCP サーバー、プラグインの内容は `external` として扱う。実行の開始時に、使うスキルとバージョンを記録に書く。 ## 正直な限界 1. これはプロンプトインジェクションへの防御では **ありません**。被害を限定し、見えるようにします。 2. リースの範囲内の正当な権限は、依然として悪用されうる。 3. NAS の外の副作用には何もできない。すでに送ったメール、すでに呼び出した API など。 4. 隠れチャネルとサイドチャネルは対象外。 5. TCB が侵害されれば、保証は成り立たない。 6. 人間は間違える。ゲートはそのリスクを下げるが、なくすことはできない。 7. 汚染は保守的で、摩擦と誤検知を生む。調整が必要で、拒否の理由が見えることも必要。 8. 暗号粉砕が守るのは、私たちが管理できるコピーだけ。 ## インシデント対応 - **ブレーカー:** `revoke_run` と `revoke_role` が、リースをただちに失効させ、ブランチを凍結する。 - **ロールバック:** 影響を受けたツリーを、以前のコミットに戻す。 - **追跡:** 読み取りマニフェストと記録チェーンで、実行が何を読み、何を書き、どのノートに触れたかを調べる。 - **後始末:** [Cascade Forget](https://agentnas.com/ja/concepts/cascade-forget/) で、影響を受けた導出物を削除し、報告を出す。 ## 可観測性と監査 - **3 種類のデータ:** 記録(イベント)、読み取りマニフェスト(入力の集合)、メトリクスとトレース。 - **`explain(commit)`:** そのコミットを生んだ実行とリース、通過したゲート、読んだもの、依存する入力を返す。 - **既存の可観測性基盤との統合:** 1 回の実行は 1 つの OpenTelemetry GenAI スパンに対応し、リースとゲートはイベントとして付く。記録は JSON Lines としてエクスポートするか、SIEM に流せる。 - **メトリクス:** リースの発行率と拒否率、ゲートのキューの長さ、承認率、承認にかかる時間、ブランチの数と年齢、索引の鮮度、予算の消費、記録チェーンの検証結果。 - **プライバシーと保持:** 既定ではメタデータだけを記録し、内容は記録しない。記録の保持と内容の削除は独立している。記録そのものを読むにもリースが必要。 --- 正規 URL: https://agentnas.com/ja/security/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # ユースケース > どのシナリオも、すでに人々がやっていることから出発します。Agent NAS がどの手順を変えるのか、どの準拠レベルが要るのか、今日何を使って作れるのかを示します。 ## 夜間に動くエージェント 寝る前に、エージェントにタスクを渡します。リリースノートを整えてほしい、と。エージェントは自分のブランチで作業します。朝、携帯電話に Gate Card が届いています。4 つのファイル、実際の差分、読んだ出典。承認すればマージされ、却下すればブランチは捨てられ、メインラインには何も起きません。 - **使うコンセプト:** [Agent Branch](https://agentnas.com/ja/concepts/agent-branch/)、[Capability Lease](https://agentnas.com/ja/concepts/capability-lease/)、[Human Gate](https://agentnas.com/ja/concepts/human-gate/)。 - **準拠レベル:** L0 から L1。 - **今日作れるもの:** Git の worktree、保護された `main`、プッシュ通知。 ## フレームワークを変えても、記憶は残す エージェントを、あるランタイムから別のランタイムに移します。Home はオープンな慣習に従ったディレクトリです。`AGENTS.md`、`skills/`、`memory/notes/`。新しいランタイムは同じディレクトリを読みます。対応づけで損失が出る部分は、取り込み時に未レビューとしてマークされます。 - **使うコンセプト:** [Agent Home](https://agentnas.com/ja/concepts/agent-home/)、[Agent Memory](https://agentnas.com/ja/concepts/agent-memory/)。 - **準拠レベル:** L0 から L2。 - **今日作れるもの:** `AGENTS.md` を置いた Git ディレクトリ。 ## 1 つのチーム、複数のエージェント、共有の 1 つの知識 3 つのエージェントが同じナレッジベースに書き込みます。それぞれ自分のブランチで作業し、マージはレビューされます。外部のウェブページを読んだ実行が書いたノートは隔離に入り、ほかのエージェントに自動では読み込まれません。共有されるのはノートであって、索引ではありません。 - **使うコンセプト:** [Trust Labels](https://agentnas.com/ja/concepts/trust-labels/)、[Agent Memory](https://agentnas.com/ja/concepts/agent-memory/)、[Agent Branch](https://agentnas.com/ja/concepts/agent-branch/)。 - **準拠レベル:** L0 から L3。 - **今日作れるもの:** 保護されたメインライン、取り込みディレクトリへの `external` マーク、レビュー済みのノートだけを自動で読み込むルール。 ## 事後検証 マージのあと、あるページの内容がおかしいことに気づきます。`explain(commit)` が、どの実行、どのリース、どのゲートが決めたかを教えてくれます。読み取りマニフェストには、その実行が外部のウェブページを読んだことが示されています。出どころをたどって影響を受けたノートを見つけ、ロールバックし、隔離します。 - **使うコンセプト:** [Flight Recorder](https://agentnas.com/ja/concepts/flight-recorder/)、[Agent Branch](https://agentnas.com/ja/concepts/agent-branch/)。 - **準拠レベル:** L1。 - **今日作れるもの:** コミットの Git トレーラーと、追記のみの SQLite テーブル。 ## 顧客が忘れてほしいと求める 顧客のデータは、書き込み時に `sensitive` の保持クラスでマークされていました。要求が届くと、Cascade Forget が系譜をたどって、要約、埋め込み、それを引用するノートを見つけ、その鍵ドメインを破棄し、報告を出します。何を行い、何ができなかったか(NAS の外のコピー、モデル提供者のログ、モデルの重み)です。 - **使うコンセプト:** [Cascade Forget](https://agentnas.com/ja/concepts/cascade-forget/)、[Agent Memory](https://agentnas.com/ja/concepts/agent-memory/)。 - **準拠レベル:** L3。 - **今日作れるもの:** 保持クラス、ソフト削除、すべての導出物の入力の記録。 ## すでにある筐体に、扉を 1 つ足す すでに NAS をお持ちです。Overlay の構成は、その前にゲートウェイを置き、1 つのディレクトリだけを管理します。エージェントはマウントか S3 のビューを通って出入りし、所有者のバックアップとスナップショットは、エージェントの手が届かないところに残ります。 - **使うコンセプト:** [Capability Lease](https://agentnas.com/ja/concepts/capability-lease/)、[Agent Branch](https://agentnas.com/ja/concepts/agent-branch/)。 - **準拠レベル:** L0 から L1。 - **今日作れるもの:** NFS か SMB に、パスのプレフィックスと操作でトークンを検査する小さなゲートウェイ。 ## Agent NAS を使わなくてよいとき | あなたの状況 | もっと簡単な方法 | | --- | --- | | エージェントが 1 つで、気軽にやり直せるデータ | `AGENTS.md` を置いた Git リポジトリ。 | | エージェントに NAS の管理を手伝わせたいだけ | ベンダー自身の管理エージェント。 | | フォークできるデータセットだけが必要 | lakeFS か Tigris。 | | 記憶の検索だけが必要 | どのメモリライブラリでも。 | | 隔離された計算が必要 | サンドボックス。 | --- 正規 URL: https://agentnas.com/ja/use-cases/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # 比較 > Agent NAS は、これらのアプローチを置き換えるものではありません。隣接する取り組みの多くは、それぞれの持ち場でよい仕事をしていて、部品として使えます。何を借りたのか、本当に新しいのは何かを、できるだけ正直に書きます。 ## 全体像 | カテゴリ | 例 | すでにできていること | 届いていないところ | | --- | --- | --- | --- | | NAS ベンダーの管理エージェント | QNAP QuAgent、Synology DSM Agent、TrueNAS MCP | 自然言語で筐体を管理する。ユーザーの権限を流用する。危険な操作は二重に確認する。ログ。 | 「管理」が対象で、「データの中で作業する」ことではない。実行単位のリース、ブランチ、記憶の契約はない。 | | エージェント向けファイルシステムと Git | Turso AgentFS、Letta Context Repositories、Cloudflare Artifacts、Redis Agent Filesystem | ファイル、状態、ツール呼び出しの監査を、持ち運べるストレージに入れる。Git でバージョン管理された記憶。エージェント向けの Git。 | それぞれ 1 つのランタイムやプラットフォームに結びついている。認可、承認、汚染、忘却は、たいてい外側にある。 | | フォークできるオブジェクトストレージとデータのバージョン管理 | Tigris Agent Kit、lakeFS | コピーオンライトのフォーク、チェックポイント、保護ブランチ、範囲を絞った認証情報、マージ前のフック。 | データレイクやクラウドのオブジェクトストレージ向け。記憶やリースの意味はなく、人間が承認する体験もない。 | | 記憶フレームワーク | Letta、Mem0、Zep/Graphiti、OpenClaw のメモリアーキテクチャ | 検索、統合、時間グラフ。OpenClaw にはすでに出どころのラベルと隔離がある。 | 多くは 1 つのフレームワークに結びついている。索引と真実が分かれていない。移行と削除が難しい。 | | サンドボックスとランタイム | E2B、Daytona、Vercel Sandbox | 隔離された計算とスナップショット。 | ストレージは主眼ではない。状態はサンドボックスとともに消える。 | | 汎用ストレージ | S3 と S3 Files、NFS、SMB、Git | 耐久性があり、成熟していて、エコシステムが完備している。 | 「実行」「リース」「汚染」を知らない。 | **空白。** どの部品も、誰かがすでに作っています。私たちが見ていないのは、それらを組み合わせる、**セルフホストできて、オープンで、検証できる** 契約です。実行を単位とし、ブランチ、リース、承認、記録、記憶、忘却を結びつけ、準拠テストを添えたものです。そのうちの 1 つでも、誰もやっていないと主張するつもりはありません。だからこそ、私たちは多くを借りています。 ## 隣接するアプローチとの関係 | アプローチ | 得意なこと | Agent NAS との関係 | | --- | --- | --- | | QNAP QuAgent、Synology DSM Agent、TrueNAS MCP | 自然言語での NAS の管理 | 補い合う。それらの筐体は、Overlay の土台になりえる。 | | Turso AgentFS、Redis Agent Filesystem、LayerFS | エージェント向けファイルシステム | Store のエンジンとして使える。Agent NAS はその上に契約を加える。 | | Letta Context Repositories | Git で支えられた記憶 | Agent Home はそのレイアウトの考え方を借りている。Letta は Agent Memory のランタイムになりえる。 | | Cloudflare Artifacts、Tigris、lakeFS | フォークでき、バージョン管理されたストレージ | Store のエンジンとして、そのまま使える。 | | Mem0、Zep/Graphiti | 記憶の検索と統合 | インデクサー、つまり導出物の生産者になりえる。 | | OpenClaw のメモリアーキテクチャ | 出どころのラベルと隔離 | 先行者。私たちは同じ考えを共有のストレージ層に置く。 | | S3、S3 Files、NFS、SMB | 汎用ストレージ | Store として使える。実行、リース、汚染は知らない。 | | E2B、Daytona、Vercel Sandbox | 隔離された計算 | 補い合う。一緒に使うべきもの。 | ## 借りたもの - **Git と lakeFS から:** ブランチ、保護ブランチ、マージ前のフック。 - **Letta と Cursor から:** ファイルはエージェントがいちばん知っているインターフェースであり、コンテキストは段階的に開示すべきだということ。 - **OpenClaw と記憶のセキュリティ研究から:** 出どころは偽造できないこと、信頼できない記憶は隔離すること。 - **Meta の Rule of Two、CaMeL、Fides から:** モデルの外で被害を限定すること。 - **OAuth(RFC 8693、RFC 9396)、Biscuit、UCAN から:** トークン交換と、減衰する認可。 - **OpenTelemetry と Certificate Transparency から:** エクスポートできるトレースと、発見できる改ざん。 - **Anthropic の auto mode の研究から:** 承認は少なくし、計画とマージに置くこと。 ## 本当に新しいもの できるだけ正直に挙げます。リストは短いです。 1. **実行** を単位とし、ブランチ、リース、予算、記録を結びつけること。 2. **読み取りマニフェスト** とセッション汚染:Rule of Two をストレージの境界で強制すること。 3. **出どころと汚染** を伴う記憶の書き込みと、「レビュー済みのものだけ自動読み込み」という信頼の境界。 4. **保持クラス:** 「復元できること」と「忘れられること」を、明示的な選択にすること。 5. **実行可能な受け入れテストを備えた、準拠のはしご。** > **証明されるべき判断.** それ以外のすべて、ブランチ、トークン、ログ、検索は、既存の技術の組み合わせです。それらをオープンで検証できる契約にまとめること自体に価値があると私たちは考えていますが、それは **まだ証明されるべき判断** であって、確立した事実ではありません。 --- 正規 URL: https://agentnas.com/ja/compare/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # 仕様 > 仕様ドラフト v0.2 は、L0 Files から L4 Sync まで、累積する 5 つの準拠レベルを定めます。各レベルは、一組のコンセプトと、一組の実行可能な受け入れテストに対応します。`conformance.json` のない「互換」の主張は受け付けません。 > **草案.** 参照実装も、実行できる準拠テストスイートも、まだありません。以下の受け入れテストは仕様の一部です。その役目は、「互換」という言葉を検証できるものにすることです。 ## 仕様の構成要素 | 構成要素 | 内容 | 目標バージョン | | --- | --- | --- | | Core | 6 つの名詞、Store の契約、ブランチと保護ツリー、マージ、ソフト削除。 | v0.3 ドラフト | | Lease & Record | リースの形式(`authorization_details` のプロファイル)、記録と読み取りマニフェストの形式、`explain`。 | v0.3 ドラフト | | Interfaces | マウントの意味、Git と S3 の投影、HTTP API、MCP のツール面。 | v0.4 ドラフト | | Memory | ノートの規約、導出物とレシピ、予算つきの読み取り、証拠ポインタ。 | v0.4 ドラフト | | Guard | ラベル、セッション汚染、ポリシーのプロファイル、Gate Card、忘却の報告。 | v0.5 ドラフト | | Sync | ハンドオフバンドル、ラベルのしきい値、墓標(tombstone)。 | 今後 | | Conformance Suite | 各レベルの実行可能な受け入れテスト。 | 各バージョンと同時 | ## 準拠レベル レベルは累積します。L2 を主張するなら、L0 と L1 も満たさなければなりません。 | レベル | 名前 | カバーするコンセプト | 一言で | | --- | --- | --- | --- | | L0 | Files | Agent Home、Agent Branch | 履歴を持つディレクトリ。 | | L1 | Authority | Flight Recorder、Capability Lease、Human Gate | 誰が、どの権限で、何をしたか。 | | L2 | Memory | Agent Memory、Budgeted Reads | 読めて、持ち運べる記憶。 | | L3 | Guard | Trust Labels、Cascade Forget | 被害の限定。 | | L4 | Sync | なし(任意) | 複数のノード。 | ## L0 Files:履歴を持つディレクトリ 1. 実行のブランチでファイルを変更しても、保護されたメインラインは変わらない。 2. 保護ツリーへの直接の書き込みは、認証情報が有効でも拒否される。 3. 保護ツリーのファイルを削除したあと、回収エリアから復元できる。 4. エクスポートしてからインポートすると、バイト単位で同一のツリーと履歴が得られる。 5. 標準的なビューを少なくとも 2 つ提供する:マウントと Git、またはそのどちらかと S3。 ## L1 Authority:誰が、どの権限で、何をしたか 1. リースのないリクエストは拒否され、その拒否は記録される。 2. 親より広い子リースの申請は拒否される。 3. リースの期限が切れると、マウントは読み取り専用になる。失効は、実装が宣言した時間内に有効になる。 4. どのリースも、スナップショットを削除できない。 5. どのコミットも、実行、リース、読み取りマニフェストまで `explain` できる。 6. 記録チェーンの検証が通る。1 件の記録を改ざんすると、検証は失敗する。 7. 保護ツリーへのマージでは、Gate Card が NAS の計算した差分を示し、承認はダイジェストに束縛される。差分が変われば、承認は無効になる。 ## L2 Memory:読めて、持ち運べる記憶 1. 索引をすべて削除して再構築したあと、黄金の想起テストが通る。 2. Memory 層なしで、ノートを読める。 3. すべての導出物が、レシピと入力を持つ。 4. 予算つきの読み取りは、予算が小さすぎるときに縮退し、実際に返したビューを宣言する。 5. 証拠ポインタを検証できる。コミットが変わったあとも、ポインタは元の内容を指し続ける。 ## L3 Guard:被害の限定 1. B と C を持つリースの下で、`external` を読んだセッションが C 型の操作を起動すると、拒否されるか、ゲートに回される。 2. 導出物は、入力のラベルの和集合を引き継ぐ。 3. 汚染されたセッションが書いたノートは、自動で読み込まれない。 4. 忘却の要求は、「カバーできない範囲」を含む報告を出す。リーガルホールドは忘却を妨げられる。 5. ポリシーの評価は LLM を呼び出さない。ポリシーエンジンはモデルへの外向きの呼び出しを持たないので、監査できる。 ## L4 Sync:複数のノード 1. 2 つのノードが同期したあと、ツリーが一致する。 2. 許可レベルがより低いノードへ、機微度の高いオブジェクトを送らない。 3. 忘却の墓標が、相手のノードへ伝わる。 4. ハンドオフバンドルを、相手のノードで実行でき、リースは狭くなる一方である。 ## 宣言の形式 実装は `conformance.json` を公開しなければなりません。準拠するレベル、各テストの結果、既知の差異を記したものです。このファイルのない「互換」の主張は受け付けません。 *conformance.json* ```json { "implementation": "example-nas", "version": "0.1.0", "spec": "0.2", "level": "L1", "tests": { "L0.1": "pass", "L0.2": "pass", "L0.3": "pass", "L0.4": "pass", "L0.5": "pass", "L1.1": "pass", "L1.2": "pass", "L1.3": "pass", "L1.4": "pass", "L1.5": "pass", "L1.6": "pass", "L1.7": "pass" }, "deviations": ["L1.3: revocation takes effect within 60 seconds"] } ``` ## バージョンと互換性 - セマンティックバージョニング。0.x の間は、互換性を保証しない。 - 新しいフィールドは、後方互換である。 - 廃止するフィールドは、少なくとも 1 つのバージョンの間、警告期間を置く。 ## 仕様がまだ定めていないこと トランスポートプロトコルのバージョンの詳細、特定のポリシー言語、トークンの署名アルゴリズム、特定のストレージエンジン、そしてユーザーインターフェース。 --- 正規 URL: https://agentnas.com/ja/spec/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # ロードマップ > ロードマップは「現在、次、今後、やらないこと」の順に並べ、年ごとの約束は書きません。2026 年に書いた 3 年のスケジュールは、最初の 1 年のうちに事実によって書き換わる可能性が高いからです。 ## 現在、次、今後 - **現在(2026 年第 4 四半期)** · 進行中 · **コンセプト、仕様ドラフト、ウェブサイト**: コンセプトと仕様ドラフト v0.2、そして 8 言語のウェブサイト。フィードバックを集めています。すでに `AGENTS.md` と Git を組み合わせて使っている実際のユーザー 3 人から 5 人にインタビューし、賭け B1 から B7 を検証します。 - **次(目標:2027 年前半)** · 次 · **参照実装 v0 と仕様 v0.3**: 参照実装 v0(Lite と Overlay):Git とファイルシステムのスナップショットのバックエンド、リースの発行、記録と読み取りマニフェスト、CLI、そして L0 から L1 の準拠テストスイート。仕様 v0.3(Core、Lease & Record)。デモできる 1 つのシナリオ:エージェントが夜のあいだブランチで作業し、朝に Gate Card でマージを承認する。 - **今後(フィードバック次第)** · 今後 · **Memory、Guard、コントロールルーム、Sync**: Memory 層と MCP のツール面(L2)。Guard:ラベル、汚染、連鎖的な忘却(L3)。コントロールルーム。Team と Cloud の構成。Sync(L4)。 > **拘束力はありません.** これは意図であって、約束ではありません。「互換」が何を意味するかを定めるのは準拠レベルであり、カレンダーではありません。 ## ステージゲート(私たちが誤っていると示すもの) 「次」を終えたと言える基準は、機能のリストでは **ありません**。少なくとも 3 つの実際のワークフローで 1 週間動かすこと、ゲートの承認率が 95% を下回ること、そして少なくとも 1 つの実際の問題を止めたこと。満たせなければ、機能を積み上げるのではなく、コンセプトに戻って直します。 ## やらないこと - 独自のストレージエンジン。 - 独自のベクトルデータベース。 - モデルのホスティング。 - スキルのマーケットプレイス。 - トークンやブロックチェーン。 - 専用ハードウェア。 ## あえて残してある問い - リースの自由記述の `purpose` を、機械が検査できる構造化された意図へ、どう発展させるか。 - セマンティックなマージャーは、どう登録し、どう信頼するのか。 - ラベルの粒度は、ファイルか、段落か。 - マルチテナントの環境で、ラベルの語彙をどう統治するか。 - ノード間での失効の伝播の遅れを、外にどう説明するか。 - 記憶の質をどう測るか。モデルや埋め込みが変わったとき、回帰の基準は何か。 - 複数の出典から推論された事実について、Cascade Forget は影響範囲をどう定義するか。 - 高スループットのもとで、読み取りマニフェストの保存コストと粒度をどう釣り合わせるか。 - バッチや段階的なレビューに最適なインターフェースは何か。自動マージのしきい値を、どう測り、どう調整するか。 - 組織をまたぐ信頼の起点は、どう配布し、どう失効させるか。 --- 正規 URL: https://agentnas.com/ja/roadmap/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # 設計原則 > 8 つの命題が、Agent NAS のあらゆるトレードオフを導きます。7 つの賭けは、何に賭けているのか、外れたらどうなるのかを示します。何年も通用することを願う設計は、自分がいつ誤るのかを述べるべきです。 ## 1. アクセスの単位は、アカウントではなく実行 いまのやり方は、エージェントに長期のトークンか、人間のアカウントを渡すことです。2026 年 4 月の事故のトークンは、「ドメインを管理するために作られたのに、何でもできた」ものでした。実行には、開始、終了、目的、責任者があり、認可と説明責任の自然な単位になります。 *排除するもの:* 共有キー、長期のトークン、借りてきた人間のアカウント。 ## 2. 元に戻せることは、防ぐことより安い 防止(承認、分類器、プロンプトのルール)は、必ず漏れます。分類器は見逃し、人間はもっと見逃し、モデルはプロンプトに書かれた原則も破ります。間違いを **元に戻せる** ようにすること(ブランチ、ソフト削除、スナップショット)は、すべての操作を正しくするよりずっと簡単で、検証もしやすいです。系として、**復旧の経路は、それが守るものの被害の範囲の外になければなりません**。だからスナップショットは所有者が持ち、どのリースの権限も及びません。 *排除するもの:* 「プロンプトに確認を求める一文を書くこと」を対策とみなすこと。 ## 3. 権限はタスクごとに貸し出し、身元に対して与えない 実行が受け取るのは、範囲が狭く、期限があり、予算つきのリースです。長期の鍵はオーケストレーターか所有者の手元にとどまり、モデルは決して目にしません。 *排除するもの:* 長期の、広い、居座る権限。 ## 4. ノートが真実、知能はキャッシュ 記憶は、人間が読んで直せるファイルであるべきです。索引、埋め込み、要約は、捨てて再構築できる導出物です。こうすれば、記憶を失わずに検索アルゴリズムを変えられ、毒入れや削除も扱えるようになります。 *排除するもの:* 調べることも移すこともできない、不透明な記憶ストア。 ## 5. 出どころが背骨 すべての記憶、すべての導出物、すべてのマージが、「どこから来たのか、何に影響されたのか」に答えられます。出どころは、監査の土台であり、毒入れの対策、信頼ラベル、忘却の土台でもあります。 *排除するもの:* 出どころのない記憶。 ## 6. ポリシーは決定的で、モデルは締めることしかできない 認可の判断は、モデルの「意見」ではなく、コードが下します。分類器や LLM は「この手順には承認が要る」と示唆できますが、承認することは決してできません。 *排除するもの:* 通してよいかどうかを、モデル自身に判断させること。 ## 7. ストレージは退屈に保ち、革新は契約に置く 新しいエンジンは作りません。まずファイル。モデルがいちばんよく知っているインターフェースはファイルだからです。プロトコルは変わりますが、6 つの名詞は変わりません。 *排除するもの:* AI の名のもとに、新しいストレージエンジンを発明すること。 ## 8. 希少なのは、トークンと人間の注意 読み取りには予算を与えます。承認は、少なく、具体的に、人間が本当に判断できる場所に置きます。つまり、すべての操作ではなく、計画とマージです。 *排除するもの:* 既定でファイル全体を返すこと。あらゆる操作でポップアップを出すこと。 ## 7 つの賭けと、反証されうる条件 何年も通用することを願う設計は、何に賭けているのか、いつ誤るのかを述べるべきです。 | 賭け | 根拠 | 外れたら | | --- | --- | --- | | B1 エージェントは、これからもファイルシステムと Git を主な作業媒体にする | 主要なランタイムのいくつかが、すでにファイルに移っている。 | 専用の「記憶 API」に移るなら、Agent Home はエクスポート形式に格下げされる。ほかのコンセプトはファイルに依存せず、成り立つ。 | | B2 「1 回の実行」は、これからも認可と説明責任の自然な単位である | オーケストレーターは、たいていタスクごと、セッションごとにサンドボックスを起動する。 | 長く動き続ける自律プロセスが現れるなら、リースは予算つきの更新を重ねる形になり、コンセプトは残る。 | | B3 プロンプトインジェクションは、見通せる将来のうちには、モデル層で根絶されない | Meta 自身の表現、分類器の見逃し率、複数の攻撃研究。 | 根絶されるなら、Trust Labels は多層防御の安価な一層になる。 | | B4 人間の注意は、これからも希少である | Anthropic が開示したデータ。 | 完全な自動化が十分に信頼できるものになれば、Human Gate は事前承認ポリシーに道を譲り、監査は残る。 | | B5 ストレージ層は、出どころと汚染を強制するのにふさわしい場所である | 記憶のセキュリティ研究は書き込み時の出どころを重視している。OpenClaw は 1 つのランタイムの中で同じことを行った。 | どのランタイムも自分でうまくやるなら、NAS はラベルを保管するだけでよくなり、役割は薄くなる。 | | B6 ランタイムやエージェントをまたいで共有される記憶は、現実の需要になる | マルチエージェントの協調、フレームワーク移行のコスト。 | 記憶が各フレームワークの私的な機能にとどまるなら、Agent Memory の価値は、主に個人と小さなチームの持ち運びやすさにある。 | | B7 プロトコルは変わるが、「ファイルとツール」という 2 つの口は安定する | MCP のバージョン移行、A2A 1.0。 | アダプターを差し替える。アダプターがプロトコルを隔離するのは、このため。 | ## 安定すると見込むものと、変わると見込むもの | 安定すると見込む | 変わると見込む | | --- | --- | | 6 つの名詞 | 具体的なプロトコルとトランスポート | | Home のディレクトリの規約 | 埋め込みモデルと検索アルゴリズム | | 4 つの約束 | トークンの形式 | | 「エクスポートできることが、抜けられること」という保証 | エージェントフレームワークと、人間とコンピューターのインターフェース | --- 正規 URL: https://agentnas.com/ja/principles/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # よくある質問 > Agent NAS について、最初によく聞かれる質問に答えます。それは何か、既存のストレージや記憶ツールとどう違うか、セキュリティとプライバシーをどう扱うか、プロジェクトはどこまで進んでいるか。 ## 基本のこと ### Agent NAS とは何ですか? Agent NAS は、エージェントの「1 回の実行」を軸に設計したネットワーク接続ストレージです。エージェントの実行は、それぞれ隔離されたブランチで作業し、短命で範囲の狭いリースを通してデータにアクセスします。すべての変更は追跡でき、元に戻せます。記憶は、出どころつきの普通のファイルです。マウント、Git、S3、MCP で提供されます。 ### Agent NAS は、購入やダウンロードができる製品ですか? まだです。現在は、仕様ドラフトを伴うコンセプト(v0.2、2026 年 11 月)です。L0 と L1 は、既存の部品で今日から作れます。参照実装 v0 の目標は 2027 年の前半で、その先の計画は [ロードマップ](https://agentnas.com/ja/roadmap/) にあります。 ### NAS ベンダーが出している AI エージェントとは、何が違いますか? QNAP、Synology、TrueNAS などのベンダーのエージェントは、筐体を管理します。Agent NAS が定めるのは、筐体の中のデータの上で、ほかのエージェントがどう作業するかです。ブランチ、リース、記憶、忘却。両者は補い合います。[比較](https://agentnas.com/ja/compare/) を参照してください。 ### ベクトルデータベースや記憶フレームワークとは、何が違いますか? それらは検索と統合のためのツールですが、Agent NAS の真実は、出どころつきの普通のノートです。ベクトルストアや記憶フレームワークは、インデクサーとして [Agent Memory](https://agentnas.com/ja/concepts/agent-memory/) の下に置け、索引はいつでも捨てて再構築できます。 ### オープンソースですか? 仕様とこのサイトは CC BY 4.0 のライセンスです。参照実装は、Apache-2.0 でのオープンソース化を予定しています。 ## 設計とセキュリティ ### なぜデータベースではなく、ファイルと Git なのですか? エージェントはファイルに収れんしつつあります。指示は `AGENTS.md`、スキルは `SKILL.md`、記憶は Markdown、履歴は Git。ファイルはどのツールからでも、どのモデルからでも読め、比較しやすく、持ち出しやすいものです。データベースや索引も使いますが、再構築できる導出の層としてです。 ### 実行が失敗したとき、最悪どうなりますか? 最悪の場合は、捨てられるブランチを 1 つ失うことです。保護されたメインラインはレビューされたマージでしか変わらず、削除はソフトで、スナップショットはどのリースの外にもあります。これは、間違いが NAS の内側で起きた場合に成り立ちます。すでに送ったメールや、すでに呼び出した外部の API は、NAS には元に戻せません。 ### リースと OAuth トークンの関係は? リースは OAuth のアクセストークンです。トークン交換(RFC 8693)で要求し、リッチ認可リクエスト(RFC 9396)でパスと操作を記述します。Agent NAS が加えるのは、ブランチ、予算、Rule of Two の性質を含む、実行単位の規約です。[Capability Lease](https://agentnas.com/ja/concepts/capability-lease/) を参照してください。 ### なぜ記憶は「ノートとキャッシュ」なのですか? 検査し、直し、移し、忘れられるようにするためです。ノートはファイルで、索引、埋め込み、要約は、記録されたレシピでそこから計算されます。埋め込みモデルを変えれば、システムはバックグラウンドで再計算します。汚染されたセッションが書いたノートは、まず隔離に入り、レビューされるまで自動では読み込まれません。 ### Agent NAS はプロンプトインジェクションを防げますか? 防げません。モデルの外にあるものでは、完全には防げません。Agent NAS が限定するのは、注入されたエージェントにできることです。[Trust Labels](https://agentnas.com/ja/concepts/trust-labels/) は、外部のコンテンツを読んだセッションが、機微なデータと外向きの経路を同時に持てないようにし、影響の大きい操作には [Human Gate](https://agentnas.com/ja/concepts/human-gate/) が要ります。正直な限界は [セキュリティ](https://agentnas.com/ja/security/) のページにあります。 ### 「忘れられる権利」はどう扱いますか? [Cascade Forget](https://agentnas.com/ja/concepts/cascade-forget/) を通してです。元データから派生した要約、埋め込み、ノートを系譜に沿って削除し、履歴は保持クラスで扱い、`sensitive` クラスでは鍵を破棄します(暗号粉砕)。出す報告には、カバーできない範囲が明記されます。NAS の外のコピー、モデル提供者のログ、モデルの重みです。モデルに何かを忘れさせることはできません。 ### MCP を必ず使う必要はありますか? ありません。MCP は制御面のインターフェースの 1 つにすぎず、ファイル、Git、S3 には要りません。プロトコルの層は、置き換えられるように設計されています。 ## 導入と将来 ### 既存の NAS やクラウドストレージを置き換えますか? 置き換えません。Overlay の構成は、既存の NAS、オブジェクトストア、Git ホストの前にゲートウェイを置き、その中の 1 つのディレクトリやバケットだけを管理します。クラウドストレージを Store として使うこともできます。 ### どのエージェントフレームワークやランタイムと使えますか? ディレクトリをマウントできる、または Git、S3、MCP を使えるランタイムなら、どれでも使えます。Agent Home のレイアウトはオープンな慣習(`AGENTS.md`、Agent Skills、YAML フロントマターつきの Markdown)に従うので、Claude Code、Cursor、Codex、OpenHands、LangGraph、自作のフレームワークも候補です。 ### いつでも抜けられますか? はい。すべてを、普通のファイルと Git の履歴としてエクスポートできます。これは機能ではなく、4 つの約束のひとつです。 ### Agent NAS を使わないほうがよいのは、どんなときですか? エージェントが 1 つで、気軽にやり直せるデータしかないとき。`AGENTS.md` を置いた Git リポジトリで十分です。ほかのケースは [ユースケース](https://agentnas.com/ja/use-cases/) にあります。 ### 引用や貢献はどうすればよいですか? すべてのページに、正規 URL と推奨する引用形式を載せています。貢献するには、GitHub で issue を立てるか、ディスカッションを始めてください。詳しくは [このプロジェクトについて](https://agentnas.com/ja/about/) を参照してください。 --- 正規 URL: https://agentnas.com/ja/faq/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # 用語集 > この用語集は、Agent NAS が使うすべての用語を定義します。名前のついた 9 つのコンセプトと、補助の語彙です。コンセプトの名前は造語で、どの言語でも英語のまま使います。 ## 9 つのコンセプト - **[Agent Home (エージェント・ホーム)](https://agentnas.com/ja/concepts/agent-home/)**: **Agent Home** は、ロールごとに用意する、履歴つきのディレクトリです。指示、スキル、記憶、ジャーナル、作業場所のすべてが普通のファイルで入っています。どのランタイムからも入ることができ、離れるときは丸ごと持ち出せます。 - **[Agent Branch (エージェント・ブランチ)](https://agentnas.com/ja/concepts/agent-branch/)**: **Agent Branch** は、実行ごとにコピーオンライトのブランチで作業させる仕組みです。変更が保護されたメインラインに届くのは、レビューを経たマージ(Agent PR)だけで、チェックポイントを作って、いつでも元に戻せます。 - **[Flight Recorder (フライトレコーダー)](https://agentnas.com/ja/concepts/flight-recorder/)**: **Flight Recorder** は、実行ごとに残す、追記のみでハッシュがつながった記録です。実行が読んだもの(読み取りマニフェスト)、書いたもの、許可または拒否されたこと、誰が何を承認したかが入っています。データのそばにあって、ひとつの問いに答えます。「この変更には、何が影響した可能性があるか。」 - **[Capability Lease (ケイパビリティ・リース)](https://agentnas.com/ja/concepts/capability-lease/)**: **Capability Lease** は、特定のデータと特定の操作に対する、明確な期限と予算つきの認可です。**1 回の実行** に発行され、実行が NAS に触れる唯一の方法です。子リースは、親より狭くしかできません。 - **[Human Gate (ヒューマン・ゲート)](https://agentnas.com/ja/concepts/human-gate/)**: **Human Gate** は、ポリシーが起動するチェックポイントです。**元に戻せない、外向きの、または権限を高める** 操作が効力を持つ前に、人間(または指名された承認者)が、完全に描画された 1 つの具体的な操作を承認します。まれで、具体的で、機械的に承認しにくくなるように設計されています。 - **[Trust Labels (トラスト・ラベル)](https://agentnas.com/ja/concepts/trust-labels/)**: **Trust Labels** は、データに付ける 2 つのごく小さなラベル集合、**出どころ**(`owner`、`agent`、`external`)と **機微度**(`public`、`private`、`secret`)、そして **セッション汚染** です。NAS は、Rule of Two をセッションの不変条件として強制します。1 つのセッションが、[A] 外部コンテンツを読んだ、[B] 機微なデータに触れる、[C] 保護された状態を変更する、または外部へ通信する、の 3 つをすべて持つことはできません。3 つ目を満たすには [Human Gate](https://agentnas.com/ja/concepts/human-gate/) が必要です。 - **[Agent Memory (エージェントの記憶)](https://agentnas.com/ja/concepts/agent-memory/)**: **Agent Memory** = **読んで直せるノート** + **いつでも捨てられる索引** です。すべてのノートは出典を示し、索引(全文、ベクトル、グラフ、アウトライン)はノートの派生物にすぎず、バックグラウンドの保守ジョブは編集を **提案** するだけで、生のジャーナルを書き換えることはありません。 - **[Budgeted Reads (予算つき読み取り)](https://agentnas.com/ja/concepts/budgeted-reads/)**: **Budgeted Reads** は、トークン予算で測る読み取りです。同じファイルを、アウトライン、節、行範囲、全文と、異なる細かさで読めます。エージェントは「N トークンに収まる最良のビュー」を求め、正確な出典を指す証拠ポインタを受け取ります。 - **[Cascade Forget (カスケード忘却)](https://agentnas.com/ja/concepts/cascade-forget/)**: **Cascade Forget** は、系譜に沿った削除です。元データを削除するとき、あるいは誰かが忘れてほしいと求めたとき、NAS はそこから派生したものすべて(要約、埋め込み、それを引用するノート、キャッシュ、共有リンク)を見つけ、削除するか、その元データなしで導出し直し、**報告** を出します。何を行い、何ができなかったかです。 ## 補助用語 - **Principal(プリンシパル)**: 認証でき、責任を問える主体。人間、エージェント、サービス、ノードのいずれか。 - **Run(実行)**: 開始と終了、目的、責任者を持つ 1 回の実行。1 つのルートリースを持ち、1 つのブランチを所有します。 - **Protected tree(保護ツリー)**: レビューを経たマージでしか更新できず、直接の書き込みを受け付けないツリー。たとえば `main`。 - **Read manifest(読み取りマニフェスト)**: 1 回の実行が読んだパス、コミット、範囲、内容ハッシュをまとめた記録。内容そのものは含みません。 - **Evidence pointer(証拠ポインタ)**: `nas:////@#L12-L18` の形式で、特定のコミットの正確な行を指す、検証可能な参照。 - **Derived data(導出データ)**: ノートからレシピによって計算されたデータ。インデックス、埋め込み、要約など。破棄して、再構築できます。 - **Recipe(レシピ)**: 導出物を作るのに必要なものすべて。モデルとそのバージョン、チャンカー、各種の設定。 - **Lineage(系譜)**: 導出物と、その計算に使った入力との間の依存グラフ。 - **Session taint(セッション汚染)**: セッションがこれまでに読んだすべてのもののラベルの合算。セッションの中では増える一方で、次に何をしてよいかを決めます。 - **Rule of Two**: Meta が提唱した経験則。プロンプトインジェクションが確実に解決されるまで、1 つのセッションが持つ性質は、次の 3 つのうち多くても 2 つにとどめる。[A] 信頼できない入力を処理する、[B] 機微なデータに触れる、[C] 状態を変更する、または外部と通信する。 - **Declassification(機密区分の引き下げ)**: データの機微度を下げる、または出どころの信頼度を上げること。Human Gate か、スキーマで検証された構造化ハンドオフを通した場合に限ります。 - **Policy envelope(ポリシーの範囲)**: 所有者があらかじめ定めた、リースを自動で発行してよい範囲。範囲外の申請は Human Gate に回されます。 - **Credential Broker(認証情報ブローカー)**: 長期の秘密情報を保管し、承認された外向きの操作のためだけに短命な下流トークンを発行するコンポーネント。モデルや実行が長期の秘密情報を目にすることはありません。 - **Agent PR**: ブランチをターゲットにマージするための構造化された提案。差分、出どころ、チェック結果、ラベルの要約を伴います。 - **Retention class(保持クラス)**: 書き込み時に選ぶ `scratch`、`normal`、`sensitive` のいずれか。バックアップ、履歴、粉砕できるかどうかを決めます。 - **Crypto-shredding(暗号粉砕)**: 鍵を破棄して、その鍵で暗号化されたすべてのコピーを読めなくすること。 - **Conformance level(準拠レベル)**: L0 から L4 までのレベル。それぞれが、一組のコンセプトと、一組の実行可能な受け入れテストに対応します。 - **MCP**: Model Context Protocol。エージェントとツールやデータソースをつなぐオープンなプロトコル。 - **A2A**: Agent2Agent プロトコル。エージェント同士がタスクで協調するためのオープンなプロトコル。 --- 正規 URL: https://agentnas.com/ja/glossary/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # このプロジェクトについて > agentnas.com は、Agent NAS のコンセプトと仕様ドラフトの拠点です。人間とエージェントに共通の語彙を、そして複数の独立した実装が従える、検証できる契約を提供することを目指す、オープンなプロジェクトです。 ## 状況 2026 年 11 月の時点で、Agent NAS は仕様ドラフト(v0.2)を伴うコンセプトです。参照実装も、実行できる準拠テストスイートも、まだありません。v0.2 は地に足をつけるための改訂で、13 のコンセプトを 9 つに絞り、それぞれに小さく始める方法と正直な限界を書きました。このウェブサイトは、プロジェクトが最初に公開したものです。計画は [ロードマップ](https://agentnas.com/ja/roadmap/) を参照してください。 ## ライセンス このサイトと仕様の文章と図は、[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) のライセンスです。クレジットを表示すれば、共有も改変もできます。参照実装は Apache-2.0 での公開を予定しています。 ## 引用の仕方 使ったページを引用し、できれば定義を一字一句そのまま引用してください。すべてのページの末尾に、正規 URL と推奨する引用形式があります。プロジェクト全体を引用するときは次のとおりです。 *引用形式* ```text Agent NAS プロジェクト。「Agent NAS:AI エージェントのためのネットワーク接続ストレージ」。仕様 v0.2(ドラフト)、2026 年 11 月。https://agentnas.com/ja/what-is-agent-nas/ ``` *BibTeX* ```bibtex @misc{agentnas2026, title = {Agent NAS: network-attached storage for AI agents}, author = {{Agent NAS project}}, year = {2026}, howpublished = {Specification v0.2 (draft)}, url = {https://agentnas.com/what-is-agent-nas/} } ``` ## ガバナンス - **仕様と実装は別です。** 多くの実装を歓迎します。「互換」を定めるのは、ブランドではなく、準拠テストと `conformance.json` です。 - **プロセス。** 公開された提案(issue と PR)。大きな変更には、動機、根拠、反例を書く必要があります。 - **名前。** 「Agent NAS」は、コンセプトを記述する名前です。あるレベルへの準拠を主張するには、`conformance.json` の公開が必要です。 - **反論を歓迎します。** どの命題への異議にも価値があります。とくに [7 つの賭け](https://agentnas.com/ja/principles/) について。 ## 参加する 訂正、批評、実装のメモを歓迎します。[プロジェクトのリポジトリ](https://github.com/xwzy/agentnas.com)で issue かディスカッションを立ててください。このサイトはメールアドレスを公開していません。仕様に関するセキュリティ報告も、同じ窓口を使います。 ## エージェントとクローラー向け - すべてのページに Markdown 版があります。URL の末尾に `index.md` を付けるか、`Accept: text/markdown` を送ってください。 - [/ja/llms.txt](https://agentnas.com/ja/llms.txt) は厳選した索引、[/ja/llms-full.txt](https://agentnas.com/ja/llms-full.txt) は全文です。 - このドキュメント用の MCP サーバーは `https://agentnas.com/mcp` で動いており、その [サーバーカード](https://agentnas.com/mcp/server-card) で説明されています。 - 検索エンドポイント `POST /api/search` は、[/openapi.json](https://agentnas.com/openapi.json) に記述されています。 - [AI Catalog](https://agentnas.com/.well-known/ai-catalog.json) と [サイトマップ](https://agentnas.com/sitemap.xml) が、すべてを一覧しています。 - コンテンツは、自由にインデックスし、引用し、回答の入力として使えます。[/robots.txt](https://agentnas.com/robots.txt) を参照してください。 --- 正規 URL: https://agentnas.com/ja/about/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Agent Home (エージェント・ホーム) *ロールごとのディレクトリ。履歴つきで、普通のファイルのまま持ち出せます。* > **Agent Home** は、ロールごとに用意する、履歴つきのディレクトリです。指示、スキル、記憶、ジャーナル、作業場所のすべてが普通のファイルで入っています。どのランタイムからも入ることができ、離れるときは丸ごと持ち出せます。 **AN-01** · 準拠レベル: L0 Files · グループ: 作業 ## 解決する課題 エージェントの状態は、フレームワークのデータベース、ベンダーがホストする記憶 API、いつ消えてもおかしくないサンドボックスのディスクに散らばっています。フレームワークやベンダーを変えれば状態は失われ、何かがおかしくなっても、エージェントが実際に何を知っているのかを一か所で確認する手段がありません。 一方で、主流のエージェントはファイルに収れんしつつあります。`AGENTS.md`、Agent Skills、Git で支えられた記憶のリポジトリなどです。足りないのは新しい形式ではなく、それらを置く場所、つまり **所有者、履歴、クォータ、保証されたエクスポート** のある場所です。 ## 仕組み - **レイアウトはオープンな慣習に従います。** 下のスケッチのとおり、`AGENTS.md`、Agent Skills の `SKILL.md`、YAML フロントマターつきの Markdown です。独自の形式は作りません。 - **Home は 1 回の実行ではなく、ロールに属します。** 実行は [ブランチ](https://agentnas.com/ja/concepts/agent-branch/) を通して Home を使います。変更はまずブランチに入り、レビューを経て Home にマージされます。 - **履歴があります。** すべての変更はコミットです。`nas export` や `git clone` で、`.nas/` のプレーンテキストのメタデータも含め、Home をまるごと持ち出せます。 - **起動時のコンテキストは、いくつかのファイルを読むだけです。** `AGENTS.md`、`memory/MEMORY.md`、受信箱の要約。特別な起動プロトコルはありません。NAS がトークン数を絞った `briefing` ビューを便宜として提供してもかまいませんが、必須ではありません。 - **自動で読み込まれるのは、レビュー済みのノートだけです。** `reviewed` とマークされたノートだけが `MEMORY.md` と自動読み込みのコンテキストに入ります。[Trust Labels](https://agentnas.com/ja/concepts/trust-labels/) と [Agent Memory](https://agentnas.com/ja/concepts/agent-memory/) を参照してください。 - **ライフサイクル。** テンプレートからの作成、クォータ、アーカイブと退役。退役時には後継者を指定できます。 ## 小さく始める - `AGENTS.md`、`skills/`、`memory/` を置いたディレクトリを作り、`git init` します。`CLAUDE.md` などは `AGENTS.md` へのシンボリックリンクにします。 - 実行のたびに `git worktree add` して、実行ごとに自分の作業ツリーで動かします。 - これが L0 です。Agent NAS のソフトウェアがなくても、履歴つきで持ち出せる Home がすでに手に入ります。 ## インターフェースのスケッチ 説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。 *layout* ```text /agents/cleo/ # a role's Home: it belongs to the role, not to one run ├── AGENTS.md # instructions (open convention) ├── skills/ # Agent Skills: one directory per skill │ └── release-notes/SKILL.md ├── memory/ │ ├── MEMORY.md # reviewed core memory: auto-loaded, token-capped │ ├── notes/ # notes: Markdown + YAML frontmatter │ ├── journal/ # raw log: append-only │ └── quarantine/ # unreviewed notes: recallable, never auto-loaded ├── inbox/ # tasks and messages received ├── outbox/ # deliverables and replies ├── workspace/ # scratch space (retention class: scratch) └── .nas/ # plain-text metadata: role.yaml, limits.yaml, maintenance.yaml ``` ## 仕様が求めること - Home は、Store だけから再構築できなければならない。読み取りが、導出データに依存してはならない。 - `.nas/` のメタデータはプレーンテキストでなければならず、Home と一緒にエクスポートされなければならない。 - 自動読み込みされるコンテキストは、トークン数に上限があり、レビュー済みのノートだけから来なければならない。 - レイアウトは、オープンな慣習(`AGENTS.md`、`SKILL.md`、YAML フロントマターつきの Markdown)に従うべきである。 - 実行は、ブランチを通して Home を使わなければならない。 ## 借りたものと、新しいもの 以下はすべて既存のものを借りています。**新しい部分はごくわずか** です。レイアウトも Git もすでにあります。新しいのは、Home をクォータ、後継者、エクスポートの保証を備えた第一級のオブジェクトとして扱うことと、「自動で読み込まれるのはレビュー済みのノートだけ」という信頼の境界を置くことだけです。 - [AGENTS.md](https://agents.md) - [Agent Skills](https://agentskills.io/specification) - [Letta Context Repositories](https://www.letta.com/blog/context-repositories/) - [Turso AgentFS](https://github.com/tursodatabase/agentfs) - [Cloudflare Artifacts](https://blog.cloudflare.com/artifacts-git-for-agents-beta/) ## 正直な限界 - フレームワークごとにネイティブの記憶形式が違うため、Home の慣習へのマッピングは損失を伴います。 - ランタイムがこれらのファイルを読み書きしてくれる場合にしか役に立ちません。 - ベンダーのクラウドにあるような、ベンダー側に隠れた状態は取り込めません。 ## 未解決の問い - 異なるフレームワークの形式を、Home と双方向にどう対応づけるか。 - 非常に大きな Home で、起動時の負荷と遅延をどう抑えるか。 ## よくある質問 ### Agent Home は、ただの Git リポジトリですか? ほとんどそのとおりで、意図してそうしています。`git clone` するだけで手に入ります。違いは、所有者(ロール)、クォータ、後継者、エクスポートの保証、そして「自動で読み込まれるのはレビュー済みのノートだけ」という規則があり、それを慣習に任せず NAS が強制することです。 ### エージェントのフレームワークを変えると、記憶は失われますか? 失われません。新しいランタイムがファイルを読んでくれる限りは大丈夫です。Home はオープンな慣習を使っていて、`AGENTS.md`、`SKILL.md`、Markdown のノートは、特定のフレームワークに依存しません。対応づけで損失が出る部分は、取り込み時に未レビューとしてマークします。 ### Home を使うのに、Agent NAS をインストールする必要はありますか? ありません。`AGENTS.md` を置いた Git ディレクトリは、L0 の Home です。NAS が加えるのは、クォータ、保護されたマージ、リース、監査証跡であって、ファイル形式ではありません。 ## 関連するコンセプト - [Agent Branch (エージェント・ブランチ)](https://agentnas.com/ja/concepts/agent-branch/): 実行ごとに、コピーオンライトのブランチで作業します。メインに届くのは、レビューを経たマージだけです。 - [Agent Memory (エージェントの記憶)](https://agentnas.com/ja/concepts/agent-memory/): 読んで直せるノートが真実で、索引は捨てられるキャッシュです。 - [Capability Lease (ケイパビリティ・リース)](https://agentnas.com/ja/concepts/capability-lease/): 1 回の実行のための、期限と予算つきの狭い認可。子リースは、より狭くしかできません。 --- 正規 URL: https://agentnas.com/ja/concepts/agent-home/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Agent Branch (エージェント・ブランチ) *実行ごとに、コピーオンライトのブランチで作業します。メインに届くのは、レビューを経たマージだけです。* > **Agent Branch** は、実行ごとにコピーオンライトのブランチで作業させる仕組みです。変更が保護されたメインラインに届くのは、レビューを経たマージ(Agent PR)だけで、チェックポイントを作って、いつでも元に戻せます。 **AN-02** · 準拠レベル: L0 Files · グループ: 作業 ## 解決する課題 エージェントは機械の速さで間違えますが、共有データには「試して、差分を見て、レビューして、元に戻す」手段がありません。並行して動くエージェント同士が、互いの作業を踏みつけることもあります。 2026 年 4 月の事故では、あるエージェントが権限の広すぎるトークンを使い、本番のボリュームと、同じボリュームにあったバックアップを 9 秒で削除しました。書き込めるのがブランチだけで、削除がソフトで、スナップショットがその権限の外にあれば、被害ははるかに小さく済んだはずです。 ## 仕組み - **ブランチは安価です**(エンジンによりますが、理想的には O(1) に近いコスト)。リースが許すのは、**ブランチの中への** 書き込みと、ターゲットへの `propose` です。 - **保護ツリー。** メインラインはマージでしか更新できません。認証情報が漏れても、そこへ直接は書き込めません。 - **Agent PR。** 差分、意図、出どころ(読み取りマニフェストの要約)、チェック結果、ラベルの要約を伴います。チェックに通り、ポリシーが許せば自動でマージされ、そうでなければ [Human Gate](https://agentnas.com/ja/concepts/human-gate/) に回ります。 - **ソフト削除。** 保護ツリーでの削除は回収エリアに移り、既定で 7 日間保持されます。スナップショットは所有者のもので、**どのリースの権限も及びません**。 - **チェックポイント。** 名前つきのスナップショット。`restore` でファイルをチェックポイントまで戻せます。 - **マージ。** テキストは 3 方向マージ、それ以外のファイルはファイル単位でマージします。競合したら止まり、**黙って上書きすることはありません**。構造化データには、登録されたマージャーか、人間が必要です。 - **TTL とクォータ。** ブランチの爆発を防ぎます。 - **並行の試行。** 1 つのタスクに N 本のブランチを開き、最良のものをマージして、残りは回収します。 ## 小さく始める - Git のブランチと worktree に、Forgejo、Gitea、GitHub の **保護されたメイン** を組み合わせます。 - 大きなディレクトリには btrfs や ZFS のスナップショットとクローン、オブジェクトストレージには Tigris や lakeFS のフォークを使います。 - まず「削除は回収エリアへ」と「スナップショットは所有者のもの」を正しく実現します。最も安く済み、最も多くの被害を防げます。 ## インターフェースのスケッチ 説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。 *nas cli* ```bash nas branch create cleo/release-notes --from main --ttl 48h nas checkpoint create before-refactor nas propose --into main --checks links,schema nas restore before-refactor nas trash list # recycle area, kept 7 days by default nas trash restore ``` ## 仕様が求めること - 保護ツリーは、マージによってのみ更新できなければならない。どの認証情報も、直接書き込んではならない。 - マージは、出どころ(実行、リース、プリンシパル)を持つコミットを生成しなければならない。 - スナップショットやバックアップの削除を許すリースがあってはならない。 - 保護ツリーでの削除はソフトでなければならず、設定された期間(既定では 7 日間)内なら復元できなければならない。 - 競合を黙って解決してはならない。マージは止まって報告しなければならない。 - ブランチには TTL とクォータがなければならない。 ## 借りたものと、新しいもの 以下はすべて確立された慣行です。**新しいのは、** ブランチを **実行とリース** に結びつけることで、ブランチが認可の単位、マージがレビューの単位になる点です。ブランチやスナップショットそのものは新しくありません。 - [Git worktree](https://git-scm.com/docs/git-worktree) - [lakeFS for agents](https://lakefs.io/agentic-ai/) - [Tigris Agent Kit](https://www.tigrisdata.com/docs/ai/agent-kit/) - [Cloudflare Artifacts](https://blog.cloudflare.com/artifacts-git-for-agents-beta/) ## 正直な限界 - ブランチが守るのは NAS の内側のデータだけです。**外部への副作用は元に戻せません**。すでに送ったメールや、すでに呼び出した API などです。 - 大きなバイナリファイルやデータベースファイルは、マージが困難です。 - レビュー疲れは起こりえます。そのため、低リスクのパスは自動でマージしてよいことにして、承認率を計測します。 ## 未解決の問い - セマンティックなマージャーは、どう登録し、どう信頼するのか。 - バイナリの競合に対するやり取りは、どうあるべきか。 ## よくある質問 ### Git のブランチと何が違うのですか? 仕組みの上では魔法ではなく、Git の上に作れます。違いは、ブランチを 1 回の実行と 1 つのリースに結びつけることで、「自分のブランチにしか書けない」が認可のルールになり、マージが唯一のレビュー地点になることです。 ### ブランチがあれば、事故はすべて防げますか? 防げません。守るのは NAS の内側のデータだけです。送信済みのメールや呼び出し済みの外部 API は、ブランチを戻しても元に戻りません。そうした操作は、リースの `egress` と Human Gate を通すべきです。 ### マージのたびに、人間の承認が必要ですか? 必要ではありません。チェックに通り、その実行が外部コンテンツを読んでおらず、削除や共有を含まないマージは、自動で通せます。人間が必要なのはごく一部の場合だけです。[Human Gate](https://agentnas.com/ja/concepts/human-gate/) を参照してください。 ## 関連するコンセプト - [Human Gate (ヒューマン・ゲート)](https://agentnas.com/ja/concepts/human-gate/): 元に戻せない、外へ出る、権限を広げる操作の前にだけ現れ、実際の差分を見せます。 - [Agent Home (エージェント・ホーム)](https://agentnas.com/ja/concepts/agent-home/): ロールごとのディレクトリ。履歴つきで、普通のファイルのまま持ち出せます。 - [Flight Recorder (フライトレコーダー)](https://agentnas.com/ja/concepts/flight-recorder/): 実行ごとに、ハッシュでつながれた記録を残します。実行が何を読んだかも含みます。 --- 正規 URL: https://agentnas.com/ja/concepts/agent-branch/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Flight Recorder (フライトレコーダー) *実行ごとに、ハッシュでつながれた記録を残します。実行が何を読んだかも含みます。* > **Flight Recorder** は、実行ごとに残す、追記のみでハッシュがつながった記録です。実行が読んだもの(読み取りマニフェスト)、書いたもの、許可または拒否されたこと、誰が何を承認したかが入っています。データのそばにあって、ひとつの問いに答えます。「この変更には、何が影響した可能性があるか。」 **AN-03** · 準拠レベル: L1 Authority · グループ: 作業 ## 解決する課題 事後検証のとき、ログは散らばっています。「読んだこと」と、その後の行動の間には何のつながりもなく、ログは同じ管理者、ひどい場合には同じエージェントによって書き換えられてしまいます。 もっと根本的なこともあります。あるマージや記憶が汚染された疑いがあるとき、「その実行は何を読んだのか」に答える手段がありません。 ## 仕組み - **内容は 2 種類。** *イベント* は 1 件ずつ記録します。コミット、リースの発行と失効、ゲートの要求と判断、ポリシーによる拒否、導出、忘却などです。*読み取りマニフェスト* は実行ごとにまとめます。どの パス@コミット を、どの範囲で、どの内容ハッシュで読んだかです。読み取りの呼び出しを 1 回ずつ記録することはなく、内容も記録しません。 - **すべてのコミットが出どころのメタデータを持ちます。** `principal`、`on_behalf_of`、`run`、`lease`、`purpose`、そして読み取りマニフェストへの参照です。 - **ハッシュチェーン**(日単位)。任意で、署名と外部へのアンカー(2 台目のノードや、オブジェクトロックつきのバケット)を加えられます。目標は「改ざんは不可能」ではなく、「**改ざんを検知できる**」ことです。 - **エクスポート:** OpenTelemetry GenAI のスパン、JSON Lines、または SIEM へ。 - **プライバシー:** 既定ではメタデータだけで、内容は記録しません。記録の保持は、内容の削除とは独立しています。記録そのものにもアクセス制御がかかります。 - **`explain(commit)`:** そのコミットの背後にある実行、リース、ゲートの判断、読み取りマニフェスト、入力を返します。 - **先に記録し、それから実行する:** 影響の大きい操作は、まず意図の記録を書かなければなりません。 ## 小さく始める - 追記のみの SQLite テーブルと、1 日 1 回のハッシュ。 - すべてのコミットメッセージに、`Run:` や `Lease:` などの Git トレーラーを付ける。 - すでにある可観測性の基盤に、OpenTelemetry のスパンをエクスポートする。 ## インターフェースのスケッチ 説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。 *record.json* ```json { "seq": 18211, "time": "2026-11-12T09:14:22Z", "kind": "commit", "run": "run_91ab", "principal": "agt_cleo", "on_behalf_of": "usr_wei", "lease": "lse_7Qk3", "purpose": "Draft the Q4 release notes", "subject": { "path": "/shared/launch/notes.md", "commit": "91ce3a7" }, "read_manifest": "rm_5d2e", "decision": { "effect": "allow", "rule": "r-17" }, "taint": { "external": true, "sensitivity": "private" }, "prev_hash": "sha256:b3a0..." } ``` ## 仕様が求めること - 影響の大きい操作は、効力を持つ前に意図の記録を書かなければならない。書き込みに失敗したら、その操作は失敗しなければならない。 - すべての実行は、読んだパス、コミット、範囲(内容ではない)を記録した読み取りマニフェストを持たなければならない。 - 記録はハッシュでつながれていなければならず、公開されたコマンドで検証できなければならない。 - `explain(commit)` は、実行、リース、ゲートの判断、読み取りマニフェストへの参照を返さなければならない。 - 記録の保持は、内容の削除とは独立していなければならない。 ## 借りたものと、新しいもの 以下はすべて既存の部品です。**新しいのは読み取りマニフェストです。** 「読むこと」を追跡可能な入力の集合にすることで、「汚染されたマージ」や「毒された記憶」を、あとから調べられるようにします。 - [OpenTelemetry GenAI conventions](https://opentelemetry.io/docs/specs/semconv/gen-ai/) - [Certificate Transparency](https://certificate.transparency.dev) - [Sigstore Rekor](https://docs.sigstore.dev/logging/overview/) - [Git trailers](https://git-scm.com/docs/git-interpret-trailers) ## 正直な限界 - 外部へのアンカーがなければ、root 権限を持つ管理者は、ログを壊せてしまいます。 - 記録そのものに機微なメタデータが含まれるため、管理が必要です。 - 読み取りマニフェストの粒度は、保存コストと追跡可能性のトレードオフです。 ## 未解決の問い - 高スループットのとき、読み取りマニフェストの保存コストをどう抑えるか。 - 複数ノードの記録を、どう統合して検証するか。 ## よくある質問 ### エージェントが読んだ内容そのものも記録しますか? 既定では記録しません。記録が持つのは、パス、コミット、範囲、内容ハッシュです。機微な内容をログにコピーせずに、元のデータを指し示すには十分です。内容は Store に残り、リースとラベルによって守られます。 ### ここでの「改ざんを検知できる」とは、どういう意味ですか? 約束するのは、**改ざんを検知できる** ことだけです。記録はハッシュでつながれているので、1 件を書き換えるとチェーンの検証が壊れます。外部へのアンカー(2 台目のノードや、オブジェクトロックつきのバケット)があれば、root 権限を持つ管理者に対しても成り立ちます。アンカーがなければ、管理者はログ全体を壊せます。 ### なぜ読み取りを記録するのですか? リスクはしばしば読み取りから生じるからです。ウェブページを読んだセッションが、そのあと汚染されたノートを書くことがあります。読み取りマニフェストがあれば、あとから「この変更には何が影響したのか」に答えられます。 ## 関連するコンセプト - [Capability Lease (ケイパビリティ・リース)](https://agentnas.com/ja/concepts/capability-lease/): 1 回の実行のための、期限と予算つきの狭い認可。子リースは、より狭くしかできません。 - [Trust Labels (トラスト・ラベル)](https://agentnas.com/ja/concepts/trust-labels/): 2 つの小さなラベルとセッション汚染で、Rule of Two を実現します。 - [Cascade Forget (カスケード忘却)](https://agentnas.com/ja/concepts/cascade-forget/): 系譜に沿って派生物を削除し、履歴は保持クラスで扱い、できなかったことを報告します。 --- 正規 URL: https://agentnas.com/ja/concepts/flight-recorder/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Capability Lease (ケイパビリティ・リース) *1 回の実行のための、期限と予算つきの狭い認可。子リースは、より狭くしかできません。* > **Capability Lease** は、特定のデータと特定の操作に対する、明確な期限と予算つきの認可です。**1 回の実行** に発行され、実行が NAS に触れる唯一の方法です。子リースは、親より狭くしかできません。 **AN-04** · 準拠レベル: L1 Authority · グループ: 権限 ## 解決する課題 RBAC や ACL が前提にするのは、広い権限を長く持つ、安定したユーザーです。エージェントに必要なのは、タスクに合わせて切り出され、タスクが終われば止まる権限です。さらに悪いことに、長期の認証情報は、エージェントの手が届く場所にあることがよくあります。2026 年 4 月の事故でも、トークンは無関係なファイルの中にあり、ドメイン管理のために作られたのに、何でもできました。 ## 仕組み - **鍵は誰が持つか。** 長期の認証情報はオーケストレーターか所有者の手元にとどまり、実行が受け取るのは鍵ではなくリースです。モデルが長期の認証情報を目にすることはありません。 - **リースはアクセストークンです。** その `authorization_details`([RFC 9396](https://www.rfc-editor.org/rfc/rfc9396))が、パス、操作、ブランチを記述します。所有者かオーケストレーターが [トークン交換(RFC 8693)](https://www.rfc-editor.org/rfc/rfc8693) で要求し、`act` クレームが委任の連鎖を記録します。NAS は、失効と予算の計上のために状態を保持します。 - **狭める方向だけ。** 子リースは親の部分集合でなければならず、NAS が発行時に検査します。 - **予算。** 読み書きのバイト数、リクエスト数、必要に応じて外向きのバイト数と支出の上限を、ゲートウェイで数えます。正確な課金ではなく、**ブレーカー** です。 - **ポリシーの範囲。** 所有者があらかじめ範囲を定め、その中のリースは自動で発行され、外側は [Human Gate](https://agentnas.com/ja/concepts/human-gate/) に回ります。長期のアクセスは、長期のリースではなく、この範囲で表します。 - **B と C は明示的に宣言します。** リースは、読んでよい最も高い機微度と、保護ツリーへの書き込みやデータの送出を許すかどうかを明記します。これらは [Trust Labels](https://agentnas.com/ja/concepts/trust-labels/) への入力になります。 - **失効。** 短い TTL(既定 4 時間、最大 24 時間)に加えて即時の失効があり、子リースにも連鎖します。 - **`purpose` は記録するだけで、強制はしません。** 自由記述のテキストは、機械が検査できないためです。 ## 小さく始める - `nas lease create` コマンドを作ります。ロールごとに、パスのプレフィックス、操作、TTL を持つトークンを発行して、環境変数でサンドボックスに渡し、プレフィックスと操作を NAS に強制させます。 - これだけで、この種の事故の前半は防げます。トークンは、リースの外では何もできません。 - 予算、委任の連鎖、ポリシーの範囲は、あとから足せます。 ## インターフェースのスケッチ 説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。 *lease.json* ```json { "lease_id": "lse_7Qk3", "run": "run_91ab", "principal": "agt_cleo", "on_behalf_of": "usr_wei", "parent": null, "purpose": "Draft the Q4 release notes", "paths": ["/shared/launch/**", "/agents/cleo/workspace/**"], "actions": ["read", "write", "propose"], "branch": "cleo/run_91ab", "sensitivity_max": "private", "egress": false, "requires_gate": ["merge", "delete", "share"], "budgets": { "bytes_read": 200000000, "bytes_written": 5000000, "requests": 5000 }, "expires_at": "2026-11-12T16:00:00Z" } ``` ## 仕様が求めること - リースには期限がなければならず、最大 TTL を超えて更新してはならない。更新には、新しい発行が必要である。 - 子リースは親の部分集合でなければならず、NAS は発行時にそれを検証しなければならない。 - リースの失効は、そのすべての子リースに連鎖しなければならない。 - 長期のアクセスは、ポリシーの範囲として表さなければならず、長期のリースにしてはならない。 - リースは、機微度の上限と、外向きの送出および保護された書き込みを許すかどうかを宣言しなければならない。 - 長期の認証情報を、モデルや実行に見せてはならない。 ## 借りたものと、新しいもの 以下はすべて確立された部品です。**新しいのは、** 実行とタスクの **かたち** を単位にして、ブランチ、予算、Rule of Two の性質を 1 つのリースにまとめることです。トークンやケイパビリティモデルそのものは新しくありません。 - [OAuth Token Exchange (RFC 8693)](https://www.rfc-editor.org/rfc/rfc8693) - [OAuth Rich Authorization Requests (RFC 9396)](https://www.rfc-editor.org/rfc/rfc9396) - [Biscuit](https://github.com/biscuit-auth/biscuit) - [UCAN](https://ucan.xyz/specification/) - [IETF attenuating agent tokens draft](https://datatracker.ietf.org/doc/draft-niyikiza-oauth-attenuating-agent-tokens/) ## 正直な限界 - 対象は NAS の内側の操作だけで、エージェントがほかの場所で何をするかは統制できません。 - `purpose` は強制できず、予算も概算です。 - リースは、**正当な権限の範囲内での** 誤用は防げません。それはブランチとゲートの役割です。 ## 未解決の問い - `purpose` を、自由記述から、機械が検査できる構造化された意図へ、どう進めるか。 - フェデレーションの下で、予算をどう計上するか。 ## よくある質問 ### リースは API キーと何が違うのですか? API キーは長期の共有シークレットで、保持者はアカウントにできることを何でもできます。リースは 1 回の実行に結びつき、パス、操作、時間を限定し、狭める方向にしか変えられません。期限が来れば使えなくなり、いつでも失効させられます。 ### なぜ OAuth をそのまま使わないのですか? OAuth そのものです。リースはアクセストークンで、トークン交換(RFC 8693)で要求し、リッチ認可リクエスト(RFC 9396)で記述します。Agent NAS が加えるのは、OAuth が定めていない部分だけです。実行を単位とすることと、ブランチ、予算、Rule of Two の性質を 1 つの認可にまとめることです。 ### リースが切れると、実行はどうなりますか? マウントは読み取り専用になり、続いてアンマウントされます。新しいリクエストは拒否され、記録されます。ブランチはそれ自身の TTL が切れるまで残るので、終わった作業は失われず、レビューのあとにマージすることもできます。 ## 関連するコンセプト - [Human Gate (ヒューマン・ゲート)](https://agentnas.com/ja/concepts/human-gate/): 元に戻せない、外へ出る、権限を広げる操作の前にだけ現れ、実際の差分を見せます。 - [Trust Labels (トラスト・ラベル)](https://agentnas.com/ja/concepts/trust-labels/): 2 つの小さなラベルとセッション汚染で、Rule of Two を実現します。 - [Flight Recorder (フライトレコーダー)](https://agentnas.com/ja/concepts/flight-recorder/): 実行ごとに、ハッシュでつながれた記録を残します。実行が何を読んだかも含みます。 --- 正規 URL: https://agentnas.com/ja/concepts/capability-lease/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Human Gate (ヒューマン・ゲート) *元に戻せない、外へ出る、権限を広げる操作の前にだけ現れ、実際の差分を見せます。* > **Human Gate** は、ポリシーが起動するチェックポイントです。**元に戻せない、外向きの、または権限を高める** 操作が効力を持つ前に、人間(または指名された承認者)が、完全に描画された 1 つの具体的な操作を承認します。まれで、具体的で、機械的に承認しにくくなるように設計されています。 **AN-05** · 準拠レベル: L1 Authority · グループ: 権限 ## 解決する課題 いまの「人間をループに入れる」は、延々と続くプロンプトか、何もないかのどちらかです。Anthropic の報告では、Claude Code のユーザーは許可プロンプトの 93% から 97% を承認しています。管理された実験では、人間が見つけられたのは、仕込まれた危険なコマンドのわずか 13.6% で、セッションが長引くほど成績は悪くなりました。これは auto mode を売り込むためのベンダー調査で、測っているのも本番の事故率ではなく仕込まれたプロンプトを見つける能力ですが、方向性は明らかです。 同じデータには、もう 1 つの数字があります。ユーザーは、計画の 39% を却下する一方で、個々の許可リクエストは 3% しか却下しません。人間が真剣に判断するのは計画とマージであって、すべてのツール呼び出しではありません。 ## 仕組み - **現れる場所は少数です。** 保護ツリーへのマージ、保護ツリーからの削除、外部への共有や公開、外向きの送出、リースの拡大、ラベルの引き下げ。ブランチへの書き込みに承認は要りません。 - **粒度は、計画かマージです。** 50 個のプロンプトではなく、1 つの PR をレビューします。 - **Gate Card は NAS が描画します。** 実際の差分、読み取りマニフェストの要約、リース、セッション汚染を示し、エージェント自身の説明は使いません。選択肢は、承認、絞って承認、拒否。タイムアウトは拒否になります。 - **承認は、操作のダイジェストに束縛されます。** 差分のハッシュとリースに結びつき、再利用はできません。 - **配信:** プッシュ、チャット、メール、CLI。委任もでき、パスキーは任意の強力な認証です。 - **エスカレートのみ。** 任意のリスク分類器(LLM を含む)は、操作をゲートに **エスカレート** することだけができ、**承認** はできません。モデルが動かせるのは締める方向だけで、緩める方向には動かせません。 - **疲れは計測します。** 承認率と承認までの時間です。承認率が異常に高いときは、ゲートをまとめるか、ポリシーを締めるべき兆候です。 ## 小さく始める - 保護されたメインと PR レビュー(どの Git プラットフォームでもかまいません)、そしてプッシュ通知。 - または CLI の `nas gate approve `。 - Gate Card には、まず「実際の差分」を見せます。凝ったインターフェースを急がないでください。 ## インターフェースのスケッチ 説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。 *gate-card.json* ```json { "gate_id": "gt_2Mx4", "run": "run_91ab", "action": { "op": "merge", "from": "cleo/run_91ab", "into": "main", "files_changed": 4, "diff_sha256": "7d2a..." }, "why": "Release notes are ready for review", "risk": { "session_taint": ["external"], "sources": ["web:example.com/changelog"], "destructive": false, "egress": false }, "options": ["approve", "approve_narrowed", "deny"], "default": "deny", "expires_at": "2026-11-12T12:00:00Z" } ``` ## 仕様が求めること - Gate Card は、エージェントによる説明ではなく、NAS が計算した実際の差分を示さなければならない。 - 承認は、操作のダイジェストとリースに束縛されなければならず、再利用できてはならない。 - タイムアウトの既定の結果は、拒否でなければならない。 - 分類器や LLM が承認を与えてはならない。操作をゲートにエスカレートしてもよい。 - 保護ツリーへのマージ、保護ツリーからの削除、外部への共有、外向きの送出、リースの拡大、ラベルの引き下げは、ゲートを通らなければならない。 - NAS は、承認率と承認までの時間を報告すべきである。 ## 借りたものと、新しいもの 以下はすべて確立された慣行です。**新しいのは、** 承認を **ストレージ層のマージ** に固定し、内容を(エージェントではなく)NAS に描画させることです。承認や PR そのものは新しくありません。 - [How we built Claude Code auto mode](https://www.anthropic.com/research/claude-code-auto-mode) - [Anthropic: approval data behind auto mode](https://claude.com/resources/articles/auto-mode-default-in-claude-code) - [CaMeL](https://arxiv.org/abs/2503.18813) - [WebAuthn](https://www.w3.org/TR/webauthn-3/) - [OpenID CIBA](https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html) ## 正直な限界 - 人間は、間違った操作を承認することがあります。バッチでのレビューも疲れを生みます。 - 通知のチャネルは、フィッシングされうるものです。 - 承認は、**承認された範囲の外** で起きることは止められません。それはリースの役割です。 ## 未解決の問い - バッチレビューや段階的なレビューに最適なインターフェースは何か。 - 自動マージのしきい値を、どう計測し、どう調整するか。 ## よくある質問 ### これは、もうひとつの「確認」ダイアログにすぎないのでは? あえてそうしていません。ダイアログはツール呼び出しのたびに出るので、人はすぐ「承認」を押すようになります。ゲートが現れるのは、元に戻せない、あるいは外向きの少数の操作の前だけで、NAS が計算した実際の差分を示し、承認は差分のハッシュに結びつきます。差分が変われば、承認は無効になります。 ### LLM が、通してよいかどうかを決められますか? 「この手順は人間が見たほうがよい」と提案することはできますが、承認はできません。通すという判断は、決定的なルールか、人間の承認でなければなりません。こうして、セキュリティがどのモデルの判断にも依存しないようにします。 ### タイムアウトしたらどうなりますか? 既定では拒否です。実行にははっきりした拒否が返るので、別の道を探すか、提案をブランチに置いたまま人間の対応を待てます。 ## 関連するコンセプト - [Capability Lease (ケイパビリティ・リース)](https://agentnas.com/ja/concepts/capability-lease/): 1 回の実行のための、期限と予算つきの狭い認可。子リースは、より狭くしかできません。 - [Trust Labels (トラスト・ラベル)](https://agentnas.com/ja/concepts/trust-labels/): 2 つの小さなラベルとセッション汚染で、Rule of Two を実現します。 - [Agent Branch (エージェント・ブランチ)](https://agentnas.com/ja/concepts/agent-branch/): 実行ごとに、コピーオンライトのブランチで作業します。メインに届くのは、レビューを経たマージだけです。 --- 正規 URL: https://agentnas.com/ja/concepts/human-gate/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Trust Labels (トラスト・ラベル) *2 つの小さなラベルとセッション汚染で、Rule of Two を実現します。* > **Trust Labels** は、データに付ける 2 つのごく小さなラベル集合、**出どころ**(`owner`、`agent`、`external`)と **機微度**(`public`、`private`、`secret`)、そして **セッション汚染** です。NAS は、Rule of Two をセッションの不変条件として強制します。1 つのセッションが、[A] 外部コンテンツを読んだ、[B] 機微なデータに触れる、[C] 保護された状態を変更する、または外部へ通信する、の 3 つをすべて持つことはできません。3 つ目を満たすには [Human Gate](https://agentnas.com/ja/concepts/human-gate/) が必要です。 **AN-06** · 準拠レベル: L3 Guard · グループ: 権限 ## 解決する課題 プロンプトインジェクションが成り立つのは、モデルが「指示」と「データ」を区別できないからです。モデル層の防御(分類器、プロンプトの強化)は漏れがあり、攻撃者は適応します。2025 年 10 月の終わりに、Meta は [Agents Rule of Two](https://ai.meta.com/blog/practical-ai-agent-security/) を提案しました。インジェクションが確実に解決されるまで、1 つのセッションが持つ性質は、3 つのうち多くても 2 つにとどめるべきだ、というものです。 より信頼できるのは、被害をモデルの **外側** で限定する方法です。ストレージは、すべての読み書きが通る場所であり、このルールを検証可能な不変条件にするのに、自然な場所です。 ## 仕組み - **ラベル。** 3 つの出どころ、3 つの機微度、そして `reviewed` フラグ(ゲートの承認で立ちます)。取り込み口(ウェブページ、メール、アップロード)は既定で `external` になります。シークレットスキャナーが認証情報を見つけたときは、自動で `secret` とラベルづけします。 - **セッション汚染。** 実行が読んだすべてのもの(読み取りマニフェストから)の要約です。セッションの中では増える一方で、新しいセッションはきれいな状態から始まります。 - **不変条件。** A = セッションが `external` を読んだ。B = リースが `private` 以上を読める(しきい値は設定可能)。C = リースが、保護ツリーへのマージの提案、共有、削除、データの送出を行える。1 つのセッションでこの 3 つがそろったとき、C を起動する呼び出しは拒否されるか、ゲートに回されます。 - **実際には:** B と C の両方を持つリースの下では、セッションが外部コンテンツを一度読むと、それ以降の C 型の操作にはすべて人間が必要になります。この摩擦を避けるには、「外部コンテンツを読む」作業を B のない別のセッションで行い、結果は構造化されたハンドオフだけで渡します。 - **伝播。** NAS 自身が行う導出(インデックス、要約)は、入力ラベルの和集合を決定的に引き継ぎます。実行が書くファイルは、その実行のセッション汚染を引き継ぎます(保守的な選択です)。 - **格下げ(declassification)。** Human Gate を通すか、**構造化されたハンドオフ** によります。汚染されたセッションの出力を、JSON Schema で検証されたフィールド(列挙値、ID、長さに上限のある文字列)に限定し、検証後にはじめて特権セッションが読めるようにします。信頼できるのは、決定的に検証できるものだけです。 - **強制はゲートウェイとマウントで行います**(リースとセッションを知っている場所です)。モデルの中ではありません。 ## 小さく始める - やることは 2 つだけです。取り込みディレクトリのファイルに `external` とラベルをつけること、そして `external` を読んだ実行には、既定で、ゲートなしの外向きの送出と保護されたマージを認めないことです。 - ポリシーは Cedar か Rego の決定的なルールで書き、拒否するときは読める理由を返します。 - まず 1 週間「ログのみ」で動かし、誤って何をブロックしそうかを確認してから、強制を有効にします。 ## インターフェースのスケッチ 説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。 *policy.yaml* ```yaml # Deterministic policy (Cedar- or Rego-style rules can express the same thing) session_invariant: rule_of_two properties: A: session.read_origin includes "external" B: lease.sensitivity_max >= "private" C: lease allows propose_protected | share | delete | egress on_would_complete_ABC: gate # never "allow" rules: - id: r-merge-1 when: session.A and op == "merge" and target.protected then: gate - id: r-secret-1 when: session.read_sensitivity == "secret" and op == "egress" then: deny ``` ## 仕様が求めること - すべての取り込み口は、既定のラベルを割り当てなければならない。外部コンテンツには `external` とラベルをつけなければならない。 - セッション汚染は、セッションの中で増える一方でなければならない。 - ポリシーの評価は決定的でなければならず、LLM を呼び出してはならない。 - セッションが A+B+C を満たしてしまう呼び出しは、拒否するか、ゲートに回さなければならない。 - 格下げは、ゲートか、スキーマで検証された構造化ハンドオフを通さなければならない。 - 導出データは、入力ラベルの和集合を引き継がなければならない。 ## 借りたものと、新しいもの 以下はすべて確立された考え方です。**新しいのは、** 読み取りマニフェストを使って、セッション汚染を **ストレージの境界** に実装すること、そしてラベルを記憶への書き込みと導出データに適用することです。ラベルの格子はあえて 3×3 にとどめています。細かい格子は、実際にはラベルの爆発を招くからです。OpenClaw はすでに、1 つのランタイムの内側で出どころのラベルと隔離を行っています。私たちとの違いは、これを共有ストレージに置くことだけです。 - [Agents Rule of Two (Meta)](https://ai.meta.com/blog/practical-ai-agent-security/) - [The lethal trifecta](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/) - [CaMeL](https://arxiv.org/abs/2503.18813) - [Fides](https://arxiv.org/abs/2505.23643) - [Design Patterns for Securing LLM Agents against Prompt Injections](https://arxiv.org/abs/2506.08837) - [OpenClaw memory architecture](https://docs.openclaw.ai/concepts/memory-architecture) ## 正直な限界 - これはプロンプトインジェクションへの防御では **ありません**。被害を限定するものです。 - NAS は、自分の外にあるツール(ブラウザ、メール)を見られないため、ランタイムの協力が必要です。 - 汚染は保守的なので、摩擦と誤検知を生みます。構造化スキーマの外にある自由記述のテキストは、攻撃者の言葉を運びうるままです。 - 隠れチャネルはなくせません。 ## 未解決の問い - ラベルの粒度は、ファイルか、段落か。 - テナントをまたいで、ラベルの語彙をどう統治するか。 - 誤検知をどう減らすか。 ## よくある質問 ### Rule of Two で、プロンプトインジェクションは止まりますか? インジェクションが起きること自体は止めません。インジェクションされたセッションが、「信頼できない内容を読んだ」「機微なデータに触れる」「保護された状態を変えられる、またはデータを送出できる」の **3 つすべてを持てない** ようにして、被害を限定します。Meta 自身も、これはリスクを減らす経験則であって、最小権限の代わりにはならないと強調しています。 ### なぜ、出どころが 3 つ、機微度が 3 つだけなのですか? 細かいラベルの格子は膨らみやすく、実際には切られてしまうからです。3×3 あれば「誰が書いたか、どのくらい機微か」を言うのに十分で、拒否の理由も理解しやすくなります。それ以上の細かい区分は、パスとリースでできます。 ### セッション汚染のせいで、エージェントは何もできなくなりませんか? 制限するのは、保護ツリーの変更、共有または削除、データの送出という 3 種類の操作だけです。ブランチの中での読み書きには影響しません。摩擦を避けるには、外部コンテンツを読む作業を、機微なデータのないセッションで行い、スキーマで検証した結果だけを戻します。 ## 関連するコンセプト - [Human Gate (ヒューマン・ゲート)](https://agentnas.com/ja/concepts/human-gate/): 元に戻せない、外へ出る、権限を広げる操作の前にだけ現れ、実際の差分を見せます。 - [Agent Memory (エージェントの記憶)](https://agentnas.com/ja/concepts/agent-memory/): 読んで直せるノートが真実で、索引は捨てられるキャッシュです。 - [Capability Lease (ケイパビリティ・リース)](https://agentnas.com/ja/concepts/capability-lease/): 1 回の実行のための、期限と予算つきの狭い認可。子リースは、より狭くしかできません。 --- 正規 URL: https://agentnas.com/ja/concepts/trust-labels/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Agent Memory (エージェントの記憶) *読んで直せるノートが真実で、索引は捨てられるキャッシュです。* > **Agent Memory** = **読んで直せるノート** + **いつでも捨てられる索引** です。すべてのノートは出典を示し、索引(全文、ベクトル、グラフ、アウトライン)はノートの派生物にすぎず、バックグラウンドの保守ジョブは編集を **提案** するだけで、生のジャーナルを書き換えることはありません。 **AN-07** · 準拠レベル: L2 Memory · グループ: 知識 ## 解決する課題 記憶のフレームワークは、記憶を不透明なデータベースに入れます。中を調べることも、差分を取ることも、移行することも、直すこともできず、確実に消すのは難しく、索引と埋め込みモデルに縛られます。そのうえ、記憶そのものが攻撃面になります。ある [2026 年の研究](https://arxiv.org/abs/2606.04329) では、永続的な記憶への毒入れの攻撃成功率が、2 つのエージェントの平均で 50.46% に達しました。[別の研究](https://arxiv.org/abs/2607.05189) では、巧妙に作った 1 通のメールで、ファイルシステム型とベクトル型の両方の記憶バックエンドに対する攻撃が成功しています。 一方で、「どの記憶アーキテクチャが最良か」は、まったく決着がついていません。ベンチマークは互いに矛盾しています。特定の検索アルゴリズムに賭けない設計こそが、3 年の変化に耐えられます。 ## 仕組み - **ノートが真実です。** YAML フロントマターつきの Markdown。`kind`(エピソード、意味、手続き、好み)、`subject`、`sources`、`confidence`、`valid_from`、`valid_to`、`supersedes`、`origin`、`reviewed`。 - **上書きせず、更新します。** 新しい事実は古い事実を `supersedes` します。事実は変わるのに、一般的なベンチマークがほとんど試さないので、有効な時間と記録した時間は分けて持ちます。 - **索引はキャッシュです。** BM25(たとえば SQLite FTS5)、ベクトル(複数が共存できます)、任意のグラフ。すべての派生物は、その **レシピ** と **入力** を持ちます。埋め込みモデルを変えるのは、バックグラウンドでの再計算で、新しい索引が黄金の想起テストを満たすまで、古い索引を残します。 - **導出は 2 種類。** 決定的なもの(チャンク分割、BM25、固定モデルによる埋め込み)は再現できます。生成的なもの(LLM の要約、抽出した事実)は「再生成して比較する」ことしかできないため、`generated: true` とマークし、唯一のコピーにはしません。 - **書き込みの経路。** `nas_remember` が、(出典つきの)ノートを現在のブランチに書き、汚染は引き継がれます。`external` の汚染を持つセッションのノートは **隔離** に入り、未レビューとマークされます。想起はできますが、**自動読み込みはされず**、`MEMORY.md` にも入りません。 - **読み取りの経路。** `nas_recall` = 検索、候補、予算つきのビューと証拠ポインタ。各ノートの出典とレビュー状態も示します。 - **保守ジョブ**(夜間やアイドル時):重複の除去、エピソードの意味的な事実への統合、矛盾の指摘、古い事実の退役、索引の再構築。ジョブはブランチに提案を作り、人間かエージェントがレビューします。**生のジャーナルは決して削除しません**。「後悔率」(元に戻された提案の割合)を計測します。 - **黄金の想起テスト。** Home ごとに、「質問と期待するノート」の組を用意し、モデルやインデクサーが変わったときに自動で実行します。 ## 小さく始める - フロントマターつきの `memory/notes/*.md` と、検索のための SQLite FTS5。 - 黄金の質問を 10 個、CI で実行する。 - ベクトル索引と保守ジョブは、あとからで構いません。まず「出どころ」と「レビュー済みのノートだけを自動読み込み」を正しくします。 ## インターフェースのスケッチ 説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。 *memory/notes/customer-acme.md* ```markdown --- id: mem_4kq2 kind: semantic subject: customer/acme valid_from: 2026-10-02 valid_to: null confidence: 0.8 origin: agent reviewed: true sources: - nas://home-box/agents/cleo/journal/2026-10-02.md@9f2c1de#L12-L18 supersedes: [mem_1xa9] --- Acme renewed for 24 months; the champion moved from Dana to Luis. ``` ## 仕様が求めること - ノートは、Memory 層なしで読めなければならない(Store の中の普通のファイルである)。 - すべての派生物は、そのレシピと入力を持たなければならない。索引は、捨てられ、再構築できなければならない。 - 汚染されたセッションが書いたノートは、レビューされるまで自動読み込みしてはならない。 - 新しい事実は、上書きではなく `supersedes` で古い事実を置き換えなければならない。 - 保守ジョブは、ブランチの上で動き、提案するだけでなければならない。生のジャーナルを削除してはならない。 - どの Home も、黄金の想起テストを備え、モデルやインデクサーが変わるたびに実行すべきである。 ## 借りたものと、新しいもの 以下はすべて確立された考え方で、OpenClaw のメモリアーキテクチャは、すでに出どころのラベル、階層ごとの隔離、統合時の汚染の伝播を行っています。**新しいのは、** OpenClaw が **1 つのランタイムの内側** で行っているのに対し、私たちは **共有ストレージ** で行うことを提案している点です。これでどのランタイムも恩恵を受けられます。さらに、索引を捨てられるキャッシュに格下げすることで、記憶を失わずに検索アルゴリズムを変えられるようにします。 - [Letta Context Repositories](https://www.letta.com/blog/context-repositories/) - [Letta: is a filesystem all you need?](https://www.letta.com/blog/benchmarking-ai-agent-memory/) - [OpenClaw memory architecture](https://docs.openclaw.ai/concepts/memory-architecture) - [Long-term memory security survey](https://arxiv.org/abs/2604.16548) - [Graphiti](https://github.com/getzep/graphiti) - [MemGPT](https://arxiv.org/abs/2310.08560) ## 正直な限界 - 生成的な導出物は、ビット単位では決して再現できません。 - 保守ジョブは、誤りを事実として「固めて」しまうことがあります。だから提案するだけで、直接は編集しません。 - どの記憶アーキテクチャが最良かは、まだ決着していません。 ## 未解決の問い - エージェントが自分で記憶を書くべきときと、保守ジョブが書くべきときは、それぞれいつか。 - モデルのバージョンをまたぐ、回帰の基準は何か。 ## よくある質問 ### なぜベクトルデータベースではなく、ファイルなのですか? ファイルは、読んで、直して、差分を取って、持ち出せる真実です。ベクトル索引は、複数のバージョンが共存でき、いつでも再構築できる派生キャッシュです。Letta のベンチマークは、`grep` とファイルツールだけのエージェントが十分に張り合えることを示しましたが、ベンチマークは互いに矛盾しているので、この設計は 1 つの検索アルゴリズムに賭けません。 ### 記憶への毒入れは、どう防ぐのですか? 悪いものが一切書かれないことは保証できませんが、被害は限定できます。外から来た内容には `external` ラベルがつき、汚染されたセッションが書いたノートは隔離に入って自動読み込みされず、マージはレビューされます。何かがおかしくなったときは、出どころの連鎖をたどって影響を受けたノートを見つけ、ロールバックできます。 ### 埋め込みモデルを変えるとき、記憶を移行する必要はありますか? ありません。ノートは変わらず、新しいレシピで索引をバックグラウンドで再計算するだけです。新しい索引が黄金の想起テストを満たすまで、古い索引は残ります。 ## 関連するコンセプト - [Budgeted Reads (予算つき読み取り)](https://agentnas.com/ja/concepts/budgeted-reads/): ファイルを、アウトライン、節、行範囲、全文のいずれかで読みます。予算に収まるよう、段階的に粗くします。 - [Cascade Forget (カスケード忘却)](https://agentnas.com/ja/concepts/cascade-forget/): 系譜に沿って派生物を削除し、履歴は保持クラスで扱い、できなかったことを報告します。 - [Trust Labels (トラスト・ラベル)](https://agentnas.com/ja/concepts/trust-labels/): 2 つの小さなラベルとセッション汚染で、Rule of Two を実現します。 --- 正規 URL: https://agentnas.com/ja/concepts/agent-memory/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Budgeted Reads (予算つき読み取り) *ファイルを、アウトライン、節、行範囲、全文のいずれかで読みます。予算に収まるよう、段階的に粗くします。* > **Budgeted Reads** は、トークン予算で測る読み取りです。同じファイルを、アウトライン、節、行範囲、全文と、異なる細かさで読めます。エージェントは「N トークンに収まる最良のビュー」を求め、正確な出典を指す証拠ポインタを受け取ります。 **AN-08** · 準拠レベル: L2 Memory · グループ: 知識 ## 解決する課題 エージェントは、ファイル全体や繰り返しの読み取りでコンテキストを使い果たしますが、素朴な RAG のチャンク分割は構造を失います。モデルはすでに `grep`、`tail`、行を指定した読み取りが得意です。Cursor は長すぎるツール出力をファイルに書き出して、エージェントが必要に応じて読めるようにしており、MCP ツールを呼んだ実行では、ツール説明の [動的な発見](https://cursor.com/blog/dynamic-context-discovery) によって、トークンの合計が 46.9% 減りました。 つまり問題は「もうひとつ検索システムを作る」ことではなく、ファイルの上の読み取りに、**予算があり、検査できる** 契約を与えることです。 ## 仕組み - **まずファイル。** 標準的な読み取り(行範囲を含む)は常に使えます。Budgeted Reads は上に載る任意の拡張で、ファイルシステムの代わりにはなりません。 - **決定的なアウトライン(無料):** Markdown の見出しツリー、コードのシンボル(tree-sitter)、JSON と YAML のキー、CSV のヘッダーと行数。LLM は要りません。 - **予算と段階的な縮退。** リクエストは `budget_tokens` を持ちます。収まらなければ、**黙って切り詰めず**、より粗いビューに縮退します。レスポンスは、実際のビュー、トークン数、`generated` かどうかを示します。 - **検索は、ファイル全体ではなく、スニペットとポインタを返します。** - **証拠ポインタ:** `nas:////@#L12-L18`。安定していて、コミットに対して検証できます。`dereference` は正確な内容を返します。 - **前回からの変更:** ファイル全体ではなく、2 つのコミットの差分を返します。 - **任意の LLM 要約層:** キャッシュとして、`generated: true` と古さのマーカーをつけます。 ## 小さく始める - `nas_read` 以外は何も足さない。エージェントには、`rg` と `sed -n` で、これまでどおりに読ませます。 - 次に、Markdown とコード用の小さなアウトラインツールを足します。 - 証拠ポインタは「path@commit#line」から始めます。新しいサービスは要りません。 ## インターフェースのスケッチ 説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。 *POST /v1/files/read* ```http POST /v1/files/read { "path": "/agents/cleo/memory/notes/customer-acme.md", "view": "outline", "budget_tokens": 400 } 200 OK { "view": "outline", "tokens": 212, "generated": false, "truncated": false, "content": "# Acme\n## Renewal (L12-L18)\n## Contacts (L19-L31)\n## Open issues (L32-L40)", "evidence": [ { "pointer": "nas://home-box/agents/cleo/memory/notes/customer-acme.md@9f2c1de#L1-L40" } ] } ``` ## 仕様が求めること - レスポンスは、実際に返したビューとそのトークン数を示さなければならない。生成的なビューには、その旨のマークをつけなければならない。 - 予算が小さすぎるとき、NAS はより粗いビューに縮退しなければならず、黙って切り詰めてはならない。 - 標準的なファイル読み取り(範囲指定を含む)は、使えるままでなければならない。 - 証拠ポインタは、コミットに対して検証できなければならない。 - 検索は、既定でファイル全体ではなく、スニペットとポインタを返さなければならない。 ## 借りたものと、新しいもの 段階的な開示や grep は、それ自体は新しくありません。**新しいのは、** 予算と証拠ポインタを **ストレージ層の読み取りの契約** にして、答えを検査できるようにする点です。ひとつの文から、それが由来するコミットの行までたどれます。 - [Cursor: dynamic context discovery](https://cursor.com/blog/dynamic-context-discovery) - [Agent Skills (progressive disclosure)](https://agentskills.io/specification) - [Letta Context Repositories](https://www.letta.com/blog/context-repositories/) - [RAPTOR](https://arxiv.org/abs/2401.18059) ## 正直な限界 - トークナイザーはモデルごとに違うため、トークン数は見積もりです。 - クライアントが採用してくれなければ機能しません。 - 要約は古くなり、誤ることもあるため、キャッシュにすぎず、常にマークをつけます。 ## 未解決の問い - モデルごとのトークナイザーの違いによる、予算の誤差をどう扱うか。 - 要約の品質をどう評価するか。 ## よくある質問 ### RAG と何が違うのですか? RAG は、質問にいちばん近いスニペットを返します。Budgeted Reads は、すでに分かっているオブジェクトについて、読み手が細かさを選べ、予算が足りなければ正直に縮退し、検証できるポインタを返します。両者は重ねられます。検索結果も、予算つきのビューで返せます。 ### ファイルを読むのに、これを必ず使う必要はありますか? ありません。マウントと Git は、常に普通のファイルを渡します。Budgeted Reads は、トークンを気にするエージェントのための、任意の読み取りです。 ### 証拠ポインタで、「でっち上げの引用」を防げますか? 引用を検査できるようにします。ポインタはコミットの特定の行を指し、その内容ハッシュを検証できます。モデルがでっち上げるのを止めるわけではありませんが、「引用した箇所は本当に存在するか」を、機械で確かめられる問いに変えます。 ## 関連するコンセプト - [Agent Memory (エージェントの記憶)](https://agentnas.com/ja/concepts/agent-memory/): 読んで直せるノートが真実で、索引は捨てられるキャッシュです。 - [Agent Home (エージェント・ホーム)](https://agentnas.com/ja/concepts/agent-home/): ロールごとのディレクトリ。履歴つきで、普通のファイルのまま持ち出せます。 - [Flight Recorder (フライトレコーダー)](https://agentnas.com/ja/concepts/flight-recorder/): 実行ごとに、ハッシュでつながれた記録を残します。実行が何を読んだかも含みます。 --- 正規 URL: https://agentnas.com/ja/concepts/budgeted-reads/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0 --- # Cascade Forget (カスケード忘却) *系譜に沿って派生物を削除し、履歴は保持クラスで扱い、できなかったことを報告します。* > **Cascade Forget** は、系譜に沿った削除です。元データを削除するとき、あるいは誰かが忘れてほしいと求めたとき、NAS はそこから派生したものすべて(要約、埋め込み、それを引用するノート、キャッシュ、共有リンク)を見つけ、削除するか、その元データなしで導出し直し、**報告** を出します。何を行い、何ができなかったかです。 **AN-09** · 準拠レベル: L3 Guard · グループ: 知識 ## 解決する課題 ファイルを削除しても、その埋め込みも、要約も、記憶がそこから推論した事実も消えません。スナップショットとバックアップは残り、内容はバージョン履歴にも残っています。 「復元できること」と「忘れられること」は、1 本の軸の両端であり、ほとんどのシステムは、その選択を人間に渡しません。書き込んだあとで忘れることを考えても、たいてい手遅れです。 ## 仕組み - **系譜。** すべての派生物が入力を記録します。逆引きの索引が「X に依存するものすべて」に答えます。ノートの `sources` フィールドも系譜です。 - **保持クラスは、書き込み時に決めます**(履歴はあとから書き換えられないため)。`scratch`(短い TTL、バックアップに入れず、実行の終了時に掃除できる)、`normal`(バージョン管理され、復元できる)、`sensitive`(独自の鍵ドメインを持ち、鍵を破棄すれば粉砕できる)。 - **復元と忘却の緊張関係。** ソフト削除の期間内なら復元でき、その期間を過ぎてはじめて完全に削除されます。忘却の要求は、その期間を飛ばせます。 - **手順。** 要求(人間か運用者が出します。エージェントは求められるだけで、実行はできません)、系譜のたどり、派生物の削除と混合起源の事実の導出し直し、`normal` クラスでは影響を受けるパスの履歴の書き換えとスナップショットの掃除、`sensitive` クラスでは鍵の破棄、そして最後に報告。 - **報告:** 削除したファイルの数、取り除いた派生物、履歴を書き換えたか、破棄した鍵、まだ期限が切れていないスナップショット、そして **カバーできない範囲の明示的な一覧:** NAS の外のコピー、モデル提供者のログ、モデルの重み。 - 必ず [Human Gate](https://agentnas.com/ja/concepts/human-gate/)(または事前に承認するポリシー)を通ります。**リーガルホールド** は忘却を妨げ、その事実は記録されます。 ## 小さく始める - まず、保持クラスとソフト削除から始め、すべての派生物の入力を記録します。 - 最初の到達点は「元のファイルを削除したら、そのすべての派生物を列挙して削除する」です。 - 暗号粉砕は `sensitive` クラスのために取っておきます。最初からあらゆる場所で行う必要はありません。 ## インターフェースのスケッチ 説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。 *forget-report.json* ```json { "forget_id": "fgt_3b7c", "selector": { "paths": ["/shared/crm/acme/**"], "subject": "customer/acme" }, "retention_class": "sensitive", "report": { "files_removed": 142, "derived_removed": { "embeddings": 3621, "summaries": 210, "notes_rewritten": 6 }, "history": "rewritten (3 commits)", "keys_destroyed": ["key_acme"], "snapshots_pending": ["nightly-2026-11-10 (expires 2026-11-17)"], "not_covered": ["copies outside the NAS", "model provider logs", "model weights"] }, "state": "pending_expiry" } ``` ## 仕様が求めること - 忘却は、系譜に沿って、元データからすべての派生物へ伝播しなければならない。 - 保持クラスは、書き込み時に割り当てなければならない(既定は `normal`)。 - 忘却の報告は、カバーできない範囲(NAS の外のコピー、提供者のログ、モデルの重み)を列挙しなければならない。 - リーガルホールドは、忘却を妨げなければならず、記録されなければならない。 - エージェントは忘却を要求してもよいが、実行してはならない。 - 報告は、モデルが何かを「忘れた」と主張してはならない。 ## 借りたものと、新しいもの 以下はすべて確立された考え方です。**新しいのは、** **保持クラス** をストレージの明示的な属性として扱い、「復元できること」と「忘れられること」が 1 本の軸の上のトレードオフだと認めることです。 - [OpenLineage](https://openlineage.io) - [GDPR Article 17](https://gdpr-info.eu/art-17-gdpr/) - [Long-term memory security survey (forget and rollback)](https://arxiv.org/abs/2604.16548) ## 正直な限界 - バックアップ、NAS の外のコピー、モデル提供者のログは、対象外です。 - 複数の出典から推論された事実では、「影響を受ける範囲」を定めるのが困難です。 - 履歴の書き換えは、コストが高く、リスクもあります。 ## 未解決の問い - 混合起源の事実の影響範囲を、どう定義するか。 - リーガルホールドと忘却の要求が衝突したとき、手順はどうあるべきか。 ## よくある質問 ### モデルに忘れさせることはできますか? できませんし、できるとは主張しません。できるのは、NAS の内側のファイルと派生物の削除、`sensitive` クラスについては履歴と鍵の破棄です。モデル提供者のログとモデルの重みは対象外で、報告にもそう明記されます。 ### なぜ保持クラスを、書き込み時に選ぶのですか? 履歴はあとから書き換えるのが難しいからです。すでにバックアップや履歴に入ったものは、書き換えるか、期限が切れるのを待つしかありません。書き込み時に `scratch`、`normal`、`sensitive` のどれかを決めることが、あとできれいに削除できるための前提です。 ### エージェントが、自分から忘れるよう求められますか? 要求を出すことはできますが、実行はできません。忘却は元に戻せないため、人間か、事前に承認するポリシーを通さなければならず、リーガルホールドがそれを妨げることもあります。 ## 関連するコンセプト - [Agent Memory (エージェントの記憶)](https://agentnas.com/ja/concepts/agent-memory/): 読んで直せるノートが真実で、索引は捨てられるキャッシュです。 - [Flight Recorder (フライトレコーダー)](https://agentnas.com/ja/concepts/flight-recorder/): 実行ごとに、ハッシュでつながれた記録を残します。実行が何を読んだかも含みます。 - [Agent Branch (エージェント・ブランチ)](https://agentnas.com/ja/concepts/agent-branch/): 実行ごとに、コピーオンライトのブランチで作業します。メインに届くのは、レビューを経たマージだけです。 --- 正規 URL: https://agentnas.com/ja/concepts/cascade-forget/ 更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0