Skip to main content
For setup, configuration, and everyday commands, see Personal Memory. This page explains the internal mechanisms: the record model, formation paths, task matching, and how correction and forgetting work. Personal Memory turns the long-term requirements you state explicitly and the collaboration experiences that can be reused into normalized records. Each record keeps its owner, scope, applicable conditions, source, and lifecycle, and the system only provides it in related tasks. This design satisfies four product requirements at once: records are traceable, content is correctable, context has boundaries, and a plugin failure never blocks the current work.

Core components

Record model

A Personal Memory Record is made of its content and its governance information: The Provider stores the structured state that Comet maintains automatically, shared by the CLI, Dashboard, Skill, and Hook. The user-readable Markdown is for viewing and management, and it can also be used to rebuild state after index corruption.

Record formation paths

Set explicitly by you

user.signal represents a long-term preference, correction, or forgetting that you initiate. The coordinator first writes the event to the Journal, then completes the deterministic handling synchronously. A clear long-term requirement can go straight to proven, because the current user is the authoritative source for this kind of content. The system also recognizes one-off phrasing such as “don’t commit this time”; that requirement keeps constraining the current task but is not written to long-term memory.

Inferred candidates from the system

Task completion, verification, Review, and context-application results can form inferred candidates. Reflection converts the related Personal Episodes into Learning Deltas (memory change instructions): Consolidation merges near-duplicate records, keeps the more specific selectors (applicable conditions), and attaches new evidence to existing records. System-inferred content starts in trial and joins related tasks at lower priority; after one successful application it can be promoted to proven.

What the Experience Journal does

The Experience Journal is an append-only, replayable machine event log with three responsibilities:
  1. Deduplicate with stable eventIds so retries do not produce repeated learning.
  2. Correlate events from recovery, re-verification, and cross-session continuation with episodeId.
  3. Keep the replay capability after a background Reflection failure, without blocking the current workflow.
The Journal stores structured context and evidence references, not full transcripts, full diffs, raw logs, or hidden reasoning. Old Personal Episodes that finished Consolidation can be compressed; records still in use keep the necessary evidence chain.

Task matching

The Provider first returns the available candidates, and Context Director then runs layered matching against the current request:
Ranking also considers the following:
  • proven outranks trial.
  • What you set explicitly outranks what the system inferred.
  • Precise project and path selectors outrank broad global content.
  • A recent successful application improves later ranking.
  • A correction, or taking part in a failure, lowers ranking and triggers a later Reflection.
  • superseded records never enter task context.
Your current requirements, system constraints, and project policies always have higher priority. Personal Memory only provides collaboration context; it never changes the system permission boundaries.

Progressive context

Comet controls how much context gets injected by providing it in layers:
  1. Key Core Profile entries can enter the context in full.
  2. A few directly related, stable Collaboration Policies can enter in full.
  3. Other relevant candidates enter the Context Manifest first.
  4. The Agent expands the content, source, and verification it needs by stable ID.
The Context Manifest is a slim index. For each candidate it provides a title, summary, stable ID, and whyApplied. whyApplied comes from the real match conditions, such as “the current project matches”, “the current path matches”, “you set this explicitly”, or “it was applied successfully recently”. The character budget limits only the content injected in one task. A saved record shows up in the context or the Manifest only when it hits the current conditions.

Application feedback

When Context Director provides a record, it creates an application record. After the task, one of these results can be written: The retrieval hit rate measures relevance; application results measure real task value. Both kinds of information drive later ranking and the lifecycle.

Correction, forgetting, and replay

A correction creates an updated normalized record and marks the conflicting old version superseded. System-inferred content can never overwrite content you set explicitly. Forgetting writes a tombstone. The tombstone is stored separately from the lifecycle, so replaying historical events can still recognize content you already withdrew. forget keeps the rollback capability by default; --permanent performs a permanent deletion. When an explicit operation fails, the Provider keeps the original state and returns the actual error.

Local and Remote Providers

The Personal Memory domain accesses the Provider through one status / query / apply contract.

Local Provider

  • Keeps a user-readable profile.md and project records.
  • The machine index can be rebuilt after an upgrade or corruption.
  • Identifies the same repository with a stable repository identity.
  • The main workspace and linked worktrees share project-scoped Personal Memory.
  • Different repositories are isolated from each other.

Remote Provider

  • Uses the same versioned Provider contract as Local.
  • Tokens are supplied through environment variables only.
  • Once Remote is enabled, Local is no longer read at the same time.
  • A Remote failure returns the actual state and does not read Local data.
Project configuration can control automatic learning and task retrieval separately:
Turning off learning stops new records from forming and keeps existing data. Turning off retrieval stops memory from being provided to tasks, while the Dashboard and explicit management operations stay available.

Failure isolation

Return to Personal Memory, or continue with Agent Learning Loop.
Last modified on September 3, 2026