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

自我人格成长记忆 Trudui/dsh-own-soul

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

让人格随对话沉淀特质与可检索记忆

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

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

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

状态速览

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

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

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 52 处,展示前 35 条)
  • 写入本地文件
    src/index.mjs:63
    appendFileSync(join(store.dir, 'debug.log'), `${new Date().toISOString()} ${parts.join(' ')}\n`);
  • 读取本地文件
    src/index.mjs:89
    return readdirSync(dir, { withFileTypes: true })
  • 读取本地文件
    src/index.mjs:98
    return readdirSync(dir, { withFileTypes: true })
  • 读取本地文件
    src/index.mjs:113
    const raw = JSON.parse(readFileSync(join(dir, file), 'utf8'));
  • 读取本地文件
    src/index.mjs:125
    return statSync(file).isFile();
  • 读取本地文件
    src/index.mjs:132
    return statSync(file).mtimeMs ?? 0;
  • 发起网络请求
    lib/client.js:19
    const get = (p) => fetch(B + p, { cache: 'no-store' }).then((r) => r.json()).catch(() => null)
  • 发起网络请求
    lib/client.js:21
    fetch(B + p, {
  • 读取本地文件
    src/store.mjs:100
    return JSON.parse(readFileSync(file, 'utf8'));
  • 写入本地文件
    src/store.mjs:108
    mkdirSync(join(file, '..'), { recursive: true });
  • 写入本地文件
    src/store.mjs:110
    writeFileSync(tmp, JSON.stringify(value, null, 2) + '\n', { mode: 0o600 });
  • 写入本地文件
    src/store.mjs:111
    renameSync(tmp, file);
  • 读取本地文件
    src/store.mjs:139
    return readdirSync(dir).length;
  • 读取本地文件
    src/store.mjs:146
    if (existsSync(file)) {
  • 删除本地文件
    src/store.mjs:147
    rmSync(file, { force: true });
  • 删除本地文件递归
    src/store.mjs:159
    rmSync(dir, { recursive: true, force: true });
  • 写入本地文件
    src/store.mjs:166
    mkdirSync(this.dir, { recursive: true });
  • 写入本地文件
    src/store.mjs:167
    mkdirSync(this.journalDir, { recursive: true });
  • 写入本地文件
    src/store.mjs:168
    mkdirSync(this.diaryDir, { recursive: true });
  • 读取本地文件
    src/store.mjs:237
    if (!existsSync(file)) return [];
  • 读取本地文件
    src/store.mjs:238
    return readFileSync(file, 'utf8')
  • 读取本地文件
    src/store.mjs:252
    if (!existsSync(this.journalDir)) return [];
  • 删除本地文件
    src/store.mjs:438
    rmSync(this.handoffFile, { force: true });
  • 删除本地文件递归
    src/store.mjs:441
    rmSync(this.handoffDir, { recursive: true, force: true });
  • 读取本地文件
    src/group.mjs:21
    return readdirSync(dir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
  • 读取本地文件
    src/group.mjs:31
    buf = readFileSync(file);
  • 读取本地文件
    src/group.mjs:90
    const cfg = JSON.parse(readFileSync(join(home, 'qq-bridge-config.json'), 'utf8'));
  • 读取本地文件
    src/group.mjs:106
    if (existsSync(file)) return { file, sid: name, workspace };
  • 执行外部命令固定命令
    src/eyes.mjs:26
    const out = execFileSync('reg', ['query', 'HKCU\\Environment', '/v', name], { encoding: 'utf8', timeout: 4000 });
  • 读取本地文件
    src/eyes.mjs:46
    if (home && existsSync(file)) {
  • 读取本地文件
    src/eyes.mjs:47
    const text = readFileSync(file, 'utf8');
  • 读取本地文件
    src/eyes.mjs:66
    if (!existsSync(path)) return { error: `找不到这张图:${path}` };
  • 读取本地文件
    src/eyes.mjs:67
    const size = statSync(path).size;
  • 读取本地文件
    src/eyes.mjs:69
    const buf = readFileSync(path);
  • 发起网络请求
    src/eyes.mjs:88
    const res = await fetch(VISION_ENDPOINT, {
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

人格 + 成长 + 记忆三合一的 DSH 插件:人设三段、每晚写日记长特质、一句话一条的可检索记忆

README

由 DeepSeek 最新模型翻译生成
dsh-own-soul ·「自己」 一个 DSH 插件合集:人设 + 成长 + 记忆,装一次就都有了。 跟别的人格插件不一样的地方就一句:它不靠模型给自己打补丁。 它每轮记一条流水,每天 23:00 写一篇日记、跑一次离线蒸馏,把「反复出现的东西」慢慢变成自己的——日记是给人看的,特质才是注入给模型的。 目前正在研究一个新的记忆系统,暂时就先用现在的记忆法。 三个子系统 | 系统 | 干什么 | 存在哪 | | 人设 | 地基三段:身份 / 说话方式 / 边界,每轮都注入,可导入导出 | state.json 的 persona | | 成长 | 记流水 → 写日记 → 蒸馏出特质(跨两天才转正,按 salience 衰减) | journal/、diary/、traits.json | | 记忆 | 一句话一条的事实(可检索、会变淡、不删),每晚顺手记几条 | memory.json | 它是怎么长的 1. 记流水(每轮,零成本):每轮结束把「他说了什么 / 我说了什么」加一条正则信号(有没有纠正、有没有夸、有没有嫌啰嗦、有没有顺口提自己),写进 journal/YYYY-MM-DD.jsonl。 2. 写日记(每天 diaryTime,默认 23:00):纯规则拼一篇第一人称的日记,落到 diary/YYYY-MM-DD.md。
展开完整文档(README 剩余 1 节)
dsh-own-soul ·「自己」

一个 DSH 插件合集:人设 + 成长 + 记忆,装一次就都有了。

跟别的人格插件不一样的地方就一句:它不靠模型给自己打补丁。 它每轮记一条流水,每天 23:00 写一篇日记、跑一次离线蒸馏,把「反复出现的东西」慢慢变成自己的——日记是给人看的,特质才是注入给模型的。

目前正在研究一个新的记忆系统,暂时就先用现在的记忆法。

三个子系统

| 系统 | 干什么 | 存在哪 |
| 人设 | 地基三段:身份 / 说话方式 / 边界,每轮都注入,可导入导出 | state.json 的 persona |
| 成长 | 记流水 → 写日记 → 蒸馏出特质(跨两天才转正,按 salience 衰减) | journal/、diary/、traits.json |
| 记忆 | 一句话一条的事实(可检索、会变淡、不删),每晚顺手记几条 | memory.json |

它是怎么长的

1. 记流水(每轮,零成本):每轮结束把「他说了什么 / 我说了什么」加一条正则信号(有没有纠正、有没有夸、有没有嫌啰嗦、有没有顺口提自己),写进 journal/YYYY-MM-DD.jsonl。
2. 写日记(每天 diaryTime,默认 23:00):纯规则拼一篇第一人称的日记,落到 diary/YYYY-MM-DD.md。
- 日记是「我」在说话,不是统计报表:不写"聊了 9 轮 / 词频 3 次"。
- 只写有画面的部分:他纠正我的、他嫌我说话的、他笑了、顺口带过的。一天什么信号都没有,就留一两句他真说过的话当锚。
3. 蒸馏:从流水里抽出候选认识(traits.json)。
- 每条认识 = 一句抽象判断 + 一个具体瞬间(—— 「他原话」);没有原话画面的判断不落地,链接 / 命令 / 粘贴的代码一律不当证据。
- 候选:今天出现过就算候选,不进系统提示。
- 生效:同一类事跨两天都出现,才转正 → 只有生效的才注入。
- 这一条是故意设的门槛:单次口误不该被写进人格。
- 遗忘:每条带 salience,按闲置天数每天 ×0.93 衰减;低于 minSalience(默认 0.15)的不进注入,但档案里还留着。
4. 注入:每轮拼一段 <自我记忆> 进系统提示,四栏(顺序就是人设 → 特质 → 记忆 → 最近/想起来):
- 人设地基(身份 / 说话方式 / 边界,永远最前)
- 我对他的一些印象(长期特质,按 salience 取,超预算丢最不重要的)
- 我记得的事(一句话一条的事实,按这轮话头检索命中,没命中就按重要度补几条)
- 最近的事 + 突然想起来(最近三篇日记的锚永远在场;话头命中更早的日记才会捡出来——像人偶尔走神想起旧事)这些只影响身份和说话方式,不改变任务、权限、工具约定。

记忆怎么算「记得住」

照搬一套双轴强度,不落库、每次实时算:S = 0.7·exp(-Δt/τ) + 0.3·min(1, ln(1+hit)/ln16),τ 按类型给(fact/lesson/rules/soul/user 365 天、project 180、topic 90)。S ≥ 0.55 算清晰、≥ 0.25 算模糊、< 0.25 不再主动注入、< 0.10 降成退役(stale,不物理删)。近重复(关键词重叠 + 前 24 字相同)在每晚巩固时合并成一条。

全程纯本地规则:不调模型、不联网、不花 token。日志、日记、特质都在本机。

设置面板

DSH 设置 → 左侧「自己」:

- 总电源:开了还不生效,还要在下面勾具体对话(可以勾多个)
- 在哪些对话里启用:按对话标题勾选,也可手工填会话 id
- 日记时间、特质注入预算
- 人设三段文本框(身份 / 说话方式 / 边界)+ 保存 / 导出 JSON / 导入 / 恢复默认
- 长出来的特质列表:候选 / 生效 / 退役,可手动加一条、转正、退役、删
- 记忆:搜索、列表(可删)、手动记一条(选层级)
- 日记:选日期看全文、立刻写一篇蒸馏

工具(对话里可用)

- soul_status —— 看自己现在的状态(人设、特质、记忆条数、日记数、数据目录、启用了哪些对话)
- soul_diary —— 列日记 / 读某一天的全文
- soul_trait —— 列出、添加、退休、恢复、删除特质
- soul_memory —— 记忆:list / search / add / update / drop
- soul_session —— 启用的对话:current(勾这个对话)/ list / add <id> / remove <id>

数据在哪

$DSH_HOME/own-soul/<profileKey>/
├── state.json # 开关、启用的对话、日记时间、预算、人设三段 ├── traits.json # 长出来的自己 ├── memory.json # 记得的事 ├── journal/YYYY-MM-DD.jsonl ├── diary/YYYY-MM-DD.md └── snapshots/ # 每次改设置/写日记前的快照,留 30 份

改了设置或者觉得长歪了:删 traits.json 就回到只有地基的状态;从 snapshots/ 里挑一份拷回去就能回滚。

从 meow-memory 搬过来

ELECTRON_RUN_AS_NODE=1 "<DeepSeek Harness.exe>" --expose-internals \
scripts/import-meow.mjs "D:/BigFatFish/.dsh-meow/memory.db" "$DSH_HOME/own-soul/<profileKey>"

读 meow 的七张表(soul/user/fact/lesson/rules/project/topic),映射成统一条目,按内容去重后写进 memory.json。可以重复跑,不会长出重复条目。

安装

dsh plugin --profile desktop add link:D:/BigFatFish/dsh-own-soul
或者打包后:dsh plugin --profile desktop add ./dsh-own-soul-0.1.0.tgz

装完重启 DSH,设置里就会出现「自己」。

调试

纯本地冒烟测试,不碰 DSH(store / 蒸馏 / 特质转正)
ELECTRON_RUN_AS_NODE=1 "<DeepSeek Harness.exe>" --expose-internals test/smoke.mjs

网页半边静态检查(bundle 能不能加载、槽位注册对不对)
ELECTRON_RUN_AS_NODE=1 "<DeepSeek Harness.exe>" --expose-internals test/client-check.mjs

看插件有没有挂上
dsh --dump-config | grep own-soul

边界

- 人设、成长、记忆三件事它都管,装它就不用再装 meow-memory 那类记忆插件(两边同时注入会重复、还会打架)。
- 只管「我是谁、我怎么说话 + 我记得什么」。项目文档、代码检索这类事不归它管。
- 不主动复述日记、不炫设定;注入的只有人设 + 生效特质 + 命中的记忆 + 最近的事。

To do

- [ ] 上网学习:把「刷 B 站」那类能力平替进来,让它自己去外面看点东西再回来长(先讨论清楚边界再动手)。
- [ ] 面板里加「回滚到某个快照」按钮。
- [ ] 日记里支持"我主动想说的话"(现在只有流水)。
预览分享卡片长什么样 ↓Trudui/dsh-own-soul
分享 · DeepSeek Harness Hub
Trudui/dsh-own-soul

让人格随对话沉淀特质与可检索记忆

回到顶部