QQ扫一扫联系
当你在一堆模型名里挑花眼的时候,有没有想过:哪个能看图?哪个能调用工具?现在它们自己会说了。
如果你是 FocusAny 老用户,一定遇到过这种场景:打开模型设置,面对 "gpt-4o"、"claude-3-opus"、"gemini-2.0-flash" 这些名字,隐约觉得各有专长,但具体哪个能处理图片、哪个能调用函数,只能凭印象猜。信息差不该成为效率的障碍——v2.2.0 把这件事摊开了。

这次更新最大的变化不在表面,而是信息本身变得更透明了。我们给 117 个预置模型加了能力标注——「视觉识别」和「工具调用」。OpenAI o 系、GPT-4o、Claude、Gemini、DeepSeek、智谱 GLM-4/4V、通义千问、Yi,全部系列都有。
现在打开模型选择器,每个模型旁边会多出两个小图标:👁️ 表示能看图,🔧 表示能调工具。加自定义模型的时候也能手动勾选它的能力标签。
后端 llmListModels 接口现在会返回 modelCaps 字段,插件端同样能通过 $mapi.llmListModels() 拿到每个模型的能力标识。从 types.ts 的类型定义,到 IPC 透传,再到前端展示,整条链路是通的。

如果你的插件需要携带大尺寸资源文件(模型文件、字体包、数据集),以前要么打进包里让安装体积膨胀,要么自己在插件里手写下载逻辑,还要操心断点续传。
v2.2.0 新增了一套 Asset API。focusany.asset.download(url, pluginFilePath) 先把文件下载到临时目录,下载完成再整体移动到插件目录。中途中断的话,不会留下半成品。配套的 asset.exists、asset.delete 和带实时进度的 asset.progress,补完了资源的整个生命周期。
实现上,主进程 asset 模块用 fetch + ReadableStream 流式写入,AbortController 处理超时,进度数据按 pluginName::pluginFilePath 为键存在内存 Map 里,查询是毫秒级的。别在搬文件这种事上浪费时间。

npx focusany 多了两个实用命令:
npx focusany cli <command> 会自动找到本机安装的 FocusAny CLI 二进制,然后把参数透传过去。查找优先级是 --cli 参数 > FOCUSANY_CLI 环境变量 > PATH > ~/.focusany/bin > 项目 dist-cli/。npx focusany cli plugin list、npx focusany cli doctor 都能这样用。
npx focusany status 一键诊断本地环境:桌面应用有没有装、CLI 二进制在哪、数据目录在哪里、HTTP 服务是否在跑。任何一项检查不通过,退出码非 0,方便接进 CI。
跨平台的查找逻辑封装在 sdk/bin/find-focusany.ts 里——Windows 上找 .exe,macOS 上搜 /Applications 和 homebrew 路径,Linux 下查 AppImage。测试在 sdk/tests/test-find-focusany.js,npm test 就能跑。

回顾一下 FocusAny 近几个版本积累的东西:
install / uninstall / run / info,还能列出 MCP 工具并调用。终端控插件,一条命令搞定。assertNoViewErrors / assertNoMainErrors / assertNoExternalRequests),辅助插件自动化测试console-message 采集与 /api/debug 接口llmChat / llmChatJson 消息格式支持 image_url 图片和 tools / toolChoice 参数,返回结果支持解析 toolCalls历史版本 - v2.1.0 — CLI 全面升级,支持插件管理与 MCP 调用;macOS 权限引导策略优化;快捷面板防误触 - v2.0.0 — 工作流引擎上线,自动化编排、定时任务、事件触发
更新到这,可以动手试试了。你最想先用哪个新能力? 在评论区告诉我。或者直接打开 FocusAny,翻翻你的模型列表,看看哪些能"看"图、哪些能"调"工具。