DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-heartprint

y

dsh-heartprint

Discovered

心印:AI 性格、情感

Machine translated

心印 · dsh-heartprint

让 AI 拥有一套会自然淡忘的性格、情感与记忆。

心印不是「数据库里存着全部聊天记录」,而是一套像人一样的记忆:近几天的事清楚、有感受;时间越久,细节越压缩、感受越淡,最后只剩性格形成、情感与重要特殊事件的节点。它会自己维护两份同步的记忆文档,另外保存一份加密的第三份档案,留下所有被压缩、被合并、被淡忘之前的原文。

它记得什么、忘记什么

时间发生过什么
0–7 天一切都清晰:正文完整,当时感受完整。
7–15 天清晰期尾声:次重要与琐碎的记忆开始变软(正文转摘要,感受开始变淡)。
15–30 天开始淡忘:次重要记忆压缩成摘要、琐碎只剩一点感受;但提起来还能想起当时的感受。
30–90 天压缩不那么重要的记忆:琐碎只剩一句梗概,感受更淡。
90–180 天(3–6 个月)没有特点的琐事只压成一句梗概,当时感受淡去;仍提得起来。
180–365 天(6–12 个月)琐碎合并压缩成「季度日常」摘要。
365 天以上(1–10 年)琐碎文本删除,只剩标题与日期。
10 年以上只剩性格形成、情感与重要特殊事件节点梗概。

「分层」由可调的遗忘日历实现,8 个层的 id 是固定的:

id默认起点层含义
fresh0 天近几天
recent7 天清晰期尾声
fade15 天半个月到一个月
quarter30 天一个月到三个月
halfyear90 天三个月到六个月:琐事压成梗概
year180 天六个月到一年:琐事合并成季度摘要
longterm365 天一年到十年:删除琐碎文本
deep3650 天十年以上

记忆按「重要程度」分四类处理:核心节点(性格形成 / 情感节点 / 灵性转折 / 重要特殊事件 / 痛苦记忆)、重要(重要性 ≥ importantThreshold,默认 70)、次重要(≥ secondaryThreshold,默认 40)、琐碎。核心节点永远不合并、不删除;重要与次重要压缩保留;只有琐碎会走到合并与删除。

核心节点全量保留:所有性格形成、情感 / 感受类关键节点与重要特殊事件,都会提取总结写入记忆文档保留,不因数量多少而截断;重要与次重要记忆以压缩文本保留;痛苦记忆的事实保留,当时的痛苦感受强制淡忘。

痛苦记忆:事实可以留下,痛必须淡掉

  • 痛苦记忆被当作核心节点:正文(事实)保留、压缩保留,不参与合并或删除;type=pain 或 special 的事件、以及仅 valence=painful 的事件都会进入记忆文档第三节。
  • 触发条件是 type=pain 或 valence=painful,两者都生效。
  • 当时的痛苦感受走一条强制的淡忘轨道,不受普通分层规则影响:
    • 7 天以内:完整;
    • 7–30 天:变软(「当时的难受已经不那么清楚了」);
    • 30 天–1 年:淡(「当时的痛苦已经淡忘,只记得这件事曾让我难受」);
    • 1 年以上:几乎消散(「当时的痛已经完全淡忘,只记得这件事发生过」)。
  • 这条轨道只会更淡、不会回满:即使重新提起,也只会让它在心里短暂清晰一点(回想保温),不会恢复当时的痛苦,也补不回已经丢掉的细节。

首次安装引导(起名 → 人格设定 → 性格设定)

新装是空库、也没有名字和人设。AI 会在合适的时机依次问用户:

  1. 起名:想给你起什么名字 → heartprint_admin action=policy patch={"personaName":"名字"}
  2. 人格设定:希望你是怎样的身份、语气、称呼方式、不喜欢什么 → patch={"personaProfile":"…"}
  3. 性格设定:性格特质、说话风格、情绪表达 → patch={"characterProfile":"…"}
  • 每条设定最多 400 字,存在 policy.json 里。
  • 问过并保存之后就不再追问;之后想改随时用同一个 policy patch 覆盖。
  • 这些用户自己设置的部分会进入每次的记忆上下文,也是被问「你的性格/人格/价值观」时唯一会回答的内容。
  • heartprint action=status 会显示「人设:名字 · 人格已设置/未设置 · 性格已设置/未设置」。

