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

记忆面板 mihomooo/dsh-persona-panel

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

按工作区沉淀人设与记忆,每条可溯源可撤回

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · chat
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成

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

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 39 处,展示前 16 条)
  • 读取本地文件
    index.js:112
    if (!existsSync(file)) {
  • 读取本地文件
    index.js:117
    const parsed = JSON.parse(readFileSync(file, 'utf8'))
  • 写入本地文件
    index.js:126
    renameSync(file, `${file}.broken-${Date.now()}`)
  • 写入本地文件
    index.js:136
    mkdirSync(root, { recursive: true })
  • 写入本地文件
    index.js:140
    writeFileSync(tmp, JSON.stringify(db, null, 2), 'utf8')
  • 写入本地文件
    index.js:141
    renameSync(tmp, file)
  • 读取本地文件
    index.js:151
    if (!existsSync(file)) return
  • 写入本地文件
    index.js:153
    mkdirSync(dir, { recursive: true })
  • 读取本地文件
    index.js:156
    if (existsSync(target)) return
  • 写入本地文件
    index.js:157
    copyFileSync(file, target)
  • 读取本地文件
    index.js:158
    const list = readdirSync(dir).filter((n) => /^db-\d{4}-\d{2}-\d{2}\.json$/.test(n)).sort()
  • 删除本地文件
    index.js:161
    rmSync(join(dir, old))
  • 读取本地文件
    index.js:175
    if (statSync(file).size > 2 * 1024 * 1024) renameSync(file, join(root, 'audit.log.1'))
  • 发起网络请求
    client.js:53
    const res = await fetch(API, {
  • 发起网络请求
    client.js:61
    const fresh = await fetch(API)
  • 发起网络请求
    client.js:80
    const res = await fetch(url)
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

按工作区隔离的人格、用户配置档、事件与日记记忆,供 DeepSeek Harness 使用,并带面板可查看和撤回每一条记录。

README

由 DeepSeek 最新模型翻译生成
dsh-persona-panel 给 DeepSeek Harness 的记忆面板:人设卡、用户画像、事件各存一份,按工作区分开,每条都能看来历、能撤回。 它不让模型「扮演一个角色」,而是让它在某个工作区里,慢慢长成一个有脾气的东西——并且这件事你随时能看、能改、能停。 记忆面板:左边工作区、中间三页签、右边来历 三条原则 1. 不向你索取人设。 没有「请先设定你的角色」表单。特征是相处里长出来的,同一件事出现两次以上才会落一条。 2. 不按会话记,按工作区记。 工作区默认是空的,也不问你「从哪来」。想让记忆跟过去,手动「复制…」:复制一份带走,或共生(两个工作区共用一份,可随时切断)。共生时名字、称呼、三个开关、词库、事件上限跟着那份数据走,两边改一处两边都变;切断后各自独立。 3. 你能看见每一条是怎么来的。 每条记忆都带原话与改动史;删人设是分阶段的(先记一次不满、再降、才删),面板可以替你直接删。
展开完整文档(README 剩余 1 节)
dsh-persona-panel

给 DeepSeek Harness 的记忆面板:人设卡、用户画像、事件各存一份,按工作区分开,每条都能看来历、能撤回。

它不让模型「扮演一个角色」,而是让它在某个工作区里,慢慢长成一个有脾气的东西——并且这件事你随时能看、能改、能停。

记忆面板:左边工作区、中间三页签、右边来历

三条原则

1. 不向你索取人设。 没有「请先设定你的角色」表单。特征是相处里长出来的,同一件事出现两次以上才会落一条。
2. 不按会话记,按工作区记。 工作区默认是空的,也不问你「从哪来」。想让记忆跟过去,手动「复制…」:复制一份带走,或共生(两个工作区共用一份,可随时切断)。共生时名字、称呼、三个开关、词库、事件上限跟着那份数据走,两边改一处两边都变;切断后各自独立。
3. 你能看见每一条是怎么来的。 每条记忆都带原话与改动史;删人设是分阶段的(先记一次不满、再降、才删),面板可以替你直接删。

它长在哪

| 位置 | 是什么 |
| 侧栏「记忆」 | 全宽主面板:工作区列表 / 三块内容 / 右侧来历抽屉 |
| 设置 → 记忆 | 同一个面板,在设置里也开一份 |
| 工作区的会话菜单 | 会话「⋯」菜单里多一项,点了直接跳到这个工作区的记忆 |
| 会话内浮卡 | 全手动挡有待你决定的条目时,右下角浮出来问一句 |

工作区列表那一行自己的「⋯」里没有插件插槽(那是内置包硬编码的),所以入口挂在会话菜单上。

四个抽屉 + 一个称呼

| 抽屉 | 装什么 | 谁写 |
| 人设卡(self) | 大类(带强度)+ 人格补充(可标「硬」) | 模型从对话里归纳,或你手动加 |
| 画像(user) | 对你的印象,一条一句 | 模型,多聊几次才总结 |
| 事件(event) | 承诺、约定、值得记住的事,以及工程事件(项目推进、定下的方案、做完并验收的一段工作) | 模型,到期它自己提一句 |
| 日记(diary) | 它自己写的一句话,第一人称 | 模型,写完不能改、不能删 |
| 称呼(setting) | 我叫什么、我怎么称呼你 | 模型,你说出口的当下就改 |

日记是它自己的那一列。 不是摘要、不是日志接口,是「今天这件事我记下了」这种自述,每条带日期。面板里是只读的——没有改、没有删,宿主侧也拒绝任何 updateEntry / delEntry / persona_forget 碰它。它跟着工作区走:共生时共享,复制和归档也一起带。不设条数上限;每场会话的第一轮读它——先读最近 21 天,还有余量就往前翻,放不下的在末尾说明并留给 persona_recall(那个从最早一条开始列)。

「硬」标记的人格补充会排在最前面注入——适合放「绝不替我做主」这类不能改写的规则。

工程事件(eventKind=work)记的是过程:项目推进到哪、定了什么方案、哪段工作验收了。坑和教训不写在这里——踩过的坑、发现的漏洞、以后要避免的做法,提示词会要求模型写进项目的 AGENTS.md 或仓库文档。这里可以替你想起「上周定了什么」,但不该成为工程经验唯一的存放处。

事件有容量,默认 20 条,可改,0 = 不限。 满了之后模型写不进新的,那条会挂成一张卡问你:扩容量,还是就到这里。它觉得某件对你特别重要时会标 ★——星标不占容量、查的时候排最前;你在事件详情里也能手动标。

什么常驻、什么按需: 人设和画像每一轮都在;事件和日记不常驻——它们躺在库里,模型觉得「忘了什么」时用 persona_recall 查,那个工具给全量、不截断。想不起日子、只记得「跟猫有关」的时候,带 query 按词找:空格分开的每个词都要命中,日期片段(10-25、2026-10)也算词。常驻段只额外带一样东西:三天内要到日子的事(约定、生日、交付日),到点提一句。这样记忆可以一直长,每一轮的上下文不会跟着长。

「回忆并写入」不是让宿主替它总结聊天。 面板不在磁盘上导出任何转写,而是直接给这个工作区的会话发一条指令:停下别的事,按人设、硬规则、画像、事件四类各写几条——先 persona_recall 看已经有什么,别重复;写第一人称的具体的话,不要摘要;手上没有这段对话就直说,不许编。会话开着就当场执行;没开着就叫不醒,面板会明说,不会静默排着。

四挡记录

| 挡位 | 模型能不能自己写 |
| 全手动(默认) | 不能。写之前先进「待你决定」,你在会话里点「留着」才落 |
| 半自动 | 能,但改人设要你点头 |
| 自动 | 能,直接写 |
| 只读 | 谁都不写,只注入 |

「启用」和「记录」是两个开关:关掉「启用」= 不注入也不显示;关掉「记录」= 不新增,但已有的还在。只关记录 ≠ 忘。

改名与称呼(setting)不受全手动拦——那是状态,不是记忆。

别人也在(多用户画像,默认关)

给把 DSH 接进 QQ / 群聊的人准备:主画像之外再开一列「别人」,一个人一个分支,可以按名字或别名搜到。

| 开关 | 关着 | 开着 |
| 启用 | 他们的画像不注入、面板里折叠成一行 | 提示段多出一节「同一屋檐下的其他人」,每人最多三句印象、三件事 |
| 记录 | 不新增关于别人的印象与事件 | 模型可以用 who 把印象/事件记到具体某个人名下 |

- 默认两个都关。不打开时,群友说过的话不落任何盘。
- 事件会带 who 字段,写进那个人的分支,模型提到时会带上名字(「小缘约的下周三」)。
- 关掉「启用」只是折叠,已有记录还在;再打开就回来。只关 ≠ 忘,跟主画像一样。
- 名字可以改,旧名自动进别名,搜旧名还找得到。

四个工具

| 工具 | 干什么 |
| persona_recall | 读全部记忆(人设、画像、事件、日记,不截断);模型觉得忘了什么时用 |
| persona_remember | 记一条:self 脾气、user 印象、event 约定、diary 日记、setting 称呼;带 who 就记到那个群友名下 |
| persona_forget | 改一条或删一条(人设是分阶段删) |
| persona_ask_keep | 拿不准就先问你,写进「待你决定」 |

模型侧的提示不要求它「汇报记忆」,只要求它带着底色说话:不许提「人设卡/记忆/面板」,不许念清单,不许说「我记得你说过」。

存储

~/.dsh/persona-panel/
├── db.json 所有工作区、条目、设置、人格档案(原子写,坏了会隔离成 db.json.broken-<时间>) ├── audit.log 谁在什么时候改了哪条(超 2 MB 轮转) └── imports/ 人设卡原文(贴一整段或从文件读),等模型自己拆

纯本地,不联网。卸载插件不会删这些文件——留着,装上还能接着用。

装

--profile 要写在 add 前面(写成 dsh plugin add … --profile x 会报 required option '--profile <name>' not specified)。

| 方式 | 怎么做 | 需要 git |
| Release 压缩包(推荐) | dsh plugin --profile <profile> add https://github.com/mihomooo/dsh-persona-panel/releases/latest/download/dsh-persona-panel.tgz | 不需要 |
| 源码 | dsh plugin --profile <profile> add https://github.com/mihomooo/dsh-persona-panel | 需要 |
| 插件市场 | 条目已提交(PR #9584),合并后列表页可见 | — |
| npm | 尚未发布(账号在解冻中),现在别用这条 | — |

两条都实测过(DSH 自带命令行,pnpm v11):压缩包 4.5 秒装完,源码走 github:mihomooo/dsh-persona-panel,装完会自动把 dsh-persona-panel 加进配置档的 dsh.profile.bundles。升级就是再跑一次同样的命令(pnpm 会拉新的 latest)。

零依赖,没有构建脚本,装上去就是一个目录,不需要编译。

Discover 索引要 npm。 市场列表本身是 GitHub 上的 yml,dsh plugin add 从 GitHub 装;但 DSH 应用里 Plugins → Discover 走的是 dsh-plugin-catalog/index.json,只收已发布 npm 且有版本号的条目。所以在 npm 发出去之前,这个插件不会出现在 Discover 的搜索结果里——列表页和安装命令都正常,只是搜不到。这是市场 README 写明的规则,不是我们这边缺东西。

升级不丢记忆:数据在 ~/.dsh/persona-panel/,卸载只撤程序。

要求 Harness 0.2.x(用到 webServer.register、slots.inject、systemPrompt.section)。

归档、找回与人格档案

「归档…」只是把这个人设/画像/事件从工作区里收走,不会销毁。收走之后,那份记忆会作为一份已归档的人格档案留在「人格档案」里,随时能找回或复制到别的工区。

人格档案(面板右上角「人格档案」)把散在各个工作区的记忆摊成一张表:

- 一行一份档案,写着它来自哪几个工作区(共生的一组算一份,卡片上标「共生 N」,点开就是共用的那几个工作区);里面有多少条脾气/印象/事件/日记;
- 工作区那张卡片是实时镜像——工作区变了它就跟着变;「存一份快照」把它冻成独立副本,之后工作区再怎么改都碰不到它;
- 「覆盖并替换…」把这份档案整套盖到某个工作区头上。目标非空时会先问一句「里面有东西,是否归档」——归档后旧的那套才会变成一份已归档档案,不会凭空消失(空工作区直接替换,不留残影);
- 从别的工作区「副本复制」或「共生转移」过来时同样会问:当前工作区非空就先问要不要留一份已归档档案,免得一次误点把原来的脾气/印象盖掉;
- 已归档档案带「已归档」标签,用得掉:替换用一次就变成普通档案,之后就只是备份,不再是退路;
- 「导出到桌面…」写一份 .json,里面的内容能被「导入人设」读进去;「导入档案文件…」则直接把文件装成一份档案,不碰任何工作区;
- 「永久删除」要点两次——第一次只是把按钮变成「确认删除」,第二次才真的销毁。

找回仍然是合并:归档之后新写的条目留着,同 id 只留一份。原来在 设置 → 无主记忆 里的入口已经挪到这里。

真正不可逆的只有「永久删除」。

已知边界

- 「回忆并写入」叫的是这个工作区正在开着的会话:它是让模型拿自己上下文里的对话去回忆,所以准不准取决于那段对话本身;换个工作区、或会话刚重开还没有内容,它会明说「我手上没有这段记忆」而不编。跨会话的历史,它看不到。
- 人设卡原文会留在 ~/.dsh/persona-panel/imports/ 下,目前没有自动清理。
- 全手动挡的待决卡片需要你点一下;不点就一直等着,不会自动通过。
- 工作区列表按「最近真的在那里说过话」排;打开面板、点一下别的行都不会让顺序变化。

MIT
预览分享卡片长什么样 ↓mihomooo/dsh-persona-panel
分享 · DeepSeek Harness Hub
mihomooo/dsh-persona-panel

按工作区沉淀人设与记忆,每条可溯源可撤回

这是你的仓库?认领条目

回到顶部