40k Stars 开源工具 LosslessCut:把 FFmpeg 的能力装进 GUI

剪视频,不用重新编码。 用 Premiere 或剪映剪掉几段素材,等待导出的时间总让人抓狂——几分钟的片段,渲染半小时,画质还损失一代。这叫 generation loss,每次重新编码都会叠加损耗。其实大多数情况下你根本不需要重新编码,只是想掐头去尾、提取一段、拼几个片段而已。 LosslessCut 就是为这个场景生的。它调用捆绑的 FFmpeg,用 stream copy 模式直接复制数据流,不解码不重编,几秒钟处理几 GB 的文件,零质量损失。GitHub 上 40.9k+ Stars,挪威开发者 Mikael Finstad 独立维护,被 Hacker News、Wikipedia、YouTube 大 V 多次推荐。定位介于 Avidemux 和专业 NLE 之间——比前者强大,比后者轻快。 “The swiss army knife of lossless video/audio editing” GitHub 版本永久免费开源,这是项目的核心理念。 关于作者 Mikael Finstad,挪威独立开发者,网站 mifi.no,GitHub @mifi,2k+ followers。全职 freelance,技术栈以 JavaScript 为主:React、React Native、Node.js、Electron。他曾担任 SwimClips.com 的 CTO,2009 年成立了自己的软件公司 Yankee Software,主要以承接开发外包为生。 除了 LosslessCut(2016 年首发,持续维护至今),他还做了不少值得一提的开源项目: Editly(5.3k Stars):和 LosslessCut 定位互补,后者负责无损剪切,前者负责"用代码剪视频"——基于 Node.js + FFmpeg 的声明式视频编辑工具,写一个 JSON5 配置文件就能自动合成带转场、字幕、背景音乐的视频。支持 GL shader 转场效果、Canvas/Fabric.js 自定义层、Ken Burns 效果,也可以直接当 CLI 或 npm 库用。适合批量生成视频或自动化视频制作流程。 ...

June 17, 2026 · 5 min

mpv:一个播放器的极简哲学

大多数播放器先比拼界面颜值,mpv 思路完全相反:原生几乎没有操作界面,但深耕底层播放十余年,画质、格式兼容性、自定义拓展能力全部拉满,是影视爱好者、动漫党、剪辑工作者公认的终极播放器。 一、mpv 发展简史 2000 年 MPlayer 诞生,是早期跨平台万能播放器,但长期迭代后代码臃肿冗余。 2010 年社区分叉出 mplayer2,清理老旧代码,但仍存在架构缺陷。 2012 年开发者 wm4 再次分叉重构,全新项目命名 mpv,核心设计理念只有一句话:播放器只专注解码播放,UI、美化、附加功能全部交给用户自定义拓展。 2013 年 mpv 0.1.0 正式发布,由全球社区长期维护,底层依赖 FFmpeg 解码,Windows / macOS / Linux / Android 配置文件通用。 在播放器圈子里,mpv 的地位如同编辑器里的 Vim:上手有学习成本,调教完成后几乎不会再换别的播放器。 二、mpv 四大核心优势 1. 全格式原生兼容 依托 FFmpeg 内核,AV1、HEVC、杜比视界、HDR10+、MKV、FLV、WebM 等全部直接播放,无需额外安装解码器。 2. 专业级画面渲染 内置高精度色彩管理、HDR 自动色调映射、运动帧插值,同一段视频对比 VLC 和普通播放器,色彩与流畅度肉眼可见。 3. 强大 Lua 脚本生态 社区海量成熟脚本,实现进度预览、自动字幕、弹幕、片段截取、播放记录等功能,可按需自由加装。 4. 轻量化无后台 启动秒开、内存占用极低,无后台驻留进程,无广告,无任何上传行为。 三、为什么不推荐用 Scoop / winget 安装 mpv Scoop 和 winget 安装的 mpv 存在几个实际问题: 路径深且复杂:Scoop 默认安装到 %USERPROFILE%\scoop\apps\mpv\current\,配置文件跟随版本目录,更新后路径变动,自定义配置容易丢失。 便携模式不生效:Scoop 管理的应用走自己的 shim 机制,portable_config 目录识别经常出问题,导致配置不生效。 右键菜单注册麻烦:官方的 mpv-install.bat 对非标准路径支持不好,Scoop 用户经常遇到右键菜单注册失败的情况。 着色器、脚本路径混乱:着色器和脚本依赖 ~~/ 相对路径,Scoop 的 shim 层会导致路径解析出错。 绿色便携安装一步解决上述所有问题,路径固定、配置保留、更新无痛。 ...