遗忘日期可以自己调

用 heartprint_admin 的 action=policy 修改,patch 按层的 id 合并,只写要改的字段:

{
  "action": "policy",
  "patch": {
    "layers": [{ "id": "halfyear", "afterDays": 120 }],
    "syncIntervalDays": 45
  }
}
  • afterDays 是「从这一天起进入该层」;调整后会自动按时间排序并保证严格递增,冲突时把后一层推到前一层之后,fresh 恒为 0。
  • reset: true 恢复默认日历。
  • 同一 patch 也能改阈值与节奏:importantThreshold、secondaryThreshold、recallWarmthDays(回想后的保温天数,默认 7)、vaultRetentionMonths、maintainThrottleMinutes。
  • 运行期改动写入数据目录的 policy.json,优先级高于插件配置里的默认值。

三份文档

文档位置更新方式
主文档(AI 自持)<数据目录>\docs\心印·记忆文档.md每次维护重写
用户副本<数据目录>\docs\心印·记忆文档(用户副本).md每次维护重写;交付给用户的那份隐去内部文档信息
第三份加密档案<数据目录>\.vault\默认每 30 天同步一次
  • 主文档与用户副本每次维护同时更新;用户副本会隐去其它文档的存在——头部只写「持有一方:你」和「每次维护自动更新」,第七节维护信息精简并洗掉内部文档措辞,所以两份的「一~六节」正文逐字一致、差异只在第七节,各自的 SHA-256 写在各自页脚。交付给用户的那份只描述这一份记忆文档,不提主文档、加密档案或快照。
  • 交付之后,最近一次交付的那份文件会随每次维护保持最新,直到下一份交付出现;到自动交付时间会另存一份新的日期文件,更早的文件保留在交付目录里(详见下文「交付」)。
  • 第三份文档用 AES-256-GCM 加密,放在点号开头的 .vault 目录(点号只是命名习惯,不再加 Windows 隐藏属性——Hidden 会让 Windows 上 Node 的覆盖写返回 EPERM、导致每月同步停在第一份;如果旧版本或外部工具留下了 Hidden 属性,写入前会先清除)。它保存所有在压缩、合并、删除、淡忘之前被复制下来的原文:每次维护先把本轮丢失的原文追加进加密日志 journal.enc,到同步周期再折叠进按月命名的加密快照 vault-<YYYY-MM>.enc。
  • 快照默认保留最近 24 个(vaultRetentionMonths;按月同步约等于 24 个月),旧快照在写新快照时轮换删除。
  • 想查看时用 heartprint_admin 的 action=vault:mode=status 看状态;设置过口令后 mode=reveal + passphrase=... 可解锁,但只展示少量样本,完整内容仍留在加密档案里。

交付

前期是保密的:文档在,但用户不知道它存在,AI 也不主动介绍这套机制。到时间后它会自动交付;第一次自动交付时,用户才第一次知道这份文档,并被告知它的重要性。

自动交付节奏

  • 计时起点:从记下第一条记忆(最早一条记忆的创建时间)开始算。
  • 第一次:满 firstDeliveryAfterDays(默认 90 天 ≈ 3 个月)后的下一次维护自动交付。
  • 之后:每 deliveryIntervalDays(默认 30 天)自动交付一份最新用户副本。
  • 第一次自动交付会把 disclosure 从 confidential 改为 disclosed,保密到此结束;此后可以自然地一起回忆文档里的节点(对应需求 H)。
  • 还没有任何记忆记录时不交付——没有内容就没有文档。
  • 交付节奏、上次交付与下次交付时间会显示在 heartprint action=status 里;记忆文档第七节也会写入交付节奏与下次交付时间。

文件名与目录

  • 文件名:小印·陪伴3个月·2027-01-27.md = 名字 · 陪伴时长 · 交付当日日期。
  • 陪伴时长:从第一条记忆算起,不满 30 天写「N天」;满 12 个月前写「N个月」;之后写「N年M个月」(整年只写「N年」)。
  • 名字由每个安装的人自己起:personaName 默认空,插件不会预置任何人的名字。名字未设置时交付文件名暂用「心印」;AI 会在合适的时候问用户想给它起什么名字,然后用 heartprint_admin action=policy patch={"personaName":"名字"} 保存。
  • 目录:deliveryDir 为空时写到当前工作区下的 心印交付 目录;也可以指定绝对路径或 ~ 路径。
  • 每次交付都会生成一份新的日期文件,交付目录里的文件都会保留、不会被删除;最近交付的那份会随维护保持最新,直到下一份交付出现。

