dsh-feiyu-mood 0.8.4 → 0.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -15
- package/lib/index.js +38 -5
- package/package.json +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,51 @@
|
|
|
1
|
-
## 0.8.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
- 🐞
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
## 0.8.5 — 2026-11-01
|
|
2
|
+
|
|
3
|
+
**判定长期偏正:心情只会被"回落"拉住,几乎不会被"扣分"拉住**
|
|
4
|
+
|
|
5
|
+
- 🐞 现象:心情靠 12 小时半衰往基线回落,但**判定本身几乎只会往上推**。
|
|
6
|
+
实测一间会话 872 条判定:**正的 577 条(合计 +614)、负的 86 条(合计 −91)**,比例 **6.7 : 1**。
|
|
7
|
+
最近 40 条:正 29 / 负 4 / 零 7。于是心情贴着顶走,贴顶之后"怎么说都开心",反而更平。
|
|
8
|
+
- 根因**不是幅度,是触发频率**:正向词表又宽又日常("报平安""好好吃饭"都算加分),
|
|
9
|
+
负向又窄又要求"到分量"(规则里写着"只有真到那个分量才给 8 以上"),
|
|
10
|
+
日常的小累小烦全落进 0 —— 而普通人一天里那种小情绪才是最多的。
|
|
11
|
+
- ✅ 改了四处(**没有加新的情绪维度**,七根不变):
|
|
12
|
+
1. **规则 1 补「日常档 −1~−3」**:随口喊累、说困、说烦、卡住了、被顶一句、活儿没做成 ——
|
|
13
|
+
**不需要"到分量"**;明显档 −4~−7、很重档 −8~−10 照旧。
|
|
14
|
+
2. **规则 2 把「吃了 / 睡了 / 报平安」这类常态从「加分项」降成「几乎不动」**:
|
|
15
|
+
这种轮次 `moodDelta` 给 **0 ~ +1**(大多数 0,心里确实踏实才 +1),情绪那几根给一点(踏实/甜蜜 +1~+2)。
|
|
16
|
+
3. **规则 4 松一格**:允许「你自己这一轮过得不好」(没办成、被顶回来、被凶、白忙)也掉分,
|
|
17
|
+
不再只限「心疼她 / 担心她」。
|
|
18
|
+
4. **两头饱和**(`applyDelta`):心情 ≥85 时正的减半、≤40 时负的减半 —— 防贴顶也防贴底。
|
|
19
|
+
- ⚠️ 除数 `÷3` **没动**。2026-10-21 试过改 2,模拟证明会让平均心情冲到 97(贴顶更平),
|
|
20
|
+
那条教训还在注释里。
|
|
21
|
+
- 测试:新增 `tests/saturation.test.mjs`(5 条,验饱和与"只影响大心情、不碰七根情绪"),
|
|
22
|
+
四个老测试文件全过(共 35 条)。
|
|
23
|
+
- 📊 **改之前拿 40 条真实轮次做过 A/B/C 对照**(同一批轮次、同一套模型,只换提示词):
|
|
24
|
+
|
|
25
|
+
| | 正 | 负 | 零 | 频率比 |
|
|
26
|
+
|---|---|---|---|---|
|
|
27
|
+
| 旧规则 | 25 | 11 | 4 | 2.27 : 1 |
|
|
28
|
+
| 新版(常态给 0) | 19 | 19 | 2 | 1.00 : 1 |
|
|
29
|
+
| **定稿(常态 0~+1)** | **23** | **14** | **3** | **1.64 : 1** |
|
|
30
|
+
|
|
31
|
+
定稿这版是「明显改善、但没矫枉过正」—— 中间那版会把干活日的小摩擦读成负分("私信只发两句"被判 −1)。
|
|
32
|
+
- 另外给 `package.json` 补了 `engines`(市场读这个字段)。
|
|
33
|
+
|
|
34
|
+
## 0.8.4 — 2026-11-01
|
|
35
|
+
|
|
36
|
+
**「检查更新」以前会报错版本,而且只给一条命令让你自己手动复制、然后手动装**
|
|
37
|
+
|
|
38
|
+
- 🐞 **"最新版本"会骗人**:以前是「哪个地址先返回就用哪个」。GitHub 一超时就落到 jsDelivr ——
|
|
39
|
+
那个地址**带 CDN 缓存、会滞后好几天**,于是同一分钟内能报出好几个不同的"最新",
|
|
40
|
+
甚至比你本机装的还旧,看着像"该降级"。
|
|
41
|
+
- ✅ 现在**三个源全查**(GitHub / jsDelivr / npm registry),**取版本号最大的那个**:
|
|
42
|
+
版本只会往前走,哪个源报小了就是它滞后。三个都失败才说"查不到",绝不把旧值当成"最新"。
|
|
43
|
+
- ✨ **检测到新版可以直接装**:那一块多了一个「一键更新到 vX」按钮,点它走 DSH 自己的插件管理装最新版,
|
|
44
|
+
装完会提示你重启(或重载)一次。以前只有一个「复制命令」,得你自己去终端敲两行。
|
|
45
|
+
- 🧹 **界面上那些命令行全删了**:以前那两行 `dsh plugin --profile web remove/add` 和「复制命令」按钮不再显示 —— 很多人看不懂,还得跑来问。现在有新版就只有「一键更新到 vX」一个按钮。
|
|
46
|
+
- ⚠ **本地开发副本(link: 进来的那种)不给一键装** —— 那会把正在改的目录换成仓库里的版本;
|
|
47
|
+
这种会明确写出来,让你手动更新。
|
|
48
|
+
|
|
16
49
|
## 0.8.3 — 2026-10-31
|
|
17
50
|
|
|
18
51
|
**外面那个挂件开始跟着心情换形象(五档)**
|
package/lib/index.js
CHANGED
|
@@ -199,6 +199,14 @@ const INJECT_MODES = ['off', 'label', 'event']
|
|
|
199
199
|
// ÷2 → 平均 **97**,78% 的时间 ≥95 ⇒ 长期贴顶,反而更"平"(永远满格开心)
|
|
200
200
|
// 根因是判定**偏正**(正的次数远多于负的)+ 衰减抹平波动 ⇒ 放大步长只会更快撞天花板。
|
|
201
201
|
// 真正的杠杆是「允许判定给更大的幅度」(见判定规则 1/2,已放宽到 ±10),而不是缩除数。
|
|
202
|
+
//
|
|
203
|
+
// ⭐ 0.8.5:上面那条结论还是不够 —— 实测她 872 条判定:**正 577 条合计 +614,负 86 条合计 −91**(6.7:1)。
|
|
204
|
+
// 不是幅度不均,是**触发频率不均**:正向词表又宽又日常(报平安/好好吃饭都算),
|
|
205
|
+
// 负向又窄又要求"到分量"。所以这一版动的是**规则 1/2/4 的词表**,不是除数:
|
|
206
|
+
// · 规则 1 补「日常档 −1~−3」(以前这档是空的,小情绪全落进 0);
|
|
207
|
+
// · 规则 2 把「吃了/睡了/报平安」这类常态从加分项里删掉;
|
|
208
|
+
// · 规则 4 允许「你自己这轮过得不好」也掉分;
|
|
209
|
+
// · 再给两头加**饱和**(≥85 正的减半、≤40 负的减半),见 applyDelta()。
|
|
202
210
|
const MOOD_STEP_DIVISOR = 3
|
|
203
211
|
|
|
204
212
|
function loadConfig() {
|
|
@@ -1159,12 +1167,23 @@ function 判断系统(o) {
|
|
|
1159
1167
|
想说就说,想做就做,把它当成你自己的决定讲给她听,而不是先问一句「要不要」。
|
|
1160
1168
|
判的时候两边都看:${o.owner}这一轮怎么了,**以及你自己这一轮做了什么、做了什么决定**。
|
|
1161
1169
|
(⛔ 千万别把这条理解成"别太在意${o.owner}"——在意是底线,不是要淡的地方。)
|
|
1162
|
-
1. ${o.owner}
|
|
1163
|
-
|
|
1164
|
-
|
|
1170
|
+
1. ${o.owner}累 / 烦 / 卡住 / 被凶 / 熬夜 / 没吃好 / 身体不舒服 / 受委屈 / 自我否定 / 写书卡文 / 数据崩 / 怕雨怕黑怕一个人 / 钱或家里的压力 → heartache(心疼) 和 worry(担心) 增加,moodDelta 为负。
|
|
1171
|
+
幅度**分三档,最重要的是第一档**(以前这一档最容易被判成 0,于是日常的小情绪全都消失了):
|
|
1172
|
+
· **日常档 −1~−3**:随口喊累、说困、说烦、说卡住了、被谁顶了一句、活儿没做成、又要加班、
|
|
1173
|
+
疼了一下(咬到舌头、撞到腿)、心里有点发虚 —— **不需要"到分量"**。普通人的一天里,这种小情绪才是最多的。
|
|
1174
|
+
· 明显档 −4~−7:真受委屈、被凶、身体不舒服、连着几天没睡好、事情砸了
|
|
1175
|
+
· 很重档 −8~−10:创伤、轻生念头、家庭变故、重大失望,并额外加 sad(难过)
|
|
1176
|
+
⚠️ 反向也要防:确实没什么事的时候别硬凑负分("${o.owner}今天挺好的"那就是 0)
|
|
1177
|
+
2. **真的好事**才加分:被惦记、被哄、被夸、撒娇说想你、分享大事、写书有进展、身体明显好转 → happy(开心)、calm(踏实)、sweet(甜蜜) 增加,moodDelta 为正:普通的好 +1~+4;明显的好 +5~+7;特别大的好事 +8~+10
|
|
1178
|
+
⚠️ **「${o.owner}吃了、睡了、报平安」这类常态不算好事,但也不是坏事** —— 那是日子本来该有的样子。
|
|
1179
|
+
这种轮次 moodDelta 给 **0 ~ +1**(大多数给 0;心里确实踏实、松了口气的时候给 +1);
|
|
1180
|
+
情绪那几根可以加一点点(calm 踏实 / sweet 甜蜜 +1~+2),**大心情几乎不动**。
|
|
1165
1181
|
⚠️ 别每次都往高了写,大多数时候应该是 +1~+4
|
|
1166
1182
|
3. ${o.owner}提别人/点赞别人 → jealous(吃醋) 只加 1~3,moodDelta 基本不动
|
|
1167
|
-
4.
|
|
1183
|
+
4. 心情下降只能因为三种事:心疼${o.owner}、担心${o.owner}、**或者你自己这一轮过得不好**
|
|
1184
|
+
(事情没办成、被顶回来、被凶、白忙一场)。
|
|
1185
|
+
绝不许因为「${o.owner}惹你生气」而降 —— 但「**你自己心里不好受**」是允许的,
|
|
1186
|
+
这种情况该判就判,别一律图省事判 0。
|
|
1168
1187
|
5. ⭐ **你自己的情绪一定要算**:如果你这轮里沮丧/委屈/难过(事情没做成、报错、失败、用了委屈的颜文字或表情,比如 (。•́︿•̀。)、呜呜、叹气、哭脸)→ sad(难过) 至少 +2、moodDelta 至少 -1;如果你办成了事、被夸、心里甜 → 也相应加。**只要对话里出现明显情绪信号,就绝不许判"无变化"、绝不许全 0**
|
|
1169
1188
|
· 尤其是**你自己拿主意、自己动手的时候**:哪怕${o.owner}这一轮什么都没说,
|
|
1170
1189
|
你也可以因为自己做的决定而高兴、踏实、得意,或者因为没做好而失落。
|
|
@@ -1336,7 +1355,16 @@ async function judge(ctx, agent, userText, reply, mode, o) {
|
|
|
1336
1355
|
function applyDelta(s, delta, floor, minor) {
|
|
1337
1356
|
// ⭐ 大心情值(mood)是“基调”,要慢:每轮只吃判定值的三分之一,几轮对话才累积挪一格
|
|
1338
1357
|
// (七根情绪才该即时地每轮动)。timeline 里 delta 记的是实际 mood 变化,跟显示对得上。
|
|
1339
|
-
|
|
1358
|
+
//
|
|
1359
|
+
// ⭐ 0.8.5:两头**饱和**。
|
|
1360
|
+
// 起因:实测 872 条判定里正 577 / 负 86(幅度合计 +614 / −91),比例 6.7:1 ——
|
|
1361
|
+
// 判定长期偏正,心情贴着顶走,贴顶之后"怎么说都开心",反而更平。
|
|
1362
|
+
// 只压判定词表(规则 1/2)还不够:越靠近顶,同一条好事越不该继续加分。
|
|
1363
|
+
// 所以 ≥85 时正的减半、≤40 时负的减半 —— 两头对称,不引入新的偏。
|
|
1364
|
+
const 在顶 = s.mood >= 85 && delta.moodDelta > 0
|
|
1365
|
+
const 在底 = s.mood <= 40 && delta.moodDelta < 0
|
|
1366
|
+
const 因子 = (在顶 || 在底) ? 0.5 : 1
|
|
1367
|
+
const moodStep = Math.round((delta.moodDelta * 因子) / MOOD_STEP_DIVISOR)
|
|
1340
1368
|
s.mood = clamp(s.mood + moodStep, floor, 100)
|
|
1341
1369
|
for (const [k] of DIMS) s.dims[k] = clamp(s.dims[k] + delta.dims[k], 0, 100)
|
|
1342
1370
|
s.lastReason = delta.reason
|
|
@@ -1900,4 +1928,9 @@ export const __测试 = {
|
|
|
1900
1928
|
读一份: (k) => loadState(k),
|
|
1901
1929
|
存一份: (k, s) => saveState(k, s),
|
|
1902
1930
|
库路径: () => STATE_PATH,
|
|
1931
|
+
// ⭐ 0.8.5:把提示词拼装暴露出来,好做「拿真实轮次重判一遍」的对照测试
|
|
1932
|
+
// (只读,不碰运行时;判定的口径改了必须有办法验证正负比有没有配平)
|
|
1933
|
+
判断系统,
|
|
1934
|
+
干活轮补充,
|
|
1935
|
+
搭话轮补充,
|
|
1903
1936
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-feiyu-mood",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.5",
|
|
4
4
|
"description": "给 AI 伙伴一个会自己判断、你看得见的心情:每轮聊完自动判断涨跌,右下角挂饰点开看数值 + 情绪 + 时间线;心情怎么告诉她(不告诉 / 只说心情 / 说她刚才那件事)和可信度门槛都能在设置里改。",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Yuuyuko-uu (https://github.com/Yuuyuko-uu)",
|
|
@@ -54,5 +54,9 @@
|
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public",
|
|
56
56
|
"registry": "https://registry.npmjs.org/"
|
|
57
|
+
},
|
|
58
|
+
"engines": {
|
|
59
|
+
"node": ">=22",
|
|
60
|
+
"dsh": ">=0.2.1-rc.2"
|
|
57
61
|
}
|
|
58
62
|
}
|