June 13, 2026 · 3 min

Voicebox:把 ElevenLabs 和 WisprFlow 装进本地

“一个开源本地语音工作室——声音克隆、全局听写、TTS 生成,数据不离本机。” 目录 它解决了什么问题 作者与团队 目前水平如何 核心功能 引擎怎么选 与竞品对比 优势与不足 Windows 安装 使用技巧与注意事项 接入 Claude Desktop 适合谁用 小结 它解决了什么问题 想在本地跑语音合成,选项不少,但都有明显缺口: ElevenLabs:效果好、声音克隆强,但每个字都在别人服务器上处理,免费额度用完就要订阅 WisprFlow:全局听写体验一流,但 macOS 独占,Windows 用户没得用 Azure TTS / Google TTS:API 成熟,但要联网、要计费、要信任云厂商 Voicebox 的出发点很直接:把这两件事合进一个应用,跑在你自己的机器上,一条数据不上传。 作者与团队 Voicebox 由加拿大开发者 Jamie Pine 独立开发,同时担任 Spacedrive Technology Inc. 的 CEO。 他不是第一次做这种事。之前的代表作 Spacedrive 是一个用 Rust 构建的开源跨平台文件管理器,38k Star,走的是同一套路线:Tauri + Rust 技术栈、本地优先、审美在线。 GitHub 签名三个字概括了他的风格:rust, ai and nice ui。 他每天公开直播写代码,Voicebox 的很多功能都是在直播里边做边聊出来的,社区参与度很高,Issues 和 PR 回复也比较及时。 目前水平如何 Voicebox 在 2025 年初开源,截至 2026 年 6 月已发布 v0.5.0,GitHub Star 28k+,在本地 TTS 工具里属于第一梯队。 ...

June 12, 2026 · 3 min

只改一个文件,README 自动同步——用 GitHub Actions 告别手动维护

维护开源项目或工具清单时,经常会遇到一个问题:数据文件改了,README 忘记同步。时间一长,两边对不上,要么手动逐条复制,要么干脆摆烂。 这篇文章用一个真实场景——书签工具清单——来演示怎么用 GitHub Actions + Python 脚本,实现「只改 bookmarks.yaml,README 自动更新」的工作流。 思路 整个方案分两部分: Python 脚本:读取 bookmarks.yaml,按固定格式生成 README.md GitHub Actions:监听 bookmarks.yaml 的变动,自动触发脚本并提交结果 改动 bookmarks.yaml 之后,不管是本地 push 还是直接在 GitHub 网页上编辑,都会自动触发,不需要手动运行任何命令。 数据文件结构 bookmarks.yaml 的结构很简单,每个分类包含图标、名称和工具列表: - category: 编程工具 icon: 🛠️ items: - name: Zed url: https://zed.dev/ desc: 轻量极速的现代代码编辑器 opensource: true - name: WezTerm url: https://wezfurlong.org/wezterm desc: 高性能跨平台终端模拟器 opensource: true opensource: true 是可选字段,没有这个字段默认视为非开源。 Python 脚本 新建 gen_readme.py,放在仓库根目录: #!/usr/bin/env python3 import yaml HEADER = """# 🛠️ tools > 精选隐私友好、开源优先的实用工具清单。 > A curated list of privacy-friendly, open-source tools I actually use. 🔓 = 开源 / Open Source --- """ FOOTER = """ --- 欢迎提 Issue 或 PR 推荐新工具。 """ def generate_readme(yaml_path="bookmarks.yaml", output_path="README.md"): with open(yaml_path, "r", encoding="utf-8") as f: data = yaml.safe_load(f) lines = [HEADER] for category in data: icon = category.get("icon", "") name = category.get("category", "") items = category.get("items", []) lines.append(f"## {icon} {name}\n") lines.append("| 工具 | 描述 | 开源 |") lines.append("|------|------|------|") for item in items: tool_name = item.get("name", "") url = item.get("url", "") desc = item.get("desc", "") opensource = "🔓" if item.get("opensource") else "" lines.append(f"| [{tool_name}]({url}) | {desc} | {opensource} |") lines.append("") lines.append(FOOTER.strip()) with open(output_path, "w", encoding="utf-8") as f: f.write("\n".join(lines)) print(f"✅ README.md 已生成,共 {len(data)} 个分类") if __name__ == "__main__": generate_readme() 几个关键点: ...

