Skip to content

Undefined v3.17.1

Choose a tag to compare

@github-actions github-actions released this 27 Sep 13:45
· 12 commits to main since this release
v3.17.1
c187d79

v3.17.1 交付体积边界收敛

本版本收敛「内容一变大就发不出去」的两处交付边界:合并转发不再因为顶层节点塞满全文而被 QQ 拒收,长图不再因为页面自身更窄而右侧留白;同时补上图片消息段与 Agent 私有工具的静默丢失点。

变更内容

  • 长图宽度自适应:layout=long 时 width 改为上限,渲染前探测页面自身布局宽度(html / body 盒宽与后代最大右边界),比设定宽度窄时把视口收缩到「内容宽度 + 2 × padding」(下限 320),两侧不再留白。只在页面自己更窄时收敛,铺满视口的响应式页面(含 Markdown 模板)宽度与旧版完全一致;探测失败只记日志并保持原视口,不影响渲染本身。[render].long_image_default_width 语义随之变为上限,缓存键补上收敛参数。
  • 合并转发预览收敛:NapCat packet 模式的转发卡片把顶层节点文本全部写进 news 预览,顶层文本量因此约等于卡片体积,约 14KB 会被 QQ 以 retcode=1200(发送转发消息(res_id:… 失败)拒收。MessageSender 在群聊与私聊发送前统一下沉:顶层直接文本合计超过 2000 字时,按文本量从大到小把节点内容改为 ≤1200 字的嵌套节点,嵌套节点段原样保留、不递归;发送被拒时以 error 级别记录节点数、顶层文本量、段数与图片数,便于定位。
  • Bilibili 图文正文改为按单节点 1200 字(format.NODE_TEXT_BUDGET)与单节点 9 张图切分,节点名形如 正文 1/12;正文超过一个节点时整体收进顶层 正文 节点的嵌套内容,让卡片体积与正文长度解耦,不再出现「图文越长越容易被拒收」。未超预算时仍是单个顶层 正文 节点,结构与旧版一致。
  • 图片消息段不再静默丢失:OneBot 图片段同时带 NapCat 的 file id 与可下载 url,先用 get_image 解析 file;解析失败或返回的既不是 HTTP URL 也不是本地路径时(典型是 NapCat 富媒体下载超时只给裸文件名),回落到段内 url 登记远程附件。
  • 修复 Agent 私有工具全部无法加载:随包技能的 handler 模块名一律以真实包根 Undefined/skills 计算,agents/<agent>/tools/<tool>/handler.py 不再被算成不存在的 Undefined.skills.tools.<tool>;此前这些工具会在注册阶段被记入 load_error 并从 schema 中排除。不随包的目录(测试或外部注入)保持原有上溯规则。
  • 裸数字不再误判为 Douyin aweme_id:只有不落在任何链接内的 16–25 位数字才算裸 ID,bilibili.com/opus/933099353259638816 这类链接里的数字不再让同一张图文链接同时触发抖音管线。
  • 部署后的首次启动改为手动:uv run deploy up 在 container 与 host 模式统一写入 [webui].autostart_bot = false,并在输出里给出「填配置 → NapCat 扫码 → WebUI 点启动机器人」的顺序,避免容器一起来就连不上未登录的协议端;文件发送同时从 url 改为 stream([onebot].file_send_mode = "stream"),不再依赖共享发送目录或 Runtime 下载地址。
  • 文档重排:新增面向使用者的 Docker 一键部署指南(环境准备、向导选项、首次配置与 QQ 登录、远程访问、可选服务、日常管理与排查),README 与部署指南统一为「源码部署 → Docker 一键部署 → pip / uv tool」的推荐顺序,并补上镜像构建与维护说明。

📝 Detailed Changes

🐛 Bug Fixes

  • fix(delivery): 合并转发/长图边界收敛与 v3.17.1 发布 (#103) (c187d79)