Skip to content

Commit 480e050

Browse files
committed
Add complete memory module
Change-Id: Iea5dbdcf29c9ac1dd1b8d55f824f9e96e82cfb8d
1 parent 4d8a9be commit 480e050

40 files changed

Lines changed: 1901 additions & 61 deletions
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
"@openagentpack/sdk": minor
3+
"@openagentpack/cli": minor
4+
---
5+
6+
Add a portable Memory Store and Memory lifecycle API across Qoder, Claude, and
7+
Volcengine Ark, including provider capability differences, CLI commands,
8+
declarative entry reconciliation, version history, and Ark batch creation.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ Beta testers can install `@openagentpack/cli@beta`; see the [release guide](./do
145145
| Skill | native | native | native | native |
146146
| Agent | native | native | native | native |
147147
| MCP Server | native | native | native | native |
148-
| Memory Store | unsupported | native | unsupported | native |
148+
| Memory Store | unsupported | native | native | native |
149149
| Multi-Agent | unsupported | unsupported | native | native |
150150
| Deployment | emulated | native | native | emulated |
151151
| Session | native | native | native | native |

README.zh-CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ Beta 用户可以安装 `@openagentpack/cli@beta`;固定版本及切回稳定
145145
| Skill | native | native | native | native |
146146
| Agent | native | native | native | native |
147147
| MCP Server | native | native | native | native |
148-
| Memory Store | unsupported | native | unsupported | native |
148+
| Memory Store | unsupported | native | native | native |
149149
| Multi-Agent | unsupported | unsupported | native | native |
150150
| Deployment | emulated | native | native | emulated |
151151
| Session | native | native | native | native |

docs/examples.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ The [`examples/`](../examples) directory has runnable configs for every provider
1313
| Use an official MCP server | [`examples/bailian/with-mcp/`](../examples/bailian/with-mcp/) |
1414
| Use a vault | [`examples/bailian/with-vault/`](../examples/bailian/with-vault/) · [`examples/qoder/with-vault/`](../examples/qoder/with-vault/) |
1515
| Connect a credential-based IM Channel | [`examples/qoder/with-channel/`](../examples/qoder/with-channel/) |
16-
| Use memory stores | [`examples/qoder/with-memory/`](../examples/qoder/with-memory/) · [`examples/ark/full/`](../examples/ark/full/) |
16+
| Use memory stores | [`examples/qoder/with-memory/`](../examples/qoder/with-memory/) · [`examples/claude/with-memory/`](../examples/claude/with-memory/) · [`examples/ark/full/`](../examples/ark/full/) · [runtime lifecycle](../examples/memory/README.md) |
1717
| Upload local files (Files API) | [`examples/bailian/with-files/`](../examples/bailian/with-files/) · [`examples/ark/with-files/`](../examples/ark/with-files/) |
1818
| Coordinate multiple agents | [`examples/claude/multiagent/`](../examples/claude/multiagent/) · [`examples/ark/multiagent/`](../examples/ark/multiagent/) |
1919
| Deploy to multiple providers | [`examples/claude/multi-provider/`](../examples/claude/multi-provider/) · [`examples/qoder/multi-provider/`](../examples/qoder/multi-provider/) |
@@ -51,7 +51,7 @@ agents destroy
5151
| Skill | native | native | native | native |
5252
| Agent | native | native | native | native |
5353
| MCP Server | native | native | native | native |
54-
| Memory Store | unsupported | native | unsupported | native |
54+
| Memory Store | unsupported | native | native | native |
5555
| Multi-Agent | unsupported | unsupported | native | native |
5656
| Deployment | emulated | native | native | emulated |
5757
| Session | native | native | native | native |

docs/guides/configure-an-agent.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ agents:
128128

129129
See [Use MCP and vaults](./use-mcp-and-vaults.md).
130130

131-
## Memory stores (Qoder, Ark)
131+
## Memory stores (Qoder, Claude beta, Ark)
132132

133133
```yaml
134134
memory_stores:

docs/guides/configure-an-agent.zh-CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ agents:
307307

308308
Memory Store 为 Agent 提供持久化上下文,适合存储项目知识、约定规范等长期信息。
309309

310-
> 注意:Memory Store 目前由 Qoder 和 火山方舟 Provider 原生支持。
310+
> 注意:Memory Store 目前由 Qoder、Claude(beta)和火山方舟 Provider 原生支持。
311311

312312
```yaml
313313
memory_stores:

docs/guides/deploy-to-claude.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ providers:
2121
| Feature | Tier |
2222
|---------|:----:|
2323
| Environment, Vault, Skill, Agent, MCP Server, Multi-Agent, Deployment, Session | native |
24-
| Memory Store | unsupported |
24+
| Memory Store | native (beta) |
2525

26-
Use a **skill** or **MCP** for context persistence where Claude has no memory store.
26+
Memory stores require the Claude `agent-memory-2026-07-22` beta, enabled by the adapter by default.
2727

2828
## Minimal agent
2929

docs/reference/cli.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,35 @@ Manage scheduled / triggered deployments.
123123
| `deployment get <name>` | Show a deployment's status and resolved bindings. |
124124
| `deployment run <name>` | Trigger a deployment run (native on Qoder/Claude, emulated as a session on Bailian/Volcengine Ark). |
125125

126+
## `agents memory-store`
127+
128+
Manage persistent stores directly. Store creation through `agents apply` remains
129+
the recommended declarative workflow.
130+
131+
| Command | Description |
132+
|---------|-------------|
133+
| `create <name>` | Create a store (`--description`). |
134+
| `list` | List stores (`--limit`, `--cursor`, `--include-archived`). |
135+
| `get <store-id>` | Retrieve a store. |
136+
| `update <store-id>` | Update `--name` and/or `--description`. |
137+
| `archive <store-id>` | Archive a store (Qoder/Claude). |
138+
| `delete <store-id>` | Permanently delete a store and its memories. |
139+
140+
## `agents memory`
141+
142+
Manage individual text memories. Content can be passed with `--content` or
143+
`--content-file`. Portable paths are relative; adapters handle wire-format differences.
144+
145+
| Command | Description |
146+
|---------|-------------|
147+
| `create <store-id> <path>` | Create one memory. |
148+
| `batch-create <store-id> <json-file>` | Ark batch create; supports `--on-conflict overwrite\|fail`. |
149+
| `list <store-id>` | List memories; supports pagination, prefix/depth and `--full`. |
150+
| `get <store-id> <memory-id>` | Retrieve full content. |
151+
| `update <store-id> <memory-id>` | Update content/path; `--expected-sha256` enables optimistic concurrency where supported. |
152+
| `delete <store-id> <memory-id>` | Delete one memory. |
153+
| `version list|get|redact` | Immutable history operations (Qoder/Claude). |
154+
126155
## `agents models`
127156

128157
| Subcommand | Description |

docs/reference/configuration.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,15 @@ memory_stores:
197197
<name>:
198198
description: <string>
199199
provider: <string> # optional
200+
metadata: { <string>: <string> } # optional
200201
entries: [ { key: <string>, content: <string> } ]
201202
```
202203

203-
Supported on **Qoder** and **Volcengine Ark** (**Bailian** and **Claude**: `unsupported`).
204+
Supported on **Qoder**, **Claude (beta)**, and **Volcengine Ark** (**Bailian**: `unsupported`).
205+
206+
Declarative `entries` are managed seeds: apply creates or updates those paths but
207+
preserves additional memories written by agents. Runtime CRUD and version commands
208+
are documented in [`examples/memory/`](../../examples/memory/README.md).
204209

205210
## Skill
206211

docs/reference/providers.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ OpenAgentPack targets multiple agent platforms behind one declarative config. Ea
1313
| Skill | native | native | native | native | Claude uploads via `files[]`; the other providers upload zip archives. Volcengine Ark is create + attach only. |
1414
| Agent | native | native | native | native | Core managed-agent resource. |
1515
| MCP Server | native | native | native | native | Bailian uses official managed servers referenced by name. |
16-
| Memory Store | unsupported | native | unsupported | native | Qoder and Ark are implemented. Claude's upstream API now has Memory Stores, but its OpenAgentPack adapter does not yet. |
16+
| Memory Store | unsupported | native | native | native | Qoder, Claude (beta), and Ark adapters implement the complete upstream lifecycle. |
1717
| Multi-Agent | unsupported | unsupported | native | native | Coordinator topology is available on Claude and Volcengine Ark. |
1818
| Deployment | emulated | native | native | emulated | Qoder and Claude use native deployments; Bailian and Ark expand a deployment into a session at `run` time. |
1919
| Session | native | native | native | native | Runtime sessions are native on every provider. |
@@ -63,7 +63,7 @@ Last reviewed: **2026-07-17**. The evidence labels below deliberately separate u
6363
| Skills | Built-in Anthropic skills plus custom zip or individual-file uploads; max 20 per session | CRUD/list/get/download implemented; adapter uploads `files[]` | Official documentation currently lists create and get only | Create/get/attach implemented; update recreates; list/delete are unavailable upstream |
6464
| Multi-agent | Coordinator delegates to persistent, context-isolated threads sharing sandbox/files/vaults | Coordinator topology implemented | Agent schema includes `multiagent`; Session APIs expose thread list/detail/events/stream | Coordinator topology implemented; thread inspection is not exposed through `ProviderAdapter` |
6565
| Deployment | Native scheduled deployments with cron/timezone and run history | Native lifecycle and run implemented | The official Managed Agents API catalog contains no Deployment resource | Emulated locally and expanded into a Session at run time |
66-
| Memory Store | Official API supports persistent, versioned memories mounted read-only or read-write; up to 8 stores per session | **Gap:** not implemented, so capability remains `unsupported` in OpenAgentPack | Official CRUD for stores plus create/batch-create/list/get/update/delete for memories | Store create/delete and Session binding implemented; list/get/update and memory-content operations are adapter gaps |
66+
| Memory Store | Store CRUD/archive, memory CRUD, optimistic concurrency, immutable versions and redaction are implemented; paths are normalized from Claude's absolute form | Store CRUD, memory CRUD, Session binding, versions and redaction are implemented behind `agent-memory-2026-07-22` | Store CRUD plus memory create/batch-create/list/get/update/delete are implemented | Full upstream surface is implemented; Ark is last-write-wins and does not expose version APIs |
6767

6868
Primary references: [Claude API overview](https://platform.claude.com/docs/en/api/overview), [Claude Managed Agents overview](https://platform.claude.com/docs/en/managed-agents/overview), [sessions and event streaming](https://platform.claude.com/docs/en/managed-agents/events-and-streaming), [skills](https://platform.claude.com/docs/en/managed-agents/skills), [multi-agent sessions](https://platform.claude.com/docs/en/managed-agents/multi-agent), [scheduled deployments](https://platform.claude.com/docs/en/managed-agents/scheduled-deployments), [memory stores](https://platform.claude.com/docs/en/managed-agents/memory), and the [Volcengine Ark Managed Agents API reference](https://console.volcengine.com/ark/region:cn-beijing/docs/82379/2555910?lang=zh).
6969

0 commit comments

Comments
 (0)