Skip to content

Releases: Funny1Potato/dsh-onebot-hub

v0.12.3

Choose a tag to compare

@github-actions github-actions released this 30 Oct 03:31

Full Changelog: v0.12.2...v0.12.3

v0.12.2

Choose a tag to compare

@github-actions github-actions released this 29 Oct 13:11

segment 模式从来没把图送进 prompt

#2 报的现象是:模型说收到了图片,可 onebot_hub_status 里 vision.parts 恒为 0,实际送进 prompt 的只有它自己生成的描述。三条根因叠在一起,前两条各自都能让整条路停摆。

一、能力探测 fail-closed。 imageCapable() 以前要求宿主明确声明 inputModalities 且含 image,探不到(字段缺失、或探测那一刻 provider 还没注册完)一律判“不能看图”,segment 直接跳过。而同一个模型在宿主自己的会话里看图完全正常——正是“这不是模型的问题”的反证。现在只有明确声明不支持才跳过;探不到、抛错一律按“能”试,真不能由宿主在提交时报错(does not support image input),把静默跳过换成可见错误。

二、快照拍在图片落地之前。 图和文字走两条路:图片要下载 → 存 blob → 回填 entry.media,通常晚几百毫秒;而快照在 #awaitVision 之后立刻拍。segment 模式没有“描述”可等,awaitVisionPending 立刻返回“没有在跑的”,于是永远拍在还没落地那一刻。

现在新增 hub.trackMedia() / awaitMediaPending(),与 trackVision 同一套形状(只等这一批点名的、有上限、失败也算结束),#awaitVision 在 segment / both 下先等图片落地:vision.segmentWaitMs(默认 1500,与 waitBeforeTurnMs 取较大者)。等的是同一个 promise——不轮询、不重扫。

三、诊断。 vision.stats.lastSkip 记四种跳过原因(mode / no-media / capability / empty),在 onebot_hub_status 里可见。以前 vision.parts 恒为 0 的时候,外部只能靠猜。

另两处

  • describe 空回复的错误现在带模型名与流里实际吐出的前 120 字——是空流还是格式没解析出来,一眼能分。
  • 删掉 lib/vision.js 里一句调试遗留注释(failed 77 / described 21 是当年排查一个坏配置时的计数,不代表 describe 的稳定性),并写明不要拿它当依据。

升级

dsh plugin --profile <profile> add dsh-onebot-hub@0.12.2

验的办法:私聊发一张图,onebot_hub_status 里 vision.parts 应该是 1 而不是 0,vision.lastSkip.reason 应该是 none。

Full Changelog: v0.12.1...v0.12.2

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 29 Oct 12:18

修 QQ 官方通道在群里收不到消息。

修了什么

  • 群里 @ 机器人不唤醒:官方的事件名就叫 GROUP_AT_MESSAGE_CREATE,但 content 里不含那个 @——只有用户自己打的字,甚至可能只剩一个空格。枢纽靠"at 段的 qq 等不等于 self_id"判断在叫我,于是群里一条都不唤醒(私聊不需要 @,所以只表现为"群里收不到")。现在群消息一律补一个指向 self_id 的 at 段;READY 里机器人的 openid 也会被记住,正文出现它时映射成 self_id。
  • 两个会话互相递话会死锁:递送要等"对面整轮跑完",于是 A 等 B、B 等 A,两边一起冻在前一个 tool call 上。现在最多等 1.2 秒(cross.wakeGraceMs),超时按"已送出"返回并在回执里标 queued——它表示进了对方队列,不是对方已经处理完。
  • onebot_session 的 list 在官方通道下一个会话都列不出:先看本地名单(那里面是协议端时代的旧号,非空就不再兜底),兜底还把数组当对象取键。官方模式下不再看本地名单——能跟谁聊本来就该由平台决定。
  • README:工具数 30 → 31、补上漏掉的 onebot_task;「会话之间转达」与「QQ 官方上游」都标成实验性;定时任务那段总机会话的说明改成实际行为。

升级

dsh plugin --profile <你的 profile> add dsh-onebot-hub@0.12.1

