前言¶
在 DSH(DeepSeek Harness)里,助手的行为通常只靠静态 system prompt 和当轮上下文。会话里工具连续失败、长时间没人说话、跨天又接着干活——这些事实不会自动变成模型能感知的内部状态,除非你每次手工改提示或另写一层编排。
dsh-hormone 走另一条路:维护四个随时间衰减、会互相影响的连续数值(压力、精力、爽度、无聊),由真实会话事件更新;只在某个指标越界时,才往系统提示里追加一条带 [hormone] 前缀的短句。正常范围内不注入,避免把 prompt 当成情绪弹幕。维护者为 y258dd,社区目录分类为工作流;当前 package 版本为 0.4.0,MIT 许可证。
下面介绍它是什么、怎么装、怎么观察与调参,以及使用时该注意什么。
这是什么¶
一句话:给 DSH 助手装一套会变的「激素」——不是给模型贴固定情绪标签,而是四个 [0, 1] 上的内部状态,按事件涨跌、按半衰期衰减,并在指标耦合下互相拉扯;注入层已跑通,门控层未做(不硬压输出长度)。插件只用 DSH 公开插件 API,不修改其他插件数据,不联网。
四个状态及主要规则(细节以仓库 README 为准):
| 状态 | 含义 | 典型涨跌 | 半衰期 |
|---|---|---|---|
cortisol |
压力 | 工具报错、连续失败、被批评/纠正上涨;顺利收尾下降 | 3 小时(开心时可缩短) |
energy |
精力 | 跨天恢复;干活按 token 扣减,闲聊不扣 | 不走半衰期 |
dopamine |
爽度 | 任务顺利收尾、被夸/被谢上涨 | 40 分钟 |
boredom |
无聊 | 约 25 分钟无人说话开始涨 | 上涨半衰期 5 小时 |
更新公式:新值 = clamp(旧值 × 0.5^(Δt / 半衰期) + Σ增量, 0, 1)。没有衰减时状态会积到上限并「卡死」,因此衰减是设计的一部分。
核心功能¶
事件驱动与耦合¶
状态只能被事件改——插件不提供写入工具,模型不能自己调「心情」,避免退化成随意表演。
lib/events.js 里用增量与正则(如 BLAME_RE / PRAISE_RE)映射事件;判断被夸/被批评是关键词匹配,会漏判也会误判,设计上批评优先于夸奖。只处理真人用户消息(user/message 且 source.kind === 'user'),插件自身注入的内容忽略。
四个数还会互相影响,例如爽度越高同样工作量精力扣得越少(COUPLING.joyCost),压力越高扣得越多(COUPLING.stressCost);参数可在 lib/state.js 的 COUPLING 中调整,全部设为 0 则退回各算各的。
熬夜与睡眠债¶
00:00–07:00 仍在干活时,精力扣减会计睡眠债(默认 DEBT.ratio 为 1.3 倍),债会压低精力上限(欠满时上限约 0.6);债从记债时刻起 24 小时线性衰减。与深夜精力基线(约 0.45)配合,用来表达「熬一次夜,第二天确实虚」。
注入:越界才写、边沿触发¶
只有一层注入逻辑,全部正常时系统提示里一个字都不加。越界示例(阈值在 lib/render.js 的 THRESHOLD):
cortisol > 0.75→ 回答收短,不主动揽活energy < 0.2→ 能一句说完就别铺垫dopamine > 0.6→ 可以多说两句boredom > 0.55→ 有点闷,可以主动扯两句
注入文本硬上限 110 字,每轮最多一条。边沿触发:越界第一轮说一次,持续越界则不再重复,直到恢复正常再次越界;若长期不恢复,静默 40 分钟(EMIT.rementionAfterSec)后才重提。
README 明确说明:未做门控(例如硬限制输出长度),也未做 memory-lite 的 emotion 字段权重。
安装与启用¶
插件以当前 DSH 进程权限运行,安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。
常用安装方式:
dsh plugin --profile desktop add dsh-hormone
不从 npm 安装时:
dsh plugin --profile desktop add github:y258dd/dsh-hormone
本地改代码并热重载时,可克隆后 link 安装(开发用):
git clone https://github.com/y258dd/dsh-hormone.git
cd dsh-hormone
dsh plugin --profile desktop add link:$PWD # Windows: link:D:/path/to/dsh-hormone
或手改 ~/.dsh/profiles/desktop/package.json,将 dsh-hormone 设为 link:/path/to/dsh-hormone 并加入 bundles。装完需重启 DSH 生效。
卸载:
dsh plugin --profile desktop remove dsh-hormone
典型用法:观察、调试与调参¶
看状态文件¶
状态落在 DSH 配置目录下,默认路径为 ~/.dsh/hormone/state.json(Windows 为 C:\Users\<你>\.dsh\hormone\state.json)。纯 JSON,history 保留最近 400 次变化及 why(如 tool-error、turn-done、praised 等)。删除该文件即回到初始状态,无副作用。
环境变量¶
先观察、暂不影响回答:
export DSH_HORMONE_MODE=observe
核对事件结构时:
export DSH_HORMONE_DEBUG=1
调试输出追加到 %DSH_HOME%\hormone\events.jsonl。
调参入口¶
改 lib/state.js、lib/events.js、lib/render.js 顶部常量后重启。例如 ENERGY.dailyBudget 默认约 1300 万 token/日预算(作者按 12 天用量标定);觉得掉精力太快可调大。设计取舍与事件字段见仓库内 docs/DESIGN.md。
仓库内测试(Node 20+,无第三方依赖):
npm test
npm run test:smoke
适用场景与注意¶
适合希望在不改编排主流程的前提下,让助手对「失败、夸奖、闲置、熬夜干活」等会话事实有连续内部状态,并仅在异常时用一句 system 提示微调语气的 DSH 开发者。
务必注意:注入只是告知状态,不是替模型决定能说多少;关键词误判需自行改正则。turn 边界依赖 assistant/message 的 turn 号变化,最后一轮在插件卸载时兜底结算。DSH 社区插件目录(skillhub 条目)为独立站点,与 DeepSeek / 幻方无官方从属关系;生态理念是「一切皆插件」,本插件是工作流类社区贡献之一。
结尾¶
dsh-hormone 用可衰减、可耦合的四维数值把会话事件翻译成「只在越界时出现」的 system 提示补充,并支持 observe 模式与 JSON 状态验收。目录页:https://www.skillhub.cn/plugins/y258dd/dsh-hormone;源码与完整参数表:https://github.com/y258dd/dsh-hormone。