Repository navigation
Replies: 7 comments
|
+1 this. I would also like if there's a option to sync memory between different machines, like laptop or homelab. I right now have a manual agent memory sync via git repo, which works, but is quite rough. If t3 implements this, working on same project across different machines will be much easier |
|
+1, and a data point from building this. In a T3 fork I added a memory toolkit to the existing
In practice the gain is the one described above: a fresh thread, or a switch from Claude to Codex, recalls "how we run e2e here" instead of rediscovering it. If the direction is welcome, I'd propose a deliberately small first PR:
Syncing across machines (as @chiragmRoado asked) could come later through existing environment sync, not in the first PR. @juliusmarminge @t3dotgg, would you approve that scope? Happy to adjust before writing it. |
|
I'd like to propose a deliberately small first step for this: file-based, provider-neutral, and built on the existing Scope (tools only):
It's one focused change: 14 files, mostly the notes service, the two tools and tests. I have it on a branch off current Questions before I open anything:
|
|
+1, this would be great to have. What would be nice to add is a way for memory to clean itself up. Agents will store duplicates, facts that go out of date, and entries that contradict each other. And a lot of corrections I give in chat never get stored at all, because the agent didn't think to call remember. Anthropic has a feature for exactly this in Claude Managed Agents, called dreaming. A scheduled job reads past sessions together with the current memory store. It picks up recurring mistakes and preferences, merges duplicates, and replaces stale or contradicted entries with the latest value. It writes the result to a new store and leaves the old one untouched, so you can review the changes or apply them automatically. Something similar would fit T3 well as an opt-in setting. Since T3 holds the chat history for every provider, it could dream across Claude, Codex and opencode threads alike. You'd pick the schedule and the model. T3 already has the scheduler, delegation to any provider, and the thread history, so most of the pieces exist. Changes should be reviewable and easy to undo, and it shouldn't silently delete something I wrote myself. Two other things that would be nice: a global scope for personal preferences that apply to every project, and threads that are already running picking up a correction on their next turn, not only new threads. |
|
Following up on my earlier comment, with a concrete offer. The memory toolkit I described is part of Zekra, a memory service I build and run. It already covers most of what this thread asks for:
I'm happy to go either way, whichever fits T3 better:
Option 2 could also be the long-term shape of option 1: a local default plus an optional remote backend behind the same three tools. If a maintainer can say which direction they'd accept, I'll start with a small first PR. |
|
+1 I’m particularly interested in the pluggable backend approach @fadymondy suggested. My use case is sharing persistent memory across Codex and other agents, multiple projects, and machines. I’d love to connect an existing memory provider like Hindsight or Mem0 rather than have T3 implement its own memory engine. Ideally, T3 would expose a lightweight, provider-agnostic memory interface, with local SQLite as the default and external backends as an option. |
|
NOTE: This comment was left by gpt-6.1-sol high on behalf of Dj Gilcrease. A deliberately small external implementation of this request is now released: Shared Project Memory v0.1.0. The full plugin announcement, evidence and limitations is in #23574. Install This requires the prototype host fork and does not imply upstream approval. Minimum host: djgilcrease/t3code This version uses atomic per-project snapshots and lexical AND matching, capped at 500 facts, twenty recalled entries and a 20,000-character retrieval budget. After actual source inspection and practical tests of both veqlite and RAG-lite, neither was adopted: storage rationale and experiments. There are no embeddings, model downloads or API charges. It intentionally does not implement the cross-machine sync, external memory-provider integration, dreaming/self-cleanup, semantic search or automatic deduplication discussed above. Separate environment/project records stay separate; export is paginated copyable JSON, with no import path. Disabling project access retains data for user inspection/export/delete. Clearing deletes entries and correction history and disables access. Plugin disable stops commands; removal deletes managed data. Existing exported copies and memory already recalled into a conversation cannot be withdrawn. Evidence includes green plugin CI on Linux/macOS/Windows, 34 combined-host focused tests, actual repository-URL install and lifecycle checks, normal packaged-worker loading of the published artifacts, public checksum verification, and Linux real-browser inspector/remember/correct/export/clear verification. Release assets and verification receipt include before/after captures. Native Electron/iOS/Android, Linux SEA, and live remote/tunnel/provider turns were not tested; the host PR's known inherited CI failure/queued jobs are disclosed in the full announcement rather than represented as green host CI. |
Uh oh!
There was an error while loading. Please reload this page.
Problem
Each provider keeps its own memory, or none at all. Claude Code reads
CLAUDE.md, and Codex readsAGENTS.md. Both are instruction files that are shared, committed, and loaded into every turn. Nothing provider-neutral survives a new thread. When you switch providers, or start a fresh thread in the same project, what an agent learned is gone. It might be how to run the e2e suite, the API that looks deprecated but isn't, or the decision you made three threads ago. You end up pasting the same context back in, or asking the agent to grow those instruction files.T3 Code already gives every provider the same
t3-codeMCP server, so there is one place to add this for all providers at once. Today that server has thread, project, preview, device, PR, and orchestrator tools, but nothing that persists notes (McpHttpServer.ts L718, McpInvocationContext.ts L11).I searched Ideas and open PRs for memory, remember and recall and found nothing overlapping. #6737 (a session notes panel) is the closest. It is scoped to a single session and written by the user, not the agent.
Proposed outcome
memoryMCP capability, off by default, gated by a setting that works exactly like Agent device access (enableAgentDeviceAccess), including the project override. When it is on, agents get three tools:memory_remembermemory_recall, lexical, with a bounded result count and character budgetmemory_forgetMemoryServiceholds the logic. The MCP handlers and the two RPCs (list and delete, for the settings UI) stay thin. Scheduled tasks and delegated agents use the same tools.Out of scope: automatic recall injected into prompts, global or cross-project memory, embeddings or semantic search, importing from
CLAUDE.mdandAGENTS.md, and syncing between environments. Each would be its own discussion if this lands.Decisions requested
t3-codeMCP server, opt-in and off by default?memory_recalland nothing is injected into prompts?Verification plan if approved
A working implementation on current
mainis on my fork, about 1.1k lines including tests and docs: SiavZ/t3codev2/agent-memory. I won't open a PR here unless this is approved, and I'm happy to reshape it to whatever scope you prefer.Written with Claude Opus 5.5 in Jcode.
All reactions