Skip to content

Releases: h-D-ACE/dsh-qq

v1.1.0

Choose a tag to compare

@h-D-ACE h-D-ACE released this 22 Oct 22:41

qq-bridge-enhanced v1.1.0

在 v1.0.3 基础上的新功能版本:

  • 定时任务:按时区到点发消息,或者到点叫 AI 来说。
  • 定时静默:按时间段让 AI 停下来省 token。
  • 切换 / 修改人格在二代仿真里真正生效:以前要等会话重建,现在下一次唤醒或立即生效。
  • 切到 agent 时可以带上私聊长期记忆。

支持系统不变:Windows、macOS、Linux。逐条改动见 CHANGELOG.md。

新功能:定时任务

在桥接控制台「聊天行为 → 定时任务」里设置。说明见 docs/guides/SCHEDULER.md。

时间计算

  • 时间由桥接的程序计算和执行,不靠 AI 记着。
  • 按任务自己的时区算,出厂默认北京时间,与这台电脑的时区无关。
  • 有夏令时的地区按当地墙上时间算。
  • 时区下拉列出全部时区,每项带当前的 UTC 偏移,如「Asia/Shanghai(UTC+8,北京时间)」。

重复方式

  • 一次性、每天、每周、工作日、每月几号、每月第几个周几、每年、特殊日期。
  • 每隔 N 天、每隔 N 分钟。
  • 每天随机几次、每月随机几次。
  • 高级:cron 表达式。只能在控制台设置,AI 不能用。
  • 都可以加开始 / 结束日期、排除日期、跳过法定节假日、共执行几次后停止。
  • 表单实时预览接下来 5 次的具体时间。

内容

  • 固定文字:桥接直接发。
  • 叫 AI 来说:唤醒那个会话自己的 AI,各群的规则和上下文各自生效。

对象与入口

  • 发送对象:管理员私聊、白名单好友、白名单群,可多选。
  • 管理员也可以在私聊里用 /remind(桥接直接处理,不进模型),或者在二代仿真里直接跟 AI 说,让它用 qq_schedule_* 登记。

安全

  • 总开关和限制只能由你在控制台或管理员命令里改,AI 改不了。
  • AI 只能在管理员私聊里登记。默认只能发给管理员私聊;发往群的任务要先打开开关,并且登记后先暂停,等你确认。
  • 有任务数、每天条数、每群条数、最小间隔这些上限。
  • 「定时任务免打扰」时段:只拦定时任务发往群的消息,不影响 AI 平时被 @ 时回复。
  • 新建、修改、删除都写进审计日志。

新功能:定时静默

在「运行总览 → 静默开关」里设置。说明见 docs/guides/SILENCE.md。

时间段

  • 可以设多个时间段,每个带开关。
  • 哪些天:每天 / 工作日 / 周末 / 自选,可以跳过法定节假日。
  • 跨午夜的时间段以开始那天为准。
  • 可以选时区。
  • 「一键填入 DeepSeek 高峰时段」:北京时间工作日 09:00–12:00、14:00–18:00。

静默期间(默认)

  • 停止一切唤醒:以前的手动静默只拦发送,AI 仍被定时唤醒去思考,照样花钱。
  • 群消息照样记进未读。
  • 静默结束时,给被直接找过的会话补一次唤醒。
  • 定时任务里「叫 AI 来说」的暂停(单个任务可以设成照常执行),固定文字照发。
  • 管理员私聊默认不受影响,也可以勾选一起静默。

和手动开关的关系

  • 手动开关优先。
  • 定时静默期间点「恢复正常」,只临时恢复当前这一段,下一段照常。

修复:二代仿真里切换 / 修改人格不生效

原因

  • 二代仿真的会话只在建立时读一次完整角色卡。之后每次唤醒只看到一行「当前角色:名字」。
  • 所以在控制台切换人格、清除人格、改当前人格的内容之后,正在跑的群和私聊会话一直按旧卡说话,直到会话重建。看起来就像「切换失败」。

现在的做法

  • 桥接按「会话 + 角色卡指纹」记下每个会话读到的是哪一版卡(只存指纹,不存内容)。
  • 发现某个会话还没读到当前这一版时,下一次唤醒把新卡全文放在提示最前面,并说明旧卡作废。
  • 记忆、群规则和会话本身都不动。

控制台选项

