前言¶
在 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。