Files
cutThink_lite/src-tauri/src/ai/mod.rs
Claude e2ea309ee6 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>
2026-02-12 18:59:26 +08:00

77 lines
1.8 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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>,
}