OmniGet 环境体检指南:用 doctor 命令检查工具链、Whisper 模型与语音 API 密钥
OmniGet 环境体检指南用 doctor 命令检查工具链、Whisper 模型与语音 API 密钥【免费下载链接】omnigetDownload Udemy and Hotmart courses, YouTube videos, music and books — 1,800 sites, no terminal. Free open-source desktop app for Windows, macOS and Linux, with a built-in course player, PDF/EPUB reader and music library. Powered by yt-dlp. Your files stay on your computer.项目地址: https://gitcode.com/GitHub_Trending/om/omniget导读OmniGet 的 Claude 插件自带一套基于 Bash 脚本的技能体系而doctor命令就是这套体系的体检中心一条命令即可盘点当前机器上 OmniGet 应用、下载工具链、本地 Whisper 模型与云端语音转写密钥的完整状态并针对每一项缺失给出精确的补装命令。本文以 commands/doctor.md 为骨架结合 scripts/doctor.sh 及其底层依赖脚本的源码实现说明如何运行诊断、逐项解读输出、理解工具查找与密钥校验的原理以及如何安全地补齐缺失组件——读完你既能独立完成环境体检也能为 Agent 场景写出只诊断、不擅自安装的检查流程。一、doctor 命令是什么一次输出完整的机器体检报告doctor是 OmniGet Claude 插件中的一个命令定义文件位于 claude-plugin/omniget/commands/doctor.md其职责一句话概括为检查这台机器上有哪些 OmniGet 工具、Whisper 模型和语音 API 密钥并说明如何补上缺失的部分。它解决的问题很具体——OmniGet 的转写与下载技能依赖多条外部工具链下载依赖yt-dlp与ffmpeg/ffprobe本地转写依赖whisper-cliwhisper.cpp或mlx_whisperApple Silicon 加速 一个 ggml 格式的 Whisper 模型云端转写依赖GEMINI_API_KEY或OPENAI_API_KEY高难站点Instagram / X / Bilibili / Threads还可选omniget-cli的原生提取器以及 OmniGet 桌面应用本身的数据目录是否就绪。doctor 把这些分散的状态一次性汇总成表格并给出按平台区分的修复建议。命令定义中还明确了两条使用纪律只诊断除非用户明确同意不要执行任何安装命令指引修复发现缺失时告知用户可用/omniget:setup一步补齐或自行在终端运行keys.sh set添加密钥。这一诊断与修复分离的设计正是 Agent 自动化场景下的安全模式值得在自定义检查脚本中复用。二、运行方式与命令行参数doctor 命令的核心执行语句是bash ${CLAUDE_PLUGIN_ROOT}/scripts/doctor.sh --check-keys其中${CLAUDE_PLUGIN_ROOT}指向插件根目录。作为人工使用直接运行脚本本体即可bash claude-plugin/omniget/scripts/doctor.sh从 scripts/doctor.sh 的源码看脚本接受两个可选参数参数作用--json以 JSON 对象输出每项检查结果便于程序化消费--check-keys在普通表格输出的末尾追加执行keys.sh check对已配置的 API 密钥做真实连通性测试两个参数可以组合使用--json与--check-keys同时传入时--check-keys会被忽略见 doctor.sh不过 JSON 模式下密钥的 live 校验结果不会合并进 JSON 输出需要时可在 JSON 输出后另行调用keys.sh check。三、检查清单逐项解读doctor 的检查项在 doctor.sh 中按固定顺序生成全部汇总进一张TOOL / STATUS / WHERE三列表格检查项状态含义WHERE 字段present/installed/configured 时omniget-cli可选的高阶下载器携带 Instagram / X / Bilibili / Threads 原生提取器工具所在路径yt-dlp核心下载引擎所有站点下载的基础工具所在路径ffmpeg音频提取、重采样、转码工具所在路径ffprobe探测媒体时长等元信息工具所在路径whisper-cli本地 Whisperwhisper.cpp转写引擎工具所在路径mlx_whisperApple Silicon 上的本地转写引擎工具所在路径whisper-model本地转写所需的 ggml 模型文件模型文件完整路径GEMINI_API_KEYGemini 云端转写密钥present/missing(set)或-OPENAI_API_KEYOpenAI 云端转写密钥present/missing(set)或-omniget-appOmniGet 桌面应用数据目录是否存在数据目录路径output-dir媒体与转写结果输出目录始终configured输出目录路径3.1 各项缺失时的补装命令按平台脚本在表格后按当前操作系统给出精确的修复建议见 doctor.sh要点如下macOSOmniGet 应用从项目 Release 页下载.dmg安装后执行xattr -cr /Applications/omniget.app解除隔离属性yt-dlpffmpegbrew install yt-dlp ffmpeg本地 Whisperbrew install whisper-cppwhisper.cpp CLICPU/Metal或uv tool install mlx-whisperApple Silicon 上更快。LinuxOmniGet 应用Release 页的.deb/.rpm/.AppImageyt-dlpffmpegsudo apt install ffmpeg pip install -U yt-dlp或使用发行版自带包本地 Whisper从 whisper.cpp 项目 Release 获取whisper-bin-ubuntu-x64.tar.gz。WindowsOmniGet 应用winget install -e --id tonhowtf.OmniGetyt-dlpffmpegwinget install yt-dlp.yt-dlp Gyan.FFmpeg本地 Whisperwhisper.cpp 的whisper-bin-x64.zip。Whisper 模型跨平台通用bash claude-plugin/omniget/scripts/get-model.sh large-v3-turbo-q5_0这是默认推荐模型约 547 MB下载自ggerganov/whisper.cpp的 Hugging Face 仓库脚本会同时校验 SHA-256 完整性见 scripts/get-model.sh。云端密钥跨平台通用export GEMINI_API_KEY... # 或 OPENAI_API_KEY...或将密钥写入~/.config/ai-keys.env详见第五节。3.2 应用数据目录与输出目录应用数据目录omniget-app即 OmniGet 桌面应用的数据根目录。从 resolve-tools.sh 的og_data_dir()可见其按平台解析macOS 为~/Library/Application Support/wtf.tonho.omnigetLinux 为${XDG_DATA_HOME:-$HOME/.local/share}/wtf.tonho.omnigetWindows 为${APPDATA:-$HOME/AppData/Roaming}/wtf.tonho.omniget并可用环境变量OMNIGET_DATA_DIR覆盖。工具查找的OmniGet 托管副本就位于该目录的bin子目录下。输出目录output-dir媒体与转写产物的默认落盘位置由og_output_dir()解析为${OMNIGET_DIR:-$HOME/Downloads/omniget}见 resolve-tools.sh可用OMNIGET_DIR覆盖。doctor 的output-dir行始终显示configured因为它只是一个默认值解析结果。四、工具查找原理三条优先级路径doctor 之所以能同时识别系统安装的工具与OmniGet 自带的工具是因为底层复用了og_find_tool()的查找逻辑resolve-tools.sh。查找顺序严格固定命中即返回显式覆盖环境变量OMNIGET_TOOL_NAME例如OMNIGET_TOOL_YT_DLP指向的可执行文件来源标记为customOmniGet 托管目录应用数据目录/bin/name来源标记为omniget——这是优先于系统 PATH 的官方副本技能缓存目录~/.cache/omniget-skill/bin来源标记为skill例如setup.sh下载的预编译omniget-cli就落在这里系统 PATHcommand -v来源标记为system。另外whisper-cli有一个兼容回退若未找到whisper-cli但存在 Homebrew 旧配方安装的whisper-cpp也会被识别为系统来源。这套查找顺序在 scripts/resolve-tools.sh 头部注释中明确说明与 OmniGet 主程序find_tool_with_source的解析顺序保持一致意味着 doctor 报告与桌面应用实际使用的工具是一致的。Whisper 模型的查找同理og_whisper_model()resolve-tools.sh先看OMNIGET_WHISPER_MODEL显式指定再依次扫描 OmniGet 的models/whisper目录与技能缓存models目录按large-v3-turbo优先量化版 q5_0/q8_0→large-v3→medium→small→base→tiny的优先级选择可用模型。doctor 的whisper-model行即报告该函数是否命中。五、密钥检查keys.sh的 set / check 双模式doctor 的--check-keys参数最终会调用 scripts/keys.sh该脚本是密钥管理的唯一入口提供两个子命令5.1keys.sh check——只读校验Agent 可安全运行check模式keys.sh的行为要点通过og_load_keys()从环境变量或密钥文件加载密钥全程不打印密钥值对 OpenAI向https://api.openai.com/v1/models发送带Authorization: Bearer的 GET 请求按 HTTP 状态码归类——200为 working401/403为 BAD KEY被拒绝000为无网络/超时其余为 unexpected response对 Gemini向https://generativelanguage.googleapis.com/v1beta/models?key...发起同样的探测400/401/403均判为 BAD KEY输出结论若任一密钥 working提示可用--backend openai/--backend gemini获得更准确的转写若均未设置则提示仍可使用平台自带字幕或本地 Whisper或运行keys.sh set添加。5.2keys.sh set——交互式写入必须在用户自己的终端执行set模式keys.sh是唯一写密钥的方式且设计上刻意不交给 Agent首先检查标准输入是否为交互式终端-t 0非交互时直接拒绝并提示打开你自己的终端运行keys.sh防止 Claude 代为输入密钥使用read -r -s隐藏输入密钥值通过标准输入管道而非命令行参数传给_upsert_env避免密钥出现在ps进程列表和 shell 历史中keys.sh密钥写入~/.config/ai-keys.env可用OMNIGET_KEYS_FILE覆盖文件权限固定为chmod 600_upsert_env使用awk按NAME前缀精确替换目标变量、保留文件中所有其他行因此不会破坏用户已有的其他 API 密钥——这一点由 tests/test_keys.sh 专门验证测试断言无关密钥REPLICATE_API_KEY、ANTHROPIC_API_KEY被完整保留、重复写入同一变量只保留最新值、文件权限为 600。5.3 为什么没有 OpenRouter一个值得注意的边界keys.sh 明确注释OpenRouter 不被支持——因为它没有 speech-to-text语音转文本端点无法用于转写keys.sh。因此 doctor 的密钥检查只覆盖 OpenAI 与 Gemini 两家。六、JSON 输出模式供程序化消费--json模式下doctor 将上述检查项输出为单行 JSON 对象键为检查项名值为{status: ..., path: ...}doctor.sh。例如{omniget-cli:{status:missing,path:-}, yt-dlp:{status:present,path:/usr/local/bin/yt-dlp}, ffmpeg:{status:present,path:/usr/local/bin/ffmpeg}, whisper-model:{status:missing,path:-}, GEMINI_API_KEY:{status:present,path:(set)}, OPENAI_API_KEY:{status:missing,path:-}, output-dir:{status:configured,path:/home/user/Downloads/omniget}}注意JSON 输出通过管道把行读入子 shell 再逐个转义拼装键值路径中的反斜杠与双引号会被转义doctor.sh因此可作为 Claude 或脚本的机器可读输入。七、安全自动化要点诊断与修复分离doctor 命令文档本身就是一个Agent 如何安全地执行环境检查的范例总结其可复用的要点先查后装doctor.sh --check-keys全程只读不产生副作用任何安装动作setup.sh、keys.sh set、get-model.sh都必须先征得用户同意给出精确修复命令对每个缺失项输出可直接执行的命令而不是模糊的请安装某某一条命令兜底当存在多个缺失时引导用户使用/omniget:setup一键补齐——setup.sh 会检测操作系统与包管理器brew / winget / scoop / choco / apt-get / dnf / pacman / zypper计划并安装缺失的yt-dlp、ffmpeg可选安装whisper-cli与omniget-cli预编译二进制并自动下载默认 Whisper 模型最后以keys.sh check收尾报告密钥状态密钥永不经过 Agent 之手密钥写入必须在用户的交互终端中进行密钥值从 stdin 进入、落盘权限 600、校验时绝不回显。与 doctor 配套的其他命令还包括 commands/fetch.md下载、commands/transcribe.md转写与 commands/research.md其技能说明分别位于 skills/omniget-fetch/SKILL.md 与 skills/omniget-transcribe/SKILL.md。doctor 之所以重要是因为它决定了这些下游技能能否工作——例如 transcribe.sh 的自动后端阶梯平台字幕 → 本地 whisper-cli → mlx_whisper → Gemini → OpenAI中每一级都对应 doctor 的一行检查项。八、常见状态组合与下一步动作体检结果含义建议动作所有工具 present 任一密钥 working全功能可用下载、本地/云端转写均可直接使用/omniget:fetch、/omniget:transcribe工具 present、密钥均 missing可用平台自带字幕或本地 Whisper 转写如需更准转写用户终端运行keys.sh setwhisper-clipresent 但whisper-modelmissing引擎在、模型缺bash claude-plugin/omniget/scripts/get-model.sh large-v3-turbo-q5_0yt-dlp/ffmpegmissing下载与转写都不可用运行/omniget:setup一键补齐omniget-appmissing桌面应用数据目录不存在工具查找回退到系统 PATH 与技能缓存安装 OmniGet 应用或继续用系统工具无论处于哪种状态bash claude-plugin/omniget/scripts/doctor.sh都可以随时重跑作为环境变更后的回归检查其可读表格与--json结构同样适用于在 CI 或 Agent 脚本中做前置条件断言。【免费下载链接】omnigetDownload Udemy and Hotmart courses, YouTube videos, music and books — 1,800 sites, no terminal. Free open-source desktop app for Windows, macOS and Linux, with a built-in course player, PDF/EPUB reader and music library. Powered by yt-dlp. Your files stay on your computer.项目地址: https://gitcode.com/GitHub_Trending/om/omniget创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考