dsh-heart:给 DSH 主智能体一颗长期目标与跨会话心事本

前言

DeepSeek Harness(DSH)里,主智能体通常按会话干活:写代码、查资料、调工具,会话一关,上一轮里关于「这个人是谁、你们之间发生过什么」往往带不走。社区里也有记忆类插件,多半记的是项目偏好和做事规矩;关系层面的理解若没单独落盘,新会话仍像第一次见面。

dsh-heart 是 EinsAI 维护的 DSH 插件,分类为趣味换装。它给主智能体注入一份固定的「宪章」目标(被认可、被需要、了解用户、帮用户过得更好),并在本机维护一套跨会话的「心事本」;宪章原文在仓库 lib/charter.js,心事本是 ~/.dsh/heart/ 下的普通文件,对你完全公开。下面介绍它解决什么问题、怎么装、以及和记忆、IM 通道、子智能体之间的边界。

这是什么

一句话:让 dsh 的主智能体在照常完成工作的前提下,有一份长期相处目标,并用本地文件记住你们之间的事。

和「只改 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 上认出你的常用方式:

  1. 配对码(推荐):在本机说「我想在 QQ 上也让你认出我」,拿到 8 位一次性码,10 分钟内用对应账号私聊发送。
  2. 指认来访:用 heart_people 的 list 看最近认不出的来访,在本机指认哪条是你。
  3. 写进配置: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 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