dsh-aurabot-cola 0.0.0-stage → 1.3.0

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.
Files changed (123) hide show
  1. package/CHANGELOG.md +561 -0
  2. package/LICENSE +21 -0
  3. package/README.md +254 -3
  4. package/README_EN.md +236 -0
  5. package/assets/banner.svg +38 -0
  6. package/assets/dafeiyu.jpg +0 -0
  7. package/assets/qq-group.jpg +0 -0
  8. package/assets/qq-official-bot.png +0 -0
  9. package/client/client.js +5294 -0
  10. package/cordis.patch.yml +187 -0
  11. package/docs/DESIGN.md +35 -0
  12. package/docs/MODULE-TUTORIAL.md +119 -0
  13. package/docs/USER-MANUAL.md +218 -0
  14. package/package.json +66 -6
  15. package/personas/dafeiyu.md +65 -0
  16. package/src/bili/api.js +315 -0
  17. package/src/bili/danmaku.js +53 -0
  18. package/src/bili/duty.js +421 -0
  19. package/src/bili/login-pause.js +21 -0
  20. package/src/bili/shots.js +162 -0
  21. package/src/bili/vision.js +189 -0
  22. package/src/chat/access.js +74 -0
  23. package/src/chat/chat-model.js +65 -0
  24. package/src/chat/commands.js +225 -0
  25. package/src/chat/faces.js +134 -0
  26. package/src/chat/forward.js +47 -0
  27. package/src/chat/group-policy.js +145 -0
  28. package/src/chat/group-roles.js +40 -0
  29. package/src/chat/hub.js +2468 -0
  30. package/src/chat/inbound.js +222 -0
  31. package/src/chat/mentions.js +94 -0
  32. package/src/chat/notices.js +42 -0
  33. package/src/chat/recent-media.js +61 -0
  34. package/src/chat/reply.js +437 -0
  35. package/src/chat/title-filter.js +85 -0
  36. package/src/core/backup.js +370 -0
  37. package/src/core/bridge.js +209 -0
  38. package/src/core/community.js +288 -0
  39. package/src/core/config.js +774 -0
  40. package/src/core/img.js +132 -0
  41. package/src/core/llm.js +200 -0
  42. package/src/core/logger.js +75 -0
  43. package/src/core/modules.js +865 -0
  44. package/src/core/net.js +218 -0
  45. package/src/core/offpeak.js +106 -0
  46. package/src/core/redact.js +29 -0
  47. package/src/core/store.js +39 -0
  48. package/src/core/text.js +13 -0
  49. package/src/core/update.js +87 -0
  50. package/src/core/workspace-move.js +94 -0
  51. package/src/features/codex-auth.js +360 -0
  52. package/src/features/codex-image.js +53 -0
  53. package/src/features/companion.js +272 -0
  54. package/src/features/diary-image.js +29 -0
  55. package/src/features/image-shape.js +16 -0
  56. package/src/features/imagegen.js +254 -0
  57. package/src/features/memory-store.js +257 -0
  58. package/src/features/memory-vector.js +258 -0
  59. package/src/features/memory.js +2629 -0
  60. package/src/features/paintings.js +190 -0
  61. package/src/features/qq-file.js +45 -0
  62. package/src/features/qq-profile.js +144 -0
  63. package/src/features/qzone-audience.js +51 -0
  64. package/src/features/qzone-social.js +204 -0
  65. package/src/features/qzone.js +253 -0
  66. package/src/features/stickers.js +452 -0
  67. package/src/host.js +1800 -0
  68. package/src/local/local.js +106 -0
  69. package/src/local/templates/README-/346/234/254/345/234/260/346/216/245/345/217/243.md +56 -0
  70. package/src/local/templates/asr.mjs +21 -0
  71. package/src/local/templates/image.mjs +32 -0
  72. package/src/local/templates/song-convert.mjs +35 -0
  73. package/src/local/templates/tts.mjs +35 -0
  74. package/src/local/templates/video.mjs +19 -0
  75. package/src/modules/API.md +379 -0
  76. package/src/modules/_template/index.mjs +57 -0
  77. package/src/modules/aurabot.d.ts +263 -0
  78. package/src/modules/bili/danmaku.js +195 -0
  79. package/src/modules/bili/index.js +161 -0
  80. package/src/modules/contacts/index.js +241 -0
  81. package/src/modules/diary/README.md +44 -0
  82. package/src/modules/diary/archive.js +112 -0
  83. package/src/modules/diary/assets.js +85 -0
  84. package/src/modules/diary/index.js +97 -0
  85. package/src/modules/diary/media.js +105 -0
  86. package/src/modules/diary/sources.js +166 -0
  87. package/src/modules/imagegen/index.js +121 -0
  88. package/src/modules/index.js +20 -0
  89. package/src/modules/memory/index.js +177 -0
  90. package/src/modules/mood/index.js +28 -0
  91. package/src/modules/profile/index.js +214 -0
  92. package/src/modules/purpose/index.js +63 -0
  93. package/src/modules/qq-api/actions.js +125 -0
  94. package/src/modules/qq-api/index.js +166 -0
  95. package/src/modules/qq-tools/index.js +273 -0
  96. package/src/modules/qzone-social/index.js +20 -0
  97. package/src/modules/song/index.js +77 -0
  98. package/src/modules/speakup/index.js +23 -0
  99. package/src/modules/stickers/index.js +227 -0
  100. package/src/modules/video/index.js +63 -0
  101. package/src/modules/voice/index.js +104 -0
  102. package/src/onebot/client.js +232 -0
  103. package/src/persona/personas.js +144 -0
  104. package/src/purpose/engine.js +2287 -0
  105. package/src/purpose/module.js +487 -0
  106. package/src/qqbot/api.js +200 -0
  107. package/src/qqbot/client.js +435 -0
  108. package/src/qqbot/connect.js +92 -0
  109. package/src/qqbot/convert.js +236 -0
  110. package/src/qqbot/qr.js +361 -0
  111. package/src/security/approval.js +98 -0
  112. package/src/security/danger.js +563 -0
  113. package/src/security/leak-guard.js +133 -0
  114. package/src/snowluma/manager.js +527 -0
  115. package/src/song/fetch_file.py +110 -0
  116. package/src/song/netease.js +96 -0
  117. package/src/song/separator/model_bs_roformer_ep_317_sdr_12.9755.yaml +133 -0
  118. package/src/song/studio.js +880 -0
  119. package/src/song/zip.js +53 -0
  120. package/src/tools/tools.js +34 -0
  121. package/src/voice/rvc.js +36 -0
  122. package/src/voice/tts.js +319 -0
  123. package/src/voice/wav.js +60 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,561 @@