June 8, 2026 · 3 min

Tolaria:为 AI 时代而生的本地笔记软件

Tolaria:为 AI 时代而生的本地笔记软件 “一个真正属于你的第二大脑——数据在本地,版本在 Git,AI 随时可调。” 目录 它解决了什么问题 核心设计理念 功能详解 与主流工具对比 AI 集成方案 适合谁用 如何开始 它解决了什么问题 用了多年笔记软件,很多人都卡在同一个问题上: Notion:界面漂亮、协作强,但数据在服务器上,断网就瘫,免费版有限制 Obsidian:本地存储、插件丰富,但编辑体验原始,上手门槛不低 Evernote / Bear:易用,但格式私有,迁移麻烦,长期订阅费用累积可观 Tolaria 的出发点很简单:把 Obsidian 的数据主权 + Notion 的编辑体验 + AI 原生集成,合三为一。 核心设计理念 🗂 文件优先,不是数据库 每一条笔记都是一个 .md 文件,存在你的硬盘上。没有私有数据库,没有加密格式,任何文本编辑器都能打开。即使 Tolaria 明天停止开发,你的笔记也完好无损。 🔁 Git 就是你的同步和备份 每个笔记库(vault)本身就是一个 Git 仓库。你可以: 把它推送到 GitHub / Gitea 私有仓库免费同步 查看任意一条笔记的完整修改历史 随时回滚到任意历史版本 不需要订阅 Tolaria 的云服务,不需要相信任何第三方。 🤖 AI 不是插件,是基础设施 Tolaria 从设计之初就把 AI 集成作为核心功能,而不是事后加上去的插件。它内置了 MCP(Model Context Protocol)服务器,让 AI 工具可以像操作文件系统一样读写你的笔记。 功能详解 编辑器 功能 说明 块编辑 类 Notion 的斜杠命令,输入 / 插入标题、列表、代码块等 双向链接 [[笔记名]] 语法,自动补全,构建知识网络 拖拽图片 直接拖入图片,自动保存到 vault 目录 键盘优先 大量快捷键,重度用户几乎不需要鼠标 所见即所得 Markdown 实时渲染,不用在源码和预览间切换 笔记组织 Tolaria 用**类型(Type)**作为笔记的分类维度,类似轻量级数据库的"表"概念,但更灵活——类型只是导航标签,不强制校验字段。 ...

June 7, 2026 · 2 min

国内使用 Scoop?把 main bucket 换成 scoop-cn 就够了

