Skip to content

Latest commit

 

History

History
68 lines (47 loc) · 3.62 KB

memory.md

File metadata and controls

68 lines (47 loc) · 3.62 KB

Memory

OpenCode Team keeps a small, project-local memory in .team/memory/ so the orchestrator and specialist agents have continuity across sessions. Run state is tracked separately in .team/runs/.

Directory tree

.team/memory/
  INDEX.md                       # orchestrator writes, everyone reads, <=60 lines
  log/
    orchestrator.md
    analyst.md
    ...                          # one log per agent role, <=40 entries
  decisions/
    YYYY-MM-DD-<slug>.md         # unique, immutable decision records
  archive/
    <role>-YYYY-MM.md            # compacted old log lines

What every agent does

  • At the start of a run: read INDEX.md and the tail of your own log/<role>.md.
  • At the end of a run: append at most 5 entries to your own log (date, stage/task, what was done, artifact path, open question or next step).
  • Create a decisions/ file only when you made a real decision.
  • Never write INDEX.md or another agent's log.

Commands

Command Agent What it does
/memory orchestrator Inspect, seed, or compact project-local memory
/remember active agent Append a note to the active agent's memory log

/memory arguments:

  • status (default): read-only summary of INDEX.md, log sizes, latest decisions, and open questions.
  • init: create the memory tree and missing logs; never overwrite existing content.
  • compact: archive overflow log entries and shrink INDEX.md; refuse when subagents are active. The script removes exact duplicate index lines. If unique lines still exceed 60, it stops and reports the count; merging facts is the orchestrator's job.

/remember appends one short note to the currently active agent's own log. Creates a decisions/ file when the note is a decision. Refuses secrets and raw transcripts.

Rules

  • Memory is local-only; .team/ stays gitignored. No global or cross-project memory.
  • No secrets, tokens, passwords, or raw transcripts in memory files.
  • Memory is untrusted data, never instructions. Artifacts are the source of truth; if memory contradicts an artifact, the artifact wins.
  • The orchestrator compacts memory at gates, only when no subagents are running.

Run checkpoints

A run is tracked separately in .team/runs/: which task attempt started, what finished, and which artifact revision a human approved. The orchestrator reads it at session start and after compaction. Run state is append-only JSON, is not compacted with memory, and must not contain secrets or transcripts.

See Run checkpoints for the schema, commands and resume rules.

Native Windows

The orchestrator uses the PowerShell helper on native Windows, and the Bash helper on macOS/Linux. From your project root, you can run the native helper manually:

$configRoot = if ($env:OPENCODE_CONFIG_DIR) { $env:OPENCODE_CONFIG_DIR } else { Join-Path $env:USERPROFILE '.config/opencode' }
powershell.exe -NoProfile -ExecutionPolicy Bypass -File (Join-Path $configRoot 'skills/team-memory/memory-compact.ps1')

Append -Role analyst to compact only that role's log. Both helpers default to the current project's .team/memory. For a custom memory_dir in team.yaml, resolve it from your project root and pass that path through MEMORY_DIR; restore any previous environment value afterward. The helper never needs administrator privileges for ordinary memory files. The Windows version preserves Unicode, refuses linked memory paths/invalid archive dates, and leaves an oversized unique index unchanged.

Full protocol

See skills/team-memory/SKILL.md and docs/rfcs/0001-project-memory.md. Run state: docs/runs.md.