feat: CutThenThink v3.0 初始版本

完整实现 Tauri + Vanilla JS 轻量级截图工具

Phase 1 - 项目搭建
- Tauri 2.x 项目初始化
- Vite 前端项目搭建
- 基础 UI 框架(CSS 变量、组件库)
- 构建配置优化

Phase 2 - 核心截图功能
- 全屏/区域/窗口截图
- 截图预览和管理
- 文件命名和缩略图
- 全局快捷键集成

Phase 3 - 上传与存储
- 多图床上传(GitHub/Imgur/自定义)
- 配置管理系统
- SQLite 数据库

Phase 4 - OCR 集成
- 云端 OCR(百度/腾讯云)
- 插件管理系统
- 本地 OCR 插件(Go)
- OCR 结果处理

Phase 5 - AI 分类系统
- Claude/OpenAI API 集成
- Prompt 模板引擎
- 模板管理界面
- 自动分类流程

Phase 6 - 历史记录与管理
- 图库视图(网格/列表)
- 搜索与筛选
- 批量操作
- 导出功能(JSON/CSV/ZIP)

Phase 7 - 打包与发布
- 多平台构建配置
- CI/CD 工作流
- 图标和资源
- 安装包配置

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Claude
2026-02-12 18:58:40 +08:00
commit e2ea309ee6
142 changed files with 38818 additions and 0 deletions

76
src-tauri/src/ai/mod.rs Normal file
View File

@@ -0,0 +1,76 @@
pub mod client;
pub mod prompt;
pub mod classify;
pub mod template;
pub use client::{AiClient, AiProvider, StreamChunk};
pub use prompt::PromptEngine;
pub use classify::Classifier;
pub use template::{Template, TemplateManager, TemplateVariable};
use anyhow::Result;
/// AI 服务错误类型
#[derive(Debug, thiserror::Error)]
pub enum AiError {
#[error("API 错误: {0}")]
ApiError(String),
#[error("网络错误: {0}")]
NetworkError(String),
#[error("认证失败: {0}")]
AuthError(String),
#[error("限流: 请稍后再试")]
RateLimitError,
#[error("配置错误: {0}")]
ConfigError(String),
#[error("模板错误: {0}")]
TemplateError(String),
#[error("其他错误: {0}")]
Other(String),
}
impl From<reqwest::Error> for AiError {
fn from(err: reqwest::Error) -> Self {
if err.is_timeout() {
AiError::NetworkError("请求超时".to_string())
} else if err.is_connect() {
AiError::NetworkError("连接失败".to_string())
} else {
AiError::NetworkError(err.to_string())
}
}
}
/// AI 服务结果
#[derive(Debug, Clone)]
pub struct AiResult {
/// 生成的文本内容
pub content: String,
/// 使用的 Token 数量(估算)
pub tokens_used: Option<usize>,
/// 模型名称
pub model: String,
/// 置信度评分0.0 - 1.0
pub confidence: Option<f64>,
}
/// 分类结果
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct ClassificationResult {
/// 主分类
pub category: String,
/// 子分类
pub subcategory: Option<String>,
/// 标签列表
pub tags: Vec<String>,
/// 置信度评分0.0 - 1.0
pub confidence: f64,
/// AI 提供的推理说明
pub reasoning: Option<String>,
}