在国内用 Scoop,最头疼的不是用法,是网络。官方 bucket 托管在 GitHub,git clone 慢、下载超时、更新失败,三件套缺一不可。 scoop-cn 是什么 scoop-cn 是 GitHub 用户 duzyn 维护的一个专为国内用户设计的 Scoop 镜像库,本文的思路也完全来自这个项目。它做了两件事: 下载地址替换:把所有应用的下载链接替换为 gh-proxy.com 镜像,绕开直连 GitHub 的问题 多库合并:把官方全部十个 bucket(main、extras、versions、nirsoft、sysinternals、php、nerd-fonts、nonportable、java、games)合并进一个库,用一个 bucket 覆盖全部官方软件 库本身每小时自动同步官方内容,基本保持同步。换完之后不需要再单独 scoop bucket add extras 之类,scoop search 直接全覆盖。 本文记录把已有 Scoop 切换到 scoop-cn 的完整步骤。 切换步骤 第一步:删除现有 main bucket scoop bucket rm main 删除 bucket 只是移除软件包的元数据索引,不会卸载任何已安装的程序。 如果上面命令报错,手动删除文件夹: Remove-Item "$env:USERPROFILE\scoop\buckets\main" -Recurse -Force -ErrorAction SilentlyContinue 第二步:添加 scoop-cn 作为 main scoop bucket add main https://gh-proxy.com/https://github.com/duzyn/scoop-cn.git 第三步:更新并验证 scoop update scoop bucket list scoop status main 指向 https://github.com/duzyn/scoop-cn,且输出 Everything is ok!,切换完成。 ...

June 5, 2026 · 1 min

用 Scoop 管理 Windows 软件,从此告别手动安装

