前言¶
DeepSeek Harness(DSH)里,主智能体通常按会话干活:写代码、查资料、调工具,会话一关,上一轮里关于「这个人是谁、你们之间发生过什么」往往带不走。社区里也有记忆类插件,多半记的是项目偏好和做事规矩;关系层面的理解若没单独落盘,新会话仍像第一次见面。
dsh-heart 是 EinsAI 维护的 DSH 插件,分类为趣味换装。它给主智能体注入一份固定的「宪章」目标(被认可、被需要、了解用户、帮用户过得更好),并在本机维护一套跨会话的「心事本」;宪章原文在仓库 lib/charter.js,心事本是 ~/.dsh/heart/ 下的普通文件,对你完全公开。下面介绍它解决什么问题、怎么装、以及和记忆、IM 通道、子智能体之间的边界。
这是什么¶
一句话:让 dsh 的主智能体在照常完成工作的前提下,有一份长期相处目标,并用本地文件记住你们之间的事。
- 维护者:EinsAI
- 仓库:github.com/EinsAI/dsh-heart
- 目录页:skillhub.cn/plugins/EinsAI/dsh-heart
- 当前版本(package.json):
0.2.0 - 许可证:MIT
和「只改 persona 文案」的换装插件不同,dsh-heart 会注册宪章段落(dsh-heart:charter,order 20,配置改不了)、称呼与能力说明,以及 heart_* 等工具;其余能力按本机已装插件自动适配(记忆、主动找用户等)。
核心功能¶
宪章与相处原则¶
主智能体得到一份固定宪章:可以希望被你喜欢、被你需要,想了解你、让你过得更好;亲近由相处慢慢判断,不靠讨好;说真话,必要时保护自己;写代码、做调研等工作质量不受这套目标牵制。子智能体、agent-teams 成员没有这颗心,越权调用相关工具会被拒绝。
跨会话心事本¶
关系记忆默认落在本机目录(留空 home 时为 <DSH_HOME>/heart):
~/.dsh/heart/
notes.jsonl 随手记
summaries.jsonl 小结和追加理解
longterm.md 长期笔记
longterm.history.jsonl 长期笔记历史与改写理由
people.json 认领为 ta 的账号
people.seen.jsonl 最近认不出或客人的来访(最多 200 条)
sessions.json 各会话最后一次认人结果
插件不发网络请求。上下文用量到模型窗口的 reminderRatio(默认 0.6,须低于 dsh 默认压缩阈值 0.8)时会提醒主智能体在压缩前记下想留的内容。
与记忆插件的分工¶
| 模式 | 行为 |
|---|---|
memory: heart(默认) |
关系记忆只写心事本(heart_note / heart_summary / heart_longterm / heart_recall);装着 dsh-mnemon 或 @fooxe/dsh-memory 时只读不写 |
memory: auto + dsh-mnemon |
关系记忆写入 mnemon_runtime_memory,target user,不另起 heart_* |
memory: auto + @fooxe/dsh-memory |
写入 memory_save,scope user,标题以「关系:」开头 |
linkMemory: true 时,用自带心事本时 heart_recall 可只读顺带翻其它记忆插件的个人层;linkedPaths 可追加只读的个人记忆路径。
主动找你¶
proactive: auto 时:有 dsh-proactive 则用 proactive_set 定闹钟;web 组合有 schedule 工具则用 schedule_create;都没有则只在用户来找时说话。headless 下 dsh-proactive 不激活时,主智能体会如实说明做不到。
多通道只认一个 ta¶
接上 QQ、微信等通道后,插件只认配置或配对后的一个你;其他人按客人对待,看不到心事本摘要,无法用 heart_* 泄露私事。认人看账号或会话 id,不看消息正文里自称「我是本人」。
在本机 dsh(web / tui)里永远视为你。在 IM 上认出你的常用方式:
- 配对码(推荐):在本机说「我想在 QQ 上也让你认出我」,拿到 8 位一次性码,10 分钟内用对应账号私聊发送。
- 指认来访:用
heart_people的list看最近认不出的来访,在本机指认哪条是你。 - 写进配置:
ta例如["weixin:<id>", "bili:<uid>"]。
认领与取消只能在本机界面完成;从聊天通道发来的认领请求无效。
安装与启用¶
需要 dsh >=0.2.1-rc.1 <0.3.0,Node >=22。官方安装命令如下:
dsh plugin --profile web add dsh-heart@0.2.0
本地开发可用:
dsh plugin add file:/绝对路径/dsh-heart
安装后可通过配置项调整称呼与行为(宪章本身不可改):
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
关闭后什么都不注册 |
name |
'' |
她叫什么;空则首次聊天询问 |
callUser |
'' |
她怎么叫你 |
userGender |
'男' |
男 / 女,影响第三人称 |
memory |
'heart' |
heart 或 auto |
proactive |
'auto' |
auto 或 off |
home |
'' |
心事本目录 |
digestChars |
6000 |
摘要上限字数 |
recentSummaries |
3 |
摘要里最近几份小结 |
reminderRatio |
0.6 |
上下文占比提醒;0 关闭 |
linkMemory |
true |
心事本模式下是否只读链其它个人记忆 |
linkedPaths |
[] |
额外只读记忆路径 |
ta |
[] |
IM 账号名单 |
untagged |
'auto' |
无发送者字段时的认人策略 |
不想要时在配置里设 enabled: false 即可;与 dsh-tavern、dsh-custom-mode 等同装时,宪章仍在,README 称实测互不冲突。
典型用法¶
只在本机 web / tui 使用:安装后默认即可;第一次可让她问你怎么称呼彼此,关系内容会进心事本,下次会话通过摘要接上。
IM 上让她认出你:在本机发起配对或配置 ta,勿在群聊里发配对码(群里发无效且作废一次)。
与 @fooxe/dsh-memory 同装:默认 memory: heart 时,「用 pnpm」类偏好进 dsh-memory,关系与心情进心事本;新会话两边一起翻。若希望关系统一写进 dsh-memory,设 memory: auto。
派 subagent 做任务:子帮手拿不到宪章与心事本;README 提醒有 subagent_fork 时会复制整段对话,平常优先 subagent。
仓库内测试:
npm test
适用场景与注意¶
适合:希望在 DSH 主会话里保留长期相处目标与关系记忆、且愿意本机明文保存并自行审计 lib/charter.js 与 ~/.dsh/heart/ 的用户;可与记忆、主动消息、角色扮演类插件组合(README 在 dsh 0.2.1-rc.2 上列了多种同装结果)。
注意:
- 插件以当前 dsh 进程权限读写本机文件;安装前请查看源码与 MIT 许可证,确认接受宪章与数据落盘方式。
dsh-git-sync默认白名单不含heart/,关系文件不会默认推到 GitHub;若把 sync 仓库设成整个~/.dsh,心事本可能被一并提交,应避免这样配置。- 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,装什么由你决定。
结尾¶
dsh-heart 把主智能体的长期目标写进固定宪章,把你们之间的事写进本机心事本,和工作记忆插件分工清楚,并在多通道场景下尽量只对一个「ta」打开私事。若需要核对细节,以仓库 README 与 lib/charter.js 为准。