起因
想找一个能快捷唤出的 AI 查询工具。
用 AI 搜了一圈,找到了一些不错的选择,各有优劣。
AnythingLLM
一款本地部署的 AI 知识库工具,支持多模型接入与文档检索。

其桌面助手 ctrl + \ 唤出,智能检索 @agent 支持得很好,也能拖拽图片、网页进来,挺好用的。
但是Windows 桌面端太重了,每次启动都得大半天,其原生内置了 Electron、Ollama等本地服务相关组件。
[问与答] 发现一个李鬼 v2,把 v2 的主题内容和评论都采集过去,发帖用户和评论用户一换,就变成一个新的活跃论坛了
林纳斯 · 托瓦兹亲自敲定的 Linux 吉祥物“Tux 企鹅”,迎来 30 岁生日
Cherry Studio
相对轻量很多
快捷助手能够自定义智能体进行问答对话,但对话不会归入主历史记录,退出后就没了;
而且快捷助手里对图片、联网检索等能力支持也比较有限。
至少上个月我自个使是这样。
Claude Code 等是觉得不适合作为一个快速问答工具
后来想到用 AutoHotkey
逻辑是这样的
把 DeepSeek、Gemini 这些网站装成 PWA 应用
各大厂商的网页端本身很好支持问答、拖拽文件、网络检索等等(而且不需要自己api key)
需要使用时用 AutoHotkey 直接唤出就可以了
看下效果(ctrl + \):

再次 ctrl + \就可以隐藏窗口(而且绝对轻量,就是多开了个chrome窗口,也不占任务栏,十分清爽)
下边是脚本:
#Requires AutoHotkey v2.0
#SingleInstance Force
global ActiveAI_ID := 0
^\:: {
global ActiveAI_ID
AI_List := [
{Name: "OpenWebUI", Title: "Open WebUI", Cmd: '此处填写 PWA 应用的目标地址'},
{Name: "DeepSeek", Title: "DeepSeek", Cmd: '"C:\Program Files\Google\Chrome\Application\chrome_proxy.exe"...'}
]
DetectHiddenWindows(true)
if (IsSet(ActiveAI_ID) && ActiveAI_ID != 0 && WinExist("ahk_id " . ActiveAI_ID)) {
if DllCall("IsWindowVisible", "Ptr", ActiveAI_ID) {
WinHide("ahk_id " . ActiveAI_ID)
} else {
WinShow("ahk_id " . ActiveAI_ID)
WinActivate("ahk_id " . ActiveAI_ID)
}
return
}
Prompt := "请输入数字选择 AI 应用:`n`n"
for i, item in AI_List {
Prompt .= i . " = " . item.Name
if (i = 1)
Prompt .= " (默认)"
Prompt .= "`n"
}
Prompt .= "`n直接按 Enter 默认选择 1"
Result := InputBox(Prompt, "选择 AI 应用", "w300 h" . (100 + AI_List.Length * 22), "1")
if (Result.Result = "Cancel")
return
Choice := Trim(Result.Value)
if (Choice = "")
Choice := "1"
Choice := Integer(Choice)
if (Choice < 1 || Choice > AI_List.Length) {
MsgBox("无效输入,请输入 1 到 " . AI_List.Length, "错误", "Icon!")
return
}
Selected := AI_List[Choice]
SetTitleMatchMode(2)
Run(Selected.Cmd)
if !WinWait(Selected.Title . " ahk_exe chrome.exe",, 10) {
MsgBox("未找到窗口:" . Selected.Title, "错误", "Icon!")
return
}
ActiveAI_ID := WinGetID(Selected.Title . " ahk_exe chrome.exe")
WinShow("ahk_id " . ActiveAI_ID)
WinActivate("ahk_id " . ActiveAI_ID)
}
当前脚本只维护一个 ActiveAI 窗口,适合“选择一次后反复唤出/隐藏”的使用方式。
1 个帖子 - 1 位参与者