🔍 一键截屏,自动解题 - 线上考试,从未如此简单
核心特性 • 快速开始 • 新手教程 • 使用流程 • 技术架构 • 可调项 • 常见问题 • 获取帮助
Snap-Solver 是一个自部署的 AI 解题工具,专为学生、考生和自学者设计。在电脑上运行它,手机浏览器打开页面,点一下即可截取电脑的整个屏幕、在手机上框选题目,AI 流式给出详细解答;看不懂还可以就这道题继续追问。
无论是复杂的数学公式、物理难题、编程问题,还是其他学科的挑战,Snap-Solver 都能提供清晰、准确、有条理的解决方案。自带密钥(BYO-Key),全部数据只在你的电脑和局域网内流转。
第一次使用?打开 零基础上手向导:选择你的系统,跟着分步指引复制粘贴命令,约 20 分钟从安装环境走到解出第一道题。
graph TD
A[手机浏览器] --> |Socket.IO| B[Flask 服务·电脑端]
B --> C[整屏截图]
C --> A
A --> |框选题目 + 追问历史| D[AI 分析]
D --> |模型选择| H1[Anthropic Claude]
D --> |模型选择| H2[OpenAI GPT]
D --> |模型选择| H3[Google Gemini]
D --> |模型选择| H4[阿里通义 Qwen]
D --> |模型选择| H5[字节豆包]
D --> |模型选择| H6[Moonshot Kimi]
D --> |流式思考 + 解答| A
|
|
|
|
|
|
- Python 3.x
- 至少以下一个 API Key(在网页设置里填写,只存本机):
- Anthropic API Key (推荐✅)
- OpenAI API Key
- Google API Key
- 阿里通义 API Key(国内直连✅)
- 字节豆包 API Key(国内直连)
- Moonshot Kimi API Key(国内直连)
# 安装依赖(首次)
pip install -r requirements.txt
# 启动应用
python app.py- 手机访问(推荐):手机与电脑连同一 Wi-Fi,浏览器打开
http://[电脑IP]:5000(启动时终端会打印这个地址;5000 被占用时自动改用 5001) - 本机访问:浏览器打开 http://localhost:5000
- 电脑上把题目显示在屏幕上,手机上点 截屏解题
- 电脑整屏截图回传手机,双指缩放、框选题目区域
- 发送后 AI 流式解答:思考过程以淡色小字实时展开,结束自动收起,正文 Markdown 渲染
- 看不懂?在答案底部的输入框就这道题继续追问(上下文=题图+已有问答,换题或返回即清空)
- 需要换个角度:重解 / 换模型重解 / 复制 一键可达
- 课后习题:截取教材或作业中的难题,获取步骤详解
- 编程调试:截取代码错误信息,获取修复建议
- 考试复习:分析错题并理解解题思路
- 文献研究:截取复杂论文段落,获取简化解释
- 前端:原生 HTML/CSS/JS,移动优先,明暗双主题(可跟随系统)
- 后端:Flask + Socket.IO 实时通信,无状态设计(追问历史由前端持有)
- AI 接口:六家厂商统一接入,推理档位与思考流跨厂商归一
- 本地数据:密钥、代理配置、自建提示词等运行期文件统一存放在项目根目录
.snapsolver/(已被 git 忽略)
- 推理档位:Fast / High / Max 全局三档,切换模型时按其能力自动钳制
- 提示词模式:内置「标准解题」等模式,也可自建学科专属提示词
- 回复语言:定制 AI 的回答语言
- HTTP 代理:为国际 API 配置本地代理(如 Clash 的 127.0.0.1:7890)
- 中转 API 地址:各厂商可分别填写中转地址,填了即走中转
如何获得最佳识别效果?
框选时包含完整题目和必要上下文(图、选项、已知条件)。所有内置模型都直接识图,无需 OCR;数学公式较多时建议把推理档位调到 High 或 Max。
无法连接到服务怎么办?
1. 检查防火墙是否放行 5000 端口(被占用时程序会自动改用 5001,以启动时终端打印的地址为准)
2. 确认手机与电脑在同一局域网内
3. 尝试重启应用程序
4. 查看终端日志获取错误信息
API调用失败的原因?
1. API密钥可能无效或余额不足
2. 网络连接问题,特别是国际API
3. 代理设置不正确
4. API服务可能临时不可用
如何优化AI回答质量?
1. 自建提示词模式,添加特定学科的指导
2. 根据问题复杂度选择合适的模型
3. 复杂题目把推理档位调到 High / Max,或对答案直接追问
4. 确保框选的题目包含完整信息
- 问题报告:在GitHub仓库提交Issue
- 功能建议:欢迎通过Issue提供改进建议
本项目采用 Apache 2.0 协议。