Skip to content

Mosael v1.9.7

Choose a tag to compare

@Alndaly Alndaly released this 17 Oct 03:46
· 222 commits to main since this release

Mosael v1.9.7

飞书绑定按应用分家:同一台工作区接两个机器人时,每个人在每台上各绑一次

  • 飞书的 open_id 是按应用隔离的:同一个人在两个应用里是两个 id。而绑定表的主键只有「工作区 + open_id」,
    没有「哪一台机器人」这一维 —— 扫码绑完却说没绑定、成员列表里同一个人出现两次、收件人那一格显示原始 id、
    拿 A 的凭据去发 B 的应用(飞书直接拒),都是这一条。现在键是「工作区 + 机器人 + open_id」,入站、兑码、
    列表、删除、待批卡、工具确认卡都带上「是哪台」;某个人绑的是哪台,发给他的消息就用那台的令牌。
  • 扫码创建机器人之后自动绑定创建者:建机器人和写绑定在同一个事务里,不用再走一遍绑定码。归属拿不准的
    三种情况(回包没有 open_id、没有发起人、发起人已经不是成员)只记日志、不猜着回填 —— 猜错的话第一条
    消息就认不出人。
  • 换过应用、删过机器人留下的旧绑定,升级时已经删掉(数据库 29 → 30 → 31):那些行里的 open_id 属于已经
    不存在的应用或说不清是哪个应用,永远匹配不上任何东西。以前绑过的人重新绑一次即可,每一台各绑一次。
  • 「谁曾绑过」记进工作区动态,不再留在活跃绑定表里:解绑、删机器人时各落一条审计(「解除了飞书绑定」/
    「删除了飞书机器人,它名下的绑定随之解除」),绑定表里一条不留。这一条只做审计,不参与认人,也不参与授权。

飞书「在线」不再骗人:由真的连上了驱动

  • 此前那一格是在进程起来满 8 秒之后写「在线」的:凭据填错、SDK 卡在内部重连,设置页照样变绿。现在它读
    连接的真状态:掉线显示「连接中」并带上原因,重连回「在线」;起不来显示出错 + 原因原文(此前那句
    「进程退出(code N)」会把 worker 最后报的那句话盖掉)。后端启动时残留的「连接中 / 在线」一律归零。

审批卡片:这次等待结束了,群里那张卡就收回

  • 被取消、超时之后就地收卡:那张卡不再留着两个点不动的按钮 —— 置成结果态,置不成(降级成的是纯文字)
    就在同一会话补一句「这次等待已经结束:已被取消 / 已超时,不用再点了」。应用里点的确认 / 拒绝也一样,
    群里那张卡换成结果,不再出现「两个按钮还在、别人以为还欠着」。
  • on_timeout=remind 现在也在飞书提醒一句:同一会话补一句「这件事还在等你确认」,不换那张卡 ——
    没有按钮的卡比不提醒更糟。没发出去过就跳过,失败只记日志,不影响「已提醒」这个已落库的结果。
  • 一次运行只停得住一个「等人确认」:并行分支上的两个门会被同时调度时,开跑前就拦下并说清是哪个节点,
    不再跑到一半发现一个被当成失败、任务失败还留两张幽灵单。条件节点真 / 假两条出口上的两个门照旧放行。
  • 多道「等人确认」串联时不再重跑中间节点:批第二道门时恢复的是这张单自己的现场(重启接回认最新那道),
    两道门之间的节点不再跑第二遍。顺带修掉:单已落库、现场还没落的那段窗口里做决定,运行永远醒不过来;
    同一运行同时派发出两条恢复;重启接回时又发一张卡并覆盖掉旧卡的消息 id。
  • 「这次发到飞书没有」写得清:已发到飞书 / 仅站内 · 原因 / 这次没能发到飞书,只能在站内批。后一种不再显示
    「在飞书里点那张卡也一样」—— 它会把用户支去一个什么都没有的地方。

飞书里的消息和文件能触发工作流了

  • 群里丢一条视频 → 自动跑一条工作流 → 结果发回群。触发器是一等数据:选工作流、机器人、群、认哪些消息
    (消息 / 图片 / 文件)、关键词、只认哪些人、入参怎么映射、跑完回不回群、每分钟最多几次、开关。它有自己的一张
    账(哪条消息触发了哪次运行),所以不做成定时任务的一种,也不做成图里的节点 —— 图每存一次是一版修订、参与图
    哈希,而「这张图被谁在什么群里怎么叫起来」是外部配置。
  • 命中即认领:这条消息不再同时喂给智能体会话 —— 否则是双倍花费 + 双份回答(会话那轮还会回一句「我暂时看不了
    视频」)。群里留一条回执,面板「最近触发」每行是「哪条消息 → 哪次运行」;关掉回群之后群里彻底安静,留痕照样在。
    没被认领的消息照旧走智能体。
  • 去重靠数据库的唯一约束,不是进程内存 —— 重启后飞书重放不会把同一条消息再付费跑一遍;真撞上就整个回滚
    (宁可少跑一次,绝不跑两次)。被限流的照样留一行痕,然后回落到智能体会话(那是 ADR 定下的:限流保住的是
    工作流那笔钱,不是会话那笔)。
  • 工作流被删的那一刻触发器当场停用;机器人没了什么都不做;跑不起来记一行原因。拒绝和失败一律不在群里喊
    (群里的人改不了配置),站内通知每分钟最多一条。一条消息最多认领 3 条触发器。

