Files
cutThenThink/docs/settings.md
congsh c4a77f8aa4 feat: 实现CutThenThink P0阶段核心功能
项目初始化
- 创建完整项目结构(src/, data/, docs/, examples/, tests/)
- 配置requirements.txt依赖
- 创建.gitignore

P0基础框架
- 数据库模型:Record模型,6种分类类型
- 配置管理:YAML配置,支持AI/OCR/云存储/UI配置
- OCR模块:PaddleOCR本地识别,支持云端扩展
- AI模块:支持OpenAI/Claude/通义/Ollama,6种分类
- 存储模块:完整CRUD,搜索,统计,导入导出
- 主窗口框架:侧边栏导航,米白配色方案
- 图片处理:截图/剪贴板/文件选择/图片预览
- 处理流程整合:OCR→AI→存储串联,Markdown展示,剪贴板复制
- 分类浏览:卡片网格展示,分类筛选,搜索,详情查看

技术栈
- PyQt6 + SQLAlchemy + PaddleOCR + OpenAI/Claude SDK
- 共47个Python文件,4000+行代码

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:21:31 +08:00

293 lines
7.0 KiB
Markdown
Raw Permalink 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.
# 配置管理文档
## 概述
配置管理模块提供了完整的配置管理功能,包括:
- AI 配置API keys, 模型选择, 提供商)
- OCR 配置(本地/云端选择, API keys
- 云存储配置(类型, endpoint, 凭证)
- 界面配置(主题, 快捷键)
- 高级配置(调试、日志等)
## 配置文件位置
默认配置文件路径:`~/.cutthenthink/config.yaml`
## 配置结构
### 1. AI 配置 (ai)
```yaml
ai:
provider: anthropic # AI 提供商: openai, anthropic, azure, custom
api_key: "" # API 密钥
model: claude-3-5-sonnet-20241022 # 模型名称
temperature: 0.7 # 温度参数 (0-2)
max_tokens: 4096 # 最大 token 数
timeout: 60 # 请求超时时间(秒)
base_url: "" # 自定义/Azure 的 base URL
extra_params: {} # 额外参数
```
**可用的 AI 提供商:**
- `openai`: OpenAI (GPT-4, GPT-3.5 等)
- `anthropic`: Anthropic (Claude 系列)
- `azure`: Azure OpenAI
- `custom`: 自定义端点
### 2. OCR 配置 (ocr)
```yaml
ocr:
mode: local # 模式: local(本地) 或 cloud(云端)
api_key: "" # 云端 OCR API key
api_endpoint: "" # 云端 OCR 端点
use_gpu: false # 本地 OCR 是否使用 GPU
lang: ch # 语言: ch(中文), en(英文)
timeout: 30 # 请求超时时间(秒)
```
**OCR 模式:**
- `local`: 使用本地 PaddleOCR需要安装 PaddlePaddle
- `cloud`: 使用云端 OCR API需要配置 api_endpoint
### 3. 云存储配置 (cloud_storage)
```yaml
cloud_storage:
type: none # 存储类型: none, s3, oss, cos, minio
endpoint: "" # 存储端点
access_key: "" # 访问密钥
secret_key: "" # 密钥
bucket: "" # 存储桶名称
region: "" # 区域
timeout: 30 # 请求超时时间(秒)
```
**云存储类型:**
- `none`: 不使用云存储
- `s3`: AWS S3 兼容存储
- `oss`: 阿里云 OSS
- `cos`: 腾讯云 COS
- `minio`: MinIO
### 4. 界面配置 (ui)
```yaml
ui:
theme: auto # 主题: light, dark, auto
language: zh_CN # 界面语言
window_width: 1200 # 窗口宽度
window_height: 800 # 窗口高度
hotkeys: # 快捷键
screenshot: Ctrl+Shift+A # 截图
ocr: Ctrl+Shift+O # OCR 识别
quick_capture: Ctrl+Shift+X # 快速捕获
show_hide: Ctrl+Shift+H # 显示/隐藏窗口
show_tray_icon: true # 显示托盘图标
minimize_to_tray: true # 最小化到托盘
auto_start: false # 开机自启
```
### 5. 高级配置 (advanced)
```yaml
advanced:
debug_mode: false # 调试模式
log_level: INFO # 日志级别: DEBUG, INFO, WARNING, ERROR, CRITICAL
log_file: "" # 日志文件路径(空为控制台输出)
max_log_size: 10 # 单个日志文件最大大小MB
backup_count: 5 # 保留的日志文件数量
cache_dir: "" # 缓存目录(空为默认)
temp_dir: "" # 临时文件目录(空为默认)
max_cache_size: 500 # 最大缓存大小MB
```
## 使用方法
### 基本用法
```python
from src.config.settings import get_settings, get_config
# 获取配置对象
settings = get_settings()
# 访问配置
print(f"AI 提供商: {settings.ai.provider}")
print(f"模型名称: {settings.ai.model}")
print(f"界面主题: {settings.ui.theme}")
# 修改配置
settings.ai.api_key = "your-api-key"
settings.ui.theme = "dark"
# 保存配置
config_manager = get_config()
config_manager.save()
```
### 使用配置管理器
```python
from src.config.settings import SettingsManager
from pathlib import Path
# 使用默认路径
manager = SettingsManager()
# 或指定自定义路径
manager = SettingsManager(Path("/path/to/config.yaml"))
# 加载配置
settings = manager.load()
# 保存配置
manager.save()
# 重置为默认配置
manager.reset()
# 获取嵌套值
provider = manager.get('ai.provider')
theme = manager.get('ui.theme', 'auto') # 带默认值
# 设置嵌套值
manager.set('ai.temperature', 1.0)
manager.set('ui.window_width', 1400)
```
### 配置验证
所有配置类都包含 `validate()` 方法,用于验证配置的有效性:
```python
from src.config.settings import AIConfig, AIProvider, ConfigError
config = AIConfig(
provider=AIProvider.OPENAI,
api_key="sk-test",
temperature=1.0
)
try:
config.validate()
print("配置有效")
except ConfigError as e:
print(f"配置错误: {e}")
```
## 配置验证规则
### AI 配置验证
- API key 不能为空provider 不是 custom 时)
- temperature 必须在 0-2 之间
- max_tokens 必须大于 0
- timeout 必须大于 0
### OCR 配置验证
- 云端模式需要指定 api_endpoint
### 云存储配置验证
- 非 none 类型需要指定 endpoint
- 需要指定 access_key 和 secret_key
- 需要指定 bucket
### 界面配置验证
- window_width 不能小于 400
- window_height 不能小于 300
### 高级配置验证
- log_level 必须是有效的日志级别
- max_log_size 不能小于 1
- backup_count 不能为负数
## 环境变量支持
可以通过环境变量覆盖配置(未来功能):
```bash
export CUTTHENTHINK_AI_API_KEY="your-api-key"
export CUTTHENTHINK_AI_PROVIDER="openai"
```
## 配置迁移
如果配置文件损坏或格式错误,可以:
1. 删除配置文件,程序会自动创建默认配置
2. 或使用 `manager.reset()` 重置为默认配置
```python
from src.config.settings import get_config
manager = get_config()
manager.reset() # 重置为默认配置
```
## 注意事项
1. **安全性**配置文件包含敏感信息API keys请确保文件权限设置正确
2. **备份**:修改配置前建议备份原文件
3. **验证**:修改配置后程序会自动验证,无效配置会抛出 `ConfigError`
4. **版本控制**:配置文件不应提交到版本控制系统(已在 .gitignore 中)
## 示例配置文件
```yaml
# 开发环境配置示例
ai:
provider: anthropic
api_key: "sk-ant-xxx"
model: claude-3-5-sonnet-20241022
temperature: 0.7
max_tokens: 4096
ocr:
mode: local
use_gpu: false
lang: ch
cloud_storage:
type: none
ui:
theme: auto
language: zh_CN
window_width: 1400
window_height: 900
advanced:
debug_mode: true
log_level: DEBUG
```
## API 参考
### 类
- `Settings`: 主配置类
- `SettingsManager`: 配置管理器
- `AIConfig`: AI 配置类
- `OCRConfig`: OCR 配置类
- `CloudStorageConfig`: 云存储配置类
- `UIConfig`: 界面配置类
- `AdvancedConfig`: 高级配置类
### 枚举
- `AIProvider`: AI 提供商枚举
- `OCRMode`: OCR 模式枚举
- `CloudStorageType`: 云存储类型枚举
- `Theme`: 主题枚举
### 异常
- `ConfigError`: 配置错误异常
### 函数
- `get_config()`: 获取全局配置管理器
- `get_settings()`: 获取当前配置对象