ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

summarize 手动端到端测试清单:验证 Auto 模型自动选择与 Presets 的实战指南

summarize 手动端到端测试清单:验证 Auto 模型自动选择与 Presets 的实战指南 summarize 手动端到端测试清单验证 Auto 模型自动选择与 Presets 的实战指南【免费下载链接】summarizePoint at any URL/YouTube/Podcast or file. Get the gist. CLI and Chrome Extension.项目地址: https://gitcode.com/GitHub_Trending/summarize/summarize本篇技术指南以summarize项目CLI Chrome 扩展的内容摘要工具的 docs/manual-tests.md 为骨架系统讲解在发版验证release validation阶段如何通过一组手工命令对Auto 模型自动选择auto selection与配置预设presets做端到端 sanity-check。读完本文你将掌握覆盖网站、Podcast、图片、视频、浏览器本地转录与 Z.AI 六类输入场景的完整手动测试流程并了解--verbose输出、status命令以及底层模型选择源码是如何支撑这些测试结论的。为什么需要一份手动测试清单summarize的核心体验是Point at any URL/YouTube/Podcast or file. Get the gist.其中最关键、也最容易出问题的环节是默认情况下的模型自动选择不传--model时CLI 需要根据输入类型网站/视频/音频/图片、已配置的 API Key、预估 token 数与成本从候选模型中挑出一个可用模型并在 spinner 中展示。一旦这个决策链路出错用户看到的可能不是摘要而是静默回退或报错。因此 docs/manual-tests.md 的目标非常明确用一条条可复现的命令对 auto 选择 presets 做端到端 sanity-check并作为发版前的验收依据。下面按原文档的章节结构逐项展开。测试前置准备可选的环境变量手动测试不需要一次性配齐所有 Key按测试项按需配置即可export OPENAI_API_KEYsk-... # 可选 export ASSEMBLYAI_API_KEY... # 可选转写 export GEMINI_API_KEY... # 可选 export ANTHROPIC_API_KEY... # 可选 export XAI_API_KEY... # 可选 export OPENROUTER_API_KEY... # 可选 export Z_AI_API_KEY... # 可选从源码看这些环境变量正是buildAutoModelAttemptssrc/model-auto.ts构建候选列表时的关键输入它会调用envHasKey(input.env, required)逐个检查候选模型所需的 Key 是否存在没有 Key 的候选会被直接跳过对应源码中hasKey分支这正是Missing-key skip测试能成立的根本原因。用 --verbose 观察模型尝试过程原文档给出的第一个实用 Tip 是Tip: use--verboseto see model attempts the chosen model.--verbose会在 stderr 上打印详细进度。从 src/model-auto.ts 可以看到每个 auto 候选都会生成一条 debug 记录包含model...、transport...native/openrouter/cli、order...尝试顺序、keyyes/no(...)所需 Key 是否就绪、promptTok...、maxIn...模型最大输入上限、estUsd...预估成本。因此--verbose的输出就是你调试 auto 选择决策的黑匣子能直接回答为什么选了 A 而不是 B。用 status 命令快速体检正式跑测试前可以用内置诊断命令确认当前生效的模型选择与各 Provider 的就绪状态见 docs/config.md 的 Status 一节summarize status summarize status --verbose summarize status --probe summarize status --jsonAPI Provider 有生效 Key 时显示为configured启用的 CLI Provider 可解析到可执行文件时显示为available--probe会探测受支持的 OpenAI 兼容/本地模型列表端点不做推理成功的 Provider 标记为usable该命令永远不会打印密钥值缺失的 Provider 直接省略。Auto默认模式测试1. 网站摘要应选中模型并在 spinner 中展示summarize --max-output-tokens 200 https://example.com预期auto 规则根据输入类型website匹配候选模型挑出 Key 就绪的一个在 spinner 中显示模型名最终输出不超过 200 token 的摘要。模型选择的解析链路可以追溯到 src/application/model-selection.ts 的resolveModelSelection它按CLI--model→ 环境变量SUMMARIZE_MODEL→ 配置文件model→ 内置默认auto的优先级解析请求模型defaultModelResolution中依次检查 env、config 的id/name/mode。默认auto模式下最终候选列表由 src/model-auto.ts 的buildAutoModelAttempts构建规则来源是 src/model-auto-rules.tsresolveRuleCandidates并经过 Key 检查、token 上限检查promptTokens maxIn时跳过与成本估算后才形成有序的尝试列表。2. No-model-needed 快捷路径不调模型直接输出提取文本summarize --max-output-tokens 99999 https://example.com预期当提取到的正文文本本来就比请求的输出上限短时工具直接打印提取文本不打印 no model needed 之类的 footer原文档原话no footer “no model needed”。这一行为在 src/engine/web-summary.ts 中实现canBypassShortContent判断成立时直接返回{ kind: use-extracted, footerLabel: short content }跳过 LLM 调用。对应的自动化测试在 tests/cli.auto.no-model-needed.test.ts它断言streamSimple/completeSimple/getModel均未被调用且 stderr 不出现model:字样tests/cli.auto.no-model-footer.test.ts 则断言 stderr 不匹配\bvia\b。手动测试时对照这两个断言即可。注意--max-output-tokens 99999只是把输出上限调得极大从而让提取文本已足够短的条件更容易成立在真实使用中--length short等参数同样会触发此路径。3. Missing-key skip只配一个 Key其它 Provider 应被跳过# 只设置 OPENAI_API_KEY export OPENAI_API_KEYsk-... unset GEMINI_API_KEY ANTHROPIC_API_KEY XAI_API_KEY # 确保其它 Key 不存在 summarize --max-output-tokens 200 https://example.com预期只尝试 OpenAI 候选不会尝试 Gemini/Anthropic/XAI摘要仍然成功。这正是前面提到的buildAutoModelAttempts中envHasKey(input.env, required)过滤逻辑的体现src/model-auto.ts候选模型若缺少所需环境变量直接不进入尝试列表而不是失败后再回退。4. AssemblyAI 转录路径transcriptionProvider 应报告 assemblyai# 只设置 ASSEMBLYAI_API_KEY export ASSEMBLYAI_API_KEY... summarize 某个播客 URL --max-output-tokens 200 # 或走 yt-dlp 流程 summarize --youtube yt-dlp YouTube URL预期transcriptionProvider字段报告为assemblyai。该字段贯穿整条运行链路提取会话产出后由 src/run/flows/url/flow.ts 透传最终出现在 finish-line 指标src/run/finish-line-lengths.ts格式如/provider后缀与 CLI 输出src/run/cli-summarize-output.ts中因此你可以直接观察输出中的 provider 标注来验证。5. Podcast URLWhisper 路径应依次出现下载与转录进度summarize https://podcasts.apple.com/us/podcast/2424-jelly-roll/id360084272?i1000740717432 --metrics detailed预期先显示 Downloading audio …随后显示 Transcribing …并且在已知时长时展示时长信息。--metrics detailed会在 stderr 追加一行紧凑的 breakdown见 docs/commands/summarize.md 的--metrics说明方便核对转写耗时与 provider。Presets配置预设测试定义预设先在~/.summarize/config.json中定义预设完整 schema 见 docs/config.md 的 Presets 一节{ models: { small: { id: openai/gpt-5-mini }, or-free: { rules: [ { candidates: [ openrouter/google/gemini-2.0-flash-exp:free, openrouter/meta-llama/llama-3.3-70b-instruct:free ] } ] } } }要点auto是保留字不能定义为预设free是内置预设OpenRouter:free候选快照见 src/application/model-catalog.ts 的BUILTIN_MODELS.free可被配置覆盖或用summarize refresh-free重新生成预设既可以是固定id也可以带rules此时mode: auto可省略。用预设跑一轮summarize --model small --max-output-tokens 200 https://example.com预期按预设解析出模型 id 并完成摘要。预设解析逻辑在 src/application/model-selection.tsresolveModelSelection会先建立modelMap内置模型 配置models合并、key 统一小写--model preset命中namedModelMatch后按预设内容构造RequestedModel。若预设里包含 OpenRouter 模型务必确保OPENROUTER_API_KEY已设置原文档明确提醒否则候选会被 Key 检查过滤掉。图片输入测试summarize ./path/to/image.png --max-output-tokens 200预期默认使用具备视觉能力的 API 模型auto 规则会对requiresVideoUnderstanding之类的输入类型做适配对图片输入不具视觉能力的候选会被过滤。如果想顺便验证 CLI Provider 路径可在配置中启用cli.enabled见 docs/config.md 的 CLI config 一节cli.enabled是 CLI Provider 的 allowlist再跑一次观察模型选择是否切换到对应 CLI。视频输入测试YouTube 摘要summarize https://www.youtube.com/watch?vdQw4w9WgXcQ --max-output-tokens 200预期走 YouTube 提取/转录流程输出短摘要。带时间戳的 YouTube 摘要summarize --timestamps --youtube web --length short https://www.youtube.com/watch?vI845O57ZSy4预期输出中应出现[mm:ss]形式的时间戳。--timestamps在转录可用时嵌入时间戳docs/commands/summarize.md 的--timestamps说明--youtube web限定走网页提取模式而非 yt-dlp/APIFY。本地视频理解summarize ./path/to/video.mp4 --max-output-tokens 200预期若配置了支持视频理解的模型如 Gemini 视频能力模型工具尝试视频理解否则按输入类型回退到转录或报错——原文档明确写了otherwise expect an error or transcript-only behavior depending on input手动测试时要能接受这两种合理分支之一。注意 auto 模式对视频输入会过滤掉不支持视频理解的候选src/model-auto.ts 的shouldSkipForVideo判断。浏览器本地转录测试Chrome 扩展这是唯一涉及扩展侧的手动测试项验证浏览器内本地转录链路无需任何云转录 Key用真实媒体解码MediaBunny 本地 Whisper 推理同时覆盖嵌入音频与直接音频两种来源。先构建扩展然后运行SUMMARIZE_LIVE_BROWSER_MEDIA1 pnpm -C apps/chrome-extension exec playwright test tests/browser-media-local.live.spec.ts --projectchromium对应测试文件 apps/chrome-extension/tests/browser-media-local.live.spec.ts 的实现要点const LIVE process.env.SUMMARIZE_LIVE_BROWSER_MEDIA 1控制开关未设置时测试直接test.skip音频 fixture 为公开的 JFK 演讲 wavjfk.wav只有导航文档是 fixture媒体字节与模型输出是真实下载/推理的原文档强调这一点用例在 Chromium 项目下运行test.skip(... ! chromium, Local browser Whisper is Chrome-only.)超时设为 10 分钟分别对embedded页面内audio标签与direct直接音频 URL两种来源触发panel:summarize轮询后台chrome.storage.session中的summarize:extension-logs期望出现extract:browser-media:transcript事件且decoder: mediabunny-webcodecs、mediaInput: url-range面板模型应显示为Browser即本地浏览器转录摘要文本需匹配/fellow Americans/i与/country/i私有媒体 URL 依然会被拒绝终端提取错误会立即失败测试不等成功超时这是两条重要的安全性/健壮性断言。Z.AI 模型测试summarize --model zai/glm-4.7 --max-output-tokens 200 https://example.com预期走 Z.AI 原生通道完成摘要。Z.AI 是内置 Provider 之一配置类型见 src/config/types.ts 的zai?: ZaiConfig默认端点https://api.z.ai/api/paas/v4见 src/application/environment-state.ts对应环境变量为Z_AI_API_KEYlegacy 简写见 src/config/legacy-api-keys.ts可通过Z_AI_BASE_URL/ZAI_BASE_URL覆盖端点。测试通过标准速查测试项关键命令通过标志网站摘要summarize --max-output-tokens 200 https://example.comspinner 显示模型输出 ≤200 tokenNo-model-neededsummarize --max-output-tokens 99999 https://example.com直接打印提取文本无 no model footerMissing-key skip仅设OPENAI_API_KEY后跑网站摘要不尝试 Gemini/Anthropic/XAI仍成功AssemblyAI 转录仅设ASSEMBLYAI_API_KEY跑播客/yt-dlptranscriptionProviderassemblyaiPodcast Whisper--metrics detailed跑 Apple Podcast URL依次出现 Downloading audio…/Transcribing…Preset--model preset按预设模型出摘要OpenRouter 预设需 Key图片summarize ./img.png视觉模型出摘要或 CLI 启用后走 CLIYouTube 时间戳--timestamps --youtube web --length short输出含[mm:ss]本地视频summarize ./video.mp4视频理解成功或按预期回退转录/报错浏览器本地转录SUMMARIZE_LIVE_BROWSER_MEDIA1 pnpm -C apps/chrome-extension exec playwright test ...两个来源均出本地转录模型为BrowserZ.AI--model zai/glm-4.7摘要成功延伸阅读docs/config.md配置文件的完整 schema、优先级--modelSUMMARIZE_MODELmodel 默认auto与 Presets 定义细节docs/commands/summarize.mdsummarize全部命令行参数--youtube、--transcriber、--timestamps、--metrics、--max-output-tokens等src/model-auto.tsauto 候选构建与 Key/token/成本过滤的底层实现src/application/model-selection.ts模型请求的解析优先级与预设/内置模型映射src/engine/web-summary.tsshort content/no model 快捷路径的实现apps/chrome-extension/tests/browser-media-local.live.spec.ts浏览器本地转录的 Playwright 端到端用例。将上面速查表中的命令逐条跑通并配合--verbose观察模型尝试与summarize status --probe体检即可在发版前对 auto 选择与 presets 建立完整信心。【免费下载链接】summarizePoint at any URL/YouTube/Podcast or file. Get the gist. CLI and Chrome Extension.项目地址: https://gitcode.com/GitHub_Trending/summarize/summarize创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表