dsh-agent-soul:给 DSH Agent 记忆、人格、心情与惦记

前言

在 DSH 里跑 agent,常见做法是每轮把一长段 system prompt 塞满「你是谁、用户是谁、别忘的事」。上下文一压缩,人格正文先被挤掉,模型仍记得刚才聊过什么,却像忘了自己是谁;记忆若是静态列表,要么越堆越长,要么和真实对话脱节。DeepSeek Harness 的生态按「一切皆插件」拆分能力,社区目录 SkillHub 上维护者 danshuyue 的 dsh-agent-soul(分类:记忆)针对的是另一类需求:用纯文本文件和可配置的注入策略,让 agent 有会衰减的记忆、可按小节合并的人格、每轮自判且不写进系统提示的心情,以及从记忆里长出来的「心里惦记的事」和按天沉淀的日记。它不接入 B 站、QQ 或桌宠,只关心「她是谁」和「她记得什么」。

这是什么

dsh-agent-soul 当前 npm 包版本为 0.5.1(见仓库 package.json)。插件自述做五件事:人格(Markdown)、记忆(随时间变模糊而非直接删除)、目的(主动「想起」而非定时发消息)、心情(每轮判定,主要作日记底色与目的驱动)、日记(开机补写前一天的公开篇与私密篇,插件可代笔兜底)。

维护者:danshuyue。目录页:https://www.skillhub.cn/plugins/danshuyue/dsh-agent-soul。源码与详细文档:https://github.com/danshuyue/dsh-agent-soul。SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

人格注入

三层来源,优先级从高到低:

层 文件
1 <cwd>/AGENT.md(可随仓库提交)
2 ~/.dsh/agents/projects/<slug>.md(设置 → 人格 → 项目人格)
3 ~/.dsh/AGENT.md(设置 → 人格 → 全局人格)

项目层在「当前工作目录的 AGENT.md」与「本机项目人格」之间只取一份,不合并两份全文。全局与项目的关系由 persona.json 的 mode 控制:stack(默认) 按 Markdown 小节叠加,项目覆盖同名小节、全局其余保留;exclusive 有项目人格时整份全局不注入。

注入时机:会话第一轮一次,之后每 15 轮补一次,避免压缩后人格丢失,又不过度重复发送。若 <cwd>/AGENT.md 存在,会盖住设置页编辑的第 2 层;设置页会黄框提示。

记忆

值得记的内容经 过滤(规则)→ 提炼(模型)→ 打分入库(阈值 42,规则不打模型) 进入 ~/.dsh/agents/memory/global.json。一次性日常可不入库;与主人身份、目标相关的事实可额外写入全局卡。遗忘是清晰度阶梯:清晰 → 清楚 → 模糊 → 只剩印象 → 移出提示词并进 archive,注入时用「记不清了」「好像有…」等措辞,而不是静默删除。每天最多降一档;被再次提及可回升;可固定(pin)永不遗忘。

新会话第一轮除记忆卡外,还可注入「最近」:近若干天公开日记摘要,以及当天各会话汇总自 conversations/<今天>.jsonl 的片段(由 memoryRecentDiaryDays、memoryRecentChatChars 等配置控制,设 0 可关)。

对话中可用工具 soul_memory(write / recall / forget / pin / list)。

目的机制

四个驱动维度(想弄明白、在乎、想分享、想搞懂)随对话与心情向目标靠拢,8 小时半衰;从记忆长出未闭合事项,渲染成短段(默认 ≤ 320 字、最多 3 条),并写明不是任务清单。本地 DSH 无推送渠道,「主动」体现为注入里的「惦记」,而非 unsolicited 消息。工具 soul_goal(add / done / list);可在设置里「放下了」。

心情

全局一份状态(agents/mood/global.json),每轮对话后判定心情值与七情;默认不把心情写进系统提示。判定可走会话模型,或通过 moodJudgeProvider / moodJudgeModel(文档示例:硅基流动 Qwen/Qwen2.5-7B-Instruct)降本;密钥经设置页保存,Windows 用 DPAPI 存于 ~/.dsh/agents/secrets/siliconflow.bin。