「切换当前启用的人格」和「编辑人格提示词 → 保存修改」下方都有生效方式:

  • 下次唤醒时重新读卡(默认)。
  • 立即:马上给还没读到新卡的会话各唤醒一次。
    • 这次唤醒 AI 不会专门发言,也不提换卡。
    • 已经读到新卡的会话自动跳过,两处都点也只读一次。
    • 定时静默中的会话,等静默结束后再读。

聊天模式 / 一代仿真每条消息都带角色卡,本来就立即生效,不受影响。

改进:切到 agent 时带上私聊长期记忆

  • 切到 agent 时,除了最近的私聊往来,还可以把二代仿真里 AI 在管理员私聊记下的话题、想说的话、印象一起交接给 agent。
  • 最多 1500 字,逐行脱敏,只取管理员私聊,不含任何群。
  • 开关:「二代仿真 → 工具开关 → 切到 agent 时带上私聊长期记忆」,默认开。

下载

文件 说明
qq-bridge-enhanced-v1.1.0.zip 完整源码(含接口平台)+ 文档 + 测试 + 配置模板。不含 node_modules、SnowLuma、NapCat、QQ、DSH、真实配置或数据
qq-bridge-enhanced-v1.1.0.zip.sha256 SHA-256 校验值

部署见 README.md「部署(无窗口版)」与 docs/DSH_DEPLOYMENT.md。

从 v1.0.3 升级

  1. 退出控制中心;备份 config.json、state/、interface-platform/state/。
  2. 解压到新目录,把上面三样复制过去(如果有 audio/、自定义的 roles/*.md,也一起复制)。
  3. 执行 npm ci,再跑 npm run test:audit。
    • macOS:删掉旧的「QQ Bridge 控制中心.app」,然后双击一次 control-center.command。
    • Linux:运行 npm run linux-service -- --enable。
  4. 重启一次 DSH:新的 qq_schedule_* 工具由 DSH 启动的 MCP 服务注册。preset 没有变化,不需要重跑 setup-dsh.mjs。
  5. 启动控制中心,再启动接口平台和桥接。
    • 新的状态文件 state/scheduler.json、state/silence-schedule.json、state/role-seen.json 会自动创建。
    • 没有旧数据格式变化。
  6. 升级后第一次唤醒,已有的二代会话会各收到一次当前角色卡,这是正常的。

测试

离线回归

  • npm run test:audit:63 个离线回归脚本。发布包解压后从零 npm ci 验证:macOS 与 Linux(Docker node:22-bookworm)上都是 62/63。没过的 test-console-encoding.mjs 只在 Windows 上能通过。
  • 接口平台:macOS 26 项全部通过;Linux 容器里 25 项通过、1 项跳过(「目录读不了」的用例在 root 下无法构造)。
  • 新增:
    • test-scheduler.mjs:时区与夏令时、各种重复方式、cron、限额、免打扰、错过补发、AI 登记的权限。
    • test-silence-schedule.mjs:时间段、跨午夜、节假日、高峰预设、手动优先、静默期间不唤醒、结束补唤醒。
    • test-role-refresh.mjs:指纹与读卡记录、下次唤醒带新卡、立即唤醒只叫没读到的会话、保存与切换接口。
  • test-mode-handover.mjs 新增 ⑥:带上私聊长期记忆。

真实环境(macOS + NapCat + DSH 桌面版 0.2.1-rc.2)

  • 定时任务:「每天随机 1 次,09:00~11:00(北京时间)」的任务在北京时间 10:48 触发,同时发往管理员私聊和一个群。
    • 群里 AI 发出 1 条。
    • 私聊当时正忙,排队到回合结束后补发,也发出 1 条。
  • 人格生效:切到新角色卡后,一个群在下一次被提问时读到新卡;另一个群和私聊在点「立即切换」约 8 秒后读到新卡,AI 没有为换卡发言。三个会话记下的是同一版卡。

v1.0.3

Choose a tag to compare

@h-D-ACE h-D-ACE released this 21 Oct 07:44

qq-bridge-enhanced v1.0.3

在 v1.0.2 的基础上的修复版本:切换 agent 等级不再失忆;引用一条合并转发时,AI 能看到并打开里面的内容,这条消息也不再卡 30 秒;普通图片不再被误当成表情。
支持系统不变:Windows、macOS、Linux。逐条改动见 CHANGELOG.md。

修复:切换 agent 等级 / 自动回落后 AI「失忆」

以前切到 agent L1~L3、或者从 agent 回落,桥接会把所有 QQ 会话归档再新建:私聊里刚聊的事、每个群里的上下文全都没了。现在:

  • 群和私聊原来的聊天会话会「休眠」而不是归档,回落后原样接着用,AI 记得之前在聊什么;群会话恢复后会被告知「刚才休眠了多久、这段时间的群消息没收到」。
  • agent 会话能接上私聊的话题:切到 agent 时,新会话第一条消息带上你们最近在私聊里的往来;回落后,私聊会话会收到 agent 期间的往来。
    交接只含 owner 私聊(路径和凭据打码),不含任何群聊内容;确认码、TOTP、管理命令不会被记下。
  • 恢复的会话按正常原因唤醒,不会再收到一遍「首次接入」的引导。
  • 安全不变:agent 会话回落、/panic、L1→L2 时照常停掉并归档。
  • 休眠超过 24 小时(admin.dormantMaxMs)、回到的模式不同、手动重置会话时,旧会话归档、不复用。
  • 想要旧行为:admin.hibernateChatSessions: false、admin.handover: false。觉得回落太勤可以调大 admin.idleTimeoutMs / admin.maxElevatedMs。

修复:引用合并转发

  • 引用一条合并转发时,AI 只看到「[引用消息]」,整条消息还卡住 30 秒:实测 macOS 上的 NapCat 读一条较早的合并转发要七十多秒,而桥接和接口平台都只等 30 秒。现在:
    • 收消息时解析引用最多等 4 秒,等不到先放「[引用消息 id=…(原消息加载较慢…)]」占位,消息照常进未读;原消息在后台继续取(最长 2 分钟),取到后缓存;
    • AI 用 qq_get_message_detail 查这个 id:还在取时明确说「稍后再查」,取到后返回内容和里面的合并转发 id;
    • 引用里的合并转发 id 登记为本会话可见(只在确认被引用消息属于本群 / 本私聊之后),AI 能直接用 qq_get_forward_msg 打开,哪怕原转发早已滚出最近消息;
    • 读合并转发改为长超时并缓存 30 分钟,同一个转发只取一次;嵌套转发的预览改为并行读取;
    • 接口平台只给 get_msg / get_forward_msg 两个只读动作放宽到 120 秒(limits.slowReadTimeoutMs),发送类动作仍按 30 秒。
  • 合并转发本身(包括转发里的转发)原来就能看:二代仿真模式下 AI 用 qq_get_forward_msg 打开,嵌套的会附前几条预览,也能用嵌套 id 继续打开。

修复:普通图片被误当成表情

  • 普通 QQ 图片的文件名本身就是 32 位哈希,以前会被误认成表情:先去拼一个必然 404 的表情地址,日志里也写成「表情获取失败」。现在只有 mface 市场表情、带 emoji_id、sub_type=1 或「两位前缀-32 位 hex」文件名的才按表情处理。
  • 说明:这只修正了分类和多余的一次请求。这次实测里那张图之所以没取到,是 QQ 那边的问题——转发里的图片链接已经失效(HTTP 400),NapCat 自己下载也失败(downloadRichMedia 超时),桥接这边无法补救。

下载

文件 说明
qq-bridge-enhanced-v1.0.3.zip 完整源码(含接口平台)+ 文档 + 测试 + 配置模板(不含 node_modules、SnowLuma、NapCat、QQ、DSH、真实配置或数据)
qq-bridge-enhanced-v1.0.3.zip.sha256 SHA-256 校验值

部署见 README.md「部署(无窗口版)」与 docs/DSH_DEPLOYMENT.md。

从 v1.0.2 升级

  1. 退出控制中心;备份 config.json、state/、interface-platform/state/。
  2. 解压到新目录,把上面三样复制过去(以及 audio/、自定义 roles/*.md,如有)。
  3. npm ci → npm run test:audit;macOS 删掉旧的「QQ Bridge 控制中心.app」后双击一次 control-center.command;Linux 运行 npm run linux-service -- --enable。
  4. 启动控制中心,再启动接口平台和桥接。没有数据格式变化,不需要重跑 setup-dsh.mjs。
  5. 如果换了程序目录,按部署文档第 13 节「换了程序目录之后」的清单检查一遍(先在控制台重置会话,再删旧目录)。

测试

  • npm run test:audit:60 个离线回归脚本,macOS 与 Linux 上都是 59/60(test-console-encoding.mjs 只在 Windows 上通过);接口平台 26 项全部通过。
  • test-media-search.mjs 新增:哈希文件名的普通图片按图片处理、不拼表情 CDN;真表情仍先走 CDN。
  • 新增 test-mode-handover.mjs:二代 → agent L2 → 回落的端到端(聊天会话休眠复用、交接注入、高权限会话归档)、各种作废情况、确认码不进交接记录。
  • 新增 test-quote-forward.mjs:引用合并转发的短等待、后台补齐、转发 id 登记与跨群隔离、读合并转发的缓存与长超时、接口平台的分动作超时、发送引用时「加载中」不算确认归属。
  • 真实环境(切换不失忆):macOS + NapCat 4.18.38 + DSH 桌面版上实测:二代仿真 → agent L1 时私聊会话休眠未归档;agent 能答出切换前私聊聊过的内容;/panic 回落后复用原会话(未新建),并知道 agent 期间的请求;交接记录里没有确认码,文件权限 600。群会话:切到 agent 时休眠、回落后被 @ 时原样恢复(未新建、唤醒原因不是首次引导),AI 记得切换前群里交代的事。
  • 真实环境(引用合并转发):在 macOS + NapCat 4.18.38 上复现过原问题(读那条被引用的合并转发 get_msg 约 76 秒、get_forward_msg 约 76 秒);修复后的代码尚未在真实 QQ 群里验证(需要重启桥接和接口平台,并等有人引用合并转发)。

v1.0.2

Choose a tag to compare

@h-D-ACE h-D-ACE released this 20 Oct 23:26

qq-bridge-enhanced v1.0.2

在 v1.0.1 的基础上的小版本:换 SnowLuma 目录(例如升级到 SnowLuma 2.x)时,新目录缺数据会先提醒迁移,并补充 SnowLuma WebUI 登录相关的常见问题;同时修复 Windows 实机部署 v1.0.1 时发现的问题;控制台可以选择 DSH 的提供方 / 模型 / 思考强度,保存即生效。
支持系统不变:Windows、macOS、Linux。逐条改动见 CHANGELOG.md。

新功能与改进

  • 控制台选择 DSH 模型(GitHub issue #1):运行总览「DSH 模型与思考强度」改成提供方、模型、思考强度三个联动下拉,外加「看图能力」。
    选项全部来自 DSH 的模型目录,在 DSH 里配好的其它提供方桥接也能用;保存后对已有会话的下一条消息生效,不用重启桥接。默认仍是 deepseek-flash + max。
    • 服务端按目录硬校验:不在目录里的提供方 / 模型、该模型不支持的档位都会拒绝;目录读不到时不保存,页面标注「目录不可用」;
    • 档位以模型自己公布的为准,off(关闭思考)也能选,选它时提示工具调用和回复质量可能变差;没有思考档位的模型强度下拉置灰;
    • 不能看图的模型自动把图片改成文字:DSH 目录不说明模型能不能看图,所以默认只有核实过的 deepseek-flash 收图,其它模型的 QQ 图片、表情改成「[图片1:当前模型 … 不能看图,已省略]」,避免整条消息被拒;确认能看图可以手动设为「能看图」;
    • 换到第三方提供方时提示隐私:QQ 聊天内容会发给它处理,第一次保存前再确认一次;
    • 价格表只覆盖 DeepSeek 自家价目,其它模型标「价格未覆盖」,花费按 Flash 估算并标「估算」;
    • 只有控制台能改:QQ 里的 AI 和私聊管理通道都改不了模型。和以前的思考强度一样,切换会同时写入 DSH 的全局默认。
  • 换 SnowLuma 目录前提醒迁移数据:在控制中心换到新的 SnowLuma 目录时,如果新目录里既没有账号配置(config/onebot_<QQ号>.json)也没有 WebUI 密码(config/webui.json),而旧目录有,先不切换,弹出提醒——
    直接换过去 SnowLuma 会当成全新安装:生成新的随机 WebUI 密码(浏览器里保存的旧密码失效)、要重新扫码登录、重新开启 OneBot WebSocket,接口平台也找不到原来的账号。
    • 点「去迁移(推荐)」:打开更新助手并填好新目录;停止 SnowLuma 后点「迁移数据并切换」,旧目录的 config/(含 WebUI 密码)、data/ 会先备份再复制过去,旧目录原样保留;
    • 不迁移的话要再确认一次「仍然切换」才会切换;
    • 第一次选目录、新旧目录相同、旧目录本来就没有数据、新目录已经迁移过时不提醒。
  • 常见问题(部署文档「常见错误」):
    • 升级后旧密码登录不了:多半是新目录没带上旧的 config/,或旧版从没改过初始密码(每次启动都会重新生成)——用更新助手迁移,临时密码登录后改成正式密码;
    • 输对密码也登不进、提示「登录尝试过多」:SnowLuma 同一地址 5 次输错锁 15 分钟,锁定期间正确密码也会被拒;重启 SnowLuma 或等 15 分钟即解除,localhost 与 127.0.0.1 分开计数;
    • 改密码提示「新密码不得与旧密码相同」:说明填的「当前密码」就是现在存着的密码,直接用它登录即可。

(核对结论:SnowLuma 1.14.22 与 2.0.3 的 WebUI 密码存储格式、密码规则、读取逻辑完全相同,升级本身不会让密码失效。)

  • 黑话研究:未确认的 AI 推测显示在控制台:DSH 研究后没能确认的词,以前只在日志里留一句推测,现在存进词条,
    「候选词-待研究」的卡片上显示一行灰色斜体「AI 推测(未确认,时间):……」,重启也不丢。
    • 点「采用为含义」:把推测填进编辑框里空着的栏位,核对修改后点「保存修改」——词条移到「候选词-已研究」,仍是候选,确认还要你再点;
    • 推测不是含义:不算「已研究」、不能凭它确认、不会注入给 AI,也不会出现在 AI 能读到的任何数据里;
    • 研究确认、或你填了含义 / 确认之后,推测自动清空;再研究仍未确认时更新为最新一次的推测。

修复(来自 Windows 实机部署 v1.0.1 的反馈)

  • Release ZIP 的中文文件名在 Windows 上乱码、解压失败(roles/小鲸鱼.md、assets/deepseek娘.png 等):v1.0.0、v1.0.1 的包是用 macOS 自带的 zip 打的,没有「文件名是 UTF-8」标志。
    现在发布脚本自己生成 ZIP,每个文件都带这个标志,.command / .sh 保留可执行位;Windows「全部解压」、macOS 双击、Linux unzip 都正常。
  • 重置会话后提示「该会话已有一个等待中的 qq_wait_for_messages」:控制台 / 控制中心的「重置会话」、QQ 里的 /reset、二代仿真全量重置都没清等待租约,新会话最长要等 15 分钟。现在重置时一并清掉。
  • 黑话研究日志:以前「已更新 N 条」把未确认(实际没写库)的也算进去。现在分别显示「写入 / 解析 / 未确认」条数,未确认的附上 AI 的推测(仍然不写库)。
  • 接口平台里默认的 SnowLuma 实例标红(从 v0.4.x 升级后第一次启动平台):控制中心知道 SnowLuma 目录时自动给它补上;用户自己配过令牌的实例不动。
  • 两个测试在 Windows 上失败:路径写法改为 fileURLToPath / path.posix,并加回归测试防止再出现。
  • 两个测试在 macOS 上失败(test-audit-bridge、test-voice):macOS 默认临时目录是软链接,语音库路径断言前缀对不上;测试夹具改为先取 realpath(只改测试)。
  • 部署文档:第 13 节新增「换了程序目录之后」必做清单;常见错误补充:工作目录不存在、等待租约残留、双击 .vbs 没反应、解压中文文件名乱码。

下载

文件 说明
qq-bridge-enhanced-v1.0.2.zip 完整源码(含接口平台)+ 文档 + 测试 + 配置模板(不含 node_modules、SnowLuma、NapCat、QQ、DSH、真实配置或数据)
qq-bridge-enhanced-v1.0.2.zip.sha256 SHA-256 校验值

部署见 README.md「部署(无窗口版)」与 docs/DSH_DEPLOYMENT.md。

从 v1.0.1 升级

  1. 退出控制中心;备份 config.json、state/、interface-platform/state/。
  2. 解压到新目录,把上面三样复制过去(以及 audio/、自定义 roles/*.md,如有)。
  3. npm ci → npm run test:audit;macOS 删掉旧的「QQ Bridge 控制中心.app」后双击一次 control-center.command;Linux 运行 npm run linux-service -- --enable。
  4. 启动控制中心。没有数据格式变化,不需要重跑 setup-dsh.mjs。
  5. 如果换了程序目录,按部署文档第 13 节「换了程序目录之后」的清单检查一遍(先在控制台重置会话,再删旧目录)。

测试

  • npm run test:audit:58 个离线回归脚本,macOS 与 Linux 上都是 57/58(test-console-encoding.mjs 只在 Windows 上通过);接口平台 26 项全部通过。
  • 新增 test-dsh-model.mjs:模型目录校验、selectModel 参数、目录缓存、看图判断与图片降级、提示文案,以及桥接接口端到端(写 config.json 并热生效、目录不可用拒绝保存、AI 令牌拒绝)。
  • 新增 test-slang-guess.mjs:未确认推测的存储与清空、不进提示词和给 AI 的数据、页面只在「待研究」显示并转义。
  • 新增 test-deploy-fixes.mjs:ZIP 的 UTF-8 标志与可执行位、黑话研究日志计数、三个重置入口清等待租约、Linux 服务文件用 POSIX 路径、禁止用 URL.pathname 当路径;test-platform.mjs 新增 ⑧(自动补 SnowLuma 目录)。
  • test-control-center.mjs 新增:迁移提醒的各种情况(提醒 / 不提醒)、接口完整流程(提醒时不切换 → 迁移后 WebUI 密码文件随之带过去 → force 仍可直接切换)、页面流程。
  • 未在真实环境验证:Windows / Linux 上 SnowLuma 2.x 的实际收发;Linux 上的 QQ 登录与收发、systemd 服务实际运行。

v1.0.1

Choose a tag to compare

@h-D-ACE h-D-ACE released this 20 Oct 18:29

qq-bridge-enhanced v1.0.1

在 v1.0.0 的基础上增加 Linux 支持——现在支持 Windows、macOS、Linux 三个系统;Windows、macOS 原有的行为不变。
同时适配 SnowLuma 2.x、让 DSH 探活更稳,并让 macOS 第一次运行时自动生成无窗口启动 App。逐条改动见 CHANGELOG.md。

新功能与改进

  • Linux 支持(x64 / arm64,桌面或无图形界面的服务器):
    • QQ 后端:SnowLuma 2.x(launcher.sh,完整版自带 ./node)或 NapCat(启动文件可选 .sh 脚本或可执行文件);
    • 无窗口启动:npm run linux-service -- --enable 生成 systemd 用户服务(后台常驻、登录自动启动、崩溃自动重启),有桌面时另有启动项;
    • 「浏览…」在有 zenity / kdialog 时弹出系统选择窗口,服务器上手动填路径;服务器上用 ssh -L 3099:127.0.0.1:3099 访问控制中心。
  • SnowLuma 2.x 适配(Windows 与 Linux):识别两种发行包布局;读 engines.node 与 release.json,Lite 版本机 Node 不够(2.x 需要 24+)、或发行包与本机平台 / 架构不符时不启动并写明原因;
    检查更新按本机系统与架构推荐完整版(win-x64.zip / linux-x64.tar.gz / linux-arm64.tar.gz)。账号配置格式与 1.14 相同,账号发现与令牌自愈不需要改。
  • DSH 探活更稳:连续 2 次(约 10 秒)失败才判定「DSH 不可用」,偶发失败只在恢复时记一笔;日志写明失败原因(超时 / 连接被拒 / 连接被中断 / 鉴权失败等)。端口重新识别仍在第一次失败时开始。
  • macOS:第一次双击 control-center.command 会自动生成「QQ Bridge 控制中心.app」并在访达里选中它,以后双击 App 即可(不再需要手动 npm run mac-app)。
  • 接口平台、控制中心、README 等处的系统说明统一为 Windows / macOS / Linux。

下载

文件 说明
qq-bridge-enhanced-v1.0.1.zip 完整源码(含接口平台)+ 文档 + 测试 + 配置模板(不含 node_modules、SnowLuma、NapCat、QQ、DSH、真实配置或数据)
qq-bridge-enhanced-v1.0.1.zip.sha256 SHA-256 校验值

部署见 README.md「部署(无窗口版)」与 docs/DSH_DEPLOYMENT.md(含 Linux 的 4.1b、4.3b、10.1 节)。

从 v1.0.0 升级

  1. 退出控制中心;备份 config.json、state/、interface-platform/state/。
  2. 解压到新目录,把上面三样复制过去(以及 audio/、自定义 roles/*.md,如有)。
  3. npm ci → npm run test:audit;macOS 删掉旧的「QQ Bridge 控制中心.app」后双击一次 control-center.command(或 npm run mac-app);Linux 运行 npm run linux-service -- --enable。
  4. 启动控制中心 → 开启后端 → 启动桥接。preset 没有变化,不需要重跑 setup-dsh.mjs。

测试

  • npm run test:audit:55 个离线回归脚本,macOS 与 Linux 上都是 54/55(test-console-encoding.mjs 检查的是 Windows 控制台的 chcp,只在 Windows 上通过)。
    接口平台自身 26 项全部通过。新增 test-linux-support.mjs(同时断言 Windows / macOS 原有行为不变)、test-dsh-health.mjs。
  • Linux 验证:在 Linux arm64 容器(Node 22)里从零 npm ci、跑完整离线测试,并实际启动控制中心与接口平台、检查后端声明与「浏览…」在无图形界面时的行为。
  • SnowLuma 2.0.3 的 Windows / Linux 发行包:核对了目录布局、启动脚本、Node 要求与账号配置格式(未运行)。
  • 未在真实环境验证:Linux 上的 QQ(Linux 版 QQ + SnowLuma / NapCat)扫码登录与收发、systemd 服务实际运行、桌面选择窗口;SnowLuma 2.x 的实际收发(Windows 与 Linux)。

v1.0.0

Choose a tag to compare

@h-D-ACE h-D-ACE released this 20 Oct 04:36

qq-bridge-enhanced v1.0.0

第一个正式版本。在 v0.4.2 的基础上:支持 Windows 与 macOS,新增接口平台,控制中心统一管理桥接、接口平台与 QQ 后端,
兼容 DSH 0.2.1,并增量合入上游 Derpyu520/qq-bridge v0.2.0-r4 的修复(本仓库的增强功能全部保留)。
逐条改动见 CHANGELOG.md。

主要新功能

  • macOS 支持:QQ 经 NapCat 接入(用 NapCat Mac 安装器装进 Mac 版 QQ)。npm run mac-app 在本机生成
    「QQ Bridge 控制中心.app」:双击无窗口启动,没有 Dock 图标;再次双击重新打开页面;页面上退出后 App 随之退出。
  • 接口平台(仓库内 interface-platform/):桥接和 QQ 后端之间的统一接入层。按后端目录自动发现账号;SnowLuma(Windows)与
    NapCat(macOS / Windows)可以同时接入、互不干扰;账号目录读不了(例如 macOS 隐私保护)时保留现有连接,不当成账号消失。
    为以后接入微信 / Discord / KOOK 预留了统一接口。
  • 控制中心:
    • 顶部「桥接」「接口平台」两个大标签;接口平台页有概览(后端开启卡)、接入实例、账号、日志、设置;
    • 「接入桥接」一键让桥接经接口平台收发(原配置自动备份,可「恢复直连」);
    • NapCat 管理:版本显示(NapCat 自报)、检查更新(只提示不下载)、QQ.app / 启动文件 / NapCat 目录设置、系统原生「浏览…」窗口(macOS / Windows);
    • NapCat 扫码登录:需要扫码时开启卡直接提示,程序区显示二维码,NapCat 日志里也插入可扫的小图(旧码标「已过期」);
    • 「打开桥接控制台」自动带令牌;状态栏的 DSH 以桥接的就绪状态为准,「接入后端」按真实连接显示。
  • DSH 0.2.1:preset 去掉 {{cwd}}(同时兼容 0.2.0-rc.2);桌面版 0.2.1 的随机端口自动识别(Windows / macOS),DSH 重启后桥接自动跟上。
  • 管理员私聊跨群查看与群长期规则(默认关闭,socialV2.tools.ownerGroupAccess):管理员私聊的 AI 可只读查看白名单群,并给群设长期说话规则。
  • 表情:单张大小上限可配(socialV2.sticker.maxBytes,默认 10MB);NapCat 下 AI 收藏表情可用。
  • 上游 r4:联网搜索(src/web-search.js)、长轮询与超时稳定性、多处体检修复,以及对应的回归测试。
  • 桥接控制台黑话库:候选词拆成「待研究」「已研究」两栏。
  • 版本号统一:接口平台的版本号与项目一致(1.0.0)。英文 README(README.en.md)同步更新为本版内容。
  • 日志:经接口平台时写「QQ 后端(经接口平台 · NapCat <版本>)已连接」,不再一律写 SnowLuma。

下载

文件 说明
qq-bridge-enhanced-v1.0.0.zip 完整源码(含接口平台)+ 文档 + 测试 + 配置模板(不含 node_modules、SnowLuma、NapCat、QQ、DSH、真实配置或数据)
qq-bridge-enhanced-v1.0.0.zip.sha256 SHA-256 校验值

部署(Windows / macOS,无窗口启动):见 README.md「部署(无窗口版)」;给 DSH agent 的逐步说明:docs/DSH_DEPLOYMENT.md。

从 v0.4.2 升级

  1. 退出控制中心;备份 config.json 与 state/。
  2. 解压到新目录,把旧目录的 config.json、state/(以及 audio/、自定义 roles/*.md,如有)复制过去。
  3. npm ci → npm run test:audit → node scripts/setup-dsh.mjs 并重启 DSH(preset 有变化)。macOS 再 npm run mac-app。
  4. 启动控制中心。想经接口平台收发:接口平台 → 开启后端 →「设置 → 接入桥接」→ 启动桥接。不接入时桥接照旧直连 SnowLuma,行为与 v0.4.2 一致。

以后更新 / 备份时,把 interface-platform/state/(接口平台的实例配置与令牌)一起带上。

测试

  • npm run test:audit:53 个离线回归脚本;macOS 上 52/53(test-console-encoding.mjs 只适用于 Windows 控制台,Mac 上是已知失败)。
    接口平台自身 26 项测试全部通过。本版新增的离线测试包括:接口平台(test-platform)、NapCat 管理与扫码(test-napcat-manage)、
    macOS 启动 App(test-mac-app,Mac 上实际生成并校验签名)、日志用词(test-qq-backend-label)、黑话分栏(test-slang-tabs)、
    群长期规则、表情上限、NapCat 收藏表情、DSH 端口识别等,以及移植的上游 r4 回归。
  • macOS 实机验证:NapCat 4.18.38 + Mac 版 QQ 7.0.2 → 接口平台 → 桥接 → DSH 0.2.1 桌面版:群聊 / 私聊收发、记忆导入、
    表情收藏、DSH 重启后自动重连、NapCat 自动登录、无窗口 App 启动与「访问其他 App 的数据」授权。
  • 未在真实环境验证:
    • Windows 上的新链路(SnowLuma / NapCat 经接口平台、DSH 0.2.1 随机端口识别、无窗口入口下的新页面功能)——离线测试覆盖了逻辑,但没有 Windows 实机回归;
    • NapCat 登录二维码在页面上的实际显示(验证时 NapCat 一直自动登录成功,没有出现需要扫码的情况);
    • 浏览器 UI 自动化测试(test-console-ui,需要 Playwright)。

v0.4.2

Choose a tag to compare

@h-D-ACE h-D-ACE released this 18 Oct 02:06

修复了人格列表显示不全

v0.4.1

Choose a tag to compare

@h-D-ACE h-D-ACE released this 17 Oct 00:31

修复了一些已知问题

qq-bridge-enhanced v0.4.0

Choose a tag to compare

@h-D-ACE h-D-ACE released this 16 Oct 19:07

qq-bridge-enhanced v0.4.0

在 v0.3.0 的基础上新增控制中心:一个本地网页把「桥接终端」和「SnowLuma」合在一起,屏幕上只需要 QQ、DSH 和这个页面。

新增

  • 控制中心(control-center.bat,或无窗口的 control-center-hidden.vbs):左侧桥接日志 + 固定命令(status / mode / panic / audit …), 右侧 SnowLuma,底部整体状态栏(含当前登录的机器人账号、模式与权限级别、各组件版本)。打开它不会自动启动任何东西。
  • SnowLuma 面板:选择你自己解压的目录(不放进项目)、显示版本与完整版/Lite 版、由你点击启动/停止、打开它的 WebUI、 检查更新、更新助手(备份并迁移账号与数据到新版本目录,旧目录保留)。
  • 部署指南补充桌面版 DSH 的说明。

不做的事(SnowLuma 用户协议 v1.1 §5.4)

Read more