用 Scoop 管理 Windows 软件,从此告别手动安装 每次装新电脑,你是不是也要经历这套流程:打开浏览器,搜索软件名,找到官网,下载安装包,下一步下一步完成,然后发现装到 C 盘了…… Scoop 可以终结这一切。 Scoop 是什么 Scoop 是 Windows 上的命令行包管理器,类似 macOS 上的 Homebrew。你只需要一条命令,它就能帮你下载、安装、更新、卸载软件,而且全部装在你指定的目录里,不动注册表,不需要管理员权限。 装软件就是这样: scoop install git 更新所有软件就是这样: scoop update * 安装 Scoop 打开 PowerShell(不需要管理员),执行: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser irm get.scoop.sh | iex 默认会装在 C:\Users\你的用户名\scoop。如果想装到其他盘,在安装前先设置: $env:SCOOP='D:\scoop' [Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User') irm get.scoop.sh | iex 设置一次,之后所有 Scoop 管理的软件都在 D 盘,一劳永逸。 Bucket 是什么 Scoop 把软件分装在不同的"桶"(bucket)里。默认只有 main,收录命令行工具。日常最常用的是 extras,收录了大量 GUI 应用: scoop bucket add extras 其他常用 bucket: Bucket 内容 main 命令行工具,默认已添加 extras GUI 应用,最常用 versions 软件的历史版本 nerd-fonts 编程字体,比如 JetBrains Mono 添加完 extras 之后,你能装的软件范围就覆盖了绝大多数日常需求。 ...

June 1, 2026 · 2 min

Windows 安装包不让选路径?三招装到任意盘

有些 Windows 安装包,打开直接就装了,连个路径选择都没有,默认往 C 盘塞。 下面三种方法,从简单到彻底,总有一个适合你。 以 ABDownloadManager 为例,其他类似的安装包思路完全一样。 方法一:命令行 /D 参数 很多安装包底层用的是 NSIS 打包工具,支持用命令行参数指定安装路径。 在安装包所在文件夹,按住 Shift 右键空白处,选在此处打开 PowerShell 窗口(或终端窗口),然后执行: .\ABDownloadManager_1.8.8_windows_x64.exe /D=D:\ABDownloadManager 注意事项: /D= 后面不要加引号,即使路径有空格也不加 /D=... 必须放在命令的最后 路径必须是绝对路径 如果安装包文件名本身有空格,直接执行会报错: .\Anytype: The term '.\Anytype' is not recognized... 这是因为 PowerShell 会把空格当作参数分隔符,把文件名截断了。解决方法是用引号包住文件名,并在前面加调用运算符 &: & ".\Anytype Setup 0.55.4.exe" /D=D:\anytype & 是 PowerShell 的调用运算符,专门用来执行路径中含空格的程序 引号只包文件名,/D=... 参数放在引号外面,保持原样 如果安装包正常弹出安装向导,安装完成后就会出现在 D 盘指定目录。 这个方法不是百分百有效——部分安装包会忽略 /D 参数,强制装到 C 盘。遇到这种情况,用下面的方法。 方法二:安装后迁移 先默认装完,再把程序整体搬到 D 盘。 步骤: 按默认流程安装完成 确保程序已完全退出(任务管理器确认没有相关进程) 把安装目录整个文件夹剪切到 D 盘目标位置 右键桌面快捷方式 → 属性 → 修改目标路径指向新位置 大部分非系统级程序直接搬就能正常运行,不需要重装。 ...

May 28, 2026 · 1 min

用 Hermes Agent 免费跑 AI:OpenRouter / Gemini / Groq 配置指南

Hermes Agent 是目前我用过最顺手的本地 Agent 之一,支持强大的工具调用和多模型切换。 最近把它装到了 Windows 上,踩了不少坑,整理成这篇教程,方便大家少走弯路。 一、安装 新开一个 PowerShell 窗口,指定安装目录,然后执行安装脚本: $env:HERMES_HOME = "D:\AI\Hermes" iex (irm https://ghproxy.com/https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.ps1) 推荐装到 D 盘,空间大、好管理。安装脚本走 ghproxy 镜像,国内直连不卡。 安装过程会依次下载 Python 3.11、Node.js 22(便携版)、ripgrep、ffmpeg 以及 Hermes 本体,总下载量 500MB~800MB,网速正常的话 10~20 分钟完成。 安装完成后,重开一个 PowerShell 窗口,验证是否成功: hermes --version 二、启动 推荐用 TUI 模式,界面好看很多: hermes --tui 进入后会看到配置向导,按提示走一遍。 三、配置免费模型 免费模型有三个来源可以选,按优先级排: 方案一:OpenRouter 输入 /model 回车 选择 OpenRouter 填入 API Key(去 https://openrouter.ai/keys 获取) 模型名称从下面选一个 模型 适合场景 openrouter/free 自动选最优免费模型,日常首选 qwen/qwen3-coder:free 写代码 deepseek/deepseek-r1:free 推理、逻辑题 注意:OpenRouter 的免费模型变动比较频繁,有些标了 :free 实际用起来会报错或报 403(大陆地区限制)。如果选了跑不起来,直接换方案二。 ...

May 27, 2026 · 1 min

美化你的终端:字体、主题、提示符一次搞定

默认终端能用,但不好看。一个美化过的终端不只是颜值问题——清晰的提示符显示 Git 分支、语法高亮实时报错、历史命令自动补全,都能减少实际操作失误。 本文覆盖 Windows 和 macOS,选你的系统跟着做就行。 一、安装终端 Windows:使用 Windows Terminal Windows 11 已预装 Windows Terminal,在开始菜单搜索 Terminal 即可找到。 Windows 10 若没有,可以在微软商店搜索 Windows Terminal 安装。 后续所有操作都在 Windows Terminal 里进行,不要用旧的 cmd。 macOS:使用自带 Terminal 或安装 iTerm2 系统自带的 Terminal 可以直接用。想要更多功能(分屏、多标签、更好的配色支持),可以装 iTerm2: 👉 https://iterm2.com/ 下载 .zip 解压,把 iTerm2.app 拖进 应用程序 文件夹即可。 二、Windows:升级 PowerShell Windows 自带的 PowerShell 版本较旧(5.x),建议升级到最新版(7.x),速度更快,功能更完整。 在 Windows Terminal 里执行: winget install Microsoft.PowerShell 安装完后,打开 Windows Terminal 设置 → 启动 → 默认配置文件,切换为 PowerShell(不是"Windows PowerShell",注意区分)。 验证版本: $PSVersionTable.PSVersion 显示 7.x 即为新版。 ...

May 27, 2026 · 3 min
本站累计访问 次 · 访客