Skip to content

Zippland/Snap-Solver

Repository files navigation

Snap-Solver 版本

🔍 一键截屏,自动解题 - 线上考试,从未如此简单

Python Flask AI License

核心特性快速开始新手教程使用流程技术架构可调项常见问题获取帮助

获取Release      进入上手向导

💫 项目简介

Snap-Solver 是一个自部署的 AI 解题工具,专为学生、考生和自学者设计。在电脑上运行它,手机浏览器打开页面,点一下即可截取电脑的整个屏幕、在手机上框选题目,AI 流式给出详细解答;看不懂还可以就这道题继续追问

无论是复杂的数学公式、物理难题、编程问题,还是其他学科的挑战,Snap-Solver 都能提供清晰、准确、有条理的解决方案。自带密钥(BYO-Key),全部数据只在你的电脑和局域网内流转。

📚 新手教程

第一次使用?打开 零基础上手向导:选择你的系统,跟着分步指引复制粘贴命令,约 20 分钟从安装环境走到解出第一道题。

官网:snapsolver.zippland.com

🔧 技术架构

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
Loading

✨ 核心特性

📱 手机遥控电脑截屏

  • 一键截屏:手机上点一下,电脑自动截取整个屏幕回传
  • 手机框选:在手机上缩放、框选题目区域,只发关键部分
  • 局域网直连:一处部署,同网多设备访问

🧠 六家模型自由切换

  • Claude 家族(Anthropic):Opus / Sonnet / Haiku
  • GPT 家族(OpenAI):GPT-5.6 系列
  • Gemini 家族(Google):3.x / 2.5 系列
  • 通义家族(阿里):Qwen3-VL / QVQ,国内直连
  • 豆包(字节)与 Kimi(Moonshot):国内直连

💬 流式解答 + 同题追问

  • 思考过程可见:推理模型的思考流实时展开,结束自动收起
  • 同题追问:答案没看懂?围绕本题继续问,换题即清空
  • Markdown 渲染:公式、代码块(带一键复制)清晰呈现

🔒 隐私与网络

  • 自带密钥:API Key 只存在你电脑的 .snapsolver/ 目录,不经过任何第三方
  • 代理与中转:支持 HTTP 代理和各厂商中转 API 地址
  • 多语言响应:可定制 AI 回复语言

💻 全平台兼容

  • 桌面支持:Windows、MacOS、Linux
  • 移动访问:手机、平板通过浏览器直接使用,无需装 App

⚙️ 高度可定制

  • 推理档位:Fast / High / Max 三档全局统一,按模型能力自动适配
  • 自定义提示词:内置模式之外可自建学科专属提示词

🚀 快速开始

📋 前置要求

  • 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

📖 使用流程

  1. 电脑上把题目显示在屏幕上,手机上点 截屏解题
  2. 电脑整屏截图回传手机,双指缩放、框选题目区域
  3. 发送后 AI 流式解答:思考过程以淡色小字实时展开,结束自动收起,正文 Markdown 渲染
  4. 看不懂?在答案底部的输入框就这道题继续追问(上下文=题图+已有问答,换题或返回即清空)
  5. 需要换个角度:重解 / 换模型重解 / 复制 一键可达

🎯 使用场景示例

  • 课后习题:截取教材或作业中的难题,获取步骤详解
  • 编程调试:截取代码错误信息,获取修复建议
  • 考试复习:分析错题并理解解题思路
  • 文献研究:截取复杂论文段落,获取简化解释

🧩 组件详情

  • 前端:原生 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 协议。

About

AI笔试测评工具,专为学生、考生和自学者设计。

Resources

License

Stars

297 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors