dsh-plugin-mnemosyne
Mnemosyne - an error-memory plugin for DeepSeek Harness that learns from the agent's own mistakes and blocks recurring ones
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 25, 2026
- Updated
- Aug 25, 2026
Introduction
🧠 Mnemosyne — an error-memory plugin for DeepSeek Harness
"Don't step on the same rake twice. And if you do — at least make sure it doesn't happen a third time."
Mnemosyne is a plugin for DeepSeek Harness that remembers your agent's mistakes and refuses to let it repeat them. It learns from your own screw-ups: catches an error → remembers it → comes up with a fix → simply won't let it happen again.
Why you want this
Agents are people too — they trip over the same things. Wrong path, forgotten argument, a drive that doesn't exist. Mnemosyne watches over this and turns every stumble into a lesson: it records the error, writes the remedy and — the important part — suggests the actual fix, so the agent can just keep going.
This is not "yet another logger". This is a guard dog that actually steps in: a repeated failing call simply never executes.
How it works
- Catches. The plugin listens to tool results (
tools/result) and agent errors (agent/error). A call fails — it already knows. - Remembers. Every error becomes a signature (
tool :: category :: message) with a repeat counter. - Figures out the fix. On the second occurrence an automatic remedy is written: file errors → "check the path", schema errors → "validate arguments", and so on. If an LLM is configured, the plugin asks the model for a precise fix.
- Suggests the correction. Saying "check the path" is lazy. Mnemosyne says what exactly to fix. It spots a missing
M:\drive? It offersD:\and shows you the corrected command, ready to copy. - Blocks the repeat. Same tool, same arguments — the call is intercepted before dispatch. The agent gets an explanation and a fix instead of another error.
- Learns from success. Once the agent finally nails it, the lesson flips to
fixed("the remedy worked").
Feature list
| Feature | What it does |
|---|---|
| 🎯 Auto-learning | catches, remembers, classifies (fs / schema / parse / timeout / guard / runtime) |
| 🩹 Auto-remedy | a recipe for every repeat + a concrete fix (a ready-to-use command) |
| 🛡️ Guard | a repeated failing call is blocked before it runs |
| ⏱️ Time window | only blocks recent repeats (5 minutes by default) |
| 🕊️ Amnesty | after 3 blocks the guard backs off — it won't choke a tool forever |
| 🤖 LLM remedies | the model writes the fix (when a provider is configured), otherwise a template |
| 💾 Persistence | lessons survive Harness restarts |
| 🧹 Rules | /mnemosyne forbid <tool> / allow — manual bans |
| 📊 Reports | /mnemosyne status and /mnemosyne report — stats and top lessons |
| 🖥️ Live panel | a card in the Run view: counters, categories, recent blocks |
Install
Drop src/host.js and src/client.js into your project and wire them in via an overlay:
# cordis.yml
- insert:
- id: mnemosyne
name: './src/host.js'
config: {}
pnpm dsh web --patch ./cordis.yml
The panel shows up in the Run card and the /mnemosyne command becomes available in chat.
Commands
/mnemosyne status — list lessons (error + remedy + fix)
/mnemosyne report — summary: categories, top lessons, blocks, timeline
/mnemosyne forbid <tool> — ban a tool entirely
/mnemosyne allow <tool> — lift the ban
/mnemosyne clear — wipe the memory
The model also gets mnemosyne_status and mnemosyne_learn tools.
Live example
$ Get-Content "M:\autofix\data.txt"
→ Cannot find drive. A drive with the name 'M' does not exist.
$ Get-Content "M:\autofix\data.txt" # again
→ Mnemosyne remembered the lesson: recurring + remedy
$ Get-Content "M:\autofix\data.txt" # third time
→ ⛔ Mnemosyne: blocked — the same failing call to 'pwsh' recurs (2x).
Suggested fix: Replace M:\ with D:\ in the command — e.g. Get-Content "D:\autofix\data.txt"
The agent copies the fix, runs it successfully — and the lesson closes as fixed.
Under the hood
- Host (
src/host.js) — the brain: lesson registry, classifier, autofix, guard, persistence, command, RPC. - Client (
src/client.js) — a live browser panel (React, no JSX). - Plain JavaScript, no build step — a stock Cordis plugin for Harness.
License
MIT — take it, tweak it, share it. If you build something cool on top of it, tell us!
Made for DeepSeek Harness. Questions, ideas, bugs — Issues are welcome.