🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

忆泡记忆图 Eveneve-night/memory-bubble

DeepSeek Harness
Eveneve-night7 天前有提交已提供中文文档扫描:含敏感能力

把日常对话沉淀成可编辑的泡泡记忆图,随时带走

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Eveneve-night/memory-bubble
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · vision
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 38 处,展示前 35 条)
  • 读取本地文件
    interop/cli.mjs:55
    result = await client.call('import', { graph: JSON.parse(await readFile(args.file, 'utf8')), updateExisting: args.apply === true })
  • 读取本地文件
    interop/cli.mjs:61
    result = await client.call(args._[1], args.file ? JSON.parse(await readFile(args.file, 'utf8')) : JSON.parse(args.json || '{}'))
  • 写入本地文件
    interop/cli.mjs:67
    if (args.out) await writeFile(args.out, text, 'utf8')
  • 读取本地文件
    interop/client.mjs:22
    const descriptor = JSON.parse(await readFile(path.join(path.dirname(file), 'bridge.json'), 'utf8'))
  • 发起网络请求
    interop/client.mjs:39
    const response = await fetch(target, { method, headers: {
  • 执行外部命令来自配置/变量
    interop/dev/test-interop.mjs:22
    const child = spawn(command, args, { cwd: root, windowsHide: true })
  • 读取本地文件
    interop/dev/test-interop.mjs:79
    const graph = JSON.parse(await readFile(exported, 'utf8'))
  • 读取本地文件
    interop/dev/test-interop.mjs:86
    const payload = JSON.parse(await readFile(bundleFile, 'utf8'))
  • 读取本地文件
    interop/dev/test-interop.mjs:101
    const bundle = JSON.parse(await readFile(bundleFile, 'utf8'))
  • 读取本地文件
    interop/dev/test-interop.mjs:109
    const schema = JSON.parse(await readFile(path.join(root, 'schema', name), 'utf8'))
  • 执行外部命令来自配置/变量
    interop/dev/test-interop.mjs:115
    const child = spawn(process.execPath, ['interop/mcp-server.mjs', '--data', dataFile, '--session', 'mcp-test'], { cwd: root, windowsHide: true })
  • 读取本地文件
    interop/dev/test-interop.mjs:143
    assert.equal(init.result.serverInfo.version, JSON.parse(await readFile(path.join(root, 'plugin/package.json'), 'utf8')).version)
  • 删除本地文件递归
    interop/dev/test-interop.mjs:172
    await rm(tmp, { recursive: true, force: true })
  • 读取本地文件
    interop/lib.mjs:56
    const parsed = JSON.parse(await readFile(file, 'utf8'))
  • 写入本地文件
    interop/lib.mjs:71
    await mkdir(path.dirname(file), { recursive: true })
  • 写入本地文件
    interop/lib.mjs:73
    await writeFile(tmp, JSON.stringify(state, null, 1), 'utf8')
  • 写入本地文件
    interop/lib.mjs:75
    await copyFile(file, `${file}.bak`)
  • 写入本地文件
    interop/lib.mjs:79
    await rename(tmp, file)
  • 读取本地文件
    interop/lib.mjs:151
    const parsed = JSON.parse(await readFile(file, 'utf8'))
  • 读取本地文件
    interop/mcp-server.mjs:17
    const VERSION = JSON.parse(await readFile(new URL('../plugin/package.json', import.meta.url), 'utf8')).version
  • 读取本地文件
    plugin/dev/test-plugin.mjs:245
    const descriptor = JSON.parse(await readFile(path.join(profileDir, '.memory-bubble', 'bridge.json'), 'utf8'))
  • 发起网络请求
    plugin/dev/test-plugin.mjs:246
    assert.equal((await fetch(`${descriptor.url}/memory-bubble/api/health`)).status, 403)
  • 删除本地文件递归
    plugin/dev/test-plugin.mjs:376
    await rm(profileDir, { recursive: true, force: true })
  • 写入本地文件
    plugin/lib/bridge.js:41
    await writeFile(file, JSON.stringify({ url: `http://127.0.0.1:${server.address().port}`, token, pid: process.pid,
  • 删除本地文件
    plugin/lib/bridge.js:49
    await rm(file, { force: true })
  • 发起网络请求
    plugin/lib/client.js:161
    const response = await fetch(API + path, Object.assign({
  • 读取本地文件
    plugin/lib/store.js:19
    await access(target)
  • 写入本地文件
    plugin/lib/store.js:61
    await mkdir(path.dirname(file), { recursive: true })
  • 写入本地文件
    plugin/lib/store.js:65
    await mkdir(lock)
  • 写入本地文件
    plugin/lib/store.js:73
    await writeFile(path.join(lock, 'owner.json'), JSON.stringify({ pid: process.pid }), 'utf8')
  • 删除本地文件递归
    plugin/lib/store.js:74
    return () => rm(lock, { recursive: true })
  • 读取本地文件
    plugin/lib/store.js:82
    const raw = await readFile(candidate, 'utf8')
  • 写入本地文件
    plugin/lib/store.js:100
    await mkdir(dir, { recursive: true })
  • 写入本地文件
    plugin/lib/store.js:104
    await writeFile(tmp, payload, 'utf8')
  • 写入本地文件
    plugin/lib/store.js:106
    if (await exists(file)) await copyFile(file, `${file}.bak`)
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

忆泡:把 AI 日常对话沉淀成可管理的暖色记忆泡泡图(DeepSeek Harness 插件 + 离线可点原型)

README

由 DeepSeek 最新模型翻译生成
忆泡 Memory Bubble 把 AI 日常对话里沉淀的记忆,养成一张会呼吸的泡泡图——人看得见、管得住;AI 读得到、带得走。 忆泡是给「日常和 AI 聊天的人」用的记忆工具:每轮对话结束后,插件用你的默认模型自动总结出一条条记忆点,画成一张暖色泡泡图。泡泡大小 = 重要性(可手动改),离中心远近 = 出现频率;AI 每轮会收到一条稳定简报,所以它记得住你,而你不必把整段历史重复喂给它。 - 🫧 看得见:每个圆是一个记忆点,点开能改;连线是记忆之间的关系,冲突会亮红灯 - 🧠 带得走:一键导出 JSON / 记忆包,换聊天窗口、换模型、换设备都能继承;其他 AI 也能直接下载使用(v0.2) - ✂️ 可控上下文:稳定简报进上下文,托盘按需钉选,避免「聊到后面 AI 忘了前面」 - 🪟 暖色、像在泡泡里:奶油底、蜜桃气泡、三档语义缩放,深浅色跟随系统 默认中景视图 图上每颗泡泡都是真实交互:拖动滑杆改重要性会实时变大,点连线能看关系与冲突,Shift+点泡泡放进「本轮记忆托盘」。
展开完整文档(README 剩余 1 节)
忆泡 Memory Bubble

把 AI 日常对话里沉淀的记忆,养成一张会呼吸的泡泡图——人看得见、管得住;AI 读得到、带得走。

忆泡是给「日常和 AI 聊天的人」用的记忆工具:每轮对话结束后,插件用你的默认模型自动总结出一条条记忆点,画成一张暖色泡泡图。泡泡大小 = 重要性(可手动改),离中心远近 = 出现频率;AI 每轮会收到一条稳定简报,所以它记得住你,而你不必把整段历史重复喂给它。

- 🫧 看得见:每个圆是一个记忆点,点开能改;连线是记忆之间的关系,冲突会亮红灯
- 🧠 带得走:一键导出 JSON / 记忆包,换聊天窗口、换模型、换设备都能继承;其他 AI 也能直接下载使用(v0.2)
- ✂️ 可控上下文:稳定简报进上下文,托盘按需钉选,避免「聊到后面 AI 忘了前面」
- 🪟 暖色、像在泡泡里:奶油底、蜜桃气泡、三档语义缩放,深浅色跟随系统

默认中景视图

图上每颗泡泡都是真实交互:拖动滑杆改重要性会实时变大,点连线能看关系与冲突,Shift+点泡泡放进「本轮记忆托盘」。

三个入口

1. 零门槛体验(离线原型,无需安装)

- 在线试玩(GitHub Pages):<https://eveneve-night.github.io/memory-bubble/>
- 或直接下载 prototype/index.html,双击用 Chrome / Edge 打开(单文件、零依赖、不联网)
- 玩法:滚轮三档缩放 → 点泡泡看详情/改重要性 → 点连线看关系 → 搜索 → 托盘注入 → 刷新后数据仍在(localStorage)

2. 在 DeepSeek Harness 里使用(插件)

先下载:插件包 v0.2.1(解压即得 dsh-memory-bubble/ 目录)

方式 A:本地安装(当前版本)

git clone https://github.com/Eveneve-night/memory-bubble.git
cd memory-bubble

在 DSH 的 profile 目录里把它加进依赖,并在 loader(cordis.yml)插入一行 memory-bubble:

profile 目录(桌面版默认在 ~/.dsh/profiles/desktop)
pnpm add "file:<path-to-clone>/plugin"

cordis.yml 的 loader 列表里加入(或让 plugin_manager 安装 bundle)
- id: memory-bubble
name: dsh-memory-bubble

刷新 Web GUI 后,左栏出现「忆泡」图标即安装成功。

方式 B:复制进 node_modules

把 plugin/ 复制为 <profile>/node_modules/dsh-memory-bubble,再在 cordis.yml 里插入上面那行。

npm 包发布后会补上 plugin_manager install_bundle 的一行安装方式(bundle 自带 cordis.patch.yml,不需要手改 loader)。

安装后的入口:左栏「忆泡」图标(整幅记忆图)、输入框左侧药丸(当前会话记忆数)、设置页「忆泡」分区(读取对话并自动生成开关、每轮最多生成条数、记忆总量上限、去抖间隔、注入方式、导入导出)。

3. 其他 AI 也要用?走互操作层(v0.2)

忆泡的记忆不是 DSH 专属。同一份 state.json 有四条通道可以给别的 AI 用,详见 INTEROP.md:

先下载:互操作包 v0.2.1(MCP 服务器 + CLI + schema + 使用说明,解压后直接 node interop/cli.mjs --help)

打包一份记忆包(图 + 简报 + 便携提示词 + 工具清单)
node interop/cli.mjs bundle --out bundle.json

或者起一个 MCP 服务器,交给 Claude Desktop / Cursor
node interop/mcp-server.mjs --data "<profile>/.memory-bubble/state.json"

- MCP:5 个工具(search / brief / remember / link / forget)、3 个资源、1 个提示词,initialize 自带跨 AI 使用说明
- CLI:list / search / brief / export / import / bundle / remember / forget,零依赖
- HTTP(DSH 运行中):/memory-bubble/api/ai/bundle、/ai/prompt、/interop
- 记忆包 memory-bubble-bundle v1:贴进别的 AI 的 system prompt 即可「继承」你的记忆

它在 AI 那边怎么工作

你的每一轮对话 ├─ session/event 折叠(只认真实用户消息,跳过运行时上下文/技能注入) ├─ turn/end 去抖(默认 15s,同会话≥90s)→ 调默认模型抽取 JSON ├─ 合并入图:近似判重、追加时效、更新频率(整批可撤销) ├─ 稳定简报:固定顺序、动态尾注,同样的记忆产出同样的前缀(保 KV 缓存) └─ 下一轮注入:systemPrompt.section(primary)或 agent/pre-step(fallback)

AI 也能主动调用 5 个工具:memory_brief(读简报)、memory_search(检索)、memory_remember(记一条)、memory_link(连线)、memory_forget(遗忘/降权)。

数据与隐私

- 全部保存在本机 <profile>/.memory-bubble/state.json(临时文件 + .bak 原子写;导出在 exports/)
- 不联网、不遥测;「总结」走你已配置的默认模型(llm.stream)
- 抽取只发送最近窗口(默认 6000 字符),不发送整段历史
- 导出格式见 schema/memory-bubble-v1.schema.json,记忆包见 schema/memory-bubble-bundle-v1.schema.json;其他 AI/宿主可按此读写记忆
- 跨 AI 读取默认只读(MCP --read-only),写入需显式操作

目录

docs/ 设计与可行性文档(DESIGN §12 是实现状态、§13 是互操作层;FEASIBILITY 为设计轮报告) plugin/ DSH 插件:lib/{core,store,index,client}.js + dev/ 三套自测 + README interop/ 跨 AI 互操作:mcp-server.mjs / cli.mjs / lib.mjs + 自测(INTEROP.md 是使用说明) prototype/ 离线可点原型(单文件) schema/ 对外 import/export 与记忆包 JSON Schema assets/ README 截图

现状与路线

- ✅ v0.1:宿主半 + 客户端半完成,本地自检 core 12/12、host 13/13、client 3/3
- ✅ v0.2:跨 AI 互操作层(MCP / CLI / HTTP / 记忆包),自检 interop 5/5;导出格式对齐 JSON Schema
- ✅ v0.2.1:自动生成可控——读取对话总开关、每轮最多生成条数、记忆总量上限;「+ 手动记一条」仅手动编辑;当前自检 core 15/15(新增生成数量/总量上限用例)
- ⏳ 真机安装验证(下一个对话):llm.stream 调用形状、agent.ctx.systemPrompt 可见性、主题 token 接入
- 🔜 发布 npm 包(一行安装)→ 更多宿主适配(Web / 移动端)→ 记忆自动归档与「遗忘曲线」

已知取舍:记忆抽取是摘要式的,不做向量检索(图 + 简报足够小,先把「看得见」做对);冲突检测是启发式,需要人确认。

License

MIT · 欢迎 issue / PR:<https://github.com/Eveneve-night/memory-bubble/issues>
预览分享卡片长什么样 ↓Eveneve-night/memory-bubble
分享 · DeepSeek Harness Hub
Eveneve-night/memory-bubble

把日常对话沉淀成可编辑的泡泡记忆图,随时带走

这是你的仓库?认领条目

回到顶部