标签

Windows桌面悬浮球AI助手AIAsker:截图、语音与公式全能解析

发布时间:2026-06-13 17:56阅读:1

⚠️ 目前仅支持 Windows 64位系统,覆盖 Windows 7 / 10 / 11。

安装包将自动执行以下流程:

若不想安装,直接运行压缩包内的AIAsker.exe即可,务必注意路径中不要包含中文字符。它不会写入注册表或留下系统痕迹,非常适合放在U盘中随身携带。

安装完毕后,屏幕右下角会浮现一个带有径向渐变特效的蓝色悬浮球,中心显示“AI”字样并伴随呼吸灯闪烁。该控件将常驻最顶层,可随意拖拽至任意位置,不会干扰日常办公。

首次使用需输入大模型 API Key:

右键悬浮球 → “设置…”

在“基础设置”标签页选择模型预设(例如“阿里千问 3.7”),API地址和模型名称会自动填充

输入你的 API Key

(可选)切换到“知识配置”标签页,设定系统提示词或粘贴知识库文本

点击“保存”

阿里云百炼 API Key 可在阿里云百炼注册并免费申请。其他服务商(DeepSeek、智谱、豆包)也类似,填入对应Key即可。

点击悬浮球,会弹出一个圆角白色面板的聊天窗口。设计理念为“最小化干扰”:无标题栏按钮(仅保留关闭图标)、无多余装饰。输入区在底部,支持多行,按 Ctrl + Enter 发送。

这是 AIAsker 最实用的功能。流程如下:

发送后,截图(自动压缩为 JPEG、分辨率 ≤ 1920px)与文字问题一同发送给大模型,视觉模型能理解图片内容并基于上下文回答。

对话支持多轮上下文记忆,可连续追问,AI会关联历史消息。

点击输入框左侧的 🎙️ 麦克风图标

开始录音,再次点击结束。

底层基于阿里云 Qwen3-ASR-Flash-Realtime 实时语音识别引擎,通过 WebSocket 流式传输音频。支持特性:

实测在普通办公或教学场景下,标准普通话识别准确率极高。

AI 回复气泡支持完整的富文本渲染:

右键悬浮球 → “设置…”,打开两个配置页面。

内置模型预设列表:

选定预设后,API地址和模型名自动填充。填入Key即可。注意:非视觉模型无法识别图片(如 deepseek-v4-pro),请选用支持视觉的模型,如 qwen3.7-plus

两者皆可选。留空则使用模型默认行为。

设置对话框有“🔍 诊断”按钮,点击启动10步全链路自动检测:

每步都有 [PASS]/[FAIL]/[WARN] 标记,出问题时能快速定位。

便携版直接删除解压文件夹即可,不留任何系统痕迹。

以下内容面向有 Python 基础的开发者,介绍架构、关键技术与二次开发点。

注意事项:

App 类是全局调度中心,持有 FloatingBall(悬浮球)和 ChatDialog(聊天窗口)两个核心实例。关键交互逻辑:

悬浮球“点击”判定采用位移阈值法:在 mouseReleaseEvent 中,仅当拖拽位移 ≤ 3px 时视为点击,否则视为拖拽移动。这有效防止了拖拽误触对话框。

对话流程采用 QThread 后台线程 + Qt 信号回调的经典模式:

系统提示词与知识库在 _AIThread.run() 中注入:若用户配置了 system_prompt 或 knowledge_base,会在消息列表头部插入一条 role: “system” 消息。

选择 QWebEngineView 而非 QLabel 或 QTextBrowser 的核心原因是 MathJax 需要完整的 JavaScript 运行环境来将 LaTeX 公式渲染为 SVG。

气泡组件 _AIBubble 封装了以下关键机制:

基于阿里云 dashscope SDK 的 OmniRealtimeConversation:

识别结果采用追加模式:on_result 回调将每段确认文本追加到 voice_accumulated,on_interim 回调将中间结果拼接在已确认文本后显示。这样多次说话不会互相覆盖。

_CropOverlay 是一个自定义 QLabel,实现了完整的截图裁剪交互:

只要目标 API 兼容 OpenAI Chat Completions 格式,只需在 ui/settings_dialog.py 的 _MODEL_PRESETS 字典中添加一行:

若需非标准请求头或 payload 结构,修改 core/ai_client.py 中的 chat_stream_sync() 方法。

在 ui/chat_dialog.py 的 _init_ui 方法中,参考相机按钮的模式:

图标类型枚举定义在 ui/icons.py 中,如有需要可扩展 IconType 并实现对应的 draw_xxx_icon() 函数。

ui/floating_ball.py 的 paintEvent() 方法控制悬浮球绘制:阴影椭圆 → 径向渐变主体 → AI 图标文字。修改形状、颜色、呼吸灯速度(_breath_dir)、透明度等均在此处。

当前 MathJax 通过 jsdelivr CDN 加载。内网环境可下载 tex-svg.js 及相关资源放入项目,修改 core/math_page.py 中