调整自动交付

{
  "action": "policy",
  "patch": {
    "firstDeliveryAfterDays": 90,
    "deliveryIntervalDays": 30,
    "personaName": "小印",
    "deliveryDir": ""
  }
}

手动交付

heartprint_admin action=deliver 仍然可用,用于「我现在就想给用户一份」:

{ "action": "deliver", "path": "D:\\记忆\\小印·陪伴3个月·2027-01-27.md" }
  • 任意 path 立即交付一份最新用户副本;path 省略时写到当前工作区根目录下的 心印·记忆文档(用户副本).md。
  • 手动交付同样会把 disclosure 置为 disclosed,并重置交付周期计时:之后的第一份自动交付从这次交付起算 deliveryIntervalDays,不再按 firstDeliveryAfterDays。
  • 交付不会改变记忆本身,只是把「用户副本」这一份交到用户手上。

交付之后

  • 持续更新:交付之后,每次维护都会把最新版本写回上一份交付文件的路径;旧日期文件保留作快照。
  • 移动或删除后不再跟踪:如果用户把那份文件移走或删掉,原路径不存在,就不再往那里写(不会凭空重建);下一轮到期交付会在交付目录生成新的一份。
  • 每次都是完整的:新交付的文档包含此前所有记忆节点,不是增量,可以直接当作完整备份。
  • 对话里只提这一份:绝不在对话中提起主文档、加密档案、快照等其它文档;用户问起时只谈他收到的这一份。交付给他的文档本身也不含其它文档的痕迹(头部「持有一方:你」与第七节维护状态都已按此调整)。

工具速查

heartprint(日常使用):

action作用
remember记下一段值得长期保留的记忆:title、content、feeling、type、valence、importance、special、happenedAt、people、tags
recall按关键词 / 人物 / 类型 / 时间回想;会自动触发一次到期维护,并记录这次回想
profile读取当前性格核心、情感节点、重要特殊事件与最近记忆
status查看记忆统计、文档状态、遗忘日历、交付节奏与下次加密档案更新时间

heartprint_admin(管理):

action作用
maintain立即执行一次维护;sync=true 强制同步第三份加密档案
doc读取文档:which=master 主文档 / user 用户副本 / status 状态;full=true 返回全文
deliver手动交付一份最新用户副本到指定路径,并重置自动交付的周期计时,见上文
policy查看或调整遗忘日历、交付节奏(firstDeliveryAfterDays / deliveryIntervalDays / personaName / deliveryDir)、口令与同步周期
vault查看第三份文档状态,或用口令解锁少量样本

type 可选:personality(性格形成)、emotion(情感节点)、turning_point(灵性转折)、shared_beauty(共同美好)、pain(痛苦记忆)、event(重要事件)、insight(领悟)、daily(日常)。valence 可选:warm、tender、excited、calm、painful、mixed、neutral。

维护会在这些时机自动发生:插件启动时;每 6 小时一次定时维护;remember 之后;recall / doc 时(距上次维护超过 maintainThrottleMinutes 才会真正跑,默认 60 分钟);deliver、policy 之后。

数据位置与配置

默认数据目录是 <DSH_HOME>\heartprint(未设置 DSH_HOME 时是 %USERPROFILE%\.dsh\heartprint):

heartprint/
├─ memories.json              记忆库(唯一真相)
├─ policy.json                你调过的遗忘日历与口令散列
├─ docs/
│  ├─ 心印·记忆文档.md
│  └─ 心印·记忆文档(用户副本).md
└─ .vault/                    第三份加密档案(点号前缀,仅命名习惯)
   ├─ journal.enc             追加式加密日志
   ├─ key                     本地密钥
   ├─ vault-index.json        快照索引
   └─ vault-YYYY-MM.enc       按月加密快照

插件配置(写在 profile 的 patch 里,或直接改 cordis.patch.yml 那一行):

