You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This plugin helps your agent keep useful context across compactions and sessions: project decisions, preferences, important references, active files, and unresolved errors.
8
+
OpenCode Working Memory helps your agent keep useful context across compactions and sessions: project decisions, preferences, important references, active files, and unresolved errors.
9
9
10
10
It works automatically, without manual memory tools or extra LLM/API calls.
11
11
12
12
## Why This Exists
13
13
14
14
OpenCode compaction keeps conversations manageable, but important context can still get lost over time.
15
15
16
-
This plugin adds a workspace-aware memory layer so your agent can remember durable facts while keeping short-term session state fresh and lightweight.
16
+
It adds a workspace-aware memory layer so your agent can remember durable facts while keeping short-term session state fresh and lightweight.
17
17
18
18
Use it when you want your agent to remember things like:
19
19
@@ -34,15 +34,15 @@ Use it when you want your agent to remember things like:
34
34
35
35
## Installation
36
36
37
-
Add the plugin to your OpenCode config:
37
+
Add OpenCode Working Memory to your OpenCode config:
38
38
39
39
```json
40
40
{
41
41
"plugin": ["opencode-working-memory"]
42
42
}
43
43
```
44
44
45
-
Then restart OpenCode. The plugin activates automatically.
45
+
Then restart OpenCode. It activates automatically.
46
46
47
47
## How It Works
48
48
@@ -89,7 +89,7 @@ OpenCode Working Memory adds durable memory without making extra LLM/API calls.
89
89
└──────────────────────────────────────┘
90
90
```
91
91
92
-
**Zero extra API calls:**the plugin does not call the model on its own. Memory extraction is folded into OpenCode's built-in compaction request.
92
+
**Zero extra API calls:**OpenCode Working Memory does not call the model on its own. Memory extraction is folded into OpenCode's built-in compaction request.
93
93
94
94
**Cache-friendly layout:** durable workspace memory is rendered as a stable frozen snapshot for the session, while fast-changing hot session state is appended separately. Compaction starts a new cache epoch, refreshing the workspace snapshot after pending memories are promoted.
95
95
@@ -161,21 +161,22 @@ Avoid saving:
161
161
162
162
## Quality Guards
163
163
164
-
The plugin tries to keep memory useful and low-noise.
164
+
OpenCode Working Memory tries to keep memory useful and low-noise.
165
165
166
166
It includes guards for:
167
167
168
168
- Credential redaction
169
169
- Duplicate memory cleanup
170
170
- Superseding older decisions with newer ones
171
+
- Consolidation accounting so promoted, absorbed, superseded, and rejected memories are handled differently
171
172
- Filtering stack traces, git hashes, raw errors, and noisy path-heavy facts
172
173
- Rejecting temporary project progress snapshots
173
174
174
175
The goal is to remember durable facts, not every detail.
Copy file name to clipboardExpand all lines: RELEASE_NOTES.md
+45-2Lines changed: 45 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,53 @@
1
1
# Release Notes
2
2
3
+
## 1.3.0 (2026-04-27)
4
+
5
+
### Better Memory Consolidation
6
+
7
+
This release makes OpenCode Working Memory smarter about what happens to saved memories after compaction. Instead of treating every pending memory as simply "kept" or "not kept", it now understands four outcomes:
8
+
9
+
-**Promoted** — a new memory was saved to workspace memory.
10
+
-**Absorbed** — the memory was a duplicate of something already remembered.
11
+
-**Superseded** — a newer same-topic decision or preference replaced an older one.
12
+
-**Rejected** — the memory was stale, noisy, or over the workspace memory limit.
13
+
14
+
### What This Improves
15
+
16
+
-**Fewer repeated pending memories**: duplicate or superseded memories no longer keep coming back for promotion.
17
+
-**Cleaner long-term memory**: old same-topic decisions are replaced more predictably.
18
+
-**Safer promotion accounting**: pending memories are only cleared when the final normalized workspace memory confirms what happened to them.
19
+
-**More useful compaction output**: the compaction prompt now includes clearer examples of what should and should not become durable memory.
20
+
21
+
### Also Included
22
+
23
+
- Memory quality regression fixtures: 5 examples that should be kept and 7 noisy examples that should be rejected.
24
+
- Fix for `session.deleted` session ID extraction so cleanup and promotion use the same event parsing path.
25
+
- Fix for active-vs-superseded promotion behavior: archived superseded entries no longer block a fresh active memory.
@@ -73,40 +73,47 @@ Long-term memory that persists across sessions within the same workspace. Perfec
73
73
74
74
### Memory Extraction
75
75
76
-
During compaction, the plugin scans for `Memory candidates:` sections:
76
+
During compaction, OpenCode Working Memory scans for `Memory candidates:` sections:
77
77
78
78
```
79
79
Memory candidates:
80
80
- [decision] Use npm cache for plugin loading
81
81
- [project] This repo uses TypeScript with strict mode
82
82
```
83
83
84
-
**Legacy Format**: The plugin also accepts `<workspace_memory_candidates>` XML blocks for backward compatibility, but this format is deprecated.
84
+
**Legacy Format**: OpenCode Working Memory also accepts `<workspace_memory_candidates>` XML blocks for backward compatibility, but this format is deprecated.
85
85
86
-
**Quality Gate**: Not all candidates become memories. The plugin rejects:
86
+
**Quality Gate**: Not all candidates become memories. OpenCode Working Memory rejects:
87
87
- Git commit hashes (e.g., `abc1234`)
88
88
- Raw errors (e.g., `Error: something failed`)
89
89
- Stack traces
90
90
- Path-heavy facts (>50% paths)
91
91
- Very short text (<20 chars)
92
92
93
-
### Deduplication
93
+
### Consolidation and Deduplication
94
94
95
-
Memories are deduplicated using **canonical text matching**:
-`session.compacted`: Promote session decisions to workspace memory
235
242
-`session.deleted`: Clean up session state files
236
243
244
+
Promotion uses accounting results from workspace memory normalization. Pending memories that are kept are promoted; duplicate memories are absorbed; obsolete same-topic memories are superseded; stale or over-capacity compaction memories are rejected.
245
+
237
246
## Quality Guarantees
238
247
239
248
### No False Positive Errors
@@ -349,9 +358,9 @@ Modify `src/extractors.ts` to add new extraction patterns.
349
358
350
359
### Memory V1 to V2
351
360
352
-
The plugin automatically migrates old format files to the new three-layer architecture. No manual intervention needed.
361
+
OpenCode Working Memory automatically migrates old format files to the new three-layer architecture. No manual intervention needed.
0 commit comments