Vibe 2.6.7 更新解析:批量摘要文件、FFmpeg 高级选项与启动自动清理的实现

发布时间:2026/9/16 23:07:42
Vibe 2.6.7 更新解析:批量摘要文件、FFmpeg 高级选项与启动自动清理的实现 Vibe 2.6.7 更新解析批量摘要文件、FFmpeg 高级选项与启动自动清理的实现【免费下载链接】vibeTranscribe on your own!项目地址: https://gitcode.com/GitHub_Trending/vib/vibe本文基于 Vibe 仓库的 2.6.7 版 changelogwebsite/changelog/2.6.7.md逐条拆解该版本引入的五项新功能与两项改进批量转写结果保存为.summary.txt摘要文件、退出前确认、FFmpeg 响度归一化与自定义命令、启动时自动清理旧文件、日志默认落盘以及摘要 Tab 与输出路径编号从 1 起计的调整。每条改动都结合仓库源码给出实现位置与调用链帮助你在升级或二次开发时准确理解其真实行为与边界条件。版本概览2.6.7 改了什么2.6.72024-11-14主题为 Save batch summary to.summary.txtfile的官方 changelog 共列出 7 项变更分为 New 与 Improved 两组New新功能批量转写的 LLM 摘要保存为.summary.txt文件退出应用前增加确认提示新增 FFmpeg 选项缓存归一化cached normalization与面向高级用户的自定义 FFmpeg 命令启动时自动清理旧文件保留一天的文件默认启用文件日志便于故障排查。Improved改进为转写文本增加摘要 Tab改善组织方式输出路径重名编号从 1 开始计数保证一致性。下面按条目展开每一条都对应到当前仓库中的具体源码位置。批量摘要.summary.txt文件是如何生成的2.6.7 的头号功能是把批量batch模式下 LLM 生成的摘要直接落盘为独立文件。实现位于批量页的 view model desktop/src/pages/batch/view-model.tsx核心逻辑在转写循环内if (llmSegments) { const summaryPath await invokestring(get_path_dst, { src: file.path, suffix: .summary.txt }) await fs.writeTextFile(summaryPath, getText(llmSegments, srt)) }见 view-model.tsx其工作方式可以从源码结构看拆解为三步LLM 提问批量模式下若用户在偏好中启用了 LLM 配置程序会把该文件转写的完整文本填入preference.llmConfig.prompt模板%s占位符调用llm.ask(question)得到答案并包装成一条覆盖整个音频时长的合成 segment见 view-model.tsx计算目标路径调用 Rust 侧命令get_path_dst以.summary.txt为后缀得到不与已有文件冲突的路径机制见下文输出路径编号一节写文件getText(llmSegments, srt)将摘要按 SRT 字幕格式序列化后通过 Tauri 的fs.writeTextFile写入磁盘。值得注意的两个边界条件摘要文件只在 LLM 启用且提问成功时生成LLM 调用失败只弹出 toast 并记录错误不中断批量流程也不会产生摘要文件摘要文件与主转写文件如.srt、.txt并列生成同样受保存位置设置音频文件旁或指定输出文件夹影响——file.path在循环开头已被改写为最终输出路径。退出确认useConfirmExit的分支逻辑退出应用前增加确认提示对应前端 Hook desktop/src/lib/use-confirm-exit.ts。该 Hook 注册onCloseRequested监听按两个条件分支处理窗口关闭export function useConfirmExit(closeToTray: boolean, shouldConfirm: boolean) { useEffect(() { // ... currentWindow.onCloseRequested(async (event) { if (closeToTray) { event.preventDefault() await currentWindow.hide().catch(...) return } if (shouldConfirm) { event.preventDefault() if (await confirm(m.confirmExit())) { await exit(0) } } else { await exit(0) } }) // ... }, [closeToTray, shouldConfirm]) }从源码结构看这里区分了三类关闭意图closeToTray为真关闭时驻留托盘开启拦截关闭事件并hide()窗口应用为全局听写dictation继续存活。注释明确说明保持窗口可见是更安全的失败模式——未经询问就退出会丢失进行中的转写成果shouldConfirm为真存在可能丢失的转写内容弹出原生confirm对话框用户确认后才exit(0)其余情况直接退出。另外从托盘菜单触发的退出走app.exit通道不经过此监听器因此不会误弹确认框。FFmpeg 高级选项归一化缓存与自定义命令changelog 中的 cached normalization and custom FFmpeg commands for advanced users 在设置页的 Tuning 分区中落地见 desktop/src/pages/settings/sections/tuning.tsxSettingsGroup title{m.ffmpegOptions()} SettingsRow label{m.normalizeLoudness()} description{m.infoNormalizeLoudness()} {/* normalize_loudness 开关 */} ... /SettingsRow SettingsRow descriptionffmpeg -i {input} -ar 16000 -ac 1 -c:a pcm_s16le {custom_command} -hide_banner -y -loglevel error Input value{vm.preference.ffmpegOptions.custom_command ?? } placeholder{vm.preference.ffmpegOptions.normalize_loudness ? -af loudnormI-16:TP-1.5:LRA11 : -af ...} / /SettingsRow /SettingsGroup要点说明normalize_loudness布尔开关控制转写前是否对音频做响度归一化。开启后默认插入-af loudnormI-16:TP-1.5:LRA11EBU R128 风格的响度归一目标集成响度 -16 LUFS、真峰 -1.5 dBTP、响度范围 11 LUchangelog 提到的 cached normalization 即指归一化结果可被缓存避免重复处理同一输入custom_command面向高级用户的自由输入会原样插入固定命令模板ffmpeg -i {input} -ar 16000 -ac 1 -c:a pcm_s16le {custom_command} -hide_banner -y -loglevel error中。固定部分保证输出是 16 kHz、单声道、pcm_s16le 的原始 PCM——这正是转写管线期望的输入格式custom_command则允许用户追加任意滤镜如降噪afftdn、变速atempo等且位置在格式参数之后、输出之前。偏好值通过vm.preference.setFfmpegOptions持久化与其余设置一起存于应用配置中配置键定义见 desktop/src/lib/config-keys.ts。启动自动清理cleaner.rs的三处清理启动时自动清理旧文件保留一天的文件由 Rust 侧模块 desktop/src-tauri/src/cleaner.rs 实现并在应用启动流程 desktop/src-tauri/src/setup.rs 中调用crate::cleaner::clean_old_files().log_error(); crate::cleaner::clean_updater_files().log_error();模块内提供三个清理函数全部遵循glob 匹配 跳过当前实例路径 失败仅记录日志不中断启动的模式函数匹配模式作用clean_old_files(){temp_dir}/vibe_temp*删除其他启动会话遗留的vibe_temp*临时目录保留当前会话目录clean_updater_files(){temp_dir}/vibe*-updater*仅删除目录类型清理升级器残留clean_old_logs(){logs}/log*{.txt}清理旧日志文件跳过当前日志路径实现上有两个值得注意的细节跨平台路径处理对临时目录分别strip_suffix(/)与strip_suffix(\\)兼容 Linux/macOS 与 Windows 的路径分隔符见 cleaner.rs自我保护每个函数先拿到当前进程正在使用的目录/文件路径如get_vibe_temp_folder()、get_log_path()glob 遍历时逐一比对并跳过避免删掉自己正在写入的内容。日志文件命名由常量LOG_FILENAME_PREFIX log、LOG_FILENAME_SUFFIX .txt定义desktop/src-tauri/src/config.rs与clean_old_logs中的 glob 模式一一对应。日志默认落盘与故障排查默认启用文件日志配合上述清理机制形成闭环日志由 desktop/src-tauri/src/logging.rs 中的get_log_path定位写入日志目录下的log*.txt文件当前日志路径还可由命令 desktop/src-tauri/src/cmd/app.rs 直接暴露给前端在文件管理器中打开所在目录。这套组合对排障的实际意义升级失败、转写 sidecar 崩溃等问题发生时日志已经默认写入磁盘而上次运行遗留的旧日志与临时文件又会在下次启动时被clean_old_logs/clean_old_files回收日志目录不会无限膨胀。改进项摘要 Tab 与输出路径编号转写摘要 Tab为转写结果增加摘要 Tab体现在主界面转写工具栏 desktop/src/pages/main/components/transcript-toolbar.tsx根据job?.summary是否存在动态生成 Transcript / Summary 两个 TabsegmentsTab/summaryTab摘要内容以 Markdown 渲染摘要生成失败时会显示summaryFailed错误文案并回退到纯转写视图。导出对话框同样感知摘要的存在transcript-export-dialog.tsx与 desktop/src/lib/transcript-export.ts 中includesSummary(options.content)决定是否把summary一并写入导出产物txt/html/docx/pdf 各格式均在 desktop/src/lib/docx.ts 等处有对应分支。输出路径编号从 1 开始Improved destination path handling to count from 1 对应命令get_path_dst的实现 desktop/src-tauri/src/cmd/files.rs#[tauri::command] pub fn get_path_dst(src: String, suffix: String) - ResultString { // ... 取 src 的文件名主干与父目录 ... let mut dst_path parent.join(format!({}{}, src_name, suffix)); let mut counter 1; while dst_path.exists() { dst_path parent.join(format!({} ({}){}, src_name, counter, suffix)); counter 1; } Ok(dst_path.to_str().context(tostr)?.into()) }行为约定是目标文件名不存在时直接使用name{suffix}一旦重名从name (1){suffix}开始递增探测name (2)、name (3)……直到找到空位。.summary.txt批量摘要、各类转写输出都经由此函数获得最终路径因此编号从 1 起计让第一个副本与直觉一致也与其他按 1 起计的同类工具保持习惯一致。同文件中available_pathfiles.rs采用相同的计数规则保证所有落盘路径行为统一。小结2.6.7 是一版以结果可追溯、过程更可控为主线的更新批量摘要独立成文件让 LLM 结果不依赖界面保存FFmpeg 自定义命令把预处理管线开放给高级用户启动清理与默认文件日志则让应用自身在长期运行下保持整洁且可诊断。上述每项改动均可以在对应源码中直接验证适合作为理解 Vibe 前端 view modeldesktop/src/pages/batch/view-model.tsx、Tauri 命令层desktop/src-tauri/src/cmd/files.rs与 Rust 维护模块desktop/src-tauri/src/cleaner.rs协作方式的切入点。【免费下载链接】vibeTranscribe on your own!项目地址: https://gitcode.com/GitHub_Trending/vib/vibe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询