1
+ # 更新记录
2
+
3
+ ## 1.3.0
4
+
5
+ - 项目改名为 **`dsh-aurabot-cola`**:包名、插件条目名、面板客户端模块 id 一并改,GitHub 仓库也改成 `cola0405/dsh-aurabot-cola`(旧地址自动跳转)。已经装过上游原版的,把 profile 依赖换成 `github:cola0405/dsh-aurabot-cola` 重装一次即可,配置和记忆都在 `~/.dsh/plugins-data/aurabot`,不受影响。
6
+ - 新增一种接入方式:**QQ 官方机器人**(bot.q.qq.com / api-v2)。在「系统 → 连接」里除了 SnowLuma / 已有 OneBot,还能选「接 QQ 官方机器人」——手机 QQ 扫一下二维码,选一个已有机器人或当场新建,AppID / AppSecret 自动填好并连上,全程不用在电脑上挂 QQ 客户端。细节:
7
+ - 「扫码连接」排第一(推荐),「手动填 AppID」排第二:扫码那条路官方会连扫码人的 openid 一起给回来,所以**扫码的号自动就是主人**;手填那条才需要用配对码认主人。
8
+ - 官方机器人只有 openid、没有 QQ 号;白名单也填 openid,可从「最近来过的会话」一键加入。
9
+ - 回复走官方的被动消息通道(群聊 5 分钟 / 5 条,单聊 60 分钟 / 4 条,`msg_id` + 递增 `msg_seq`),窗口过期或额度用完才退化成主动消息,并给出可操作的原因。
10
+ - 一条官方消息只能装纯文字或一个附件,所以带图的回复会拆成「文字 + 图片」两条;长文本按行断开分条发。图片 / 语音 / 文件走官方上传接口(单文件 5 MB 以内)。
11
+ - 官方没有的能力(好友列表、群成员、改资料、空间、收藏表情、戳一戳、合并转发、历史消息)会明确报「不支持」,相关模块自动降级,不会假装成功。
12
+ - 语音消息用官方给的 ASR 转写当文本读,她照样能听懂。
13
+ - 官方模式下「连接」页只留「接上 QQ / 把她加进 QQ / 谁能跟她说话」三张卡;SnowLuma 那套、工作区搬家、远端桌宠都不再显示。
14
+ - 新增**把它加进 QQ**:调官方 `/v2/generate_url_link` 生成机器人分享链接并在面板里画成二维码,手机 QQ 扫一下就能加好友或拉进群(二维码编码器自带,不引依赖)。
15
+ - 修复群聊中主人明确 @ 或引用回复的生图请求被同批普通群友消息误拒的问题;仅生图例外,不扩大其他工具权限。
16
+
17
+ ## 1.2.0
18
+
19
+ - 「关于」页更新项目介绍,并补充模块仓库和贡献入口。感谢 @RookieApe-tao 的 #200。
20
+ - 人物墙筛选框换成与面板一致的下拉样式,支持键盘操作。
21
+ - 可以在「心情与记忆」调整自动记忆容量,默认 3000 条,最多 100000 条;手动记忆和分档事实不受此容量限制。
22
+ - 修复桌宠刚离线时主动搭话可能重复发到 QQ 的问题;投递结果不确定时不再自动重发。
23
+ - 模型把换行写成 `<br>` 时会按普通换行处理,代码示例中的字面标签保持原样。感谢 @ansellchen-boop 的 #207。
24
+ - 减少把工具调用前的过程文字当成回复补发:一轮只取最后一条助手消息,带工具调用的消息不作为回复,并提醒模型不要输出草稿。写在普通正文里的心理活动仍可能被发出。
25
+ - 子智能体委派结果只接受可见文字,忽略结构化推理和工具调用;执行未正常结束或没有可用文字时明确报错。
26
+ - 发送前会再挡住写成文字的工具调用,以及原样念出的人设、规则和记忆提示,正常聊天内容照发;整段都被挡住时保持沉默并记警告。主人私聊也拦工具调用,但聊设定时保留带解释的回答,只挡整段照念。
27
+ - 出站清洗加固:原样念的人设/规则就算插了换行、拆成几条气泡、加粗、每字插空格或零宽字符也能拦住;工具调用标记里的零宽字符、全角空格/换行、DSML 成对标记、思考内容和单引号写法也能识别。反过来,主人问「工具调用怎么写」或看代码/JSON 示例时不会再被误删;QQ 接口的转发内容、AI 语音文本和卡片标题也会走同一套清洗。
28
+
29
+ - 修复工具调用标记漏到聊天里:统一清洗 DSML / antml 等调用文字,兼容半角、全角竖线、空白、大小写和孤立残片;整段只有调用时保持沉默并记警告,正常正文、@ 和引用照常保留,直接发文字、平台转发和语音回落也会检查。
30
+
31
+ - 她会记得一件事从什么时候成立、什么时候结束;问起「以前」「去年」时能想起当时的情况,平时不会把旧近况当成现在。
32
+ - 相近但不同的事会互相关联,想起一件时可以顺带想起另一件;人物详情里也能看到,删掉或忘掉时会一起清理关联。
33
+ - 看过的视频、帖子和网页会记成「看过的内容」,不会再当成谁亲口说的话来写人物印象;时间轴可以按内容类型和实际出现的平台筛选。
34
+
35
+ - 可以让她照着刚发的图、引用消息里的图或自己以前的画作改画了;生图服务不支持参考图时会明说,面板「生图」页可以关闭。
36
+ - 记忆改用 SQLite 保存,更稳;第一次启动会自动迁移,并留下旧记忆文件备份。
37
+
38
+ - 人物墙可以给人加标签、按群和状态筛选;她也会慢慢形成喜恶,对讨厌的人可以选择少回话。
39
+
40
+ - 她会暂时记得和每个人刚才聊到哪,同一个人换平台时也能接着聊。
41
+
42
+ - 认出是同一个人时,其他平台的聊天也能和 QQ 私聊共用记忆;提炼时会标明在哪个平台说的。
43
+
44
+ - 她会记住人和人之间的关系(比如谁和谁是情侣、室友),聊到时能对上号;人物详情里能看也能删。
45
+ - 她能主动想想对某个人、某个群的整体印象,别人问「你觉得他怎么样」时不再答得空。别人只能查同一个聊天里的人。
46
+ - 相处经验和对人对群的说话习惯搬到「人物记忆」页,和人物印象、群印象放在一起;私聊里同样的话不再带两遍,说「忘掉」时也会一起忘。
47
+ - 翻唱可以清唱了:说「清唱」或「不要伴奏」,发出来就只有她的声音。
48
+ - 面板新增「人物记忆」页:可以查看和编辑人物印象、相关事实与群印象,也能按聊天和层级翻看、删除梗概。
49
+ - 她会逐渐记住正在聊天的人的称呼、说话方式和性格,也能记住每个群的氛围;群印象只在对应群聊使用。
50
+ - 聊天原话到期前会压成一句梗概,久了再留下感受;事实可以按重要程度逐渐淡忘。原话、梗概和事实的整理共享每日预算,未整理成功的内容会保留到下次。
51
+ - 可以选择每轮都自动想起往事,或者只在提到「上次」「以前」等词时翻旧账;人物印象仍会常驻。相关天数、字数和批次上限可在「心情与记忆」调整。
52
+ - 人物画像、群印象和分层记忆的思路来自 @Emotionana 的 persona-memory。
53
+ - 修每日整理在「提炼预算用完」时每分钟重试、日志刷屏的问题:预算用完会把当天标记为已整理,剩下的流水留到第二天或手动点「现在整理一次」,不再空转。
54
+ - **管理接口安全基线(默认只许本机 + 跨站防护)**:面板的所有管理接口(改配置、装模块、取联动密钥、下载桌宠客户端包)默认只接受本机回环访问;跨站(CSRF)防护挡住恶意网页借你的浏览器打本机接口。远程管理要在「安全防护」页显式开「允许远端访问」并配好「可信反向代理地址」与「面板对外域名」——放在反向代理后面时这两项必须填,否则所有流量都会被当成「本机」,管理接口对反代流量形同虚设。桌宠「对外地址」的验证改走统一的内网地址判定(含 DNS 解析后逐 IP 校验),内网地址要显式二次确认才允许保存并留审计日志。
55
+
56
+ - 修桌宠:QQ 聊天时不再每句都触发「干活」动画和完工气泡——桌宠状态只跟 DSH 自己发起的活儿走,聊天回合不再算(#184)。
57
+ - **DeepSeek 峰谷省钱模式(默认关,聊天回复不受影响)**:面板「模型」页新增开关。打开后,不着急的后台模型调用会尽量放到谷时——心情模型判断(峰时退回关键词)、空闲提炼、记忆压缩、重复记忆合并、人物档案与说话风格整理、向量同步推迟到谷时再跑;聊天回复、工具调用、审批、定时任务本身照常。峰时 = 工作日北京时间 09:00–12:00、14:00–18:00;周末和法定节假日全天谷价(谷价约为峰价一半,以 DeepSeek 官网为准)。中国法定节假日的日期每年不固定,这里不硬编码,面板里可以自己填(一行一个 YYYY-MM-DD),填了当天全天按谷价。
58
+ - 修复「QQ 接口」里的转发/拍一拍/点赞/资料操作可能被诱导发到白名单外的人或群:主人开口时也只允许发给白名单里的好友和群,和「发消息」同一套白名单。
59
+ - **人格页:切走再回来会问「要不要恢复上次没保存的改动」**:编辑人格时切标签页/切页面/刷新**不会自动保存**,也不会悄悄覆盖;没保存的编辑先存在本机草稿里,下次进入人格页顶部会提示「发现上次没保存的人格改动(N 字,时间),要恢复吗?」——点「恢复」继续改、点「丢弃」清掉;还会记住上次编辑的是哪个人格。输入框里 Ctrl+Z 撤回照常可用,完全不想留草稿也可以不管它(不点恢复就不会用)。
60
+ - 群里别人喊她名字、@ 她、引用她,不会再被「刚说了太多,歇一会儿」吃掉;她刚说完别人追一句「人呢」也算在叫她(群里两个人正常聊天时不会乱插,#182)。
61
+ - 群聊里能看见群友发的图了:同一段里最近 5 分钟的图会一起交给她看(最多 2 张),不会再照着「(图片/表情)」占位瞎编;模型看不了图时会明说有几张、自己看不了(#181)。
62
+ - 记忆新增实验性的语义检索,默认关闭。自己配置 embedding 服务后,聊天时可以通过意思联想起相关记忆;记忆文字会发送到填写的服务地址。
63
+ - 私聊里可以直接说「记住……」或「忘掉……」:记住会立即生效,忘掉会让相关记忆和聊天原话不再被自动想起。
64
+ - 记忆检索会按来源聊天限制别人私聊和群聊能召回的事实;主人私聊还能照常回忆全部记忆。人物画像等其他上下文仍会影响聊天。
65
+ - 记忆会像人一样慢慢忘掉具体的事、留下长期印象:以前的小事(比如「主人给她买了大米饭」)整理时会慢慢淡忘,概括成关系和感受(比如「主人很疼她,总惦记她爱吃的」),这些印象不会被自动整理改掉、也不会过期;面板「心情与记忆」里可以关掉或调节几天以前开始概括。默认开,每次整理最多多两次模型调用。
66
+ - 聊天停下来后,积攒够的内容会在后台提炼,不必总等到固定整理时间;每天有批次上限。
67
+ - 记忆会区分本人说的、听说的和猜测;群聊的公共话题只在同一个群和主人私聊里使用。本人私聊可以纠正之前在群里留下的个人事实。
68
+ - 记忆容量按来源分配,手动记下的内容不受自动记忆挤占;普通经历超过 90 天会过期,重要经历保留。
69
+ - 回忆时减少语气词造成的误命中,并结合相关程度和说话时间排列结果。
70
+
71
+ - 收到加群申请或邀请时会通知主人,主人可以让她列出并通过或拒绝;沿用好友申请开关。
72
+ - 支持回复群临时会话,也能向当前聊天发送分享、音乐、位置、联系人、骰子和猜拳。
73
+ - 收到闪传文件、@全体、骰子和猜拳结果、位置或联系人卡片时,能看到更多内容。
74
+ - 聊天记录可以从指定消息继续往前翻,并显示下一次翻页用的消息编号。
75
+ - 主人可以使用更多群文件、待办、相册、表情和闪传接口;QQ 账号离线时会在日志里提醒。
76
+
77
+ - 发文件:群里也能用了,只放行你开口的那一轮——主人和别人同处一轮、或者别人 @ 她,都发不出来;路径、允许目录、大小上限和总开关与私聊同一套。图片直接显示成图,明确发不出去才当文件发(#169)。
78
+ - 发图:本地图片先按路径直发,网关读不到才改用 base64,省掉读盘和体积膨胀;超时这类结果不确定的失败不再重发,避免发出两张。面板「发文件」里可以关(`files.imageByPath`,默认开)。
79
+ - 记忆:聊天流水默认留 7 天(老配置的 0 也改成 7,面板里可以再选 0),自动回忆会查还没提炼的原话,刚说过的话换了会话也想得起来。
80
+ - 记忆:提炼时带上每句话的时间,「今天」「明天」不再算错,记忆显示的是说这件事的时间。
81
+ - 记忆:只差否定词、数字或地名的句子不再被当成重复吃掉;提炼按身份限制可修改的记忆,本人私聊仍可以纠正此前在群里留下的个人事实。
82
+ - 记忆:模型返回坏 JSON 时能修的先修,修不好的批次跳过,不再卡住后面的记忆,重启也不丢失败次数。
83
+ - 记忆:和这句话无关的记忆不再因为「关于这个人」就被想起,没展示的也不算想起过。最近 200 次回忆记到 `recall-log.json`。
84
+ - 设置向导第一步可以选工作区文件夹,不用等聊了几天才发现放在 C 盘。
85
+ - 修复群里她停不下来:接话时她会知道自己已经连着说了几次、没人理她,不想接就停,停了之后要过冷却才会再开口;面板里有个兜底上限。
86
+ - 新增「私聊时想起别处的话」:和主人私聊时,她知道自己最近在别的聊天里说过什么,只进主人私聊,默认关(#173)。
87
+ - 她可以不搭理人:有人抬杠、骂她、刷屏或者她就是不想接,可以不回,被 @ 也一样;主人的话不受影响。
88
+ - 你在群里开口时,也能让她去别的私聊或群发消息;群里有别人同一轮说话时不放行,目标还是只限白名单。
89
+ - 修复她在群里或别人私聊的回复里写本机图片路径时,能发出允许目录之外的图片。
90
+ - 修复目的引擎把「内部备忘」标题当正文发到 QQ(#172)。
91
+ - 她能感知 QQ 事件了:撤回、禁言、进退群、管理员变动、精华、改名片、头衔、群名、加好友,以及别人给她消息的表情回应,都记进流水,下一轮告诉她,不会因此主动开口。
92
+ - 新增 QQ 接口:她能用 SnowLuma 的大部分能力。别人只能查当前群的公告、精华、荣誉、群文件;撤回、设精华、改群名片、点赞、表情回应等写操作只听主人。取 Cookie、发原始包、读写本机路径、删好友、退群不开放。面板「权限」页可以关。
93
+ - 发送前加硬拦截:群聊和别人的私聊里,她复述规则或人设原文的行不会发出去;各种工具调用写法也不会发到 QQ。主人私聊不拦提示词。
94
+ - 修复群里让她画图时把 `<qq_draw_image">` 和提示词当文字发出来:这类文字不再发到 QQ,「不能操作电脑」的规则也写清了不包括画图唱歌。
95
+ - 目的引擎开着时,旧的主动搭话自动让路,同一个人不会被找两次。
96
+ - 修复视频段发送失败时没有改发文件。
97
+ - 目的引擎也会主动找「主动搭话白名单」里的人:每人单独算次数和间隔,并参考与对方的聊天和相关记忆。
98
+ - 「连接」页可以把工作区搬到别的盘,已有会话照常接着聊。
99
+ - 修复工作区放在盘根下的文件夹时,她的命令全部报 `SetNamedSecurityInfoW failed (Win32 5)`:插件会给自己的账号授权。
100
+ - 自写模块的标签页也能显示状态点:有 `enabled` 设置就看它,也可以用模块的 `flag` 指定。
101
+ - 模型看不了图时,`prompt` 钩子里的模块也能拿到图片,可以自己转成文字;是否看得了图按这个聊天实际用的模型判断。
102
+ - 修复 QQ 会话的授权一直没人答时,这一轮永远结束不了、后面的消息全堵死:5 分钟没人答就按没批准处理。
103
+ - 修复语音条上传慢或失败时整条回复丢失:现在会等到上传有结果,传不上去就改发文字。
104
+ - 支持 DSH 的智能体团队:在 DSH 插件页打开「智能体团队」后,她能把难活交给成员,自己接着聊,成员做完叫醒她汇报。这是 DSH 的实验性功能。群聊和别人的私聊不能创建成员。
105
+ - 新安装默认打开长任务模式:跑很久的活放后台,她先回一句,能接着聊,做完自动回来汇报。已经装过的用户配置不变,要用就在「权限」页打开,切换时会换新会话。
106
+ - 本地接口新增「生视频」:写好 `video.mjs` 后,主人让她做视频,她先回复,后台做好自动发回聊天,默认等 20 分钟(#163)。
107
+ - 人物小档案和想起的记忆带上 QQ 号,重名时分得清(#160)。
108
+ - 能在 QQ 里批准授权了:和主人私聊时 DSH 要授权,回复「确认」批准这一次、「取消」拒绝,5 分钟没回就不批;网页也能同时点,面板「权限」页可以关(#162)。
109
+ - 修群里多人说话时把话 @ 错人:这一批只有一个人说话时才自动引用并 @;重名时提醒她按 QQ 号分清楚(#160)。
110
+ - 修重启后回合结束找不到聊天,这一轮被丢掉(#159)。
111
+ - 面板「桌宠」页加松手后落地开关(需要桌宠模块 1.0.4,#161,RookieApe-tao)。
112
+ - 表情库可以整库补标签:面板「表情包 → AI 补全标签」用视觉模型逐张看图起名字、打标签(默认只补空缺,也可以勾「全部重做」),后台跑、面板显示进度,随时能停;起名还能单独挑一个视觉模型,不必跟着聊天模型走(#176)。
113
+ - 表情库支持多选删除:面板里点「多选」勾中若干张,全选 / 反选后一次确认全部删掉,不用一张张点、一张张确认(#176)。
114
+ - 语音和表情分开发:语音条只念能念的字,表情 / emoji 不念出来,而是等语音发完再单独补一条文字气泡;没有表情就不补,语音里只剩表情时也照样能发。面板「语音」页可以关掉这个开关,关掉就还按以前那样把表情直接丢掉(`voice.emojiSeparate`,默认开,#179)。
115
+
116
+ ## 1.2.0-beta.2
117
+
118
+ - 合并转发展开得更完整:嵌套转发最多展开 5 层,一共最多 200 条、每条 500 字;里面的图片也会给她看(最多 6 张)。
119
+ - 图片不再限制 MB 大小:收图、收藏表情、发图和空间配图都放开了,超过 8MB 的图先缩小再交给模型。
120
+ - 新增「订阅不稳定版本」:打开后会收到 beta 和 rc 的更新提示,关掉只收正式版。正在用测试版的默认算已打开。
121
+ - 修版本比较:`rc.1` 现在比所有 `beta.n` 新,转 rc 时测试用户能收到更新。
122
+ - 修记忆提炼卡在同一批、每分钟报错:模型把预算全花在思考上、一个字没写时,放宽到 16000 再试,失败后退避(10 分钟起,最多 2 小时),同一批连续 3 次提炼不出来就跳过,日志里能看到模型返回了什么。
123
+ - 新增一键备份:「系统 → 备份」把配置、记忆、人设、表情、自己写的模块、QQ 会话和数据打成一个文件。新电脑上拖入 zip,重启后自动换上、重新下载市场模块、放回会话,原文件留底。
124
+ - 主动搭话加白名单:除主人外还能主动找名单里的人,每人单独算次数,面板和 QQ 的 `/speak` 命令都能管;每天次数默认 20,不封顶。
125
+ - 放宽大部分数值的上下限:次数、间隔、时长基本不再限制,概率、小时、端口这类保留天然范围;滑块旁可以直接填超范围的值。
126
+ - 修面板桌宠专注开关永远显示关闭(#152,RookieApe-tao)。
127
+ - 面板「桌宠」页加人物大小控件(需要桌宠模块 1.0.3,#152,RookieApe-tao)。
128
+ - 面板新增只读的「关于」页(#153,RookieApe-tao)。
129
+ - 「权限」页加了 B 站评论,可以关掉、仅主人或所有人;B 站页的评论卡片挪到看画面前面,开关提示写清楚只管她自己发。
130
+ - 带文字说明的表情(`sub_type 7`)按表情处理,不再当普通图片。
131
+ - 能收 QQ 文件了:群文件上传她能看到,主人让她看时可以用 `qq_read_file` 读文本文件(2MB 以内,重启后最近文件的记录清空)。
132
+ - 动图交给模型时可能只看到一帧,现在会告诉她这是动图。
133
+ - 修 emoji 被截成半个字符后,之后所有模型请求都 400、她不再回话(#151)。文字发给模型前统一清理,旧数据里的坏字符也不再生效;已经存进旧会话历史的不处理,要新开会话。
134
+ - B 站评论里的 @ 变成真的 @,对方能点开也能收到通知;可在面板填主人的 B 站昵称,她写 @主人 时 @ 这个号(#146)。
135
+ - 模块市场顶部显示安装进度:读取、下载、安装、启动每一步都看得到,恢复备份时后台自动安装也会显示;断网自动重试一次,失败时说清原因,并写进日志。
136
+
137
+ ## 1.2.0-beta.1
138
+
139
+ - **修:发送失败却告诉她发出去了(#118 Bug A)**:`qq_send_message` 现在如实返回失败原因,一条都没发出去时也不写进聊天流水,她不会再跟主人争「我说过了」。
140
+ - **修:插件重载后旧工具残留(#118 Bug B,感谢 @baihengaead 的 #123 #128)**:卸载时撤销会话挂载、停掉定时器和等待,模块生命周期收尾完整。
141
+ - **修:插件卸载后危险命令确认不能再放行(感谢 @baihengaead 的 #126)**。
142
+ - **修:OpenAI 生图报 Unknown parameter(#113)**:接口拒绝 `response_format` 或 `image_size` 时去掉再发。
143
+ - **修:偶发「模型没写出东西」(#117)**:模型一个字没写时放宽输出预算重试一次。
144
+ - **修:抖音反复启动浏览器(#114,抖音模块 2.0.1)**:启动失败清理自己的进程并退避,关闭开关后关掉浏览器,DSH 重启后接回原窗口。
145
+ - **修:定时逛小黑盒报 hasLogin 未定义(#105,小黑盒模块 1.1.0)**。
146
+ - **小黑盒模块(感谢 @Chsw-CC 的 #131)**:按接口限速、验证码和 429 冷却、谷时逛、私聊分享、扫码登录,扫码不行时可以开浏览器手动验证。
147
+ - **新工具 `qq_search_chatlog`(感谢 @Nightc-c 的 #124,#120 的一部分)**:按关键词跨天搜本地聊天流水。跨聊天搜索只给主人私聊,其他场合只搜当前聊天。
148
+ - **常驻记忆 600 字上限(感谢 @Nightc-c 的 #125)**、**表情「不随机」标签(#127)**、**主动搭话不再允许编造由头(#129)**、**心情历史保留 200 条(#130)**。
149
+
150
+ - **修:Linux 上点「打开文件夹」把 DSH 整个带崩(#135)**:按系统选打开方式,失败只提示;SnowLuma 和桌宠启动失败同样不再带崩宿主。
151
+ - **修:桌宠气泡的话回不了(#133)**:主动搭话走桌宠时,这句话同步记进主人私聊,在 QQ 接话她知道说过什么。
152
+ - **DSH 要授权时通知到 QQ 私聊(感谢 @Nightc-c 的 #136)**:只通知,批准还得回 DSH 点;「权限」页可以关。
153
+ - **桌宠行为回执记忆只留 3 天(#138)**、**素材包面板和 Electron 镜像可配(#137,感谢 @RookieApe-tao)**。
154
+
155
+ - **桌宠聊天联动(#144 和 mods #2,感谢 @RookieApe-tao)**:主人聊天时她可能顺带做个小动作,默认关,只旁观不影响回复。
156
+ - **感谢 @Nightc-c 的一批可选项,都默认关或保持原行为**:心情基线可调(#139)、聊天流水保留天数(#140)、新会话先补看记录(#141)、整理时合并重复记忆(#142)、@ 别人时不算叫她(#143)。
157
+
158
+ - **跨群只读(#120,成员判定的想法来自 @devil233-ui)**:`qq_chat_history` 能看白名单里的其他群,群名或群号都认。主人随时能看;别人要本身在那个群里,默认只在私聊可用,「聊天」页可以关,也可以放开到群里。
159
+ - **模块市场页**:按分类筛选,页面最下面有提交教程,可以折叠和一键复制。
160
+ - **逛贴吧搬到模块市场**:需要时在面板「模块市场」安装,使用说明在模块库。
161
+
162
+ - **修:后台回合卡死后要重启才能恢复**:超时后取消旧轮次并归档,再换新会话,连续失败会退避(来自 #131 的思路)。
163
+ - **修:聊得多的日子前面的内容提炼不到(#117)**:分批提炼,放不下的留到下次。升级后还留着的流水会再看一遍,已有去重兜底。
164
+ - **修:语音和文件超时后可能重复发**:结果不确定时不再回落,如实报告失败。
165
+ - **来源章标明说话人(#145)**:主人 `owner`、别人 `guest`、后台任务 `none`,并标明私聊还是群聊,方便同会话的其他插件区分。
166
+
167
+ ### 已知问题
168
+
169
+ - 跨群读到的内容会留在当前会话的上下文里,之后可能被提起;已标明它只是资料,但没法从会话里抹掉。
170
+
171
+ - **模块市场(1.2.0)**:面板新增「模块市场」页,可以搜索、查看能力,从 [dsh-aurabot-qq-mods](https://github.com/aureth-labs/dsh-aurabot-qq-mods) 下载、更新、卸载模块。安装前显示来源、版本和能力;下载后核对 sha256,用户自己写的同名文件夹不会被覆盖。
172
+ - **面板精简**:扩展页模块优先,写模块的工具默认收起;权限页只显示已安装模块的开关。
173
+ - **桌宠、抖音、小黑盒、群管搬到社区库(1.2.0)**:按群投票,核心保留 QQ 空间、B 站、翻唱和基础模块,这四个不再内置。老用户升级时,**正在用的会自动安装一次**,配置、登录状态和数据都留着;卸载后不会再自动装。接口路径和面板页不变,没安装时对应标签页不显示。
174
+
175
+ - **「其他 HTTP 接口」能填请求方式、请求头、请求体了(可接火山 / 阿里 / 讯飞这类云 TTS)**:原来「语音 → 其他 HTTP 接口」只有一栏地址模板,只会发 GET、带不了任何请求头,响应也一律当音频存,所以凡是要鉴权的云厂商都接不上。现在多了三项——**请求方式**(GET / POST)、**请求头**(一行一个 `Key: Value`,`#` 开头算注释)、**请求体**(选 POST 才出现):请求体里的 `{text}` 自动做 JSON 转义(文字里带引号、换行也不会把 JSON 撑破,另给了不转义的 `{text_raw}` 给表单用)、`{reqid}` 每次换成新的 UUID、没填 `content-type` 时按 JSON 补上;对方返回 JSON 时自动从 `data` / `audio` 等字段取 base64 解成音频,云厂商的错误码和 message 会原样写进日志(不再是「存下来一个坏文件」)。老配置只填了地址模板的,行为完全不变,照旧走 GET。配置里 `method` 只认 GET / POST,请求头和请求体一律按字符串存,手改 config 写脏了也不会把请求发歪。新增 12 条测试。
176
+
177
+ - **偷表情新增三种模式 + `qq_collect_sticker` 工具**:面板「表情包 → 怎么偷」可选「全都偷」(默认,保持原行为)、「她挑」(先把表情记下来并给她一句轻提示,她喜欢才凭编号收)、「只听主人的」(只有主人私聊 / 这一轮只有主人说话时才提示并允许她收;有别人在场就要主人发话)。后两种模式下表情按会话暂存、30 分钟内有效、重启不丢;她可以用新工具 `qq_collect_sticker` 按编号收(也能收自己刚画的图),并顺手收藏到 QQ。新增 11 条回归测试。
178
+ - **修:插件卸载后危险命令确认仍可能放行**:危险命令确认在等主人回复时,如果插件卸载 / 重载,旧回调仍能把等待中的命令放行,给模型返回「确认」;现在 `dangerGuard.dispose()` 会立即以拒绝结束所有等待中的确认,之后旧回调、主人的迟到「确认」和新的危险调用都不会再执行。`host` 收尾会调用它。新增 2 条卸载回归测试。
179
+ - **修:插件卸载 / 重载时模块与定时任务没收尾**:模块在异步 import / setup 途中插件被卸载时,迟到的模块仍会启动并注册路由、定时器,甚至覆盖新实例的 `globalThis.aurabot`;异步 `dispose` / `onDispose` 的 rejection 会变成 unhandledRejection。现在卸载后不再启动模块,迟到资源和 exports 立即清理,异步清理失败只记日志,`dispose()` 保持同步且可重复,也不会误删后来注册的同名资源。新增 5 条模块生命周期回归(9 个子测试)。
180
+ - **修:插件卸载后仍在发送 / 输入 / 慢工具提示 / 后台等待**:插件卸载或重载时,消息合并计时器、私聊「正在输入」定时更新、慢工具「我这就去做」提示、后台轮次等待都没有被清理,仍可能继续向 QQ 发消息;已挂到会话里的工具、上下文和联动全局工具也没有撤销,重载后容易撞 `already registered`。现在 `hub.dispose()` 会停掉所有计时器与等待、结束后台回复、撤销仍存活会话里的工具与上下文,`bridge.dispose()` 撤掉联动工具;`host` 收尾改为调用完整 dispose。新增 11 条卸载回归测试。
181
+
182
+ - **桌宠行为系统(#115,感谢 @RookieApe-tao)**:给她加一层「小动作」——AI 定时从 9 个固定动作里挑一个交给客户端确定性执行(追鼠标、溜达、打盹、拖拽/收起桌面图标等;关窗口默认关且是物理闸),动作表硬编码、AI 只能挑不能发明;图标动作默认开、收起的图标会在面板一键归还/超期自动归还(默认 7 天)。**「行为大脑」默认关**(主人在审查时要求先保守),面板「桌宠」页打开后才会自己动。新增 4 个测试文件。
183
+ - **桌宠默认素材包自动下载(#116,感谢 @RookieApe-tao)**:「大肥鱼」形象包(50MB+,106 个 .webm,CC BY-NC-SA 4.0)不进插件仓库,缺失时从素材仓库 `dsh-aurabot-qq-mods` 的 `pet-pack/` 自动下载落位(先校验后落位,失败只记日志、不污染已有素材,面板可换镜像/手动重下)。素材仓库已经建好并放好 default 包。
184
+ - **能看到引用的消息了(私聊 + 群聊)**:以前只记了「引用的是哪条」,从没取正文,所以别人引用一条消息时她只看到当前这句话、经常答非所问。现在收到带引用的消息会用 `get_msg` 取回被引用的内容——谁说的、正文(截 300 字)、几张图/表情/语音,私聊拼进正文、群聊接在那条消息后面;引用的是她自己以前的话会标成「你」。引用里的图片和表情包也会作为附件交给她看(最多 2 张,总数不超过 4);`get_msg` 只回了空地址时(她发出的表情常见)会再用消息历史把图片地址补回来。取不到时她会明确知道「这条引用没读到」,可以如实说没看到,不会装看见。查询结果按消息 ID 缓存,不会重复请求网关;新增 6 条 e2e 回归。
185
+
186
+ - **主人私聊里的「群聊摘要」(默认关)**:主人在私聊里问起群里的事时,把最近 24 小时的群聊流水当成她自己的见闻补进这一轮上下文——只取白名单群(不选 = 全部白名单群)、每个群可调条数(最多 30 条),不常驻上下文、不写进记忆。只在「主人私聊 + 这句话提到群相关」时触发;群聊和非主人私聊不补。面板「聊天 → 主人私聊:群聊摘要」可开关、调条数、限定群;默认关,开启前先把群加进白名单。新增 3 条测试。
187
+
188
+ - **修(桌宠):Electron 无 npm 环境也能装(#106,感谢 @RookieApe-tao)**:DSH 自带运行时只带 pnpm、不带 `npm-cli.js`,面板「安装 Electron」原来会直接报错。现在没有 npm 时自动改走 **npmmirror 直下 Electron 官方 zip + Node 自带 zlib 纯 JS 解压**(零 npm/零 shell/零外部依赖,带 zip-slip 防护与符号链接跳过);有 npm 的机器行为完全不变。另补了 USER-MANUAL「桌宠:把大肥鱼请到桌面上(小白跟做版)」章节。新增 6 条测试。
189
+ - **语音条可以用翻唱里的音色模型了**:面板「语音」页新增「语音条变声(用翻唱音色)」卡片——先 TTS 念,再用「翻唱」页导入的 RVC `.pth` 音色变声,让**说话和唱歌是同一个声音**;带 index 的音色会标出来,可选变调(男声模型转女声一般 +12);翻唱环境没装好 / 没导入音色 / 变声失败都会自动回退 TTS 原声,不影响语音条发送。翻唱环境需要先在面板「翻唱」页一键安装。新增 5 条组合测试。
190
+ - **默认人格:去掉带框的写法(有人反馈她说话带框)**:默认人格 `personas/dafeiyu.md` 不再用中文角括号「」把词句框起来,改成顿号、逗号等普通标点(比如 嗯、哦、?、在,或者 emmm、哈哈哈、啊啊啊 这类直接写),示例句照常可读;没有额外加约束语句。注意:人格是首次启动时从插件拷贝到数据目录的,已有用户自己改过的人格不会被覆盖——这份默认改动只影响新安装或重置人格后的用户。
191
+ - **修(小黑盒,#99,感谢 @Chsw-CC 跟进)**:`_rnd` 签名盐值补上结尾的 `H`(原来所有写接口签名都算错)、每个请求自动带 `heybox_id`(缺了会被误判成未登录)、定时刷改用独立后台会话(带人格与记忆,结果不发 QQ)。
192
+ - **实验性:桌宠(#97,感谢 @RookieApe-tao 从 #65 拆分)**:内置 `pet` 模块——面板可生成 Electron 悬浮窗桌面宠物(置顶/透明/拖拽/甩抛物理/托盘/单实例,动画池轮播 + 右键点播),碎碎念只发桌面气泡、**永不发 QQ**(需桌宠在线才触发,不会白跑模型);DSH 干活状态联动动画/完工气泡/系统通知;与主动搭话「载体互斥」(选桌宠时不双发、离线可回落 QQ);面板新增「桌宠」页。**默认不生成/不启动客户端、不自动下载 Electron**:需在面板点「生成客户端」并按文档自装 Electron 后手动启动;MIT 归属见 `THIRD-PARTY-NOTICES.md`。新增 49 条测试。
193
+ - **实验性:目的引擎(独立内置模块,默认关)**(来自 #94,感谢 @RookieApe-tao 的拆分与移植):把 surfcore 的 purpose-engine(MIT,署名见 `THIRD-PARTY-NOTICES.md`)移植成 `purpose` 模块——攒素材 → 记观察 → 立目标假设(带归属/置信度/风险)→ 挑候选 → 到点才主动私聊主人;节奏保守(默认 2.5~5 小时一次、每天最多 4 次、23:30~08:30 不打扰),重启不补发,投递走原有私聊链路(受总开关/试运行/静默约束)。**默认关**;开启前建议先关掉「主动搭话」总开关,两套别同时开。面板「主动搭话」页新增目的引擎卡(状态/预览/立即触发/节奏与安静时段)。
194
+ - **实验性:刷小黑盒(新模块)**:用主人的小黑盒账号逛游戏社区——读信息流、帖子正文与热评、热榜、搜帖;点赞、评论;发帖(文章模式,图片走小黑盒图床、行内插在文字中间);删自己发的帖。面板新增「小黑盒」页(填 Cookie / 检查登录 / 逛法 / 额度 / 热榜预览 / 发帖自检提醒 / 逛过什么),权限页新增四项(浏览、点赞、评论、发帖),默认仅主人。
195
+ - 签名与请求在 `src/heybox/api.js`,业务在 `src/heybox/site.js`,模块壳在 `src/modules/heybox/index.js`。
196
+ - 踩过并修掉的坑:`link_tag=28`(动态)塞 HTML 会把标签原样显示出来,发帖必须用 `11`(文章);分区 id 乱填(比如网上抄的 58144 并不存在)会一直报「错误的帖子类型」,真实可用的是 7214 / 18745 / 806933。
197
+ - 限速:帖详情 900ms 起,搜索单独 8 秒;搜索被验证码挡时返回降级提示而不是抛错,主流程不受影响。
198
+ - **三种发帖风格**(`src/heybox/styles.js`):`diary` 大肥鱼日记(第一人称随手记,跟空间日记一个味,120-300 字)、`news` 热搜文(报道新闻体,摆具体数字,200-800 字)、`mix` 肥鱼热搜(日记口吻写热搜,150-500 字,默认)。面板「小黑盒」页可以选默认,单次换风格时给 `heybox_post` 传 `style`;认不出来的风格会回落到默认,不会报错。
199
+
200
+ ## 1.1.24
201
+
202
+ - **修:发语音时把 QQ 表情/emoji 念出来(用户反馈)**:回复里带 `[呲牙]` 这类小黄脸或 emoji 时,语音条会把「呲牙」甚至 emoji 名字直接读出来。现在语音合成前会把 QQ 小黄脸标签、表情包/戳一戳等格式标签、emoji 图形符号去掉,只念能说的字;如果整条语音只剩表情/符号,就改发文字(表情照常显示、不作伪)。新增 e2e 回归(修前失败、修后通过)。
203
+
204
+ ## 1.1.23
205
+
206
+ - **修:带引用 / @ 的语音条在 QQ 里显示不出来(#103,感谢 @zhuyi314 的报告和定位)**:QQ 客户端不支持把「引用 / @」和「语音」放在同一条消息里——这样发出去电脑 QQ 是空白气泡、手机 QQ 提示「该消息类型暂不支持查看」,语音也听不到。现在语音条一律单独成条发送(引用和 @ 不再拼进语音消息;回复的内容本身就在语音里),语音正常可听;文字/图片消息的引用回复不受影响。新增 e2e 回归(修前失败、修后通过)。
207
+
208
+ ## 1.1.22
209
+
210
+ - **修:「仅主人」权限偶尔失效,重启 DSH 才恢复(#90,感谢 @38213063 的详细诊断)**:现象是主人私聊里改 B 站头像/签名、存表情等「仅主人」操作被拒,日志里伴随一堆 `tool "xxx" is already registered in this scope`(旧工具没卸干净、新工具挂不上,旧闭包里的会话/上下文过期)。
211
+ - **兜底(语义安全)**:`turnSendersAllOwner` / `turnHasOwner` 在「主人私聊」里即使这一轮的说话人记录丢了也返回 true(主人私聊只可能是主人说话;群聊/别人私聊不放宽)。
212
+ - **重挂更稳**:工具挂载改为按会话记录、注册前先清掉我们记着的旧 disposer,agent 对象被 DSH 换掉也能清旧挂新;注册失败不再留下旧工具继续用。
213
+ - **排队轮次不丢说话人**:上一轮还在跑时新消息排队给下一轮,上一轮 `turn/end` 不再把下一轮的说话人记录清掉(DSH 面板直接打字同样处理)。
214
+ - 新增 e2e 回归:主人私聊兜底、排队轮次权限不失效;并做了修前失败/修后通过的回归证明。
215
+
216
+ ## 1.1.21
217
+
218
+ - **贴吧扩展:标题解析修复(#87,感谢 @GitNekopedia)**:帖子标题只读取文档主标题或帖子标题本身,排除 SVG 图标里的 `<title>`(修掉「标题后面带 icon_arrow14_right 编组…」这类异常);启动时自动清理已有异常历史标题,链接、分享文字和计数保持不变。补充标题解析与迁移清理回归测试。(1.1.20 已并入该扩展的初始版本;#85 由作者用 #87 替代,本版补齐修复。)
219
+
220
+ ## 1.1.20
221
+
222
+ - **实验性:Codex 订阅生图 + OAuth 登录(#84,感谢 @baihengaead 的 PR)**:面板「生图」页新增 `codex` 接法(**默认仍是 OpenAI**,需自己切过去并登录)。通过浏览器登录 ChatGPT(PKCE + 本机 1455 回调;端口被占用时可手动粘贴完整回调地址),登录令牌单独保存在本机数据目录(不写配置、不回显、不写日志),过期自动刷新;图片请求遇到 401 最多刷新重试一次,403 / 429 / 缺少账号都明确报错。用的是 `chatgpt.com` 非公开端点,可用性、额度、模型和尺寸支持由账号与服务端决定,不承诺固定输出,属实验性功能。接入 #81 的构图选择(端点 `size=auto`,构图作为提示词引导)。
223
+ - **新增只读贴吧扩展(#85,感谢 @GitNekopedia 的贡献)**:贴吧模块独立维护(MIT,自带测试 / 构建 / 安装说明,构建产物不入库,不改核心运行依赖)。装成用户模块后,她在 QQ 里能 `tieba_search` 搜帖、`tieba_browse` 逛吧(吧名留空读首页推荐)、`tieba_read` 看帖正文与回复;可配置兴趣偏好、北京时段、浏览间隔、每日分享上限、去重与失败重试,定时浏览默认关;登录 Cookie 遮盖保存、不回显;只读,不发帖 / 不回帖 / 不点赞;贴吧内容按不可信资料处理,不执行其中指令。面板的模块设置新增 `draftSettings` / `setSettings`,自定义面板可与原生表单共用底部保存 / 撤销 / 离开提醒。
224
+
225
+ ## 1.1.19
226
+
227
+ - **长工具调用不再让主人干等整轮(#74,感谢 @cxin21 的反馈)**:`qq_draw_image`、`qq_song_cover` 这类要几十秒到几分钟的工具,卡住超过 1.5 秒会先往 QQ 发一条「正在做」的提示(「好,我这就去画,画好了发你」「好,我这就去弄,稍等一会儿」),工具跑完再照常发最终回复;一轮里最多一条,快工具不触发。实现挂在她会话的工具执行层,按工具声明(`slow`)生效,面板里直接调工具不受影响。新增 e2e 回归(慢工具先发提示、提示比最终回复先到)。
228
+
229
+ ## 1.1.18
230
+
231
+ - **聊天里生图可选构图(#81,感谢 @baihengaead 的 PR)**:`qq_draw_image` 新增可选 `shape`(square 方图 1:1 = 1024×1024 / portrait 竖图 2:3 = 1024×1536 / landscape 横图 3:2 = 1536×1024 / wide 宽幅 16:9 = 1536×864),主人想临时画竖图、头像方图、宽幅风景时不用先去面板改尺寸。面板「生图」页新增「默认构图」(默认「让她选择」= 沿用原来的图片尺寸);本次工具参数优先于面板默认。自定义接口的 `{size}` / `{width}` / `{height}` 占位符会跟着所选构图变;服务不支持所选尺寸时如实报错,不静默改尺寸。新增 8 条回归测试。
232
+
233
+ ## 1.1.17
234
+
235
+ - **按头衔不理(防机器人互聊)**(思路来自社区贡献的「群头衔回复过滤」扩展,做进了聊天中枢):面板「聊天」页新卡片。勾选的群里,专属头衔正好是设定词(默认「大肥鱼」,可改)的成员说话、@ 她、戳她都不理,也不进群聊上下文,免得几个机器人互相接话停不下来。点「从群里拉取头衔」会列出白名单群里现有的头衔和人数,点一个就设成要过滤的那类。只认专属头衔,昵称和群名片不算;私聊不受影响。查不到头衔时那条先不回,过几秒再查。
236
+ - **人格分节按颜色区分**:每节一个颜色(左侧色条、标题前的色点、淡淡的同色底,聚焦时边框也是这个色),一眼分得清哪段是哪节;颜色跟着节走,挪位置不变。
237
+
238
+ ## 1.1.16
239
+
240
+ - **优化:上下文涨得太快(#79,感谢 @HuaGyuu 的反馈)**:DSH 每轮会把「运行时上下文」整份快照追加进历史;我们的 `aurabot-context` 里混着随每条消息变化的「相关记忆」,内容一变就要多存一份约 1300 字的快照(≈1000 token/轮)。现在拆开:稳定的「印象 / 相处经验 / 说话方式 / 最近做的事」留在运行时上下文(内容不变时 DSH 会沿用上一轮请求头,不再每轮追加);随消息变化的「相关记忆」改由记忆模块放进当轮用户消息(最多 4 条、≤300 字),短句(「嗯嗯」)连上一句检索的兜底也保留。
241
+ - **修:群里 `<at:QQ号>` 和表情包写在同一句时,at 会被降级成文字(#77,感谢 @cxin21 的报告)**:`<at:数字QQ号>` 原来要能对上刚拉的群成员列表才变成真 @;群成员列表拉取失败/不全时(SnowLuma 限流、刚进群等)就被降级成普通文字「@QQ号」,表情包再单独发,看起来就像 at 没了。现在数字 QQ 直接信任、始终发成 QQ 的 at 消息段(名字 @ 仍然要唯一对上,避免乱 @)。新增 e2e 回归:at + 表情包同时出现时,at 是真 @、表情包单独一条。
242
+ - **修:模块热重载后,已有会话还在用旧实例的工具(#73,感谢 @CYyare 的报告和定位)**:模块保存后虽然重新加载了,但会话挂的工具是按「工具名」缓存的,名字没变就整轮跳过重挂 —— 于是聊天里调用的还是旧实例的闭包(旧状态、旧实现),面板里看到的却是新实例。现在模块每次(重)启动会递增一个代际号,`hub.mount()` 的缓存键带上它:热重载后下一轮会话会重挂工具,行为立即更新。新增 e2e 回归(热重载前 v1 → 热重载后 v2,修前会失败、修后通过)。
243
+ - **修:重启 DSH 后「存一下刚才的表情/图片」失效(#76,感谢 @baihengaead 的 PR)**:最近图片/表情原来只存在内存里,重启就丢;而且只在收到新图时清理过期记录,之后没有新图仍可能取到超过 30 分钟的旧图。现在最近媒体(每聊天最多 6 张、30 分钟有效期、沿用原始时间)落盘到 `recent-media.json`,重启恢复;QQ 头像的「刚才那张图」入口也用同一份缓存和有效期。损坏/写入失败按空缓存/保留内存处理,卸载后迟到事件不会再写盘。新增 15 条回归测试。
244
+
245
+ ## 1.1.15
246
+
247
+ - **修:空间日记「空间列表未完整读取」永远触发(#70,感谢 @38213063 的报告和定位)**:空间列表对账分页原来请求 `num=100`、按 100 步进 `pos`,但 SnowLuma 单页上限约 30(实测 num=10/20/30/50/100/200 分别返回 10/20/30/10/10/0 条),所以第一页之后就错位、读不全,永远提示「空间列表未完整读取,未将缺失记录判定为已删除」,空间里删掉的日记也一直不会同步成「已删除」。现在改成 30 条一页、按**实际返回条数**推进 `pos`,以「读完总数 / 没有新 id / 空页」作为停止条件,不假设网关一定按请求页大小给;读不全时仍然只提示、绝不误判删除。新增 4 个分页回归测试。
248
+ - **面板导航分组**(思路来自社区贡献的「导航布局」扩展,这里改成面板自己实现):顶部一排是五个分组(概览 / 人设 / 表达 / 平台 / 系统),下面一排是这组里的页面,不用再在一长串标签里横着找。每组记住上次看的那页;有没保存改动的分组会亮小圆点;右上角「查找」或按 Alt+K 能按名字搜功能(「白名单」「小黄脸」这种别名也认)。自己写的模块按名字归到「平台」或「系统」。
249
+ - **人格页按节编辑**:人设按【标题】拆成一节一个框,能改标题、上下移、删除,底下点一下就能加常用的节(你的样子、性格、打字习惯……);也能切回「整段」编辑。存的还是原来那一整段,旧人格不用改。复制粘贴带进来的零宽字符不影响分节。
250
+ - **人格 AI 润色**:每节右上角「AI 润色」,用当前的默认模型把这一节改得更具体、更像真人(空的节是「AI 写一版」)。润色完原版和润色版只显示一个,按钮来回切着看,选定一版另一版就丢掉;有没选定的节时不能保存。
251
+
252
+ ## 1.1.14
253
+
254
+ - **修:用刚收到的图片换 B 站头像失败(#69,感谢 @baihengaead 的 PR)**:QQ 头像模块在 1.1.11 之后只校验图片网址,但 B 站头像工具还按旧接口传「最近一张图的网址」,导致 `bili_set_avatar({ image: "last" })`(以及「刚才那张图 / 上一张 / 最近的图片」)在参数校验阶段就被拒。现在 B 站模块自己把 `last` 类引用解析成当前聊天缓存的图片网址,再做网址校验;没有可用图片、画作编号、本地路径、开关/权限变化仍然会明确拒绝。
255
+ - 顺带补了 B 站头像的回归测试(不依赖真实账号)。
256
+
257
+ ## 1.1.13
258
+
259
+ - **危险命令确认(可选,默认关;#66 讨论后加的安全保护)**:面板「聊天」页新增开关。打开后,她在主人私聊里要执行删除根目录 / 格式化 / 关机 / 下载后直接执行这类终端命令之前,会先发 QQ 私聊问主人;回复「确认」才执行,回复「取消」或 60 秒没回就拦下,并把实际要执行的命令原文如实交给模型(她会告诉你被拦下了、为什么)。
260
+ - 实现放在 DSH 的 `tools/pre-execute` 层:真到命令要执行前才判断,不是靠提示词,拦下就是真的不执行。
261
+ - 只拦真正致命的模式(宁少勿多):普通 `rm -rf 工作目录`、`git` 操作、构建命令都不受影响。
262
+ - 群聊 / 其他人的会话本来就没有本地终端工具,碰不到这个开关;确认回复只认主人私聊。
263
+
264
+ ## 1.1.12
265
+
266
+ - **空间日记配图:日记不再只有文字(#63,感谢 @yunxirumo 的建议)**:面板「空间日记」页新增「日记配图」开关(默认开)。开着时,每篇日记会从「今天她画的图」里挑最新一张配上去;今天没画图就用「今天收进表情库的表情包」;都没有就只发文字。配图是本地文件,不经过外部链接,也不会把大照片带上空间(表情库只有表情图)。
267
+ - 配图只影响自动/手动写的空间日记;「空间互动」、评论回复等不受影响;配图失败或文件读不到时安静地只发文字,不阻塞日记发布。
268
+
269
+ ## 1.1.11
270
+
271
+ - **画作编号:用自己画的图换头像 / 存表情(#61,感谢 @baihengaead 的 PR)**:
272
+ - 画完图她会拿到「画作编号」(#1 = 这个聊天里最新那张)。说「用画作 #1 换头像」「把画作 #1 存成表情」就能用上自己画的图;编号只在本聊天有效、重启后按文件重新算,文件路径不交给她,也不用她自己去翻文件。
273
+ - 换头像统一了取图流程:主人刚发的图直接取图片字节(不再依赖 QQ 图片链接能不能被网关拉到)、画作按编号取本地文件;图超过 1MB 先缩到 640 以内,再依次试 `base64://` / 临时文件,失败如实报错并清理临时文件。
274
+ - 顺手修了顺序问题:`last`(刚才那张图)一定指别人刚发的那张,不会被画作别名抢走。
275
+ - **「让她画完自己看一眼」开关(同 #61)**:面板「生图」页新增开关,默认开。关掉后画完只回一句「画好了」,不传图、不给路径,但画作编号照给(还能换头像 / 存表情);模型不支持看图或附件登记失败时仍如实说没看到。
276
+
277
+ ## 1.1.10
278
+
279
+ - **重新开始所有会话后,在面板里直接让她改资料会说没权限(#58,感谢 @XiongYachao 的报告)**:从 QQ 转进来的消息会记下这一轮是谁说的,但主人在 DSH 侧栏「Aurabot · QQ」里点开会话直接打字时没有这个记录,重开会话后让她改 B 站头像、昵称这类「仅主人」的操作会被当成「没权限」。现在面板里直接打的字按主人算(只有主人能操作 DSH);从 QQ 转进来、别人说话的情况不受影响。
280
+ - **生图后把本地文件路径返回给模型(#59,感谢 @cxin21 的建议)**:画完图会在工具结果里带上本地保存路径 `path`(以及 prompt、字节数和耗时)。能看图的模型会同时看到「已保存到本机:<路径>」,可以直接用 `qq_add_sticker` 收录成表情包、或按路径归档素材,不用每次都手动回发。看不了图的模型仍然不给路径(避免她拿路径去读图、绕开「不给看」的判断)。
281
+
282
+ ## 1.1.9
283
+
284
+ - **B 站视频「看画面」+ 截图库 + 发截图(#55,感谢 @baihengaead 的 PR)**:
285
+ - 打开「B站」页的「让她看画面」后,她刷视频时会用 ffmpeg 抽几帧(2~12 帧,默认 6)交给视觉模型,看到的内容和标题 / 字幕 / 热评一起成为「她看过的」。抽到的画面存进本机截图库,按内容去重,默认最多 300 张(20~2000 可调),面板里能预览、单张删除。
286
+ - 新工具 `qq_send_shot` / `qq_list_shots`:让她把看过的视频画面发到当前 QQ 聊天,或者先看看手上有哪些截图;刷完 B 站按概率顺手发一张给主人(默认 35%,0 = 从不),配一句她自己看的时候的感受。
287
+ - 默认关闭;没 ffmpeg、模型明确不支持图片、取流或抽帧失败时自动退回只看文字,不影响原来的流程。截图接口只按图库索引里的文件名访问,不接受任意路径。
288
+ - **维护者在真实 B 站账号上实测发现**:现在不少账号 / 视频的取流接口只返回渐进式 MP4(`durl`)不再给 DASH,原实现只认 DASH,会静默跳过看画面。1.1.9 加了 durl 回退(多段按长度定位、段内相对时间抽帧),并一次请求全格式(`fnval=4048` / `fourk=1`);实测真实视频能抽到画面、截图入库、并真的发到 QQ 私聊。
289
+ - 顺手修了 `findFfmpeg` 测试假设 Windows 路径分隔符、在 Linux 上误报的问题。
290
+ - 感谢 @baihengaead 连续贡献 #54、#55 两个 PR。
291
+
292
+ ## 1.1.8
293
+
294
+ - **查看自己的 QQ 资料、把当前头像发给主人(#54,感谢 @baihengaead 的 PR)**:
295
+ - 新工具 `qq_get_profile`:主人在私聊里问她「你现在叫什么」「签名是什么」「喜欢现在的头像吗」时,她会查当前昵称、个性签名和头像地址。讨论头像画面时传 `view_avatar=true`,会把当前头像下载下来、登记成图片附件交给当前聊天模型看,并附一段辅助描述;模型不支持看图或视觉服务失败时会如实说明,不编造画面。头像只认机器人自己的,不接受外部地址或 QQ 号;下载限 2MB / 8 秒,不落盘。
296
+ - 新工具 `qq_send_avatar`:主人说「把现在头像发出来」,她会直接把当前头像图片发到这次主人私聊。不需要先识图,纯文本模型也能用;试运行不真实发送;只有网关确认了消息编号才报告发送成功,失败会如实说明。
297
+ - 两个工具都只在主人私聊里挂;查询 / 发送和「改资料」权限分开判断,把修昵称、签名、头像的权限关掉,也不影响主人查看资料。关闭内置「改资料」模块后,这两项工具一起撤销。
298
+ - 顺手修了真机发现的小问题:个性签名如果网关返回的是纯空格,现在当作「未设置」,不再显示一行空白。
299
+ - 生图结果里的图片附件逻辑挪到 `src/core/img.js` 共用(对扩展模块的导出接口不变)。
300
+
301
+ ## 1.1.7
302
+
303
+ - **能发文件了(#52,感谢 @cxin21 的详细分析和临时模块方案)**:主人在面板「聊天」页打开「发文件」后,可以在私聊里让她把本机文件(文档、压缩包、音频、视频、安装包……)当文件发到 QQ,新工具 `qq_send_file`;扩展模块可以用 `api.sendFile(chatId, 文件路径或网址, 文件名?)`。她只能发 QQ 工作区(她平时写文件的地方)和你在面板里额外加的目录里的文件;单个文件默认上限 50 MB;只有主人私聊里能触发(也可以让她发给白名单里的人或群);每次发送都会在日志里记下文件名和大小。「聊天」页有开关,不想要可以关掉。
304
+ - 网关在别的机器 / 容器里看不到本机路径时,小文件(≤30MB 且不超过上限)会自动改用 base64 再试一次;大文件仍要求网关和插件在同一台机器上。
305
+ - **`api.sendVoiceFile` 暴露给扩展模块**:把本机的音频文件当语音条发出去(以前只有翻唱模块内部能用)。
306
+ - 模拟测试里发文件只截获结果显示,不会真的上传。
307
+
308
+ ## 1.1.6
309
+
310
+ - **她的画作图库**(感谢 @baihengaead 的 #47):生图自动存一份到本机,面板「生图」页底部能看最近画过的图、单张删除、打开文件夹。默认存着不自动清理,注意磁盘占用。
311
+ - **音调滑条**(感谢 @baihengaead 的 #48):语音页能调 edge-tts 的音调(±80Hz),并修好语速/音调必须带正负号的问题(`+0%` / `+0Hz`),避免把 `0%` 传给 edge-tts 导致静默退回。
312
+ - **自定义生图接口**(感谢 @baihengaead 的 #49):除了 OpenAI 兼容接口,还能自己填 GET/POST 地址、参数名和从返回 JSON 取图的路径,接 pollinations 这类非标准服务。
313
+
314
+ ## 1.1.5
315
+
316
+ - **抖音:能主动给指定的人发私信(#43)**:给她对方的主页链接、`v.douyin.com` 短链或抖音号,她会认出这个人;列表里还没有会话时,从对方主页点「私信」新建会话再发送。新工具 `douyin_send_dm` 默认只给主人私聊用(权限页可调),试运行只记日志,发送结果和失败原因都会如实回报。
317
+ - **账号验证时说清楚、给截图**:抖音要求验证时(网页上不一定显示验证码),把当前页面截图发到主人 QQ,并提示去手机检查账号安全 / 实名状态;不再让人对着空白页猜。
318
+ - 老配置里旧含义的 `douyinDm` 权限会被重置为默认「仅主人」,避免升级后意外放开。
319
+ - 维护者在真实抖音上验证:短链 → 主页 → 新建会话 → 发出两条测试私信(其中一条走插件工具),对方账号确认收到。
320
+
321
+ ## 1.1.4
322
+
323
+ - **生图结果下载超时(#37 跟进)**:有的生图服务不返回 base64,只给 CDN 链接,下载实测要 20 多秒;原来固定 20 秒会误判成生成失败。现在给到 120 秒。
324
+ - **没装 ffmpeg 也能把大图交给模型**:缩图先用 ffmpeg,没有时回退到 DSH 自带的 sharp;两者都不可用、或缩完仍过大,就只给文字并如实说明。
325
+ - 维护者在本机用配置好的在线生图服务实测:生成 → 下载 → sharp 缩图(约 0.9MB)→ 登记附件 → 真实发到 QQ 成功。完整“她看见自己画的图”对话验证因上游模型当时维护中,待上游恢复后补测。
326
+
327
+ ## 1.1.3
328
+
329
+ - **生图后能看见自己画的图(#37)**:感谢 @baihengaead 的 #44 和实际测试。支持视觉的聊天模型会收到登记过的图片附件;大图需要 ffmpeg 缩图,缩图或附件不可用时会如实说明。不同聊天的模型分别判断视觉能力,缩图进程提前退出也不会让宿主崩溃。
330
+ - **抖音最近看过的视频(#43)**:可以查询最近记录里的视频链接,主人要求时按设置分享到 QQ 或抖音;额度用完和网关失败会说明原因。没有保存视频 id 的旧记录无法补出链接。主动新建陌生人私信会话还没有实现。
331
+ - 抖音评论被账号验证拦截时,提示在手机检查账号安全或实名状态;页面不一定出现验证码。私信发送回执不明时,仅在文字仍完整留在输入框且没有看到已发消息的情况下尝试点击发送。
332
+ - 聊天模型请求失败时在日志中保留错误原因,便于区分网关问题和上游模型超时。
333
+ - 生图下载超时放宽到 120 秒;没有 ffmpeg 时用 DSH 自带的 sharp 缩图。
334
+
335
+ ## 1.1.2
336
+
337
+ - 生图结果的模型感知(#37)撤回 1.1.1 的实现,等待 @baihengaead 的 PR;该 PR 已在 1.1.3 合并。其他修复保留。
338
+
339
+ ## 1.1.1
340
+
341
+ - **Docker 向导卡住(#34)**:已经连接并核对了机器人号时,可以直接用现有连接完成向导;保存失败会留在原步骤并显示错误。原来的设置和试运行状态不变。
342
+ - **生图结果(#37)**:本版曾加入图片附件处理,1.1.2 已撤回,等待社区贡献者的 PR。感谢 @cxin21 的详细分析和 @baihengaead 的补充。
343
+ - **群聊自动引用和 @(#38)**:一个人 @ 她或引用她的消息时,第一条回复引用对方的消息并真正 @ 对方;多人同时叫她时不猜。模型明确选择另一条引用时尊重它。
344
+ - **抖音私信稳定性**:主人要视频时,挑选模型超时也会从看过的视频里选一个;发送回执不明确时先查聊天记录、不再重复点发送,状态仍不确定就暂停重试。编辑器核对允许表情显示方式不同,仍会拦截缺字的消息。这些调整已通过模拟测试,真实抖音私信的完整链路还需实测。
345
+
346
+ ## 1.1.0
347
+
348
+ ### 刷抖音重写(#4)
349
+
350
+ 1.0.5 里的抖音模块一天里修了十几次还是不稳,这版推倒重写:
351
+
352
+ - **只用一个专用浏览器**:去掉了 douyin-im(它其实没写进依赖,私信 / 分享那条路在别人电脑上一直装不上),扫一次码就行。面板里显示登录弹窗截图,扫完要短信验证的话可以把浏览器窗口挪到屏幕上处理。
353
+ - **她看到的东西多了**:数据都走抖音网页自己的接口,标题、分类、抖音给的内容摘要和分段、热评都有,不再只是一句文案。
354
+ - **点赞 / 评论落在对的视频上**:以前先把一轮视频都看完再统一点赞,会赞到别的视频上。现在在弹层播放器里按视频 id 找按钮,点完等抖音的回应才算成功;电脑锁屏、窗口看不见时也点得到。
355
+ - **评论里能真·@主人**:在「主人抖音号」里核对你的号后,她刷到特别想让你看的,会用抖音自己的 @ 选人在评论里 @你(按账号 id 认人,你会收到抖音通知);认不出就不发,不会发假 @。有单独的每日上限。
356
+ - **分享给你可以选地方**:抖音私信(在抖音里把视频卡片分享给你,按账号 id 认人;要先核对你的抖音号)、QQ 私聊(她的话 + 链接,和 B 站一样),或两边都发。默认抖音私信;没核对或者抖音那边发不出去时改发 QQ。同一个视频不会分享两次。
357
+ - **打开面板不会再弹出浏览器**;「要验证」每次现查,不会误报一次就一直挂着。遇到验证码 / 操作频繁当天停手,并在 QQ 上说一声。
358
+ - 在 QQ 里可以让她「去刷会儿抖音」(`douyin_browse`),发链接让她看(`douyin_watch`),让她点赞 / 评论某个视频。
359
+ - 1.0.5 里的私信、关注、回评论、改抖音资料这次先拿掉了,等核心稳定再一项项加回来;旧设置自动迁移。
360
+ - 在抖音私信里能和她聊了:你在抖音上私信她,她会用自己的口气回(只认核对过的你,别人的私信不理;每隔几分钟看一次,面板「抖音」页能开关、能调间隔)。(在私信里让她去找视频这一步还不稳,见下面「已知问题」。)
361
+ - 让她找视频时说到做到:你在 QQ 里让她去刷,这一轮一定会挑一个分享给你;刷完系统把结果告诉她,她照实跟你说分享了哪个,不会先说「已经发了」。
362
+ - 评论被抖音拦下时能认出来:抖音要求账号先做身份验证时,评论会被静默拦下(以前误当成发出去了)。现在会认出来、当天停手并在 QQ 上告诉你;去抖音完成验证后就恢复。
363
+
364
+ ### Linux / Docker、已有的 QQ 机器人(#28)
365
+
366
+ - **能接你已有的 OneBot v11 机器人**:设置向导和「连接」页可以选「接我已有的 OneBot 机器人」(NapCat、LLOneBot、Lagrange、Docker 里的 SnowLuma……),填正向 WebSocket 地址就行。插件只连接,不启动、不注入任何东西,连上后照样先核对是不是机器人号。
367
+ - **语音组件在 Linux / macOS 上也能装**:虚拟环境的目录按系统区分;没有 Python 时给出该装什么的提示。
368
+ - README 补了 Linux / Docker 的安装和注意事项(抖音要有头浏览器 + Xvfb,翻唱暂时只支持 Windows)。
369
+
370
+ ### 表情包(#31)
371
+
372
+ - 面板里把表情包关掉后,她就真的不发了(以前她回复里写的表情照样会发)。
373
+ - 表情库里每张表情的名字和标签都能直接改,鼠标移上去点一下就能编辑,改完点别处自动保存。
374
+ - 商城表情(QQ 表情商店里的)按商城表情原样发回去,动画由 QQ 自己播放。普通动图我们查过:收进来、存下来、发出去都是原文件,没有变成静态的。
375
+
376
+ ### QQ 小黄脸
377
+
378
+ - 她能在 QQ 消息里夹 QQ 自带的系统表情了(/捂脸 /斜眼笑 /吃瓜 这种),和文字在同一条消息里;别人发来的小黄脸她也能看懂是哪个。「表情包」页能关。
379
+
380
+ ### 群里真 @
381
+
382
+ - 她在群里写 <at:QQ号> 或「@群名片」,发出去就是 QQ 的真 @,对方会收到提醒(以前只是打了个 @ 字)。名字对不上或有重名就不乱 @;主人让她去群里 @ 人却对不上名字时,她会知道没 @ 到,找主人要群名片或 QQ 号。
383
+ - 主人在私聊里让她去群里说的话,下次那个群再交给她时会告诉她「你之前在这里说过什么」,群里有人接话她能接上。
384
+
385
+ ### 工作区位置(#32)
386
+
387
+ - 「连接」页能改 QQ 会话放在哪个文件夹(DSH 里的「Aurabot · QQ」工作区)。改了以后新开的会话放到新位置;已有的会话想一起挪过去,在「概览」点「重新开始所有 QQ 会话」。
388
+
389
+ ### 已知问题
390
+
391
+ - **在抖音私信里让她「去刷会儿给我找个视频」还不稳**:她会答应,但去刷的那一轮可能因为挑视频的模型回得太慢而超时,结果没分享成(会在私信里跟你说没刷成);偶尔一条私信会因为输入框核对没通过而没发出去。下个版本修。在 QQ 里叫她去刷不受影响。
392
+
393
+ ### 其他
394
+
395
+ - **重启 DSH 时不再丢消息**(感谢 @baihengaead 的 #35):QQ 网关暂时连不上时按 1 / 3 / 5 秒自动重试(接口报错和超时不重试,免得发两遍);启动前先看上一个 SnowLuma 还在不在,在就直接复用,端口没释放就等它释放,不会再出现「控制台起来了但发不出消息」。
396
+ - **刚连上 QQ 时的消息不再丢**(感谢 @baihengaead 的 #36):连上后核对机器人号那一小会儿收到的消息先攒着,核对通过后按顺序补处理。
397
+ - **模型不支持思考强度 / 看图时不再整轮报错**(#29,感谢 @baihengaead 的 #30):先问 DSH 这个模型支持哪几档思考强度,不支持就不传;模型看不了图时把图片换成一句文字提示。「模型」页新增「视觉能力」开关。
398
+ - **空间日记的记录和空间同步**(感谢 @GitNekopedia 的 #26):在手机上删掉的说说,面板里会显示「已从空间删除」;读不全空间列表时一条记录都不改。
399
+ - **说说可见范围和 QQ 空间对齐**(感谢 @GitNekopedia 的 #27):所有人 / 好友 / 部分好友可见 / 部分好友不可见 / 仅自己,部分好友可以直接从好友列表勾选。聊天里让她发说说只能收窄成「仅自己」,不能比面板设的范围更公开。
400
+ - **按聊天选模型**:主人可在面板「模型」页(或 `config.json` 的 `chatModels`)让不同聊天用不同模型。顺序:单个私聊(QQ 号)> 单个群(群号)> 所有私聊 / 所有群默认 > 全局模型;没设或模型不存在就退回下一级。只有主人能改。
401
+
402
+ ## 1.0.4
403
+
404
+ 修 #3 和 #1 里报的问题:
405
+
406
+ - **SnowLuma 控制台密码看得到、改得了**:「连接」页能「显示密码」「复制密码」,打开 SnowLuma 自己的控制台时用。在面板里填自己的密码,保存后会真的改到 SnowLuma 上(以前只改了插件这边,SnowLuma 还是旧密码,两边对不上就打不开)。密码不合格会直接说哪条不满足(至少 10 位、要有大小写字母和符号、不能有空格)。
407
+ - **关掉模块后面板不会再白屏**:「空间日记」「空间互动」「心情」「记忆」这几个共用一页的,关掉其中一个时那部分显示「模块关着」,不再整页崩掉。哪一页万一出错,也只坏这一页:显示报错和「回到概览」,重启后也不会一直停在白屏上。
408
+ - **表情包导入修好了**:面板「上传」以前点了没反应(DSH 不支持弹框问名字),现在名字在页面上填、可以一次选多张,失败会说原因。
409
+ - **能用 QQ「我喜欢的」里已有的表情**:表情包页新增「从 QQ 收藏导入」,机器人号收藏里的表情一键导进表情库(已有的跳过),之后她就能发。也可以在 QQ 里让她「导入收藏的表情」。
410
+ - **让她存表情**:主人发一张表情说「存一下这个」,她会把刚发的那张收进表情库(以前她只会说没权限)。只听主人的。
411
+ - **「重新连接」有反应了**:点了会等几秒看结果,连上就说连上了;连不上会直接说卡在哪一步(SnowLuma 没运行、机器人号还没接入、连上的不是机器人号……),「连接」页和概览页也会一直显示这句。
412
+ - SnowLuma 解压在带安全标签的目录(比如下载目录)时会以「低完整性」运行、看不到 QQ 进程,现在会提示换个目录(#2 里的建议)。
413
+
414
+ ## 1.0.3
415
+
416
+ - 修复:重登 QQ 后 SnowLuma 把号报成 `uin: "0"` 时,1.0.2 会把它当成「别人的号」不碰,接入照样失败(#2)。现在 `0` 也当「认不出」,走注入后核对。
417
+
418
+ ## 1.0.2
419
+
420
+ 修复:有的电脑上 SnowLuma 认不出 QQ 登录的是哪个号,「接入机器人号」一直报「没找到登录机器人号的 QQ 进程」。
421
+
422
+ - **认不出号也能接入**:SnowLuma 没报账号时,如果只有一个认不出号的 QQ 进程,就先给它注入,连上后马上用 `get_login_info` 核对是不是机器人号。
423
+ - **核对不过绝不用**:连上的不是机器人号,就立刻断开、尝试撤销注入,以后自动接入也不再碰这个进程;改了设置或手动点「接入机器人号」才会重试。
424
+ - **核对前不处理消息**:每次连上 QQ 都先确认登录的是机器人号,确认前收到的消息一律不理,避免用错号说话。
425
+
426
+ ## 1.0.1
427
+
428
+ 更开放:连她怎么想、怎么说都能改了,写模块也更顺手。
429
+
430
+ - **聊天主流程开放**:以前只能接管消息、改写回复,现在这几处也能改——
431
+ - 群里**回不回、怎么回**(整套换掉插话策略都行)
432
+ - **交给她的内容**(加背景信息、改格式、去掉图片)
433
+ - 她的回复**拆好之后**的每一条(改顺序、全变语音、去掉或加表情、加图片)
434
+ - **最终发给 QQ 的内容**(所有发送都经过这里:加签名、过滤词、抄送)
435
+ - **每个聊天用哪个模型**(比如群里用便宜的、私聊用好的)
436
+ - **人格和规则全文**,以及**戳一戳**
437
+ - **模块可以拆成多个文件**:模块文件夹里任何文件改了都会自动重新加载;模块里可以 `npm install` 第三方包直接用。
438
+ - **编辑器自动补全**:数据目录 `modules/` 里多了 `aurabot.d.ts`,模块开头加一行注释,VS Code 就有 `api.*` 的补全和参数说明。
439
+ - **模拟测试**:「扩展」页新增「模拟测试」,可以假装主人或别人、私聊或群聊发一句话,看哪个模块接管、命令回什么;也可以写一句「她的回复」,看经过各模块改写后最终发出去什么;还能直接调用任意工具。这里发出去的消息只截下来显示,不会真发到 QQ。
440
+ - **模块的设置能放进内置页**:模块定义里写 `tab: 'song'`,它的设置和面板就出现在「翻唱」页最下面,不再单独占一页。
441
+ - 新接口:`api.reply(msg, 文字)` 在群里以引用回复发出;`api.isOwner(QQ号)` 判断是不是主人。
442
+ - 接口说明补全:照着它从零写一个查天气模块,卡住的地方都补上了(群消息什么时候到模块、命令怎么解析、设置存什么类型、`msg.text` 里有什么、怎么联网……),类型文件和说明对齐。
443
+ - 修复:模块文件夹被删掉后,面板会一直显示它,直到它真正停下。
444
+
445
+ ## 1.0.0
446
+
447
+ 全面开放:大肥鱼的每项本事都变成了模块,你可以关掉、替换,也可以自己写新的。
448
+
449
+ - **模块化**:表情包、语音、心情、记忆、空间日记、空间互动、主动搭话、B 站、翻唱、生图、群管、基础 QQ 工具,一共 12 个内置模块,在面板新的「扩展」页里每个都能单独开关。关掉的模块,她就不会这项本事,不会答应做不到的事,相关的标签页也会藏起来。
450
+ - **随便改**:
451
+ - **复制一份来改**:内置模块那一行点一下,源码就复制到数据目录的 `modules/` 里。改完保存,几秒内就换成你的版本。
452
+ - **自己写新模块**:点「新建」得到一个能直接跑的例子(关键词自动回复 + 命令 + 工具)。不会写就点「复制给 DSH 的话」,让 DSH 帮你写。
453
+ - 模块能做的事:给她加工具、在她回话前接管消息、改写她要发的话、加 QQ 命令、加定时任务、补充她的规则、听所有 QQ 事件(加群、撤回、好友申请……)、加网页接口。设置可以自动生成表单,也可以自己画面板。
454
+ - 接口全部开放:插件核心、所有内部源码、DSH 的服务都能用。完整说明在 `modules/API.md`,DSH 读它就会写。
455
+ - **升级不怕坏**:
456
+ - `modules/` 里的东西插件升级不碰。
457
+ - 扩展接口有版本号,同一版里只加不改;版本对不上的模块会拒绝加载,并告诉你原因。
458
+ - 你替换过的内置模块,内置版本更新后面板会提醒你。
459
+ - 你的版本写坏了,会先自动用回内置的,不会让她突然少一项本事。
460
+ - **安全模式**一键只跑内置模块,方便判断「是不是我的模块的问题」。
461
+ - **翻唱读不了模型文件时不再甩报错**(Errno 13 / Permission denied):开始分离前先试读模型,被杀毒软件临时锁住会等几秒自动重试;还不行就告诉点歌的人是哪个文件、该怎么办(加信任区,或删掉重新下载)。
462
+ - 面板顶部的标签栏太长时有滚动条,鼠标滚轮可以直接横着滚,选中的标签会自动滚进视野。
463
+
464
+ ## 0.7.2
465
+
466
+ 本地接口:给有本地模型、本地服务的玩家留的口子。
467
+
468
+ - **新增「本地接口」页**:语音合成、生图、翻唱换声、语音识别四项,都可以换成你电脑上自己的模型或服务(GPT-SoVITS、SD WebUI / ComfyUI、自己训练的 so-vits-svc / RVC、FunASR / faster-whisper……)。
469
+ - 点「生成模板」,插件在数据目录的 local 文件夹里放一个带示例的脚本和一份接口说明;照注释改,或者点「复制给 DSH 的话」粘给 DSH,让它读说明、帮你改好。
470
+ - 脚本改完保存就生效,不用重启;插件升级不会覆盖。每项单独开关,语音和识别出错时自动退回内置方式。
471
+ - 语音合成和生图可以在面板里点「试一下」,生图会直接显示画出来的图。
472
+ - **翻唱适配自己训练的音色**:内置的 RVC 不兼容你的模型(比如 so-vits-svc 训练的)时,用「翻唱换声」接口接你自己的推理;下载歌曲、分离人声、混音、发语音条还是插件来做。开了这个之后不需要内置的 Applio 和音色模型。
473
+ - **翻唱失败说人话**:模型不兼容、显存不够、环境不完整时,她会直接告诉点歌的人是什么原因、该怎么办,不再甩一串报错。
474
+ - 面板「翻唱」页:导入了音色但翻唱开关没开时会提醒(开关没开她不会唱)。
475
+ - 只开了本地生图(没填在线服务)时,她也知道自己会画画。
476
+
477
+ ## 0.7.1
478
+
479
+ 国内网络专项:
480
+
481
+ - **人声分离模型好下了**:以前只能从 GitHub 下(640 MB,经常下不动),现在先走 HuggingFace 国内镜像(实测约 10 MB/s),再试 GitHub。下完核对 SHA-256,哪个源给的文件不对会自动换。实在下不了,面板「翻唱」页会给出下载地址,用浏览器下好拖进「音色模型」框就行(插件会核对是不是对的文件)。
482
+ - **下载更稳**:断了从断点接着下(重启电脑、点「再试一次」都接着下);某个源连续 45 秒太慢就自动换下一个,已下好的部分保留。Applio 程序包也改成能续传。
483
+ - **下载源默认「自动」**:安装前先测一下,官方源慢就自动用国内镜像——PyPI 和 PyTorch 用阿里云、Python 用 npmmirror。也可以选「一直用国内镜像」或「只用官方源」。
484
+ - **uv 不再卡在 GitHub**:翻唱安装和语音组件安装需要的 uv,先从阿里云镜像下(核对校验值),最后才试 GitHub。
485
+ - 检查更新:GitHub 连不上时改走 jsDelivr,国内用户也能看到新版本提醒。
486
+ - B 站 Cookie 改成 SESSDATA 和 bili_jct 两个框分开填(前缀已写好),能显示 / 隐藏;粘整串 Cookie 也会自动拆开;保存过的显示结尾几位,方便认出是哪一份。以前填的整串自动迁移,不用重填。
487
+ - B 站:没填 Cookie 时不再尝试发评论(之前会留一串「评论没发出去」);遇到 Cookie 过期、风控、要验证码、太频繁时,当天停止评论和回复,面板上说明原因,第二天自动恢复。
488
+
489
+ ## 0.7.0
490
+
491
+ 记忆专项优化(参考了 Mem0、MemoryBank、Graphiti、Letta 的做法):
492
+
493
+ - **不会再说过时的事**:整理记忆时,新事实先和相关的旧记忆比一比——是补充就合并成一条,说明旧的过时了(比如以前爱吃辣、现在戒了)就把旧的标成「已过时」,不再被想起。过时的不删,面板里变灰显示被哪条取代,点「恢复」就回来。
494
+ - **人物小档案**:她对每个人有一小段印象(是谁、什么关系、喜好、最近在忙什么),和谁聊就带上谁的(群里带上正在说话的几个人),不用等你说到关键词才想起来。整理记忆时自动重写,面板里也能直接改。
495
+ - **越常聊到的记得越久**:遗忘按遗忘曲线算,被想起过的天数越多、越重要,忘得越慢;很久没碰的才慢慢淡掉。
496
+ - **短句也能想起来**:对方只回「嗯嗯」「然后呢」时,连上一句一起去想。
497
+ - 翻唱:确认过没有人声的歌会记下来,下次直接跳过,不用再花几分钟分离一遍。
498
+
499
+ ## 0.6.2
500
+
501
+ - 翻唱不会再发出「只有伴奏」的歌了:原版下不了时,网易云上常常只剩钢琴版、伴奏版这类纯音乐。现在挑歌时把这类版本排到最后,分离完还会检查有没有人声,没有就自动换一版重做(最多试 3 版);在面板里指定的歌没有人声会直接说。以前做坏缓存下来的成品也不会再被复用。
502
+
503
+ ## 0.6.1
504
+
505
+ - 表情包她能自己整理了:名字或标签不贴切、别人建议改名时她自己改(同步到 QQ 收藏表情的备注),不喜欢、重复的她自己删;你亲手加的表情要你开口才删。
506
+ - 她能翻当前聊天更早的聊天记录了(最多 50 条),想不起前面聊过什么、被问「刚才谁说的」时会自己去翻。
507
+
508
+ ## 0.6.0
509
+
510
+ - 新增「刷 B 站」:她会定时从自己的兴趣、记忆里你喜欢的东西和你填的关键词里挑方向去刷视频(读简介、字幕和热评),看到好玩的私聊分享给你,也会自己发评论、回别人回她的评论(都有每天上限);你在 QQ 里发 B 站链接或分享卡片,她能点进去看完再聊;看过、评过的都记成她的经历。在面板「B站」页打开,填 B 站 Cookie 才能评论。
511
+ - 记忆:想起的事带时间(「3 天前」「去年 09-17」),不会把老事当新事说;面板能看到她最近几轮想起了什么、因为哪些词;可以导入旧档案(粘贴或上传 txt / md,挑出来后你勾选再存)。
512
+ - 心情:可选用模型判断(「心情与记忆」页打开),分得清开玩笑和真骂、她主动找你时的心意,没把握的不算。
513
+ - QQ 分享卡片能认出标题和链接了。
514
+
515
+ ## 0.5.0
516
+
517
+ - 新增「戳一戳」:戳她会有反应(撒娇、吐槽、问你干嘛),偶尔还会戳回来;连着戳 20 秒内只算一次。
518
+ - 新增「合并转发」:转发给她的聊天记录会展开给她看(最多 40 条),能看懂再回;展开的内容也会进记忆整理。
519
+ - README 和使用手册如实写清楚已经做好的翻唱、空间互动、记忆、心情、群聊策略和 QQ 命令。
520
+
521
+ ## 0.4.3
522
+
523
+ - 语音组件(edge-tts)一键安装不再要求电脑上装了 Python:没有就自动准备一个私有的。
524
+ - 翻唱安装多了一步「下载人声分离模型」,第一次点歌不会再卡着不动地下载 600 多 MB。
525
+ - 表情库有上限了(默认 300 张,QQ 收藏表情满了会收不进去):超了自动清掉最少用的偷来的表情,你自己加的不动。
526
+ - 翻唱缓存只留最近 40 首;没开每日整理时,聊天流水超过 14 天自动清掉。
527
+
528
+ ## 0.4.2
529
+
530
+ - 翻唱一键安装更稳:不再需要电脑上装 git 和 uv,安装器自己下载需要的工具;Python 也装进选的目录。
531
+ - 可以选装到哪个盘(显示每个盘剩多少空间),也能自己填路径。
532
+ - 安装进度看得见:步骤条、每一步用了多久和预计多久、已下载多少、当前网速、单个文件的进度条。
533
+ - 下载慢可以打开「用国内镜像下载」(Python 包和 Python 本身都走国内镜像)。
534
+ - 安装失败会说清楚原因和怎么办,有「再试一次」和「复制报错」按钮;已经下好的不会重下。
535
+
536
+ ## 0.4.1
537
+
538
+ - 面板美化:卡片、滑块、按钮、开关重新调过;概览数字带图标;翻唱的组件检查改成紧凑的格子。
539
+ - README 写出了升级命令。
540
+
541
+ ## 0.4.0
542
+
543
+ - 记忆系统调优:
544
+ - 空间也算进记忆:好友发的说说、别人在她说说下的评论,每次整理时会提炼出关于这些人的事(比如谁最近去看海了)。
545
+ - 她做过的事记成「经历」:给谁唱了什么歌、在空间评论了谁、画了什么,最近一天的她自己记得,聊到了会自然提起。
546
+ - 群里说的事也能记到具体的人头上;群里谁在说话,就优先想起关于这个人的事。
547
+ - 想起记忆时只看大家实际说的话,召回更准。
548
+ - 不重要、两个月都没被想起过的自动记忆会慢慢忘掉;她自己记的、你加的、经历和日记不会自动忘。
549
+
550
+ ## 0.3.0
551
+
552
+ - 新增「翻唱」:她能用训练好的 RVC 音色唱歌,做好发语音条。在面板「翻唱」页一键安装(需要 NVIDIA 显卡),把你有权使用的音色模型(.pth 或 zip)拖进去导入;QQ 里跟她说想听什么,或者发 /sing 歌名。
553
+ - 新增「空间互动」:回复她说说下的评论(别人在她的评论下面接着回她也会接着聊),逛好友动态偶尔点赞、评论。在「空间日记」页打开(老用户更新后默认关着)。
554
+ - 心情更明显了:心情好时话多、更爱发表情和语音、回得快、群里更爱插话;心情差时话少、回得慢,还会带点小脾气。主人对她说的话影响更大。
555
+ - 接了生图或打开翻唱以后,她会知道自己会画画、会唱歌。
556
+ - 面板会提示有没有新版本,更新后显示这次更新了什么。
557
+
558
+ ## 0.2.0
559
+
560
+ - 第一个公开版本:首次设置向导、SnowLuma 控制台密码自动管理、在面板里同意协议。
561
+ - 群聊看完一段再回、可以引用回复某一条;QQ 里的主人命令(/silent /active /model …);可换头像。