coding-agents
vectorize-io/hindsightHindsight:会学习的 Agent 长期记忆系统,自动召回/保存、知识页、深度反思与按仓库隔离的记忆银行。
把你在 Claude / ChatGPT 里已有的历史搬进 DSH:Claude 导出包里的 memories.json 零 token 瞬时入库,本机 Claude Code 记录免导出直读,历史对话用你在 DSH 里已配好的模型提纯。每条记忆都带由代码回原文核对的逐字证据——转述会被丢弃并计数,只在 AI 回复里找到的证据一律转人工确认而非直接入库。
Accounts come and go. Your memory shouldn't.
Bring the history locked inside your Claude / ChatGPT accounts into DeepSeek Harness — every memory carries verbatim evidence, and you approve them one by one.
中文 · Community plugin, not affiliated with DeepSeek.
The DSH ecosystem already has plenty of memory plugins. They all solve "remember from today onward."
None of them solve: "what happens to the two years I already spent in Claude and ChatGPT?"
~/.claude/projects stay on
your own disk regardless of what happens to the account.Memory Porter pulls that history out, distills it into memories backed by verbatim evidence, and hands them to DSH for recall once you approve them.
Already running another memory plugin? They handle "remember from today", this handles "bring the past in" — export to plain Markdown / JSONL and feed it straight to them.
| Source | Channel | Export needed | Verification |
|---|---|---|---|
| Claude cloud memory | memories.json inside the export | Yes | ✅ Verified on a real export (zero tokens — already distilled) |
| Claude Code (local) | Reads ~/.claude/projects directly | No | ✅ Verified on real data |
| claude.ai (web / desktop) | Account export conversations.json | Yes | ✅ Verified on a real export |
| ChatGPT (web / desktop) | Account export conversations.json | Yes | ⚠️ Implemented to the documented format, not yet verified against a real export |
⚠️ About the ChatGPT connector: the parser follows ChatGPT's documented export shape (the tree-structured
mapping) and is covered by unit tests, but the author does not yet have a real ChatGPT export to verify end to end. If yours fails to parse or the result looks wrong, please open an issue describing the shape — do not attach your conversation content. Saying so plainly rather than letting you find out the hard way.
The main path depends on an official export, and that is where all the friction is:
Claude (claude.ai)
Inside you will find conversations.json (your history) and memories.json — everything
Claude remembers about you. The latter is the zero-cost path and imports instantly.
ChatGPT
Don't want to wait for an email? After installing, just click "See what is still here" — your Claude Code conversations under
~/.claude/projectsare read directly, no export needed.
dsh plugin --profile web add dsh-memory-porter
No API key required — distillation borrows the model you already configured in DSH.
After installing, a 📦 Memory Porter row appears at the bottom of the sidebar (just above
the Settings gear). It opens the panel: Port / Pending / Library. A small badge in the
conversation header serves as a secondary entry point. The model can call the recall_memory
tool directly; retrieval is fully local (BM25, no embedding model needed).
~/.dsh/memory-porter/ —
no telemetry, no account, no cloud sync.Every memory carries the reason it got in. Visible in the panel and in exports, no black box:
| Reason | Meaning |
|---|---|
| Auto · confidence met | Trustworthy source, solid evidence — stored directly |
| Auto · corroborated | The same conclusion appears in several places; merged, confidence raised |
| Review · AI-inferred | From Claude's cloud memory — the model's summary, not your words |
| Review · high impact | Touches money, direction, or resources |
| Review · conflicts | Same topic as an existing memory but a different conclusion — you decide which holds, the plugin won't |
| Review · low confidence | Below the threshold |
Three settings, via reviewMode in cordis.yml or the panel:
- id: memory-porter
name: dsh-memory-porter
config:
reviewMode: balanced # strict | balanced | trusting
scanLimit: 100 # conversations per scan — this is a cost cap, not a perf cap
strict — nothing lands without approval. Safest; the queue gets long.balanced (default) — only the four "Review" rows above stop you.trusting — only AI-inferred items and conflicts stop you.One thing stated plainly: on the default setting, memories from Claude / ChatGPT web exports land exactly on the auto-store threshold (source reliability 0.60 × LLM extraction 0.75 = 0.45, equal to the cutoff, and the test is "below the line gets held"). That is a deliberate trade-off — a port is usually large, and nobody reads a queue of hundreds. Switch to
strictif you want to be more careful.
Distillation sends your conversation text to a model, so the panel estimates the cost before anything runs, and only proceeds once you confirm.
Measured reference: agentic coding sessions run about 13k tokens each. At the default cap of 100 conversations, one port costs roughly ¥2.5 (off-peak) to ¥5 (peak). Ordinary web chats are much shorter.
memories.json uses the zero-cost path — it is already distilled and never touches a model.
⚠️ Distillation is the one step that leaves your machine: conversation text goes to whichever provider you configured in DSH. Scanning, retrieval, review, and export are entirely local.
MIT