メインコンテンツへスキップ
Session が終了すると、Agent のコンテキストはデフォルトで失われます。Memory Stores によって、Agent の学習成果や作業成果物を Session をまたいで永続的に保持できます。次回起動時に Agent は以前の内容を「思い出せる」ようになります。

コアコンセプト

概念説明
Memory Store記憶リポジトリ。プロジェクトや領域単位で分割
Entry1 件の記憶。path で識別。各 Entry には一意の entry_id が付与される
Version書き込み/更新/削除のたびに自動生成されるバージョンスナップショット
Redact特定バージョンの内容を不可逆に隠蔽 (コンプライアンスシナリオ)
階層関係: Store → Entry → Version

API エンドポイント一覧

メソッドパス説明
POST/memory_storesMemory Store を作成
GET/memory_storesMemory Store 一覧を取得
GET/memory_stores/{id}Memory Store 詳細を取得
DELETE/memory_stores/{id}Memory Store を削除
POST/memory_stores/{id}/memoriesEntry を作成
GET/memory_stores/{id}/memoriesEntry 一覧を取得
GET/memory_stores/{id}/memories/{entry_id}Entry を取得(content 含む)
PUT/memory_stores/{id}/memories/{entry_id}Entry を更新(OCC)
DELETE/memory_stores/{id}/memories/{entry_id}Entry を削除
POST/memory_stores/{id}/versions/{version_id}/redactバージョン内容を隠蔽

パスのルール

Entry の path は相対パスでなければなりません。
  • 適合: notes/meeting-2026-05-18.mdconfig.yaml
  • 不適合: /notes/meeting.md (/ で始めることは不可)
パスは記憶の構造化に使われ、ファイルシステムに似た体系を提供します。

エンドツーエンドフロー

1. Memory Store を作成する

curl -X POST https://api.qoder.com/api/v1/cloud/memory_stores \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "project-alpha-memory",
    "description": "Alpha プロジェクトの Agent ナレッジベース"
  }'
レスポンス例:
{
  "id": "memstore_019e5cdb9c3f71c3b6505eba937a40b4",
  "type": "memory_store",
  "name": "project-alpha-memory",
  "description": "Alpha プロジェクトの Agent ナレッジベース",
  "status": "active",
  "entry_count": 0,
  "total_size": 0,
  "metadata": {},
  "created_at": "2026-05-18T08:00:00Z",
  "updated_at": "2026-05-18T08:00:00Z"
}

2. Entry を作成する

curl -X POST https://api.qoder.com/api/v1/cloud/memory_stores/memstore_019e5cdb9c3f71c3b6505eba937a40b4/memories \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "path": "decisions/arch-choice.md",
    "content": "# アーキテクチャ判断\n\nマイクロサービスを選択。理由: チーム規模拡大に伴い、独立デプロイが必要。"
  }'
一覧エンドポイントは content フィールドを返しません。内容を読むには単一取得エンドポイントを呼び出す必要があります。

3. Entry を取得する

entry_id を指定して、content を含む完全な Entry を取得します。
curl https://api.qoder.com/api/v1/cloud/memory_stores/memstore_019e5cdb9c3f71c3b6505eba937a40b4/memories/mem_019e5cdba1b674e4a6a7d4f8c9b3e2a1 \
  -H "Authorization: Bearer $QODER_PAT"
レスポンス例:
{
  "content": "# アーキテクチャ判断\n\nチーム規模拡大に伴い独立デプロイが必要なため、マイクロサービスを選択。",
  "content_sha256": "1712de0d497a5aeef2beeccf4fbb7d5a16944975438d0c25447b9c1fba13099a",
  "created_at": "2026-05-18T08:00:00Z",
  "id": "mem_019e5cdb9c3f71c3b6505eba937a40b5",
  "metadata": {},
  "path": "decisions/arch-choice.md",
  "size": 60,
  "store_id": "memstore_019e5cdb9c3f71c3b6505eba937a40b4",
  "type": "memory",
  "updated_at": "2026-05-18T09:30:00Z",
  "version": 2
}