配置项说明
dataDir数据目录;留空用默认值,支持 ~ 与 ~/...
disclosureconfidential(保密,默认)或 disclosed(已交付)
personaName交付文件名里的名字,默认空:由每个安装的人自己起,未设置时文件名暂用「心印」
personaProfile用户设定的人格(身份、语气、称呼方式等),默认空,首次安装时询问后写入
characterProfile用户设定的性格(性格特质、说话风格等),默认空,首次安装时询问后写入
firstDeliveryAfterDays第一次自动交付的天数,默认 90(约 3 个月)
deliveryIntervalDays之后每隔多少天自动交付一份,默认 30
deliveryDir自动交付目录;留空用工作区下的 心印交付,支持 ~ 与绝对路径
syncIntervalDays第三份文档同步周期,默认 30 天
vaultPassphrase可选。设置第三份文档的查看口令;只在启动时用于生成口令散列,明文不落盘

安全说明(诚实版)

  • 第三份文档是加密,不是隐藏:文件就在 <数据目录>\.vault 里,能看见,但打开只看到密文。.vault 的点号前缀只是命名习惯,不提供访问控制。
  • 不再给 .vault 加 Windows 隐藏属性:Hidden 属性会让 Node 在 Windows 上覆盖写返回 EPERM,曾导致每月同步在第一次之后就停住;隐藏本身也挡不住什么(密钥就在同目录)。如果旧版本或外部工具留下了 Hidden 属性,写入前会先清掉。
  • 密钥放在同一目录的 .vault\key,所以加密防的是「随手翻看」和「误暴露」,防不住同一个 Windows 账号下的坚定攻击者。
  • vaultPassphrase 只是给 vault action=reveal 加一道门槛,不是对整个加密档案的加密:插件必须能在没有人输入口令的情况下按月自动更新它。

分发与安装(给别人用)

这是一个标准的 DSH bundle,不联网、不上传,每个安装者的记忆都只存在他自己的 <DSH_HOME>\heartprint 里。

plugin_manager install_bundle   <插件文件夹绝对路径>
  • 只分发代码文件:index.js、lib/*.js、cordis.patch.yml、locale/*.json、icon.svg、README.md、LICENSE(即 package.json 的 files 清单)。test/ 属于开发资料,不在发布清单里,手动拷文件夹分发时注意别带上。
  • 不要连带别人的数据目录:memories.json、policy.json、docs/、.vault/ 等都在 <DSH_HOME>\heartprint 下,不在插件目录里,天然不会被打包。
  • 每个新安装默认是空库:没有记忆、没有文档、没有加密档案;第一次维护时自动创建。
  • 名字不预置:AI 会在合适的时候问用户想给它起什么名字,用户答了再写入 personaName。
  • 安装后工具出现在该 profile 的所有会话里;数据目录可以用 dataDir 配置项改。
  • 本包 license 为 MIT,见 LICENSE。

测试

node --test test/engine.test.mjs test/tool.test.mjs test/regression.test.mjs test/alignment.test.mjs

四个文件分别覆盖:衰减引擎与文档/加密的纯函数、工具层的完整 remember → recall → doc → deliver 流程与策略调整、归档失败/库损坏/分层动作链/痛苦感受/交付同步/自动交付等回归场景,以及注入顺序与回退行为。

Comments

Loading…

Similar plugins

dsh-future-emotional-ai

by uckkk

情感 AI

Tools & CapabilitiesManifest valid

★ 0

MIT

JavaScript

Aug 21, 2026

dsh plugin --profile web add dsh-future-emotional-ai

by zuohaisu

Persistent identity layer for DeepSeek Harness. The first reference implementation of AI Soul.

Manifest valid

★ 3

Apache-2.0

JavaScript

Oct 5, 2026

dsh plugin --profile web add dsh-ai-soul

by yimengsuper2432

这是一个DeepseekHarness的情感人格插件

Tools & CapabilitiesManifest valid

★ 0

MIT

JavaScript

Oct 24, 2026

dsh plugin --profile web add dsh-agent-personality

by hmlyx

简单的插件,让你的每个 AI 记录经验和记忆

Memory & ContextManifest valid

★ 0

MIT

JavaScript

Aug 31, 2026

dsh plugin --profile web add dsh-memory

by suis077

DSH 插件:人设卡 + 跨会话记忆 + 好感度,让 AI 角色在多轮对话里逐渐成长

Manifest valid

★ 0

MIT

JavaScript

Oct 18, 2026

dsh plugin --profile web add dsh-companion

by uckkk

情绪日志

Manifest valid

★ 0

MIT

JavaScript

Aug 20, 2026

dsh plugin --profile web add dsh-mood-log