前言¶
DSH(DeepSeek Harness)的理念是「一切皆插件」,開發者可以通過插件擴展宿主的能力。很多插件關注的是「記住了什麼」,比如對話歷史、知識庫檢索,但智能體的行爲不僅取決於它「說了什麼」,還取決於它「狀態如何」——今天累不累、情緒好不好、剛被用戶回應過沒有。狀態是活的,卻往往沒人記。
迭代記憶插件解決的是這個問題:給智能體一份自己的狀態賬本,讓狀態能自己變化,也能反過來決定它要不要開口。它不是記事情,而是記「它自己」。
插件定位¶
- 名稱:dsh-iter-memory
- 維護者:MingHuanYue
- 分類:記憶
- 星標:1
這是一個 DSH 插件,負責管理智能體的「狀態曲線」和「主動開口」行爲。它不聯網、不發遙測,所有數據存在本地 $DSH_HOME/iter-memory/。
核心功能¶
插件維護兩條核心線:
- 潮位:一條會自己退回基線的狀態曲線(0 很沉 · 0.5 平常 · 1 很舒展)。你跟它說話時潮位抬一點,它開了口你半天沒應它掉一點,沒人管它也會按半衰期慢慢退回基線。
- 開口:不定時地由它自己說一句。到點先看潮位——狀態低就更容易忍住不說;真說了,話裏也帶着此刻的狀態。
合起來才叫迭代:「我說不說由狀態決定,狀態又被「說了有沒有人應」改」。分開做,這兩半都是死的。
插件每 15 秒 tick 一次,只在有活着的會話時工作;默認只在最近用的那一個對話裏開口(onlyActiveSession),別的會話不會同時冒出來。
安裝與啓用¶
GitHub 安裝(推薦):
dsh plugin --profile desktop add github:MingHuanYue/dsh-iter-memory
本地開發安裝:
dsh plugin --profile desktop add "link:D:/DSH插件/projects/dsh-iter-memory"
安裝完需要重啓一次宿主(link 安裝不會熱重載已緩存的模塊)。之後在「設置 → 迭代記憶」裏打開開關。
從 dsh-tide-whisper(潮聲)升上來的不用擔心:第一次啓動會自動把 $DSH_HOME/tide-whisper/ 的 config.json 和 state.json 搬過來,你原來設的間隔、上限、活躍時段都還在。舊的目錄不會刪。
典型用法¶
狀態曲線¶
在設置頁可以看到「此刻」面板:
- 當前潮位
- 最近一條原因
- 一張 24 小時曲線(實線是潮位,虛線是基線)
主動開口¶
到點後,插件會先做裁決:不在活躍時段、今天次數滿了、剛說過、你剛說過話 → 直接推後,一聲不響,零 token。剩下的才擲骰子,而骰子會被潮位改:狀態低就更可能忍住。
真開口時,注入的不是一句寫死的話,而是「處境 + 此刻的狀態 + 一個方向 + 幾條約束」,具體說什麼由當下的模型自己決定。一個回合有概率拆成兩段(像真人連發兩條),段間隔幾秒到幾十秒,之後冷卻拉長。
工具¶
iter_status
看狀態:開沒開、下次大概什麼時候、今天第幾次、此刻潮位。
iter_feel
記一筆此刻的狀態(level 0~1 + why)。這是唯一「我自己改自己」的入口。
iter_set
改參數(只改傳了的字段)。
iter_now
不等骰子,立刻開口一次(測試用)。
參數¶
| 鍵 | 默認 | 說明 |
|---|---|---|
enabled |
false |
總開關。關着的時候工具也會卸掉,不佔任何東西。 |
minMinutes / maxMinutes |
40 / 200 | 兩次開口之間的隨機區間。 |
speakProb |
0.4 | 到點後開口的基準概率。 |
activeStart / activeEnd |
9 / 25 | 活躍時段,允許 >24 表示跨到次日。 |
maxPerDay |
5 | 一天最多主動開口幾次。 |
cooldownMinutes |
25 | 開口後的最小冷卻。 |
userCooldownMinutes |
20 | 你剛說過話之後,我先安靜這麼久。 |
multiSegmentProb |
0.35 | 一次開口拆成兩段的概率。 |
gapMinSeconds / gapMaxSeconds |
8 / 40 | 兩段之間的間隔。 |
roundCooldownMult |
1.6 | 多段回合之後冷卻乘多少。 |
moodBaseline |
0.5 | 潮位的基線,最終都會退回這裏。 |
moodHalfLifeMinutes |
90 | 偏離基線後多久衰減一半。 |
moodReplyBoost |
0.07 | 你跟我說話時潮位抬多少。 |
moodIgnoredDrop |
0.06 | 我開了口你一直沒應時掉多少(只掉一次)。 |
moodSpeakInfluence |
0.5 | 潮位對開口概率的影響強度,0 = 完全不影響。 |
moodInWhisper |
true |
開口時是否把當前狀態注入進去。 |
style |
空 | 語氣要求,拼進注入文本。 |
onlyActiveSession |
true |
只在最近用過的那個對話裏開口。別的會話不吭聲,只把各自的下一次往後挪;你換到哪個對話,哪個接手。 |
數據與隱私¶
- 全部存在
$DSH_HOME/iter-memory/:config.json、state.json、log.jsonl。 - 不聯網、不發遙測、不調用任何模型接口。
- 軌跡(
log.jsonl)你能直接打開看:每次忍住的原因、每次開口的方向、每次潮位變動都在裏面。 - 卸載插件不會刪這些數據。
兼容性與限制¶
- DSH
>= 0.1.7-rc.1,Node>= 22。 - 狀態按會話分桶;切換會話、重啓宿主都不丟。只保留最近 30 個會話的記賬。
- 依賴宿主內置的
schedule服務投遞喚醒(和內置定時提醒同一套),所以窗口關着也叫得醒。宿主沒有這個服務時會在日誌裏記一條deliver-failed,不會崩。 - 只在有活着的會話時工作:會話全關了就排不上,因爲你不在,說了也沒人看。
- 潮位是按會話記的,不是全局的:不同會話各有各的曲線。
- 曲線只留最近 24 小時、最多 72 個點(畫圖夠用)。
適用場景與注意¶
這個插件適合需要「有狀態」的智能體,比如伴侶型、陪伴型、長期對話場景。它讓智能體不只是被動回應,還能根據自身狀態決定要不要主動說話,以及說什麼。
插件以當前 DSH 進程權限運行,安裝前建議查看源碼與許可證(MIT)。所有數據存儲在本地,不涉及聯網與遙測,適合注重隱私的部署方式。
短結尾¶
迭代記憶插件通過「潮位」和「開口」兩條線,讓智能體有了自己的狀態賬本,並能根據狀態決定是否主動說話。它不聯網、不發遙測,所有數據存在本地,適合長期對話與隱私敏感場景。
- 目錄頁:https://www.skillhub.cn/plugins/MingHuanYue/dsh-iter-memory
- GitHub:https://github.com/MingHuanYue/dsh-iter-memory