修:飞书的错误现在说得清是哪一条

  • 429 / 网关这类不再只剩一句英文 Client error '429 Too Many Requests':非 2xx 也解回包,飞书的 code 和
    msg 连同状态码一起交上来,界面上定位得到;网关那种 HTML 会给一份说真话的替身。HTTP 200 但 code ≠ 0
    照旧只带 code 和 msg,不编一个状态码。
  • 重发只对不会留下可见副本的请求开:列群、下载、取令牌各重发两次(取令牌不再跟着 AI 设置里那一栏走 ——
    它没有副本也不花钱);发消息、发卡片、改卡片、加表情一次都不重发,那里的代价是群里多一条。

素材表单项:所有「一次挑一组素材」的地方是同一个格子

  • 大模型节点的「要模型看的图片」、「AI 生成素材」的「输入素材」、资产库的保存 / 打标签 / 更新,此前是两套控件
    (一套紧凑格子,一套「按角色一行两条下拉」)。现在都点名同一个声明驱动的格子:值怎么编码、有哪几种角色、
    只收图还是也收视频、最多几份,全由字段声明决定 —— 控件不认识任何节点,也不认识任何模型。两道棘轮钉住:后端
    字段必须点名这个控件,前端拿真声明断言画出来的就是它、角色角标只长在该长的格子上。
  • 瓦片行在同一行内尽量满宽:只有两枚时此前只占 49%(轨道数写死成 4),右边空一截;现在不超过设计列数时
    轨道数跟着枚数走,整行占满,超过时照旧一排四张。(真浏览器量过:168 → 340px,八张那档逐像素相同。)

设置页:新开「本机应用」,「后端」只剩后端那三行

  • 「开机自启」「打开外部文件」「版本 + 检查更新」的判据都是「只有这台设备上的这个安装读得到」,所以搬到新的
    本机应用页;「后端」页只剩服务器切换、API 地址、工作区 id 三行,并在说明里点明「后端连的是哪台、是哪个
    工作区,在「后端」」。搜索照旧:搜「打开外部文件」落在本机应用;浏览器里没有桌面壳,那页只剩版本一行。
  • 顺带把八处说明和顺序纠正过来:供应商那三页的组说明改成描述它真正覆盖的那一组;外观说明补上「字体」并注明
    只在这台设备上;语音对话说明补上「免提浮标」那一段的作用范围;「AI 音频」的默认模型组挪到两组连接之前;
    团队页说明补上「工作区的改名与删除、协作动态也在这里」;自动放行那句不再数「三类」(界面渲染的是五档)。

转写:新增本机引擎 sherpa-onnx(同一个 SenseVoice,不装 torch)

  • 和 FunASR 同一个 SenseVoice 模型,换纯 ONNX 运行时:依赖里没有 torch 和 numpy,体积小得多,只下发 int8
    权重(同一段音频上 int8、fp32 与 FunASR 的转写结果逐字相同)。同机实测冷启动约为 FunASR 的 1/9、常驻热跑
    约为 1/32;应用内第一次 2.7 秒、之后每次 0.16–0.27 秒。
  • 默认仍是 FunASR:这个引擎没有说话人分离(说话人恒为空),一旦做成默认,转写面板的说话人标签和按人
    筛选会静默失效。想要速度的人在这台设备上手动选它(automatic 那一档不动,它排在 FunASR 之后)。
  • 顺带修掉一个成立不了的假设:钉死的下载地址此前写死 huggingface.co,而应用默认的模型源是 hf-mirror ——
    默认配置下这个引擎在本机一次都下不下来;现在跟着模型源换主机名。判「装没装」也收紧成「每个文件都在,而且
    字节数等于钉死的那个」,不再把下载到一半的 .part 当成已装好。

ComfyUI:缺的插件先看工作流自己写的出处,下载地址分三档

  • 诊断缺失项时先读工作流里自己声明的出处(cnr_id / aux_id / ver):写了的那种类型不再回头去问
    ComfyUI-Manager,于是断网、Manager 不在也成立,直接给出 registry 的节点页或仓库页。工作流声明的是
    comfy-core 时单独说「这台 ComfyUI 的版本可能太老」,不编一个包名让人去装;ver 是 40 位 commit 时原样
    显示、不解析不比较;子图实例那种 GUID 在归因之前先过滤掉,不再误报缺插件。图上要的版本和这台装着的版本分开
    写(后者只在工作流真有声明时才多问一次)。
  • 顶层 models[] 接上了:节点级声明优先,顶层补缺,同目录同名时不打架;hash / hash_type 一路带到
    查找里,旧的扫描缓存作废重扫。
  • 下载地址分三档置信度:只有 SHA256 对上的 confirmed 给「直接下载」;文件名一字不差的 exact 是「确认后
    下载」;名字像的 likely 只是一个指回页面的链接。宿主不信插件单方面说的「可以直接下」;算不出哈希时
    中英各写清五种原因 —— 没把「同名」说成「确认」。

另外也进了这一版(不在上面几条主线里,但你会用到)

  • 拆镜头:把一条镜头拆成镜头块,并有一根节奏条调它们的时长分布。
  • 清除元数据:可以一键抹掉导出素材里带的拍摄/设备元数据。
  • 预览窗的「保存到本地」改走系统保存对话框:存到哪儿由你选,不再直接落到某个固定目录。
  • 3D 场景可以程序化摆人偶的姿势。