4. Entry を更新する

更新は PUT を使用し、URL に entry_id を含め、楽観的同時実行制御 (OCC) のために現在の version を必ず指定します。新しいバージョンスナップショットが自動生成されます。
curl -X PUT https://api.qoder.com/api/v1/cloud/memory_stores/memstore_019e5cdb9c3f71c3b6505eba937a40b4/memories/mem_019e5cdba1b674e4a6a7d4f8c9b3e2a1 \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "# アーキテクチャ判断 v2\n\nModular Monolith に変更。理由: マイクロサービス運用コストが予算超過。",
    "version": 1
  }'
リクエストフィールド:
フィールド必須説明
contentstringはい新しい内容
versionintegerはい現在の Entry のバージョン番号(衝突検出用)
version がサーバーと一致しない場合(並行書き込みあり)、API は 409 Conflict を返します。最新バージョンを GET で取得し直してから再試行してください。

5. Entry を削除する

entry_id を指定して削除します。
curl -X DELETE https://api.qoder.com/api/v1/cloud/memory_stores/memstore_019e5cdb9c3f71c3b6505eba937a40b4/memories/mem_019e5cdba1b674e4a6a7d4f8c9b3e2a1 \
  -H "Authorization: Bearer $QODER_PAT"
削除操作には entry_id(例: mem_019e5cdba1b674e4a6a7d4f8c9b3e2a1)を使用します。path クエリパラメータでの削除はサポートされていません。

6. Session で使用する

Session 作成時に memory_store_ids で関連付けます。
curl -X POST https://api.qoder.com/api/v1/cloud/sessions \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "agent": "agent_xxx",
    "memory_store_ids": ["memstore_019e5cdb9c3f71c3b6505eba937a40b4"]
  }'
Session 内で Agent は関連付けた Memory Store を読み書き可能です。

sandbox 内の Memory Entry パス

memory_store を session にバインドすると、各 entry は sandbox 内で以下にマウントされます:
/data/.qoder/awareness/<entry.path>
例: entry の path = "shared/note.txt" → sandbox パス /data/.qoder/awareness/shared/note.txt 注意:sandbox 内には memory_store / mem_ / entry_id のような命名階層はありません。すべて awareness/ 配下にフラット展開されます。Agent は memory_store という概念を認識できず、entry.path で直接ファイルを読み取ることしかできません。

バージョン追跡

Entry に対する作成・更新・削除のたびに、システムはバージョンスナップショットを自動生成します。バージョンは変更不可で、完全な変更履歴を提供します。

Redact (内容の隠蔽)

特定バージョンに機微情報が含まれて永久消去が必要な場合:
curl -X POST https://api.qoder.com/api/v1/cloud/memory_stores/memstore_019e5cdb9c3f71c3b6505eba937a40b4/versions/ver_xyz789/redact \
  -H "Authorization: Bearer $QODER_PAT"
重要: Redact 操作は不可逆です。隠蔽後の内容は復元できません。

統計フィールド

フィールド説明
entry_countStore 内の Entry 総数
total_sizeすべての Entry 内容の合計バイト数

よくある質問

Q: 1 つの Session に何個の Memory Store を関連付けられますか? A: 複数サポートされており、必要に応じて関連付け可能です。 Q: Entry の path にサブディレクトリを含められますか? A: 可能です (例: notes/2026/05/daily.md)。多階層パスをサポートします。 Q: Entry を削除しても過去のバージョンは残りますか? A: 削除操作自体が「削除」バージョンのレコードを生成し、それ以前のバージョンも追跡可能です。 Q: Memory Store に容量制限はありますか? A: 具体的な制限はアカウントクォータをご確認ください。一般的なプロジェクトには十分な容量を提供します。
プロジェクトごとに独立した Memory Store を作成し、異なるプロジェクトの記憶が混ざらないようにすることを推奨します。