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 |
|
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 |
|
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 |
|
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)
|
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 |
|
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 |
|
 hrzandSakura-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 |
|
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 |
|
hrz
|
0a54124d0d
|
huoshan_double_stream 修 3 处复评反馈
init 漏写 _pending_prefix 字段、start_session 用已弃用的
get_event_loop、finish_session 留着多余的 getattr 兜底。补字段、
换 get_running_loop、去兜底,3 处都修了。
|
2026-10-17 07:57:26 +08:00 |
|
hrz
|
ddc441bc59
|
补 huoshan_double_stream 4 bug 复现脚本
四个独立脚本各覆盖一个 issue:start_session 等 future 确认、句尾残留与编码器
冲刷、monitor snapshot 隔离、parser_response 四处协议解析。共享 _huoshan_mock
构造一个绕开父类 init 的假 provider 实例。
|
2026-10-17 07:39:51 +08:00 |
|
hrz
|
9b7fb3e826
|
parser_response 四处二进制协议解析修正
serialization_method 错用掩码当移位数恒 0,改成 >>4;message_type 写
== FULL or AUDIO_ONLY_RESPONSE 优先级下恒真,改 in (...);offset 硬编码 4 在
header_size>1 全错位,改成 header_size * 4;SessionCanceled 漏进协议分支被
else 误读,补进统一解析。
|
2026-10-17 07:39:51 +08:00 |
|
hrz
|
a6cdbf9410
|
监听任务用 snapshot 隔离跨连接
旧 monitor 循环直接 self.ws.recv(),连接重建后旧任务读新下行;finally 无条件
关 self.ws 误关新连接。改成入口绑 monitor_ws / monitor_task,recv 用 snapshot;
旧 session 事件 continue 不再 reset 当前;finally 判 id 相同才关 ws / 清引用。
|
2026-10-17 07:39:51 +08:00 |
|
hrz
|
75fd5d8cc3
|
句尾替换词残留先发 + 会话结束冲刷编码器
旧 finish_session 不发 _pending_prefix 残留,句尾替换词被扣时整段丢;monitor / to_tts
收 SessionFinished 不调 is_end=True 冲刷 opus 编码器,每句固定丢尾。改成
finish_session 开头先发残留,monitor / to_tts 调 is_end=True 冲刷,FIRST 同步重置。
|
2026-10-17 07:39:51 +08:00 |
|
hrz
|
6fe5630346
|
TTS 会话等 SessionStarted 确认
旧逻辑 start_session 发完 StartSession 即返回;服务端鉴权失败或 14s 内 26005 时
文本线程继续给死会话发文本,整轮无声。改成末尾 await 一个 future:monitor 读到
SessionStarted set True、读到 SessionFailed set False,超时报错让文本线程感知。
|
2026-10-17 07:39:50 +08:00 |
|
hrz
|
eb9dc8ca0f
|
把 pydub 探针绑到当前解释器同目录的完整版 ffmpeg (#3444)
edge_tts 升 7.3.1;edge.py 撤 WSS_URL patch 改默认
(4.36 跑默认 URL 稳定)。util.py 加 PATH 临时注入,
绕开 Mac 上 Trae CN 注入的精简版 ffmpeg/ffprobe,
让 pydub 拿 conda env 完整版。引用计数加锁防多线
程串。
|
2026-10-15 15:43:39 +08:00 |
|
hrz
|
4ed3197a6f
|
pr02 P2 注释预热和百分位
首段缓冲帧数注释改成说人话版本;唤醒词预热按常见音色列表走并把吞掉的失败改成日志提示;基准脚本百分位改成线性插值与 numpy 一致;requirements 补上基准测试用到的 websocket-client。
|
2026-10-14 23:19:37 +08:00 |
|
hrz
|
4dd194ef8b
|
pr02 P1 三条全部兜底
device_prompt 缓存跨日不失效导致今天日期/天气被烤死,改成独立 key 并带 5 分钟 ttl;mcp 工具列表在收到初始化响应后补回并发发送,helloHandle 预发万一丢帧时也能兜住;启服脚本去硬编码路径与全机 pkill,改用相对路径与 PID 文件。
|
2026-10-14 23:19:33 +08:00 |
|
hrz
|
8c41faac8b
|
握手基准脚本后台取帧贴近真实客户端
原版 recv 在二进制语音帧期间必须按顺序 drain 才能拿到 mcp 文本帧,测出来偏慢。改成后台线程持续把帧按到达时间入队、主循环按队列处理,模拟 digital-human 的异步 onmessage 行为。附 handshake_summary_real.txt 是方案 C 后 10 次跑出的数据。
|
2026-10-14 23:05:20 +08:00 |
|
hrz
|
597ab5f415
|
每连接冗余计算与日志降级
提示词模板结果按设备 id 缓存复用、声纹未配置和 mcp 配置文件缺失两条提示从警告降到调试,让每条新连接少跑几百毫秒的模板渲染、少两次同步日志。
|
2026-10-14 23:05:15 +08:00 |
|
hrz
|
4f1cb98503
|
hello 握手并发与缓存
唤醒词音频改为带缓存且进程启动时预热、首段流控缓冲帧数从 5 调到 2、hello 阶段并发发出 mcp 工具列表帧让客户端在听到声音前就准备好、删掉 mcp 初始化后的固定 sleep。砍幅 t_hello_to_tools_ready p50 从 4019ms 降到 219ms。
|
2026-10-14 23:05:12 +08:00 |
|
hrz
|
a6eeb107f4
|
fix(deps): 补 dependabot ignore portalocker
requirements.txt 把 portalocker 锁在 3.x,4.x 与 qdrant-client<1.20 的
portalocker<4.0 冲突 (PR #3360)。Dependabot 默认推 4.x 升级会破约束。
依 openrz 评审 P1 在 ignore 列表追加 portalocker 一项。
|
2026-10-13 11:28:37 +08:00 |
|
hrz
|
741ec299c0
|
fix(tts): edge-tts 失声改走 msedgeservices (#3420)
* fix(tts): edge-tts 失声改走 msedgeservices
微软 2026-10 起对 legacy 消费者接口返回 403,
edge-tts 7.2.8 仍走 speech.platform.bing.com 走不通。
上游 PR rany2/edge-tts#491 切到 api.msedgeservices.com 修好,
但 7.2.8 仍是 PyPI 最新版本。
仓库在 edge.py 顶部临时把 WSS_URL 顶住,等 7.2.9 出了删掉。
* fix(tts): patch 还要写 communicate.WSS_URL
edge-tts 7.2.8 仍指 legacy bing 接口,10 月起微软 403。
上游 PR #491 已切到 msedgeservices.com,7.2.9 才进 PyPI,先顶住。
上次只改 constants.WSS_URL 不够,communicate 用 from import 是模块局部名,
LEGB 找不到新值。这次同时改 communicate.WSS_URL 才生效。
|
2026-10-13 09:58:30 +08:00 |
|
hrz
|
505925fb21
|
Dependabot 改月度更新并按用途分组
原本每周跑一次会刷很多零碎 PR,看着烦。改成每月一次,并把第三方 AI 服务、本地模型、网络栈拆成几组聚一起,每组出一个 PR 就行。被锁住的 torch/numpy/websockets 几个直接忽略掉,免得它推升级 PR 进来。
|
2026-10-13 09:34:02 +08:00 |
|
hrz
|
4aa63baf75
|
fix(router): 路由守卫改 anon 白名单反向匹配
业务路由越加越多,原来硬编码的 8 项守卫名单跟不上了,
未登录直接进十来个业务页看到骨架再被踢,体感抖。
守卫改成只对登录、注册、找回密码、根路径这四页放行,其余一律查 token。
顺手把 9 处没人读的 meta.requiresAuth 和 meta.title 死字段删了。
|
2026-10-12 18:02:36 +08:00 |
|
hrz
|
4576e391bb
|
fix(ci): 阿里云 PyPI 镜像 metadata 缺失回退官方源 (#3417)
基镜像构建挂了——日志显示 pip 在装 requirements.txt 阶段退出码 1,
罪魁是阿里云 pypi 镜像对 mcp==1.22.0 的元数据文件 404。
装包那行加 --extra-index-url https://pypi.org/simple,
主源没货时自动去官方源捞。
|
2026-10-12 10:28:35 +08:00 |
|
hrz
|
a6cd755cf2
|
聊天记录弹框底部不再留大量空白 (#3410)
弹框本身和 body 用 !important 撑到视口(body 顶开 size="large" 默认多扣的 56px footer 高度)。body 的高度由 flex: 1 自动撑满,max-height 只用来顶开原来的 950px 上限。
|
2026-10-09 17:24:39 +08:00 |
|
hrz
|
23d0e64d9d
|
召回测试弹框与切片弹框样式对齐 (#3409)
召回测试弹框宽度从 900px 调到 1200px 并启用大弹框样式,高度、上下间距与切片弹框保持一致。结果区域改用 flex 填充而不是写死的 400px 高度。
|
2026-10-09 17:18:06 +08:00 |
|
hrz
|
96c224c4e4
|
切片和聊天记录弹框统一为大弹框样式 (#3407)
知识库查看切片弹框加 size="large",聊天记录弹框去掉旧样式覆盖并把 body 改成 flex 列布局,底部下载按钮不再绝对定位,两个弹框跟历史版本对齐。
|
2026-10-09 17:02:49 +08:00 |
|
hrz
|
2b6483662a
|
召回测试弹框回车不再刷新页面 (#3408)
给 el-form 加阻止默认提交的处理,按回车时不再触发浏览器刷新。
|
2026-10-09 17:01:52 +08:00 |
|
hrz
|
aef973e6b9
|
7 处 el-select 加 filterable 支持输入筛选 #3405 (#3406)
主诉:手动添加设备下拉无搜索(FIRMWARE_TYPE 字典 54 项)。统一修同类位置:替换词多选加 collapse-tags;登录/注册/找回密码的区号下拉加 filterable(海外 200+ 项)。无新依赖、纯 element-ui 原生属性。
|
2026-10-08 15:39:46 +08:00 |
|
hrz
|
7a260ee143
|
弹框关掉后再点不开以及宽度高度统一收口 (#3388)
* 统一管理后台弹框更舒展
把 CustomDialog 默认宽度从 600 加到 720,正文给到至少 360 的高度,
默认弹框就不再显得局促。参数编辑弹框也跟着加宽。智能体历史版
本那条列表、对比和恢复预览都给到至少 420 的最小高度,避免内容
少时框太矮看起来小气。其他像添加智能体、绑定设备这些原本就合适
的弹框没动。
* 弹框外观统一收口
原本几个弹框长得参差不齐:标题字号、按钮文案、留白高度各管各的。这次把新建智能体、新建设备、改模型、改参数这几个弹框接到同一个底座上,按钮统一成「确定」「取消」,输入框字号高度对齐,遮罩背景加了模糊,弹框太高就内部滚动,四个弹框看起来一个模子
* 修复弹框关掉后再点不开
之前几个弹框改用新底座的时候,关闭那一路少了一段转发:父页面用双向绑定来收弹框关闭的信号,子页面应该再把关闭事件抛上去告诉父页面。这一段被删了,下次再点添加按钮时父页面那边状态没复位,弹框就拉不开来。现在把这段补回去。
* 弹框宽度和高度统一收口
同一批弹框的尺寸还是各管各的:模型配置里改参数那个是跟着窗口大小按比例伸缩,历史提示词的源编辑弹框是 900 像素,参数管理里又是 720 像素,智能体变更详情那个上下还留了一大块空白。这次收到同一个共用底子上:宽度都对齐到 720 像素,弹框默认上下贴齐屏幕边、内容多时中间滚动,变更详情那个高度撑到接近屏幕顶到底。
* 管理后台弹框按大小分类统一外观
管理后台里的弹框按大小分成两类来收口。占整页的大弹框(历史版本、变更详情、模型修改、模型参数修正等)撑满整个浏览器高度,下面不再留白;小弹框(添加智能体、添加设备、知识库、字典、角色模板等)改成对齐屏幕正中,不再顶在屏幕上沿。修改模型那条弹框也加宽到 960,左右留白加大到 40,跟历史版本对齐,看起来更舒展。
* 大弹框上下留白收口到十像素并按三档统一宽度
大弹框上下各留十像素让边框和圆角清晰可见。宽度按用途分三档:表单 960、含代码 1080、表格 80% 加宽度上限。供应器、上下文供应器、音色克隆都改 960;TTS 从 90% 改 80%;角色模板从 1200 改 1080;缓存查看从 70% 改 80%。新增模板的大文本框改成自适应高度。
* 弹框样式与文案收口处理
AddDeviceDialog 确认后关闭弹框;CustomDialog 去掉 :global 与紧邻选择器,合并 el-dialog__body 样式块;删除未使用的 --dialog-form/--dialog-code;AddWisdomBodyDialog 的 cancel/handleClose 委托到同一个实现;多语言文案同步去冒号与双点。
* 弹框遮罩样式移到全局作用域
scoped 块里的 ::v-deep .v-modal 打不到 body 层的遮罩,改在 global.scss 用全局选择器。
* 弹框 wrapper 居中样式移到全局作用域
scoped 块里的 ::v-deep .el-dialog__wrapper 同样打不到 element-ui 自渲染的 wrapper,跟 .v-modal 一起挪到 global.scss。
* 弹框提交状态异常收口
设备激活码错误路径不再卡 loading;Provider 与固件弹框补 loading 兜底。
* 弹框视觉异常收口
首页删除确认弹框 wrapper 居中;历史版本弹框去掉内层多余滚动条。
* 设备 API 链式返回修复
bindDevice 等方法补上 return,让 .fail() 兜底回调能正常注册到请求对象上。
* 设备 API 错误回调参数补全
device.js 六个方法加 failCallback 参数;user.js login 网络重试补 failCallback;AddDeviceDialog 改四参数签名。
* 设备状态 API 失败回调引用修复
getDeviceStatus 的 .fail() 块把函数体内 callback(res) 改成与签名一致的 if (failCallback) failCallback(err),避免业务错误时抛 ReferenceError。
|
2026-10-07 08:03:25 +08:00 |
|
hrz
|
eb51f420a2
|
Bump to 0.9.7
|
2026-09-29 09:13:14 +08:00 |
|
hrz
|
1211f8202b
|
Merge pull request #3376 from googio/feat/serply-search
feat(web_search): 新增Serply搜索源
|
2026-09-28 09:36:42 +08:00 |
|
hrz
|
3c31315ecc
|
docs: 批量修正文档里的错别字和拼写错误
扫了仓库里的文档,挑出明显写错的字和拼错的英文,统一改了一遍。包括「Anaconda Prompt」漏字、「火上」→「火山」、「设别」→「设备」、「tababr」→「tabbar」、「aotodl」→「autodl」、「mananger-web」→「manager-web」等十几处。仅文档修改,不影响代码。
|
2026-09-06 08:37:51 +08:00 |
|
hrz
|
07c6cdf16a
|
docs: 修正视觉模型配置文档里的错字
按 issue #3354,把"视觉打语言模型"改成"视觉大语言模型",跟上下文一致。
|
2026-09-06 08:34:57 +08:00 |
|
hrz
|
8a3c2c51a0
|
Merge pull request #3351 from taiwan-dog/pm/disable-default-websocket-keepalive
fix: disable library WebSocket keepalive for device server
|
2026-09-05 00:37:23 +08:00 |
|
hrz
|
046fdc8aa4
|
Merge pull request #3350 from taiwan-dog/pm/hello-before-mcp-initialize
fix: send server hello before MCP initialize
|
2026-09-05 00:26:15 +08:00 |
|
hrz
|
4b1ccce575
|
Merge pull request #3346 from taiwan-dog/pm/fix-funasr-result-type
fix: normalize FunASR result type
|
2026-09-04 13:40:00 +08:00 |
|
hrz
|
c7b126ca2f
|
Makefile test-web 同时跑契约与 vitest
|
2026-09-02 22:24:36 +08:00 |
|
hrz
|
95954c8dae
|
加日期格式化工具测试,24 例
|
2026-09-02 22:24:36 +08:00 |
|
hrz
|
17c0da7f87
|
加 featureManager 单元测试,7 例
|
2026-09-02 22:24:36 +08:00 |
|
hrz
|
dcb3d3e0b0
|
加 deviceTime 工具 vitest 测试,22 例
|
2026-09-02 22:24:36 +08:00 |
|
hrz
|
e58de03be2
|
配 vitest:jsdom 环境与覆盖率
|
2026-09-02 22:24:36 +08:00 |
|
hrz
|
975bbe2cfd
|
前端引入 vitest 测试工具链
|
2026-09-02 22:24:36 +08:00 |
|
hrz
|
88d6d13a62
|
加敏感数据工具测试,9 例
|
2026-09-02 22:24:36 +08:00 |
|
hrz
|
c88149a5d4
|
加知识库适配器工厂测试,6 例
|
2026-09-02 22:24:36 +08:00 |
|
hrz
|
6a3aaf475e
|
加纠错词文件服务单元测试,9 例
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
caab6a145d
|
加插件包导入冒烟测试,1 例
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
7ac454a1b9
|
加意图/模型/记忆工厂测试,6 例
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
ba20bebaeb
|
加对话消息测试 11 例,含异步
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
922adbb290
|
加配置合并函数测试,7 例
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
6eca417534
|
加 current_time 测试 7 例,冻结时间
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
93d54f175a
|
加 output_counter 测试,7 例
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
34ab39ba69
|
加 textUtils 行为测试,11 例
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
a0dd138e93
|
配 pytest 与 conftest,修模块路径
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
b90dd01826
|
加 Python 冒烟测试,验证 pytest 流水线
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
22b1703557
|
新增 GitHub Actions,并行跑三语测试
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
3363965f63
|
新增顶层 Makefile,统一测试入口
|
2026-09-02 22:24:35 +08:00 |
|
hrz
|
eb4b28c59e
|
Merge pull request #3336 from muxinshijie/feature/fix-noneType-bug
fix: 修复safe_close多线程竞态导致NoneType空指针
|
2026-09-02 18:38:10 +08:00 |
|
hrz
|
c02becdc80
|
Merge pull request #3332 from MsThink/main
refactor(manager-web): 将备注重命名为 设备别名
|
2026-08-21 21:39:45 +08:00 |
|
hrz
|
e1876f1ce1
|
Merge pull request #3315 from xinnan-tech/fix-model-name
更换豆包、Gemini的LLM模型、修复 performance_tester 异步配置加载错误
|
2026-08-18 16:31:48 +08:00 |
|
hrz
|
ced7103639
|
Merge branch 'main' into fix-model-name
|
2026-08-18 16:31:21 +08:00 |
|
hrz
|
cb0b075304
|
Merge pull request #3326 from MsThink/main
fix(知识库管理): 上传弹窗禁止点击遮罩关闭并添加提交加载状态
|
2026-08-18 16:26:46 +08:00 |
|
hrz
|
8b64205522
|
Delete docs/images/console-params.png
|
2026-08-18 16:23:50 +08:00 |
|
hrz
|
6529b80c64
|
Merge pull request #3329 from Jehuty-ML/feat/params-management-group-ui
feat(manager-web): 参数管理按命名空间聚合展示
|
2026-08-18 16:10:52 +08:00 |
|
hrz
|
7475ea2b2d
|
Merge pull request #3313 from xinnan-tech/fix-deepseek-model
deepseek更改模型为v4-flash并且关闭思考模式
|
2026-08-06 18:10:01 +08:00 |
|
hrz
|
93885058e9
|
fixed:Star History Chart
|
2026-08-06 18:08:18 +08:00 |
|
hrz
|
50895d6e33
|
Merge pull request #3310 from xinnan-tech/py-fix-pr_3304
展开模块级别插件名为具体函数名,合并 HA 设备控制插件为 hass_state 模块
|
2026-08-04 09:25:44 +08:00 |
|
hrz
|
9da58e254c
|
Bump to 0.9.6
|
2026-07-24 09:53:03 +08:00 |
|
hrz
|
bc1aa1a089
|
Merge pull request #3267 from xinnan-tech/fix-agent-idor
fix: prevent agent IDOR access
|
2026-07-10 17:36:00 +08:00 |
|
hrz
|
8ec5851027
|
Merge pull request #3273 from xinnan-tech/agent-delete-name-confirm
feat: 删除智能体前需要用户进行确认
|
2026-07-10 10:39:47 +08:00 |
|
hrz
|
634967b2fe
|
Merge pull request #3274 from xinnan-tech/i18n-duplicate-check
test: 增加 i18n 重复 key 检测
|
2026-07-10 09:59:33 +08:00 |
|
hrz
|
ef2ed07c1c
|
Merge pull request #3266 from xinnan-tech/agent-snapshot-history
Add agent configuration history
|
2026-07-09 14:54:27 +08:00 |
|
hrz
|
772af6c918
|
Merge branch 'agent-snapshot-history' of https://github.com/xinnan-tech/xiaozhi-esp32-server into agent-snapshot-history
|
2026-07-08 17:46:50 +08:00 |
|
hrz
|
2a917c1e62
|
update:对齐i18n文件行数
|
2026-07-08 17:44:10 +08:00 |
|
hrz
|
209fd3fbc8
|
Merge pull request #3260 from xinnan-tech/test-funasr
FunASR识别指定语言
|
2026-07-06 13:56:48 +08:00 |
|
hrz
|
f0d61442b8
|
Merge pull request #3259 from xinnan-tech/update-theme
顶部下拉菜单图标间距调整
|
2026-06-30 18:45:14 +08:00 |
|
hrz
|
f77970dd7d
|
update:Bump to 0.9.5
|
2026-06-30 13:10:26 +08:00 |
|
hrz
|
1ebfcd1f13
|
Merge pull request #3256 from xinnan-tech/update-theme
解决智能体管理查询不展示的问题&删除知识库旧版废弃文件
|
2026-06-30 09:36:42 +08:00 |
|
hrz
|
5f87fc8361
|
Merge pull request #3204 from xinnan-tech/py-fix-calling
优化相关逻辑
|
2026-06-15 14:06:51 +08:00 |
|
hrz
|
a964192eb0
|
Merge pull request #3213 from xinnan-tech/fix-knowledge-base-ragflow-bug
#3212 修复知识库RAGFlow相关逻辑BUG
|
2026-06-12 11:15:35 +08:00 |
|
hrz
|
4b1460d938
|
update:调整同步数据集错误日志的级别
|
2026-06-11 19:10:21 +08:00 |
|