dsh-emotion-engine:为 DeepSeek Harness 装上生理性心情引擎

前言

在 DeepSeek Harness(DSH)里做陪伴型或角色型智能体时,常见做法是给模型加一段固定人设,或在对话里临时贴「开心 / 委屈」之类的标签。这类状态往往不连续:换一句就忘,也很难和一天里的作息、刚才被夸还是被凶联系起来。若希望 Agent 在每次请求里携带一套可回落、可累积的「心情」,并在界面上能看见、能轻量干预,社区插件 dsh-emotion-engine 提供了一条基于慢变量激素模型的路径。

下面介绍它是什么、如何进入模型上下文,以及如何在本机安装与使用。

这是什么

dsh-emotion-engine 是维护者 OrdinaryTu 发布的 DSH 插件(npm 包名 dsh-emotion-engine,当前资料中版本为 0.1.0,许可证 MIT)。在 SkillHub 等社区目录中归类为 趣味换装 一类;其核心不是换装资源本身,而是为 Harness 提供类似生理节律的 心情引擎:七种激素随昼夜基线漂移,并受对话、夸赞冲突、工具成败、沉默与手动「戳一下」等事件推动;当前状态会作为运行时上下文写入每一次请求,并在输入框下方提供可展开的心情胶囊面板。

插件在 package.json 中声明依赖 DSH 版本 >=0.2.2-rc.1 <0.3.0-0;README 标明在 DSH 0.2.2-rc.1 上做过测试。

核心机制

慢变量而非随机标签

状态由七种激素(多巴胺、血清素、催产素、皮质醇、肾上腺素、内啡肽、褪黑素)表示。每种激素有自己的回落时间常数(engine.js 里 HORMONES 的 tau);事件只把它们推离基线,心情从偏离程度推导,会随时间自行散去,也会被后来的事件覆盖。README 强调:不是随机贴标签。

昼夜基线与重启回落

baselineAt() 控制一天内的基线起伏:例如深夜褪黑素偏高、血清素偏低;下午血清素与多巴胺偏高;早晨皮质醇偏高。重启后按经过的时间自然回落,状态持久化在 $DSH_HOME/emotion-engine/state.json(通常为 ~/.dsh/emotion-engine/state.json),相当于「睡了一觉」后的衰减。

亲近感与微量漂移

closeness 是比激素更慢的亲近感:被夸、被抱会升,被凶会降,长期不用会回到中间;它会给催产素一个偏移。此外每分钟有很小概率产生轻微波动,模拟无明确理由的情绪漂移。

进入模型的方式

插件在 Host 侧(index.js)注册系统提示段(说明这是生理状态而非台词)和运行时上下文。上下文示例形态类似:

【此刻】深夜,心情有点心动(精力 44/100)。
比较明显:催产素偏高(想靠近)、褪黑素高(很困)。
刚才:他说「想你了」(3 分钟前)。
表现:语气会不自觉软下来,愿意靠近,但别腻。 别报数值、别解释情绪、别写动作旁白…

同时提供 feel 工具:在聊天里被「戳到」时可记一笔,取值为 touched / happy / upset / shy / soothe 等,强度 1–5,并附一句起因;会立即改状态并驱动面板曲线变化。

心情面板与本地 API

Client 半身(client.js)在输入框下方渲染小胶囊(心跳速度随唤醒度变化);点开后展示七项激素条(细竖线为当前生理基线)、精力、最近一次起因,以及四个交互按钮:夸夸她、抱一下、摸摸头、凶她一下。按钮直接改状态,下一次回复会带上更新后的情绪上下文。

数据接口仅对本机回环开放:

  • GET /dsh-emotion-api → { ok, state }
  • POST /dsh-emotion-api,body 为 { "action": "praise" | "hug" | "pat" | "scold" } → { ok, action, state }

代码结构(便于二次开发)

文件 作用
engine.js 激素、昼夜基线、事件、心情推导、落盘、HTTP
index.js Host:提示段、运行时上下文、feel 工具、事件订阅、路由
client.js Client:胶囊与面板
locale/*.json 插件管理器中的标题与说明
cordis.patch.yml 向 profile 插入 emotion-engine 一行

若需调参,可在 engine.js 顶部修改:HORMONES.tau、baselineAt()、classify()(心动/闷/困等命名)、POKES 与 FEELINGS。改完后重新安装该 bundle 即可生效。

安装与启用

取得插件目录的绝对路径后,在 DSH 环境中执行 README 给出的安装方式(勿凭仓库名自行拼接其他 install 命令):

plugin_manager action=install_bundle target=<本目录的绝对路径>

装完后刷新页面:emotion-engine 应出现在插件列表,输入框下方出现心情胶囊。

典型用法

  1. 安装 bundle 并刷新 Web Client,确认胶囊与面板可见。
  2. 正常对话时,每次请求会自动附带简短「此刻」上下文;编写 Agent 提示词时,应尊重 README 中对表现的约束(例如勿在回复中报数值、勿写动作旁白),把上下文当背景而非台词。
  3. 需要 Agent 主动记录被触动时,在对话中调用 feel 工具并填写类型、强度与起因。
  4. 需要即时干预心情时,使用面板四个按钮,或对本机 POST /dsh-emotion-api 发送对应 action。

适用场景与注意

适合:希望在 DSH 上做陪伴、角色或趣味交互,且需要连续、可回落、带昼夜节律的心情状态,并希望在 Composer 旁可视化的开发者。

注意:

  • 插件以当前 DSH 进程的权限运行;安装前应自行审阅源码与 MIT 许可证,确认 HTTP 回环接口与状态文件路径符合你的安全预期。
  • 社区目录(如 SkillHub 插件页)为独立生态站点,与 DeepSeek / 幻方无官方从属关系;本文事实以仓库 README 与 package.json 为准。
  • DSH 版本需满足 engines.dsh 声明;低于或未测试的版本行为未在资料中说明。

结尾

dsh-emotion-engine 用七种激素慢变量、昼夜基线与社交事件,把「心情」做成可持久化、可注入每次请求的运行时上下文,并配上 feel 工具与 Composer 下方面板,适合在「一切皆插件」的 DSH 栈里做趣味换装向的陪伴体验。

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

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

小夜