@zaofan/dsh-qqbot 1.6.0 → 1.6.1
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/client/qqbot-settings.js +15 -8
- package/client/qqbot-settings.js.bak-mmui-1790922963087 +5085 -0
- package/dist/channel-tools.d.ts.map +1 -1
- package/dist/channel-tools.js +4 -3
- package/dist/channel-tools.js.map +1 -1
- package/dist/features/contextless-store.d.ts +4 -0
- package/dist/features/contextless-store.d.ts.map +1 -1
- package/dist/features/contextless-store.js +11 -0
- package/dist/features/contextless-store.js.map +1 -1
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +25 -28
- package/dist/session/session-manager.js.map +1 -1
- package/dist/shared/path-utils.d.ts.map +1 -1
- package/dist/shared/path-utils.js.map +1 -1
- package/package.json +1 -1
- package/settings-host.js +1 -1
- package/dist/shared/path-utils.d.ts +0 -6
- package/dist/shared/path-utils.js +0 -53
package/client/qqbot-settings.js
CHANGED
|
@@ -2073,6 +2073,7 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
2073
2073
|
state.ctxless = d || null
|
|
2074
2074
|
if (on) on.checked = !!(d && d.enabled)
|
|
2075
2075
|
if (win && d && typeof d.window === 'number') win.value = String(d.window)
|
|
2076
|
+
try { var _mmEl = document.getElementById('dk-ctxless-memomax'); if (_mmEl) _mmEl.value = String((d && typeof d.memoMax === 'number') ? d.memoMax : 20) } catch (e) { /* ignore */ }
|
|
2076
2077
|
// 2026-10-01: 同步 radio(原来只更新了条数框 —— 面板先渲染后拉数据,radio 会停在默认的"按条数")
|
|
2077
2078
|
try {
|
|
2078
2079
|
var _isSmart = !!(d && d.smart === true)
|
|
@@ -2099,7 +2100,8 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
2099
2100
|
// 2026-10-01: 模式单选 → smart;smart=true 时 window 不生效(互斥)
|
|
2100
2101
|
var _modeEl = document.querySelector('input[name="dk-ctxless-mode"]:checked')
|
|
2101
2102
|
var _mode = _modeEl ? String(_modeEl.value) : 'window'
|
|
2102
|
-
var
|
|
2103
|
+
var _mmEl2 = document.getElementById('dk-ctxless-memomax')
|
|
2104
|
+
var body = { sessionKey: key, enabled: !!(on && on.checked), window: win ? (parseInt(win.value, 10) || 0) : 5, smart: _mode === 'smart', memoMax: _mmEl2 ? (parseInt(_mmEl2.value, 10) || 20) : 20 }
|
|
2103
2105
|
// radio 切换:智能判断时条数框禁用(互斥的视觉提示)
|
|
2104
2106
|
Array.prototype.forEach.call(document.querySelectorAll('input[name="dk-ctxless-mode"]'), function (r) {
|
|
2105
2107
|
r.onchange = function () {
|
|
@@ -2114,6 +2116,7 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
2114
2116
|
api('contextless?sessionKey=' + encodeURIComponent(key)).then(function (back) {
|
|
2115
2117
|
var same = back && back.enabled === body.enabled && Number(back.window) === Number(body.window)
|
|
2116
2118
|
&& (back.smart === true) === (body.smart === true)
|
|
2119
|
+
&& Number(back.memoMax || 20) === Number(body.memoMax || 20)
|
|
2117
2120
|
if (hint) {
|
|
2118
2121
|
hint.textContent = same
|
|
2119
2122
|
? ('✅ 已保存并回读确认: ' + (back.enabled ? '开启' : '关闭') + ' / 带 ' + back.window + ' 条')
|
|
@@ -3685,6 +3688,10 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
3685
3688
|
+ '<span>智能判断(推荐)'
|
|
3686
3689
|
+ '<div style="font-size:12px;color:#888;line-height:1.4">由 AI <b>每轮自己判断话题是否结束</b>:结束了它就压缩旧历史(可留最近几条)或整段丢弃,<b>只留下自己总结的要点</b> —— 省 token 最狠,也不容易断片。要点存在独立文件里,<b>压缩永远碰不到</b>。</div></span></label>'
|
|
3687
3690
|
+ '</div>'
|
|
3691
|
+
// 备忘条数上限(面板可设;超出自动丢最旧)
|
|
3692
|
+
body += '<div class="dk-row" style="gap:6px;align-items:center;margin:4px 0 2px 22px;font-size:13px">'
|
|
3693
|
+
+ '<span>备忘条数上限 <input type="number" id="dk-ctxless-memomax" min="1" max="500" value="' + ((state.ctxless && typeof state.ctxless.memoMax === 'number') ? state.ctxless.memoMax : 20) + '" style="width:60px"> 条</span>'
|
|
3694
|
+
+ '<span style="font-size:12px;color:#888">(超出自动丢最旧的;AI 每轮的提示已要求它写精简)</span></div>'
|
|
3688
3695
|
body += '<div class="dk-msg" style="line-height:1.5;color:#888">0 条 = 完全不带群消息(只剩系统规则 + 当前这句)。智能判断模式下条数不生效。开关存在插件数据目录, 重启不丢;<b>面板保存即时生效</b>,直接改文件则需重启。</div>'
|
|
3689
3696
|
} else if (st === 'blank') {
|
|
3690
3697
|
body += '<div style="border:1px dashed #cfc7ee;border-radius:8px;padding:20px 14px;margin:8px 0;text-align:center;line-height:2">'
|
|
@@ -4552,18 +4559,18 @@ var QQS_CSS = ".qqs-btn{font:inherit;color:#333;background:linear-gradient(180de
|
|
|
4552
4559
|
var keyOf = function (x) { return String(x.seq) + '|' + String(x.dir) + '|' + String(x.text || '').slice(0, 24) }
|
|
4553
4560
|
var have = {}
|
|
4554
4561
|
state.chatItems.forEach(function (x) { have[keyOf(x)] = 1 })
|
|
4555
|
-
// ⚠️ 2026-10-01 主人实测「向下滚后最新消息后面冒出历史消息」:
|
|
4556
|
-
// 群打包块([历史]…[/历史])会被拆成多条挂在**同一个新 seq** 上, 内容却是**更早**的消息;
|
|
4557
|
-
// 不过滤就会被当新事件整块接到列表尾部。只收"时间不早于列表尾部那条"的条目。
|
|
4558
|
-
var _tailT = state.chatItems.length ? (Number(state.chatItems[state.chatItems.length - 1].time) || 0) : 0
|
|
4559
|
-
var fresh = list.filter(function (x) {
|
|
4560
|
-
return !have[keyOf(x)] && (Number(x.time) || 0) >= _tailT
|
|
4562
|
+
// ⚠️ 2026-10-01 主人实测「向下滚后最新消息后面冒出历史消息」:
|
|
4563
|
+
// 群打包块([历史]…[/历史])会被拆成多条挂在**同一个新 seq** 上, 内容却是**更早**的消息;
|
|
4564
|
+
// 不过滤就会被当新事件整块接到列表尾部。只收"时间不早于列表尾部那条"的条目。
|
|
4565
|
+
var _tailT = state.chatItems.length ? (Number(state.chatItems[state.chatItems.length - 1].time) || 0) : 0
|
|
4566
|
+
var fresh = list.filter(function (x) {
|
|
4567
|
+
return !have[keyOf(x)] && (Number(x.time) || 0) >= _tailT
|
|
4561
4568
|
})
|
|
4562
4569
|
if (fresh.length) {
|
|
4563
4570
|
state.chatItems = state.chatItems.concat(fresh)
|
|
4564
4571
|
appendChatRows(fresh) // ★ 增量追加: 不重绘、不闪、不跳位置
|
|
4565
4572
|
}
|
|
4566
|
-
// 已加载位置 = 列表里最大的事件 seq(同 ①:不能用 tailSeq)
|
|
4573
|
+
// 已加载位置 = 列表里最大的事件 seq(同 ①:不能用 tailSeq)
|
|
4567
4574
|
state.chatItems.forEach(function (x) { var n = Number(x.seq); if (n > state.chatNewest) state.chatNewest = n })
|
|
4568
4575
|
updateChatStatus()
|
|
4569
4576
|
}).catch(function () { state.chatBusy = ''; updateChatStatus() })
|