从 0.11.1 到 0.12.0 的完整清单(含 7 个预发布版本的全部内容)见 v0.12.0 的发布说明。

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 11:37

新能力

会话之间转达(实验性,默认关)

  • onebot_session(全局工具,任何会话可见):list / relay / say / read / close
  • 一个会话把图片、小程序卡、合并聊天记录递给另一个会话的 agent,由那边自己决定发不发;两边还能在同一根线上来回说几句(每方 6 句 / 30 分钟 / 10 分钟没人说话就冷掉)
  • 原文与转述分开算:私聊 → 群的原文默认禁止(进了群撤不回来),转述放行但要过隐私词表(住址、证件、工资、病历…)
  • 会话目录:cross.enabled 打开后把"这个插件接了哪些群和私聊"列进提示词(off / names / full 三档)。私聊里列全部私聊编号,群里只报数量——判断标准是这段提示词谁会看见
  • list 另报一档外部会话(别的插件拉起的),只报和这个插件来往过、且现在活着的

定时任务

  • onebot_task:create / list / remove / run(fire 是内部动作)
  • 四种 when:at:2026-11-01T08:00 / after:3600 / every:600(最少 60 秒)/ every:daily@08:00
  • 宿主管时钟,到点由枢纽叫醒目标会话——说什么、还是只是想一想,由那边的 agent 自己定
  • 总机会话 onebot-hub::tasks 只是收件地址:不注人格、不注记忆、不注目录,可 agent.tasks.resetEvery 定期轮换

上游可换 QQ 官方机器人(实验性)

  • upstreamType: official;设置页扫码绑定(出二维码,手机 QQ 扫)或手填 appId / appSecret
  • 官方那套协议被装成一个"假的 OneBot 实现端"——时间线、档案、记忆、策略、下游一行都没改
  • 虚拟数字号(sha256 派生,稳定且丢文件也算得回)、被动回复窗口(5 分钟 / 4 次)超了就地降级成主动消息并在回执里标出来
  • 支持图片 / 语音 / 视频 / 文件(先上传到 QQ CDN)、引用回复、撤回
  • 能力比协议端窄一大截:没有群成员列表、群名、群人数、历史消息、群管理;群里只有 @ 机器人时才有消息
  • 官方模式下 agent 白名单不生效——那边平台自己有一份名单

语音

  • onebot_reply 多了 record 段:本地文件 / URL / base64://;发不出去会指路
  • 语音合成:OpenAI 兼容 / 小米 MiMo(Token Plan、按量付费)/ MiniMax(国内站、海外站)/ 火山方舟 / 豆包语音 / 交给第三方插件的语音工具。音色、语速、格式、参考音频都能配;同一句同音色只合成一次

改进

  • 跨会话读取按受众判:群会话读不到私聊,私聊只能读自己那条;白名单私聊默认吃超管名单
  • 设置页:标题与保存条吸顶;宽度自适应(窄屏不再把输入框挤成一格);人设面板(下拉选默认人设 + JSON 直接改 + 新建/删除)
  • 红包识别:xml 段标成 [红包](能看见,领不了——领取要带号主登录态,协议层没有这个能力)
  • 记忆:活跃条目可标敏感、长期记忆带出处与日期、onebot_person 能记信息

修复

  • 由agent进行了一次全盘审查:修 3 个 P0、17 个 P1、38 个 P2、12 个 P3,驳回 6 处并写明理由。集中在跨会话可见性判定、资源预算(内存 / 文件 / 句柄 / 字节上限)、以及"判错一次就永久停机"的不对称代价

v0.12.0-beta.7

v0.12.0-beta.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Oct 01:08

v0.12.0-beta.6

v0.12.0-beta.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Oct 06:14

v0.12.0-beta.5

v0.12.0-beta.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Oct 01:22

v0.12.0-beta.4

v0.12.0-beta.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Oct 14:52

v0.12.0-beta.3

v0.12.0-beta.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Oct 02:40

v0.12.0-beta.2

v0.12.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Oct 13:40