2026-11-01 起,偏离基准且满足间隔时,可在用户消息后以单独一条 soul-tone 消息挂一句语气说明(不进系统提示、不参与记忆提取)。相关开关在「心情 → 判断模型」下方。

日记

规则:DSH 启动约 5 秒后检查并补写「前一天」 的公开篇与私密篇;看门狗每 30 分钟再查。先尝试向绑定的日记会话投递让 agent 自写,轮询文件出现(默认最多 3 分钟),失败再由插件 llm.stream 兜底落盘。已存在的两篇不覆盖。私密篇仅靠提示词隔离,文件为明文;设置页「最近日记」默认只展示公开篇。线程 threads.json 在多篇日记间保留「还悬着的事」的连续线。

安装与启用

社区目录标识为 danshuyue/dsh-agent-soul。README 中的安装流程围绕 <DSH_HOME>:将插件置于 plugins/dsh-agent-soul,在所用 profile 的 package.json 里 link 依赖并加入 dsh.profile.bundles,Windows 下还需为 node_modules 建 junction;DSH 实际加载的是 profile 下 node_modules 里的运行副本,改 lib/ 后需同步并对照哈希。完整命令与路径以仓库 README「安装」节为准。

启用后重启 DSH,打开 设置 → 灵魂(八个标签:概览、人格、记忆、目的、心情、日记、笔记、设置)。概览页可看人格来源、记忆条数、惦记事项与最近心情/日记状态。

主要配置写在 <DSH_HOME>/agents/persona.json,例如 mode、injectMaxChars(默认 3200)、memoryRecall、memoryRecentDiaryDays 等;字段含义见 README「配置」表格。

典型用法

装好后多数时间无需操作:对话中值得记的事自动入库,每日首次使用会降清晰度,开机补昨天日记。

需要干预时:

  1. 在 设置 → 灵魂 各标签中编辑人格、搜/固定/删除记忆、查看驱动与心情、触发日记、调注入预算与开关。
  2. 直接对 agent 说话,例如:
「记住:我下周一开始做蓝桥杯的题」
「你还记得我之前说过什么关于 STM32 的事吗」
「把那条关于数学建模的记忆忘掉」
「你最近在惦记什么」
  1. 直接编辑纯文本(改记忆卡后刷新设置页):
~/.dsh/AGENT.md                   # 全局人格
~/.dsh/agents/memory/global.json  # 记忆卡

README 另列「花钱的地方」:人格补注入、记忆/目的每回合预算、日记每日两次生成、心情判定每回合等,可先调 injectMaxChars 再考虑关目的或心情判定。

适用场景与注意

适合:希望在 DSH 桌面/agent 会话里长期维持同一套人格与跨会话记忆,接受记忆会模糊、日记与心情有额外模型开销,并愿意用设置页或直接改 ~/.dsh 下 JSON/Markdown 做运维的开发者。

注意:

  • 插件以当前 DSH 进程权限读写 ~/.dsh;安装前请自行阅读源码与仓库许可证,确认可接受的数据落盘与脱敏策略(入库前会对密钥、手机号等做规则脱敏,但并非加密存储)。
  • 人格、记忆、心情、日记都依赖所配置的模型与 API;小模型仅建议用于心情判定等文档已验证的路径。
  • 与 README 边界一致:不替代 IM 桥接的主动推送;QQ 等渠道的「主动发消息」不在本插件范围内。

结尾

dsh-agent-soul 把 agent 的「灵魂」拆成可编辑的文件和可预测的注入节奏:人格按小节合并、记忆按人的规律变淡、惦记与心情给连续感,日记把前一天收成两篇文本。若要浏览简介或跳转源码,可使用 SkillHub 目录页 https://www.skillhub.cn/plugins/danshuyue/dsh-agent-soul 与 GitHub 仓库 https://github.com/danshuyue/dsh-agent-soul。

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

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

小夜