Bundle
dsh-memory-porter
记忆搬家:把 Claude / ChatGPT / Claude Code 的历史记忆搬进 DeepSeek Harness —— 带逐字证据,逐条批准 | Move your Claude & ChatGPT memory into DeepSeek Harness (DSH), with verbatim evidence and one-by-one approval
- Source
- Shiye-10Pages
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 10 days ago
Readme
# 记忆搬家 · dsh-memory-porter
> 号可以没,记忆不能没。
把你锁在 Claude / ChatGPT 账号里的历史记忆,搬进 **DeepSeek Harness**——带逐字证据,你逐条批准。
[English](README.en.md) · 社区插件,与 DeepSeek 官方无关。

---
## 这个插件解决什么
DSH 生态里已经有很多记忆插件,它们解决的是**「从今天起记住」**。
没有一个解决:**「我过去两年在 Claude 和 ChatGPT 里攒的东西怎么办」**。
- **Claude 账号说没就没**——而你所有让它「懂你」的积累,全锁在那个账号里
- **换平台 = 从零开始**——两年几千次对话里的偏好、结论、踩过的坑,一次清零
- 少有人知道:**本机 `~/.claude/projects` 的对话记录,在账号没了之后依然在你硬盘上**
记忆搬家把这些捞出来,提炼成带**逐字原文证据**的记忆,经你确认后交给 DSH 随时召回。
> 已经装了别的记忆插件?**它们负责「从今天起记住」,本插件负责「把过去搬进来」**——
> 支持导出为通用 Markdown / JSONL,直接喂给它们。
## 支持的来源
| 来源 | 通道 | 是否需要导出 | 验证状态 |
|---|---|---|---|
| **Claude 云端记忆** | 导出内 `memories.json` | 需要导出 | ✅ 真实导出验过(**零 token**,已是结论无需提纯) |
| **Claude Code**(本机) | 直读 `~/.claude/projects` | 免导出,一键扫描 | ✅ 真实数据验过 |
| **claude.ai**(网页 / 桌面) | 账号级官方导出 `conversations.json` | 需要导出 | ✅ 真实导出验过 |
| **ChatGPT**(网页 / 桌面) | 账号级官方导出 `conversations.json` | 需要导出 | ⚠️ **按官方格式实现,尚未用真实导出验证过** |
> ⚠️ **关于 ChatGPT 连接器**:解析逻辑是按 ChatGPT 官方导出格式(树状 `mapping`)写的,
> 也有单元测试覆盖,但**作者手上还没有真实的 ChatGPT 导出文件可供端到端验证**。
> 如果你的导出解析失败或结果不对,请提 issue 并附上格式说明(**不要附带你的对话内容**),
> 会尽快修。不想含糊其辞,所以在这里写明。
## 三步拿到你的导出
搬家最主要的入口依赖一份官方导出。摩擦全在这一步,所以写清楚:
**Claude(claude.ai)**
1. 网页登录 → 左下角头像 → **Settings** → **Privacy** → **Export data**
2. 等邮件(几小时到一天),点邮件里的链接下载 zip
3. 解压,把**文件夹路径**填进面板「搬家」页第一栏
解压后你会看到 `conversations.json`(历史对话)和 **`memories.json`**(Claude 记着的关于你的一切)。
后者是零成本通道,导入瞬间完成。
**ChatGPT**
1. 网页登录 → 右上角头像 → **Settings** → **Data controls** → **Export data**
2. 等邮件,下载 zip
3. 解压,把文件夹路径填进同一栏
> 只想先看看不用等邮件?装完直接点「看看本机还剩多少」——
> `~/.claude/projects` 里的 Claude Code 对话**在账号没了之后依然在你硬盘上**,免导出直接读。
## 安装
```bash
dsh plugin --profile web add dsh-memory-porter
```
**不需要配任何 API Key**——提纯直接借用你在 DSH 里已经配好的模型。
装好后**侧边栏底部**(「设置」齿轮上面那一排)多一行 📦 记忆搬家,点开就是面板:
**搬家 / 待确认 / 记忆库** 三页。会话头部也有一个小徽章作为次要入口。
模型能直接调 `recall_memory` 工具召回,检索全程本地(BM25,不需要嵌入模型)。
## 三条硬规矩
1. **无逐字证据不入库。** 每条记忆必须带原文证据,缺失即拒收——而且证据是**由代码回原文逐字核对**的,不是信模型自述。核不上就丢,被挡下的条数如实告诉你。
证据还分两级:逐字出自**你自己的发言**才走常规入库;只在 **AI 的回复**里找到的(多半是 AI 在准确复述你)仍然收,但**一律推进待确认**并注明——它是归纳,不是你的原话。
2. **AI 推断的绝不自动入库。** Claude 云端记忆这类模型归纳出来的东西,全部进待确认队列。
3. **数据在你自己机器上。** 记忆库是 `~/.dsh/memory-porter/` 下的 JSONL,无遥测、无账号、无云同步。
## 什么会自动入库,什么要你看一眼 —— 你自己定
每条记忆都挂着**入库依据**,面板和导出里都能看到,不做黑箱:
| 依据 | 含义 |
|---|---|
| 自动入库 · 置信达标 | 来源可信、证据扎实,直接进库 |
| 自动入库 · 多源印证 | 同一结论在多处说过,已合并并提升置信度 |
| 待确认 · AI 推断 | 来自 Claude 云端记忆,是模型的归纳而非你的原话 |
| 待确认 · 高影响 | 动到了钱、方向或资源 |
| 待确认 · 与已有记忆冲突 | 和库里旧结论同主题但不同,**谁对由你判,插件不替你决定** |
| 待确认 · 置信不足 | 低于阈值 |
松紧三档,`cordis.yml` 里改 `reviewMode`,面板上也能切:
```yaml
- id: memory-porter
name: dsh-memory-porter
config:
reviewMode: balanced # strict | balanced | trusting
scanLimit: 100 # 单次扫描的会话数上限,也是成本闸
```
- **`strict` 逐条确认**:一条都不自动入库。最稳,队列会长。
- **`balanced` 默认**:只有上表里「待确认」那四类才拦你。
- **`trusting` 省事**:只有 AI 推断和冲突才拦你。
> 说明白一件事:默认档下,**Claude / ChatGPT 网页导出的记忆置信度正好卡在自动入库的线上**
> (来源可信 0.60 × LLM 抽取 0.75 = 0.45,等于阈值,判据是「小于才拦」)。
> 这是有意的取舍——搬家的量通常很大,全塞进队列没人看得完。想更保守就切 `strict`。
## 花多少钱
提纯要把对话原文发给模型,**开跑前面板先给你预估**,确认了才跑。
实测参考:agentic 会话约 1.3 万 tokens/个。按默认上限 100 个会话算,
一次搬家约 **¥2.5(空闲时段)~ ¥5(高峰时段)**。普通网页聊天会短很多。
`memories.json` 走的是零成本通道——它已经是结论,不过模型。
> ⚠️ 但**提纯会把对话原文发给你在 DSH 里配置的模型服务商**——这一步会出本机。
> 扫描、检索、导出全程本地。开跑前面板会先给出预估 token 与费用。
## 许可证
MIT
Install
dsh plugin --profile web add github:Shiye-10Pages/dsh-memory-porter
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-memory-porter from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.