Repository navigation
chore(deps): bump redis from 8.0.1 to 8.1.0 in /server/ai-gateway - #20
Closed
dependabot[bot] wants to merge 468 commits into
Closed
dependabot[bot] wants to merge 468 commits into
dependabot[bot] wants to merge 468 commits into
Conversation
## [0.34.0](v0.33.1...v0.34.0) (2026-08-02) ### ✨ 新功能 * **assistant:** add AI deep-sea companion MVP — chat, proactive triggers, TTS, jellyfish avatar ([59ce053](59ce053)) * **classroom,feynman:** local ASR IPC groundwork, AI error retry, nginx health timeout ([2df5044](2df5044)) ### 🐛 缺陷修复 * **ai-gateway:** register chat_router before streaming_router to avoid wildcard route shadowing ([1f97a54](1f97a54)) * **assistant:** inject authToken and userApiKey into chat IPC call — resolves 401 ([4a188b5](4a188b5)) * **notes:** AI 摘要/闪卡使用完整文本,列表预览保留 120 字截断 ([68cd9f8](68cd9f8)) * **sync-service:** add GetRedis() accessor — resolves undefined cache.GetRedis build error ([506db0a](506db0a))
…consolidation - Add streaming ASR service with Sherpa model streaming support - Add speech normalizer/streamer and TTS handler for assistant - Refactor all AI handlers to unified gateway HTTP/stream transport - Simplify ai-gateway auth middleware and rate limiter - Add AsrSettingsSection UI; remove legacy apiKeyManager - Update CSP policy, preload bridge, classroom capture hooks - Add server db-backup/db-restore scripts; update docs
…eway hardening - Add microphoneProvider and audio-chunk-processor for capture pipeline - Add useRetentionInit, useLearningProgress hooks and FSRS test - Refactor captureManager, smartCaptureController, vadMarker, outputDeviceMonitor - Harden ai-gateway fallback timeout and provider limits config - Add website legal pages (privacy/terms), OG image, versions.json - Add dependabot config, rollback script, stream fallback timeout test - Update electron-builder, docker-compose.prod, release workflow - Add v0.34.0 version docs
A1 情绪感知分级干预: behaviorMetrics 行为信号采集与三级模板规则 A2 语音对话闭环: useVoiceInput 拾音链路 + ChatInput 麦克风交互 A3 微进展叙述者: 网关 progress_narrative chain/router + Electron handler + 周统计聚合与离线降级 A4 实施意图教练: schema v6 implementation_intentions + 仓储 + 启动仪式 intention 步骤 + 定时提醒 A5 认知负荷监控: cognitiveLoad EMA 评估与 overload 事件规则 F2/F4/F5: 黄金错误周报、错误模式分析、中断恢复包; 仪式跳过菜单与杂项修复
A4: 意图无完成入口导致每4h无限循环提醒+队头阻塞——每条意图至多提醒一次(localStorage持久化), findDueIntention 支持排除已提醒ID A3: 叙述增强异步竞态守卫——仅当气泡仍在展示本规则时才覆盖, 不抢占已展开面板; 启动时叙述延迟8s展示避免瞬间覆盖问候, 延迟期间用户关闭气泡则放弃 A4: 提醒时刻已过顺延到明天, 避免创建后立即提醒
内测缺陷修复: - fix(assistant): 学伴消息有概率发不出——chat 限流 20→100、chat 豁免全局 daily_total、getAuthToken 增加 token 过期主动刷新、语音文本流式中回填输入框 - fix(notes): 切换标题(字号)后保留 textAlign,避免重置排版 - fix(notes): 光标在表格内拦截 insertTable,杜绝无限嵌套表格 - test(notes): 新增 EditorToolbar 回归测试 4 例 创新功能增强(与修复文件存在耦合,一并提交): - feat(ai-gateway): 新增 quiz_gen/content_tier/conflict_detect/concept_precheck 四条链路、路由与提示词,并注册限流映射 - feat(notes): 笔记健康度指示器、内容分层弹窗、迷你测试、合书测试、概念冲突检测 - feat(feynman): 概念预检卡片、录音器、知识图谱页 - feat(flashcards): 恢复包面板(RecoveryPack) - feat(pomodoro): 锚点提醒、能量建议条、节奏引擎 - feat(website): FAQ 页面与导航/页脚更新 验证:客户端 vitest 731/731、tsc+vite 构建、oxlint 0 errors、网关 pytest 181 passed
资源泄漏与竞态(费曼录音器): - fix(feynman): 启动中途卸载/ASR 抛异常时回收麦克风采集,杜绝残留占用 阻塞其他音频功能(startingRef + captureStarted 双保险) - fix(feynman): startingRef 同步上锁防双击重复启动(监听器泄漏/文本重复) - fix(feynman): stop 先 await ASR flush 再退订,最后一段转写不再丢失 - fix(feynman): playbackUrlRef 修复卸载闭包捕获 stale null 导致的 URL 泄漏 - feat(feynman): 录音 10 分钟时长上限,防止 PCM 内存无限增长 数据正确性: - fix(flashcards): 恢复包记忆回响改用 TipTap JSON 递归提取纯文本 (原 HTML 正则对 JSON content 无效,AI 收到 JSON 噪声) - fix(ai-gateway): 5 条新路由 fallback 空结果不再写入 Redis 缓存, 避免一次解析失败导致该请求 1 小时内持续静默失效 - fix(feynman): 苏格拉底薄弱点写入独立静默失败,笔记已落库后不再 误报保存失败(原逻辑重试会创建重复笔记) - fix(flashcards): 恢复包 totalDue 统计全部到期卡,与 UI 文案一致 体验修复: - fix(pomodoro): 锚点提醒计时器在会话停止时重置,下一个番茄不再 立即触发提醒;专注场景锚点生成静默(不播放音效) - fix(feynman): 概念网络图禁用无效的受控节点拖拽 - fix(feynman): 预检卡关闭条件移入 AnimatePresence 以播放 exit 动画; dismiss 记录改存时间戳并在超 100 条时淘汰最旧 - fix(notes): 复制核心概念失败时给出错误提示 - refactor(notes): extractText 提取为共享工具 extractNoteText 验证:客户端 vitest 731/731、tsc+vite 构建、oxlint 0 errors、网关 pytest 181 passed
- 全部 AI handler 首行以 requireText/requireArray 校验入参,缺参/错型前移为带字段名的可诊断错误,避免主进程裸 TypeError 与无效云端请求 - 新增 jsonParse.ts 宽松解析(直接解析→围栏提取→大括号截取三级策略),本地小模型输出围栏/解释文字时不再误降级到云端,守住本地优先承诺
- EndpointLoopbackProvider/audioCapture 启动路径加同步互斥锁,堵住守卫与状态翻转间的 await 空隙,防并发双启动 - video_record_stop 先同步取引用并置空再 await,双停/新旧录制交替时不再误 dispose 或崩溃 - screen_capture_start 防抖顶替旧请求时显式 settle 旧 Promise,避免渲染层 loading 态永久卡死 - VideoRecorder 写流监听 error 事件,磁盘故障时优雅停止并通知渲染层,不再未捕获异常崩溃主进程
- 新增 pomodoroScheduler 全局调度器(App 启动注册),tick 驱动与页面生命周期解耦,切离页面倒计时不停摆 - store 引入 endAt 墙钟截止点,tick 与墙钟误差 >1s 时吸附校准,休眠唤醒/interval 漂移后自愈(附单测) - 沉浸/普通切换改为视图状态机串行过渡:两个独立 AnimatePresence 实例间 mode=wait 无效,此前双视图叠加约 0.6s 双曝光残帧 - 附知识库 bug 复盘文档
- flyTo 增加注视点参数,飞行期间朝向同步转向目标;此前只插值位置不改朝向,叠加 docked 渲染冻结导致停靠后视角错位、正对空白 - 相机飞行统一由相位迁移响应式驱动,覆盖 3D 点击/数字键/路由同步全部入口;点击入口记录行星实时坐标防公转漂移 - 新增 LoopResumer:frameloop 从 never 切回 always 时显式 invalidate 唤醒渲染循环,修复多次切换后画面永久冻结 - 停靠延迟下限 clamp 到 700ms(飞行 600ms),防静谧档飞行中途冻结相机停在半途 - exitModule 清除悬停态;isActive 结合相位判断,Esc 退出后不再残留选中视觉 - 附知识库 bug 复盘文档与索引更新
- AppLayout/Step5ExitDemo 改为逐字段 selector 订阅 OrbitalStore,避免 hoveredModule 等高频字段变化连带重渲染整棵布局树 - NoteEditPage 弃用 useShallow(s => s) 整 store 订阅;健康度文本改为 1s 防抖 + 面板打开时惰性取快照,键入路径不再每键触发 457 行整页重渲染
- processQueue 增加消费互斥锁,防止启动消费与 online 事件消费并发进入导致同一请求重复上报 - 启动时恢复卡死在 processing 状态的记录(回置 pending),防止应用中途退出造成数据静默丢失
GLM 免费 flash 模型输出上限 1024 tokens,超限会被 API 参数校验直接拒绝, 导致 Qwen 限流降级到 GLM 时 fallback 链在最需要兜底的时刻断裂; generate_chat 入口对 flash 模型统一 clamp,与 generate_vision 行为对齐。
- ai-era-survival-positioning.md:第一叙事「记忆主权与本地世界」,三层防御纵深,Foresight立项三问过滤器;与既有竞争力战略文档互补衔接 - entropy-visualization-constitution.md:单范式「万物趋于无序,而你在此造序」,核心映射表/焦虑防线/签名时刻/性能预算/叙事层叠加(潮汐/沉积/旁白),已裁决批准 - mcp-learning-memory-interface.md:P2战略项接口清单草案(8个只读工具,默认关闭,本地stdio,焦虑防线传导)
- worldState.ts:retention引擎数据→世界信号集纯函数派生(vitality/mist/depthNorm/firefly/warmth),宪法边界硬编码:雾上限0.4、关闭留存→纯净亮度映射、冷启动=未点亮混沌、辉光域0.6-1.15无惩罚性暗淡 - useWorldSignals.ts:细粒度selector订阅hook,帧率敏感场景防连带重渲染 - worldState.test.ts:7用例覆盖宪法§1/§5/§7关键约束 - ModuleEntity/SpatialNav:深海实体辉光=交互态基值×世界活力(珊瑚健康度),宪法第一条映射表首次落地
- useWorldEvents:世界事件总线,复习/掌握时刻发射秩序波纹,业务层与世界层解耦 - ChaosMist:遗忘可视化——雾强度由 mist 信号驱动(白化珊瑚占比,封顶0.4),程序化径向渐变纹理,high/medium漂移、low静态,关闭留存自动隐去 - OrderRipples:复习即时正反馈——起源锚点扩散光环,同屏上限3道,reduced-motion降级静帧闪烁 - DeepSeaWorld 接入熵可视化层;useWorldSignals 增加 useShallow 细粒度选择器变体 - useStudySessionStore.rateCard 接线:任何评分都是一次对混沌的推退(含Again,零负向语义)
- SignatureMoment:全产品唯一一级时刻——静默(1.5s)→事件(4.5s星亮+波纹)→余韵(2s),Esc/点击可打断(觉察原则),reduced-motion静帧版,achievement_unlocked音效 - useWorldEvents 扩展 signatureSeq/signatureConcept 事件通道 - useFeynmanAI 双挂载点接线:单次评估 overallScore≥75 与追问评估 understandingScore≥7.5 均视为概念掌握 - App.tsx 全局挂载(与 DiscoveryReveal 同级,仅事件发生时渲染DOM)
- computeCurrentStreakFromCorals:从珊瑚种植日期派生连击(与DashboardPage口径一致),useWorldSignals接线warmth真值,新增3单测(共10) - TideBreath(叙事层C):番茄钟运行=涨潮——荧光点光增亮脉动+潮线升起,停止=退潮回落;熵的呼吸,reduced-motion跳过脉动 - StrataField(叙事层D):累计专注=海床沉积地层(珊瑚记录数→层数,上限8层),最新沉积带辉光,白化不减层(可逆原则),静态网格零帧耗 - DeepSeaWorld挂载叙事层C/D
- 世界数据回路:深潜完成→plantCoral(此前无调用方,珊瑚/地层/活力数据自此真实生长),动态import防循环依赖 - useFirstDiveStore:首潜全部完成触发创世版签名时刻(宪法第三条§5) - SignatureMoment 增加 genesis 变体:「第一颗星,亮了——从这次首潜开始,这个世界开始记住你」 - WorldConditions + RitualComplete 接线:仪式收尾展示「今日海况」一句话世界叙事(宪法第六条,仪式成为世界的每日开场),焦虑防线措辞,留存关闭时隐去
- 三套演出变体随机重奏(宪法第三条§1可变比率,对抗多巴胺适应): star 孤星亮起+秩序波纹(默认)/ trinity 三星连线(知识成网)/ bloom 光尘上浮(秩序开花) - 每次签名事件随机选取变体,reduced-motion 各变体均静帧可用
- mcpMemoryServer.ts:stdio MCP Server 独立入口——授权标记门禁(无consent即拒启)、只读打开keban.db、调用留痕memory-server-access.log、零网络监听 - mcp/memoryQueries.ts:8个learning_memory.*只读摘要查询(profile/mastery/review_candidates/focus_stats/streak/discoveries/recent_sessions/world_state),粒度上限100、焦虑防线传导(零倒计时、朦胧档位表达) - 宿主以ELECTRON_RUN_AS_NODE方式启动(原生模块ABI兼容),接入配置写入接口文档§八 - discoveries/world_state精确态为派生占位(珊瑚/发现存于渲染进程IndexedDB),跨进程接线列入后续批次
- memoryServerConsent.ts:设置页授权开关IPC(读写memory-server-consent标记文件,标记仍是唯一事实源),main/preload白名单接线 - MemoryServerSection:数据与存储页授权卡片,开启前披露将被读取的记忆清单,关闭即撤销 - world_snapshots表(schema v7)+白名单登记:渲染进程retention数据→sqlite的跨进程桥 - useWorldSnapshotSync:订阅珊瑚/发现store,防抖2s upsert快照行(失败静默) - memoryQueries:discoveries/world_state优先读快照精确态,无则回退派生值并标注provenance
- WorldSoundscape:双世界环境底噪(深海=雨声/穹顶=麦浪风声),音量0.12淡入淡出、后台自动静音、外观设置可开关(默认关) - FatigueEmpathy:连续深潜未真休息达阈值时弹出觉察式上浮建议——休息时长口径判定真休息(skip不重置),零负向语言可忽略 - WorldRecap:每日首次打开展示6秒世界生长摘要(珊瑚/深度/发现日间增量),跨日基线结算,零增长温柔文案 - fatigue.ts纯函数规则层+单测(阈值/真休息比例/无效值守卫) - App全局挂载三组件;宪法进度更新为P2完成
…ProfileSettings 443→234 拆分
- 审验报告:五域(ASR/视觉/公式/课程识别/热词)现状盘点 + 市场基准 + 差距矩阵 + 成熟度评分 3.2/5 + UX 场景光谱分析 - 升级设计:P0 止血(离线ASR重复/CPU/准确率修复 + Silero VAD + 置信度 + 评估基线)→ P1 核心质量(两遍重打分/动态热词/修正回写/说话人分离/中英混说/技能场景感知)→ P2 差异化(本地OCR/公式引擎/版面/步骤化笔记) - 调研底稿:ASR 技术与 OCR/视觉技术市场 2025-2026、竞品识别机制分析
- P0 七任务细化到 Step 粒度(评估基线/Silero VAD/置信度/离线ASR重复与CPU修复/准确率即时/统计面板) - P1 九任务(重打分/动态热词/修正回写/说话人/混说/技能场景感知/补帧/漏捕/截图流) - P2 八任务(本地OCR/公式引擎/版面/VLM增强/区域监测/步骤化笔记/复习联动) - 里程碑 M-P0/P1/P2 与验证门禁、风险清单
- eval.mjs:--self-test/--file/--cloud/--local 四模式,聚合 CER 与热词命中率报告 - lib/cer.mjs:编辑距离 CER(中文逐字/英文按词,全半角归一化,滚动数组内存优化) - lib/hotwordHit.mjs:术语命中率(含替换纠正命中、notInRef 剔除口径) - corpus/README.md:10 节课语料规范(清单入库、音频不入库) - docs/asr-eval-baseline/BASELINE-2026-08-16.md:算法自检与基线记录框架
- 主进程 sileroVadService:onnxruntime-node 跑 silero_vad_v5(有状态流式),IPC vad_silero_process 返回语音概率;模型从 node_modules 包内读取(dev/asar 均可用),加载/推理失败静默降级 - 渲染进程 IpcSileroVad:在途合并(保留最新块)、概率时间戳缓存、不可用降级;注入式 SileroProbSource 接口 - VADMarker 集成:噪声抑制(暂存-确认两段式,语音开头不丢)+ 静音复核(低能量语音尾推迟分段,3000ms 上限防拉长)+ reset 联动 - smartCaptureController:创建概率源/双喂/释放接线 - 选主进程 onnxruntime-node 而非渲染 onnxruntime-web:规避 file:// 下 wasm/worker/COI 坑(2026-08 AudioWorklet 事故教训) - 新增 24 例单测(噪声抑制/静音复核/推迟上限/合并/降级)
P0-4: 端点规则调优(rule2 静音1.2s→2.0s、minUtteranceLength 8→10)+ 跨final重叠去重 + 跨标点两字词重复压缩(确认语白名单)+ flush尾句去重 P0-5: 线程数默认min(4,cpuCount)上限8 + 静音块隔块喂入 + 非16kHz前置阻断 P0-6: AI课程识别术语动态热词注入 + local_asr_stream_set_hotwords(下一断句重建流生效)+ P1-1重打分接入点标注
网关: transcribe 置信度估算(文本长度基线0.7渐近0.95/fallback 0.3);vision 截断标志透传且置信度减半 本地: estimateAsrConfidence(清洗前后长度比代理信号);流式final/flush与按段转写均携带confidence UI: UnifiedTimeline 低置信度(<0.55)弱化+角标;LiveTranscript/TranscriptEntry 增加confidence字段
P1-6: 规则分类器(标题关键词优先/转写证据投票/讲座场景优先于软件)→ 技能类采样参数收紧(阈值0.05/间隔5s);SmartSampler.setConfig 运行中调参 P1-7: hasCommandCue 指令模式检测 → SmartSampler.forceNextCapture 强制补帧(1s节流/哈希去重仍生效) P1-9: UnifiedTimeline 最近6帧截图缩略流(识别过程可见) 新增 22 例单测(分类契约/参数驱动/强制补帧/setConfig)
P1-2: 视觉提取concepts术语注入会话热词(extraction:completed)+ 流式热词IPC同步 P1-3: 编辑修正差异提取(公共前缀/后缀剥离)→ 会话内立即生效 + 词库去重持久化(课程维度绑定) P1-8: 指令句后3s无新帧漏捕提示 + C键手动补截快捷键
config/modelManager: 新增 rescore 模型定义(SenseVoice int8 ~230MB),旧模型清理移除 SenseVoice 目录,双引擎下载/删除/状态 sensevoiceRescore: 非流式识别器懒加载 + pickRescored 一致性择优(Jaccard>=0.35 采用重打分,差异过大保留流式原结果) 接入:按段转写与流式 final 均句末重打分(句音频累积含静音尾);重打分通过置信度提升至 >=0.85 设置页:开关收紧为流式主模型就绪(rescore 不能单独转写);模型列表自动展示双模型
P1-4: 转写行说话人循环标注(无→A→B,飞书式重新识别),audioSegments 同步 speaker 供课后分析消费 P1-5: spike 结论落盘(本地 zipformer 双语模型混说已具备,缺口是基线验证与混说语料);设置 UI 混说说明
stepExtractor: slide_change 边界切分 + 指令句聚合(1s 时序容差)+ 代表性截图选择;checklist/闪卡问答转换 StepFlowView: 步骤卡片流(截图+说明+时间戳)+ 练习模式(隐藏说明翻卡对照)+ 跟着做 checklist + 闪卡导出 SessionContentView: 技能类会话时间线/步骤卡片视图切换(首次检测自动切步骤) 新增 8 例单测(边界切分/容差/兜底/截断/转换)
ExtractionResult/ScreenshotData 增加 capturedAt/timestamp;VisionWorker 透传截图采集时刻;融合对齐用采集时刻而非处理完成时刻(与 ASR 句级时间戳同一时间基准)
ocrService: PP-OCRv5 模型就绪检测 + local_ocr_recognize IPC + 降级契约(recognizeLocal 待模型环境联调) visionWorker: 本地OCR优先分支(可用时返回文本草稿,失败静默降级云端VLM零回归) 集成文档: 模型获取/推理联调清单/公式引擎/版面/VLM分类/区域监测安全评审路径
审查修复: SmartSampler 字段方法同名冲突(高)/ 漏捕检测定时器卸载清理(中)/ vadMarker 与 UnifiedTimeline 回 300 行内 / 形态3 单字灌水留给幻觉过滤 / 单字修正允许入库 审查报告: docs/knowledge/solutions/2026-08-classroom-recognition-review.md(六维复查+发现修复记录+遗留观察+门禁复核) 计划状态: P0/P1 全部完成、P2 按交付口径完成、实施偏差记录
ocrPipeline: DB二值化0.3/2x2膨胀/8邻域连通域/AABB框+外扩补偿/box score 0.5/CTC greedy(12例单测) ocrService: 模型自动下载(ModelScope官方源+进度广播+原子改名)+ 会话懒加载 + nativeImage解码 + 识别管线;recognize/download/status 三IPC visionWorker 本地优先分支启用(模型就绪时离线可用,失败降级云端VLM) 联调验证:熵减学习助手(0.993)/本地OCR测试2026(0.995);关键决策:ppocrv5_dict专用字典(18385通道)/det全分辨率输出/AABB简化minAreaRect
Bumps [redis](https://github.com/redis/redis-py) from 8.0.1 to 8.1.0. - [Release notes](https://github.com/redis/redis-py/releases) - [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES) - [Commits](redis/redis-py@v8.0.1...v8.1.0) --- updated-dependencies: - dependency-name: redis dependency-version: 8.1.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot
Bot
force-pushed
the
dependabot/pip/server/ai-gateway/redis-gte-8.1.0
branch
from
August 16, 2026 14:08
eca197c to
dbec51d
Compare
Author
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
dependabot
Bot
deleted the
dependabot/pip/server/ai-gateway/redis-gte-8.1.0
branch
August 21, 2026 03:19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps redis from 8.0.1 to 8.1.0.
Release notes
Sourced from redis's releases.
... (truncated)
Commits
e013126Testing with 8.10 GA (#4227)059d1e9Fixed TS.NRANGE commands to correctly apply aggregators (#4225)d486a0aFix FIELDNAME alias dropping first character of un-prefixed fields (#4224)fb93104feat: add client-side HIMPORT fieldset support for standalone and cluster cli...9197609Fix lat/lon swap in search querystring geo() helper (#4223)14714a0fix: Fixed double decoding issue with unquote() (#4222)227280aUpdate lib version to 8.1.088d16d0Decode ACL LOG string values on the default RESP3 legacy callback (#4201)599fd75feat: add FT.ALIASLIST support (#4198)71e275etest: add VectorField RERANK serialization tests for sync and async search (#...