hrz
1a675e4d6b
部署文档改准:示例配置、镜像架构和日志样例 ( #3507 )
...
* 部署文档改准:示例配置、镜像架构和日志样例
最简配置示例里选中的模型改成仓库默认那个;镜像架构那句改成同时提供两种架构;升级步骤去掉单模块没有的 web 容器;compose 文件名、章节编号、配置路径和日志版本号一并改对。
* 部署文档的启动日志样例改成实际模块串
全局日志器拿不到各模块的名字,样例里那串缩写换成实际输出的样子。
* 部署文档的升级步骤编号改对并补全日志样例
升级那几步改成4开头,删掉单模块用不到的web镜像,样例补上视觉分析接口那行,分隔符也对齐实际输出。
* 部署文档里配置说明的路径改成仓库链接
按 docker 方式部署的人,xiaozhi-server 目录下并没有 config.yaml,这句路径换成能点开的仓库链接,两种方式都用得上。
2026-10-27 21:13:05 +08:00
hrz
40a7ed0391
三份译文里的术语跟本文件其它地方对齐 ( #3506 )
...
德语版把回答速度统一成反应速度,英语版和葡语版把 MCP 接入点统一成本文件其它地方用的说法。
2026-10-27 21:10:55 +08:00
hrz
62e316f298
把 README 的错字修正和品牌名统一带到 main ( #3504 )
...
* 修中文 README 的四处错字并统一品牌名写法
中文 README 自己有四处错:括号不配对、该写客户端的地方写成了客户、提示语用逗号收尾、OpenAI 写成了小写。葡语版和越南语版跟着源文一起小写的几处也改了。
* 把中文源的括号和越南语版的句号改对
中文源文 Memory 那行第 3 格还是全角括号,改成半角,
跟另外五版一样。越南语版提示语那行还是逗号收尾,改成句号。
2026-10-27 21:09:57 +08:00
hrz
76cef92cb2
修正性能测试和声纹识别两份文档里跟代码对不上的十二处 ( #3502 )
...
* 修正两份操作文档里跟代码对不上的地方
性能测试那份把配置路径写错、没提要先装依赖,步骤里少了非流式语音合成,流式语音合成要配哪些供应器也没写;声纹识别那份的重启命令指向两个不同的编排文件,有两句话连写三遍,编号也乱了,示例漏了相似度阈值。逐条改到跟代码一致。
* 把性能测试文档的说明改得跟代码一致
供应器表里两家的写法与代码相反,改成如实描述;步骤清单补回流式语音识别;
示例里的视觉模型段改成能跑通的形态;声纹文档两个重复的标题改掉一个。
* 性能测试文档的说法跟Linkerai跳过行为对齐
它没配就整项跳过,不再算进报错后跳过那一类。与#3510的行为对齐。
* 性能测试文档改对缺供应器时的记法
不是跳过,是报错后记成失败,结果表里多一行。带守卫的那几家才是整项跳过。
* 强调易错处
2026-10-27 21:09:09 +08:00
hrz
826c25d3e5
修正 PaddleSpeech 部署文档里对不上代码的四处 ( #3501 )
...
* 修正 PaddleSpeech 部署文档里对不上的地方
示例配置里写了 provider 根本不读的那项采样率,还说 http 协议能自动选,其实只实现了 websocket;代码那一节是空的;启动命令没说在哪个目录跑,配置文件的路径只给了 Windows 写法。逐条改到跟代码一致。
* 补上 PaddleSpeech 部署文档的配置目录和环境说明
配置文件那节改成新建,写明 data 目录被 gitignore 忽略,要先建出来。
数字人页面的启动命令改成从仓库根目录算,另开一个终端。
代码块围栏换成 bash,另补一段说明小智服务用哪个 Python 环境,
以及数字人页面那套依赖在哪。
* PaddleSpeech 部署文档修四处会照抄失败的地方
启动命令的围栏改成 bash;建 data 目录那条标明在仓库根目录执行;启动服务那段不再重复 cd;数字人那节补一句 numpy 的依赖来自哪两个文件。
* 修正conda环境名
2026-10-27 21:05:07 +08:00
hrz
f1965167cc
性能测试跳过未配置的Linkerai语音合成 ( #3510 )
...
配置里没有这个供应器时整项跳过,不再报一条测试失败。
2026-10-27 15:35:38 +08:00
wengzh
6c352e5978
Merge pull request #3436 from xinnan-tech/perf/hello-handshake-fast
...
hello 握手首屏响应从 4s 降到 200ms
2026-10-27 14:34:13 +08:00
Sakura-RanChen
032f6f1582
fix: 修复唤醒流程错误阻塞事件接收循环
2026-10-27 10:36:35 +08:00
hrz
a377d89dcd
补齐德语版平台表里漏掉的四个供应器 ( #3500 )
...
德语版把火山和阿里拆得比中文细,拆的时候漏了同族的另一个:LLM 少火山网关,TTS 少火山网关和百炼,ASR 少豆包流式 V2。补上,名字按德语版自己的写法。
2026-10-26 22:47:47 +08:00
hrz
d687121e99
把四份 README 里图片的说明文字译成本地语言 ( #3497 )
...
en、de、pt_BR、vi 四份里 15 条演示图的说明文字和架构图那句还是中文,这轮全部译成本地语言,越南语版的校徽说明、葡语版声纹那句也一起改掉。图片路径一个字没动。
2026-10-26 22:29:27 +08:00
hrz
badf6fe3d0
按中文源文补齐四份 README 的描述和术语 ( #3494 )
...
横向扫尾清单里的几处:star-history 图表代码还是旧的,换成中文那版;
德语版开头少了知识库这一项;英德葡三版的意图识别行丢了外挂大模型和
自主函数调用这两层说法;越南语版首屏把声纹写成语音识别,
部署表的特点列和版本比较基准也写窄了。
2026-10-26 22:28:49 +08:00
hrz
adb4a15f2d
同步西语版 README 与中文源文的平台清单和说明 ( #3492 )
...
* 同步西语版 README 与中文源文的平台清单和说明
西语版落后中文源文一整轮:平台表少了 CustomTTS、SherpaParaformerASR、VoskASR 这些,
旧的 GizwitsTTS、ACGNTTS 还在,Index-TTS、PaddleSpeech 的键名也旧了。
部署表里那组核数和内存全库查不到出处,按中文删掉;界面语种、插件加载、
测试工具和声纹说明那段一并对齐。中文源文和其它四个语言版没动。
* 把音频交互测试工具的用法改成指向 README
原来在用法里内嵌装依赖的命令,句子太长。改成指向 main/digital-human 的 README,
依赖怎么装、模型从哪来,那份 README 里都写了。
* 补上意图识别行里外挂的大模型这一层
中文源文写的是支持外挂的大模型意图识别,西语版只写了模型本身,
把可以外挂这层意思漏了。补上。
2026-10-26 22:27:32 +08:00
hrz
a5f9a782d6
补齐五份 README 的供应器清单和音频测试工具用法 ( #3491 )
...
* 补上阿里百炼和 LM Studio 并统一越南语品牌写法
ASR 那行中文只写阿里云,配置里阿里系有三条,另外四份也按各自写法补上百炼。LM Studio 走的是 openai 接口,仓里没有独立的供应器,所以并进 openai 那一行,免费平台那列不动。越南语版三处 iFlytek 统一成官方写法 iFLYTEK。
* 补上音频交互测试工具的前置步骤
digital-human 的说明里要求先装 wakeword 依赖再启动,README 里原来只写了启动命令,照着做会缺依赖。五个语言版的用法都补上这一步。
* 把性能测试脚本的提示写清文档在仓库根
脚本是在 main/xiaozhi-server 下执行的,那儿没有 docs 目录,文档在仓库根,原来的提示照字面找不到文件。
* 统一德语版百炼流式语音识别的写法
同一份文件里 LLM 那行写的是 Alibaba Bailian,语音识别这行写成了 Aliyun Bailian,
同一家供应商两种拼法。改成跟 LLM 那行一样。
* 把音频交互测试工具的用法改成指向 README
原来在用法里内嵌装依赖的命令,句子太长。改成指向 main/digital-human 的 README,
依赖怎么装、模型从哪来,那份 README 里都写了。
2026-10-26 22:26:15 +08:00
hrz
ca8ff121d4
按代码实际情况修正五份 README 的平台清单和说明 ( #3489 )
...
* 修正 README 里过时的平台清单和漏掉的供应器
删掉服务端已经不存在的 GizwitsTTS、ACGNTTS、灵犀流式TTS,补上漏写的 CustomTTS、GroqASR、Qwen3ASRFlash 等。声纹一栏改成真正的 voiceprint-api 服务。管理后台的界面语种、插件的加载时机、部署表里的配置要求、音频测试工具的前置步骤,都按代码里的实际情况改写。
* 改掉性能测试脚本里写错的文档路径
脚本启动时提示的 doc/performance_testerer.md 找不到,真实文件是 docs/performance_tester.md。
* 把离线模型补进免费平台列并撤掉音频工具那处改动
两个离线模型走的是本机,不消耗付费接口,和列里已有的本地模型一样,所以补进免费平台列。音频交互测试工具要装 wakeword 依赖这一条,和另一处改同一张表的改动挨着,两边同时开必冲突,先从这次改动里拿掉,等那边合上再单独提。
2026-10-26 18:37:15 +08:00
hrz
9f63b255fb
修好四个语言版 README 里的图片路径 ( #3488 )
...
这四个文件在 docs/readme 目录下,图片却写成 docs/images/demoN.png,浏览器按 docs/readme 去找,全是 404。改成 ../images/demoN.png,跟西语版和其他图片的写法一致。四个文件各 15 处,只动路径,别的没碰。
2026-10-26 18:36:39 +08:00
hrz
9d34360a2c
把 README 里核心模块那一行改成不写数量 ( #3487 )
...
* 把 README 里核心模块的数量改成四个
模型响应测试工具那一行列了 ASR、LLM、VLLM、TTS 四个模块,却写着三个核心模块。中文源文和 en、de、pt_BR、vi 四个语言版统一改成四个,每份只动表示数量的那个词。
* 把核心模块那一行改成不写数量
先改成四个之后发现还是会错:performance_tester 目录下实际有六个脚本,脚本数还会随供应器增加,写死数量早晚再错一次。最终去掉数量词,改成「等核心模块」,五个语言版同步。
2026-10-26 18:35:27 +08:00
hrz
2f18e2ee0a
Merge pull request #3486 from beeman/beeman/translate-readme
...
Add Spanish translation of README
2026-10-26 18:34:51 +08:00
hrz
fd05dd5159
把西语 README 里核心模块的数量改成四个
...
模型响应测试工具那一行列了 ASR、LLM、VLLM、TTS 四个模块,却写着三个核心模块,这里改成四个。只动表示数量的那个词,句子的其余部分不动。
2026-10-26 17:38:20 +08:00
Sakura-RanChen
82d2acc78c
- audio_to_data 缓存键加入文件 mtime:regen 覆写 wav 后旧缓存自动失效,
...
并在 regen 后预编码新文件,唤醒回复不再播旧音频且延迟收益保留
- enhanced_prompt 缓存键补上 emoji_enabled 与 prompt 哈希:
同设备不同客户端(ESP32/digital-human)不再互相污染,改配置即时生效
- 删除 initialize 响应后的 tools/list 兜底补发:id=2 同连接复用
违反 JSON-RPC 与设备端严格递增约定(#3461/#3485),且兜不住任何场景
2026-10-26 17:09:09 +08:00
Sakura-RanChen
77be288c8e
Merge branch 'perf/hello-handshake-fast' of https://github.com/xinnan-tech/xiaozhi-esp32-server into perf/hello-handshake-fast
...
# Conflicts:
# main/xiaozhi-server/requirements.txt
2026-10-26 17:04:54 +08:00
hrz
ba22f5b765
把西语 README 里重复的一句改回中文
...
上一版把研发团队那一行的中文也译成了西语,于是两行说的是同一件事。仓库里另外四个语言版本都是本地语言一行加中文原句一行,这里改回中文行,跟它们保持一致,也去掉了重复。
2026-10-26 16:45:22 +08:00
hrz
0492dc5924
del:移除测试项
2026-10-26 16:36:46 +08:00
hrz
ffd4ab74d7
修正西语 README 的术语和措辞
...
按评审意见改掉两处必改:HomeAssistant 不再拆成两个词,警告里的担保对象改回第三方服务商。另外统一了配置方案的说法,补上收费和大模型这两层意思,把 RAG 改成 Rag,漏译的那行中文也译了。只动这一个文件。
2026-10-26 16:26:44 +08:00
wengzh
f0ebebfa85
Merge pull request #3485 from xinnan-tech/py-test-tool
...
Py test tool
2026-10-26 15:15:04 +08:00
Bram Borggreve
61136b958b
Add Spanish translation of README
...
- Created docs/readme/README_es.md with Spanish translation
- Maintains same structure and links as original
- Provides Spanish-speaking users access to project documentation
- Adds an Español badge to the existing READMEs
2026-10-26 02:06:13 -05:00
Sakura-RanChen
ee726f49e6
Merge remote-tracking branch 'origin/main' into perf/hello-handshake-fast
...
# Conflicts:
# main/xiaozhi-server/requirements.txt
2026-10-26 15:05:17 +08:00
Sakura-RanChen
05f0da0639
补充接入点工具id调整
2026-10-26 14:40:31 +08:00
shinjiyu and shinjiyu
af1982c424
fix: device MCP tools/call 避开握手占用的 JSON-RPC id 1/2 ( #3462 )
...
握手阶段写死 id=1 (initialize) / id=2 (tools/list),但 MCPClient.next_id
从 1 起算,导致前两次 tools/call 复用同一连接上的 request id。合规设备端
会拒收并触发服务端 30s 超时(表现为前两次调用失败、第三次起恢复)。
将 next_id 初始值改为 3,与官方协议序列及 #3461 复现一致;同时去掉
mcp_handler 里重复的 MCPClient 定义,改为从 mcp_client 导入。
Fixes #3461
Co-authored-by: shinjiyu <shinjiyu@users.noreply.github.com >
2026-10-26 14:05:40 +08:00
hrz
9bd668aebc
Merge pull request #3449 from TXyy2023/codex/issue-3050-preserve-model-type
...
fix(manager-api): 保存模型时保留供应器登记的类型大小写
2026-10-23 22:17:36 +08:00
hrz
d027432432
Merge pull request #3458 from monsterlag/fix/issue-3064-b736
...
fix(manager-web): 修复短屏下模型配置知识库入口被裁剪
2026-10-23 21:53:42 +08:00
hrz
3972df6e4e
加固模型配置导航的契约测试
...
原来的用例只取第一条样式规则,后面谁再补一条同名规则就能把滚动改回去,测试照样是绿的。这次把导航用到的样式选择器逐条列出来核对,外层容器也要求只能有一条规则,这样有人悄悄覆盖时测试会当场报错。
2026-10-23 13:39:19 +00:00
hrz
8f2dda09cf
Bump to 0.9.8 ( #3469 )
v0.9.8
2026-10-23 18:54:05 +08:00
hrz
d4ff9c5c17
修掉通讯录的两处越权(读 + 写),并补上三处空指针 ( #3460 )
...
* 读取设备通讯录先验设备归属
登录用户传任意 MAC 就能读到别人设备通讯录里的备注和称呼。归属判断收进一个方法,读取通讯录、改别名、改权限都走它,不属于当前用户的设备一律按查不到处理。
* 通讯录存别名不再空指针
对方设备没登记时取备注会直接崩,整条权限授予请求跟着挂掉。取不到就退回尾号称呼,呼叫时主叫没登记也不再崩,顺手删掉一行调试打印。
* 解绑先验归属,通讯录别名不再落空
解绑接口原来不核对设备归属,谁知道对方的设备 id 就能把那台设备的通讯录清空,设备本身倒是因为带了用户条件没删掉。现在先看归属,不是自己的直接不动。
设备登记了但用户没起名时,别名会落成空,缓存刷新把整条跳过,对方再也呼不过来。改成和呼叫那处一样,两级判空都取不到才退回尾号称呼。顺带加了一条回填,把写进去的空值补上。
呼叫那条测试原来会真发请求也没验到东西,改成桩掉网关直接看发出去的称呼。
* 通讯录空别名兜底,撞名加后缀
缓存拼表之前,空别名先用尾号称呼顶上,不再整条跳过,用户没起名的设备也能被呼到。
昵称在同一个人的通讯录里是索引,两台撞名时后写的会盖掉先写的,按昵称呼会呼错设备。加后缀区分,规则和存表时那套一致。取名靠先后,而查询不带排序,所以先按地址排一遍,同样的数据每次刷新结果一样。
数据库没有排序保证,去重全靠顺序,所以这里先排再拼。迁移脚本不用动,运行时的兜底能管住它没覆盖到的行。
* 通讯录取名两条路径对上了
后缀原来只写进缓存,接口直查库返回原值,同一份数据给的是两个名字。
用户照控制台看到的名字呼叫,命中的不是同一台设备。
把取名抽成一个方法,两边都走一遍。顺带把权限位排到地址前面,
撞名时能呼的那台先拿原名,反过来用户怎么点都只会说没权限。
迁移取末两位时改成跟着小写化,和运行期算出的是同一个称呼。
* 同一个人被拆成两本通讯录,一台设备消失
两条记录的归属地址只差大小写时,会被算成两个人,各拿一个同名,
写进同一本时后者盖掉前者,一台设备就从缓存里消失了。
把归属地址归一抽成一个方法,算称呼、写缓存、查缓存都走它。
* 通讯录接口按最近改过的排前,这个约定有用例钉住
智控台页面是按对方地址把备注合进去的,接口返回顺序它并不关心,
所以现在这么排对界面没有效果。
用例留着是防它被当无用代码删掉,删了会有用例报出来。
* 迁移串到别人的私名,撞车的组改走尾号称呼
通讯录回填名字时,设备表里同一个 MAC 有两行(同一台被两个用户各登记一次),
MySQL 自己挑一行填进去,跟这行属于谁无关。改成只有一台时才取智控台名字,
多台就退回按 MAC 末两位算的称呼。名字照样填上,缓存照样刷新,对方还是呼得到。
补了 12 条在真库上跑的用例,另配一条排查重复 MAC 的语句。
* 去掉走不到的分支和没人用的桩,补上末尾换行
getUser() 取不到 subject 或 principal 时返回的是空对象,不是 null,
user == null 走不到,删掉;用例改成桩空对象,测真正的匿名那条路。
归属判断挪进 service 之后,controller 层四处 SecurityUser 的桩没人用了,删掉。
四个文件末尾少了换行,补上。另加一条用例钉住判重分组的比较规则:
只折叠大小写,不折叠分隔符。
* 移除回填通讯录别名的迁移,运行时已经兜住了
这个迁移是本 PR 带进来的。它要把空别名刷成称呼,可运行时的兜底已经做了一样的事,
而且覆盖得更宽:那边连纯空格、地址为空和不足两位的都管。删掉它,功能不受影响。
删它有两条理由。一是重复。二是它按 MAC 去设备表取名字,
而一个 MAC 在设备表里可能有多行——同一台设备被两个用户各登记一次就能造出来,
这时候取到的是别人给自己设备起的名字。写在这里,是怕后来的人以为这个坑不存在。
* 归属校验撞到重复 MAC 不再报错
库里同一 MAC 可能有两行只差大小写,selectOne 会抛 TooManyResultsException,把读通讯录接口整个带崩。改成 selectList 按 id 取第一条做归属校验,撞行时正常返回,不再报错。
2026-10-23 17:43:05 +08:00
wengzh
3709540efd
Merge pull request #3445 from xinnan-tech/fix/huoshan-double-stream-4-bugs-y15
...
huoshan_double_stream 修 4 个会话协议与监听竞态 bug
2026-10-23 17:37:05 +08:00
wengzh
333050ae2e
Merge pull request #3464 from xinnan-tech/chore/bump-deps-20261023
...
chore(deps): 批量升级 15 个依赖,适配 mcp 2.x
2026-10-23 17:05:05 +08:00
Sakura-RanChen
95ce49ffc9
删除 benchmark/ 下 3438~3441 回归验证脚本
...
四处修复均已验证收敛,脚本不进 CI、裸跑依赖 manager-api,保留仅为仓库噪声;后续若再动 huoshan_double_stream 时以 pytest 覆盖
2026-10-23 17:04:52 +08:00
Sakura-RanChen
be75e7bd39
chore(deps): 批量升级 15 个依赖,适配 mcp 2.x
...
源 PR: #3426 #3427 #3428 #3429
剔除 4 项:
- edge-tts 7.3.1->7.2.8 是降级
- powermem >=1.1.7 要求 Python>=3.11
- openai 3.29.0 与 powermem 冲突(powermem 要求 openai<3.0.0)
- ruamel.yaml 0.19.1 与 hyperpyyaml 冲突
mcp 2.x 适配: streamablehttp_client 更名为 streamable_http_client,headers/timeout
改由 http_client 承载,产出从 3 元组变 2 元组,ProgressFnT 移到 mcp.shared.dispatcher
2026-10-23 15:15:50 +08:00
hrz
24fbf7eee2
登录 token 12h 静默失效补 silent refresh 接口 #3392 ( #3402 )
...
* 登录 token 12h 静默失效补 silent refresh 接口 #3392
方案 A:后端 POST /xiaozhi/user/refresh(anon),旧 token 校验通过后强制覆盖为新 token 字符串,旧 token 在 DB 查不到即失效。前端 httpRequest 在 sendRequest 入口检查 token 剩余有效期,剩 1h 内触发 silent refresh(独立 fly 实例 + 单飞锁),成功后 setToken 替换并自动继续发送当前请求,失败走 clearAuth 跳登录。
* refreshToken 改 CAS 防并发 race + 拆前端副作用 #3392
P1:SysUserTokenDao 新增 refreshTokenCAS,条件 UPDATE(oldToken + 未过期 + userId),受影响 0 行抛 TOKEN_INVALID;refreshToken 改调它,避免读-改-写 race。P2:refreshToken 加 @Transactional;httpRequest.getTokenExpireAt 内的 localStorage.setItem 挪到独立 persistTokenExpireAt,由 shouldRefresh 入口调用。
* getTokenExpireAt 改读 localStorage 与持久化同源 #3392
pr01 三改:原代码 getTokenExpireAt 读 store(state.token 缓存),与 persistTokenExpireAt 写 localStorage 不同源,导致 _localStoredAt 缺失 → NaN → shouldRefresh 永 false → silent refresh 永不触发。修复:getTokenExpireAt 改读 localStorage,persistTokenExpireAt 同步刷 store,保证两端一致。e2e 已验证:注入 expire=1800 token → reload → role-config mount 触发 sendRequest → Network 抓到 POST /user/refresh 200 → localStorage token 被替换为新 12h token(含 _localStoredAt)。
* 应用启动同步 localStorage token 到 store #3392
PR #3402 扩展:守卫放行后首次 API 请求时,vuex state.token 还是 null,httpRequest 读 store 取不到 Authorization 头,会被后端 401 → clearAuth 跳登录。在 main.js 应用启动阶段就把 localStorage 里的 token commit 进 store,避免 race。不动 refresh 链路与其它业务文件。
2026-10-23 09:47:41 +08:00
monsterlag
855a64cbb9
fix(manager-web): keep model navigation scrollable on short screens
2026-10-22 04:06:52 +00:00
hrz and Sakura-RanChen
fdf280f84a
模板 GET 入口迁回 AgentTemplateController #3395 ( #3401 )
...
* 模板 GET 入口迁回 AgentTemplateController #3395
根因:AgentController 已存在 GET /agent/template/templateList,AgentTemplateController 缺显式 GET,于是路由虽通却跨 controller 暴露模板数据,且职责错位。修复:删 AgentController.templateList,同名 @GetMapping(无 path)落到 AgentTemplateController,权限 normal、orderByAsc sort、复用现有 service.list。验证:spring-boot 启动期无 Ambiguous;/agent/template、/page、/{id} 三路由均被 Shiro 一致拦截,权限/路径正确。
* 补 P2 注释说明 normal 权限反直觉是有意保留 #3395
在 getAgentTemplates 上方加 2 行注释,说明单独 normal 权限是为保持原行为契约(普通用户也能查可用模板),与类级 superAdmin 故意分离;非疏忽。无逻辑变更。
* 去除未使用引用
---------
Co-authored-by: Sakura-RanChen <1908198662@qq.com >
2026-10-22 11:42:48 +08:00
wengzh
498191519c
Merge pull request #3452 from xinnan-tech/py-test-wakeup
...
Py test wakeup
2026-10-22 11:08:38 +08:00
wengzh
f614489d81
Merge pull request #3454 from xinnan-tech/web-test-json
...
Web test json
2026-10-20 15:44:16 +08:00
Sakura-RanChen
6f958ee4a6
fix: 新增模型页面dict字段错误解析
2026-10-20 15:34:40 +08:00
TXyy2023
b226ee5430
fix(manager-web): decode stored dictionaries before editing ( #3450 )
2026-10-20 11:53:02 +08:00
Sakura-RanChen
9c30b5e035
文件直接写入wav,无需经过二次编解码
2026-10-20 10:45:31 +08:00
TXyy2023
d531d04281
fix(tts): handle retained audio files in wakeup cache ( #3451 )
2026-10-20 10:00:20 +08:00
Sakura-RanChen
d8f8a4a083
- 取消屏障保证:新连接创建前 _cancel_monitor_task 已等旧监听任务完全退出,
...
旧任务不可能读新连接或误关新连接(check_huoshan_3440 动态断言覆盖)
- mismatch 分支仅保留纯跳过,删除旧会话结束事件的复位遗留,
activate_session 写入点收敛到会话生命周期(start / matched 结束 / close)
- 删除 _session_start_future 启动确认机制:start_session 发送即返回,
SessionFailed 由 monitor 记 error 并复位 activate_session,无挂起风险
- 回归脚本同步调整:3438 重写为新行为断言,3440 用屏障断言替换 snapshot 断言
2026-10-19 17:52:25 +08:00
TXyy2023
37d4330224
test(model): verify registered types with MySQL and Redis
2026-10-18 23:13:39 +08:00
TXyy2023
7873984f9f
fix(manager-api): preserve registered model type casing
2026-10-18 17:10:47 +08:00
hrz
6840210ea8
check_huoshan_3439 改 FIRST 分支行为断言
...
原 test 用正则 grep 源码验存在性,pr02 复评指出这样测不到实际调用。
改成起后台线程跑真 tts_text_priority_thread、构造 FIRST 消息入队、
run_coroutine_threadsafe patch 成立即完成的 future,最后断言
reset_stream_state 与 opus_encoder.reset_state 各被调一次。
2026-10-17 07:57:30 +08:00