dsh-fish-memory: setup, recall test and limits
The distinctive part of dsh-fish-memory is not how much it remembers, but that it forgets. Each memory carries time and freshness; frequently used entries stay, unused ones fade. Personas, preferences, and agreements can be marked as long-term facts that skip decay.
The problem: compaction erases the beginning
Long sessions lose early content the moment they are compacted. Context windows are finite and compaction is unavoidable; ordinary memory plugins store content but do not decide what is still worth keeping.
dsh-fish-memory gives memory a lifecycle. It selects worthwhile content by turn, recalls by evidence and freshness when needed, and lets low-value entries fade so the store does not become a landfill (source).
It solves continuity between sessions, not team knowledge management. The boundary matters: one is personal long-term conversation, the other requires permissions, audit, and consistency.
Three concepts: entry, freshness, long-term fact
Understand three concepts and the configuration makes sense.
| Concept | Role | What it affects |
|---|---|---|
| Memory entry | One recallable item | Recall scope and answer detail |
| Freshness | Current validity of an entry | Selection and fading |
| Long-term fact | Non-expiring memory | Persona, preferences, agreements |
The memory entry is the unit, and freshness is the decay mechanism. Each entry carries time and source; recall ranks by relevance and freshness. Older, less-used entries score lower; recall or confirmation can raise freshness. It is not simply "newer is better" but "more used is more important."
Long-term facts are manual exemptions. Personas, preferences, and agreements do not decay; but exemption is not permanent correctness, and stale agreements still need manual updates.
Install and enable
Installation is the normal plugin flow; enabling is per session.
- Open Settings, Plugin Market, search dsh-fish-memory, verify owner and source, then install; or use dsh plugin --profile web add.
- Restart so the plugin registers during startup.
- Open a new session and enable memory there; an old session does not reload.
- Open the memory list and confirm the panel is visible and the session is enabled.
- Send a message with a personal preference as the first recallable entry.
Enabling is per session, not global. Different sessions can have different memory states; assuming otherwise leads to "no memory in the new session."
Verify with one session first. Multiple sessions at once mix recall results and make it harder to tell whether the plugin works.
Parameters: decay, recall, selection
The goal is to remember longer or forget faster, not to maximize every value.
- Decay speed: faster fades old memories quickly for short projects; slower keeps more history for long companionship.
- Recall count: more entries crowd the context; start small and adjust by answer quality.
- Selection cadence: how often to pick content worth keeping; too frequent stores noise, too sparse misses key details.
- Long-term facts: mark only genuinely stable content, or temporary decisions become permanent.
Tune recall count before decay. Recall affects answer quality directly, while decay affects long-term retention; the reverse order makes attribution hard.
Change one parameter at a time. Changing decay and recall together makes results unattributable; keep a change record for rollback.
Recall test: did it really remember?
A correct answer is not proof of recall. The model may infer from current context or guess; check evidence.
- Pick a detail that appeared only in an earlier session. A naming decision, a preference, or an agreement.
- Ask a related question in a new session without mentioning the old session; see whether the detail appears.
- Check the last recall record. The corresponding entry should appear; without it, the model inferred or guessed.
- Run a control: disable memory and ask again; a clear drop proves the plugin mattered.
The recall record is the hardest evidence. Answer and record must both match; the answer alone can be misled by common knowledge.
Use low-common-knowledge details. A fact the model already knows cannot distinguish memory from knowledge; choose something only you and the model share.
Delete, backup, migrate
Memory data is plain JSON with automatic backups before changes. That makes it readable and portable, and also means no trash bin.
- Delete one entry: remove it from the memory list and confirm the deletion record; fading is not deletion.
- Back up: the plugin backs up before changes, but copy important milestones elsewhere manually.
- Migrate: copy the JSON file to the new machine and confirm paths before starting.
- Import an old archive: back up the current store first to avoid overwriting it.
Fading and deletion are different. A faded entry may still be recalled; deletion removes it. Decide which one you want before cleaning.
Plain text is auditable. You can open the JSON and inspect entries and timestamps; the downside is that manual edits can break the structure, so back up first.
Compared with dsh-memory and mnemon
All three remember across sessions, with different priorities.
| Plugin | Focus | Best for |
|---|---|---|
| dsh-fish-memory | Long-term memory with decay | Personal long conversations |
| dsh-memory | General memory storage | Stable basic memory needs |
| mnemon | Memory agent and organization | Structured organization and retrieval |
The advantage of fish-memory is forgetting, so do not install all three. The store does not grow without bound and recall quality holds over time; the cost is parameter tuning and unsuitability for strong consistency. Multiple memory plugins inject at once and interfere; choose one as the primary store and disable the rest.
Poor fits
dsh-fish-memory is for personal sessions, not a team knowledge base.
- Multi-user sharing and permission isolation: memory must be isolated per user, and the plugin does not provide an account system.
- Compliance retention and audit: it needs immutable, traceable storage; local JSON does not qualify. Strongly consistent knowledge bases with versions and conflict handling also need a dedicated solution.
Clear boundaries prevent misuse. Treating session memory as a knowledge base ends in "it forgets" or "it remembers wrong," which blames the tool for the wrong job.
Next steps
Enable memory in one session and verify recall before adopting it. To compare memory plugins, read What dsh memory plugins exist. For the division between memory and session history, read Memory plugin vs session history. For the second round of plugins, read Memory plugins round two.
Sources: dsh-fish-memory plugin page, DeepSeek Harness docs, dsh CLI README
FAQ
dsh-fish-memory adds a timestamp and freshness to each memory, so entries fade with time and use. Personas, preferences, and agreements can be marked as long-term facts that never expire.
dsh-fish-memory stores data locally as plain JSON and backs it up before changes; the plugin description mentions no remote upload. Use local files for backup and migration.
Ask about a detail that only appeared in an earlier session, then compare the answer with the plugin memory list and the last recall record. The two must agree before you call it a real recall.
dsh-fish-memory is a poor fit for a strongly consistent, auditable team knowledge base. It is built for session-level personal memory with decay, so shared, permissioned, or compliance-bound use needs a dedicated store.
Related Terms
- dsh-fish-memory
- dsh-fish-memory is a long-term memory plugin for DeepSeek Harness whose entries carry time and freshness, with long-term facts that never expire.— dsh-fish-memory plugin page
- freshness
- Freshness measures how valid a memory currently is in dsh-fish-memory; it decays over time and may rise when a memory is recalled or used.— dsh-fish-memory plugin page
- long-term fact
- A long-term fact is a memory marked as non-expiring, used for personas, preferences, and agreements, and excluded from normal decay.— dsh-fish-memory plugin page
- recall
- Recall is the process of selecting relevant entries from the memory store before answering, ranked by evidence and freshness, then injected into context.— dsh-fish-memory plugin page
Sources
- dsh-fish-memory plugin page· dsh-plugin.org
- DeepSeek Harness docs· deepseek-harness
- dsh CLI README· deepseek-ai