poc/project/llmclipboard/README.md
2025-03-02 14:28:16 +08:00

345 lines
10 KiB
Markdown
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.

# LLMClipboard
智能剪贴板增强工具,专注于提供高质量的文本和图片捕获与处理体验。支持智能标题提取、自动分类、关键词标签、大模型集成等功能,让您的笔记管理更轻松高效。
## ✨ 核心特性
### 📋 智能文本处理
- 智能标题提取,自动从内容中识别最合适的标题
- 多格式支持HTML、Markdown、纯文本等
- 保持原文格式,包括段落、换行、列表等
- 智能清理,去除冗余内容和空白行
- **新增**: 大模型集成支持OpenAI和Ollama提供更智能的内容理解
### 🖼️ 图片处理
- **新增**: 支持剪贴板图片保存
- **新增**: 自动提取HTML内容中的图片
- **新增**: 支持网络图片和base64编码图片
- **新增**: 自动关联图片与文本内容
### 🏷️ 自动分类和标签
- 基于内容智能分类,自动归档到合适目录
- 使用NLP技术提取关键词作为标签
- **新增**: 可视化分类管理器,轻松编辑分类规则
- **新增**: 大模型辅助分类和标签生成
- YAML front matter 元数据支持
### 🎨 现代化界面
- 全新扁平化设计风格
- 支持深色/浅色主题
- **新增**: 增强的系统托盘功能,状态指示和快捷操作
- **新增**: 最近保存列表,快速访问历史内容
- **新增**: 桌面通知系统,保存反馈更直观
- **新增**: 开机自启动支持
## 🚀 快速开始
### 系统要求
- Python 3.10+
- Windows 10/11
### 安装步骤
1. 克隆仓库
```bash
git clone https://github.com/yourusername/llmclipboard.git
cd llmclipboard
```
2. 创建虚拟环境
```bash
python -m venv .venv
.venv\Scripts\activate
```
3. 安装依赖
```bash
uv sync
```
4. 运行程序
```bash
python -m llmclipboard.app
```
### 使用大模型功能(可选)
- 对于OpenAI API:
- 在设置中选择"OpenAI兼容API"
- 输入您的API密钥和模型名称
- 支持自定义API地址兼容各种OpenAI兼容服务
- 对于Ollama:
- 安装Ollama (https://ollama.com/)
- 在设置中选择"Ollama本地模型"
- 选择您已下载的模型如llama2、mistral等
## 📁 项目结构
```
llmclipboard/
├── llmclipboard/ # 主程序包
│ ├── __init__.py # 包初始化文件
│ ├── app.py # 主程序入口
│ ├── document_processor.py # 文档处理核心逻辑
│ ├── gui.py # 图形界面实现
│ ├── ai_processor.py # AI模型集成
│ ├── category_manager.py # 分类管理器
│ ├── categories.json # 分类配置文件
│ └── tests/ # 测试目录
│ ├── __init__.py
│ ├── test_clipboard.py # 剪贴板功能测试
│ ├── test_data.py # 数据处理测试
│ └── test_document_processor.py # 文档处理测试
├── docs/ # 文档目录
├── .python-version # Python 版本配置
├── config.ini # 程序配置文件
├── pyproject.toml # 项目依赖配置
├── README.md # 项目说明文档
└── logs/ # 日志目录
└── llmclipboard.log # 日志文件
```
### 核心模块说明
- **app.py**: 程序入口,包含主要的应用逻辑和事件循环
- **document_processor.py**: 文档处理核心,实现了标题提取、内容清理、标签生成等功能
- **gui.py**: 图形界面实现,包含主窗口和托盘图标的设计
- **ai_processor.py**: AI模型集成支持OpenAI和Ollama提供智能内容处理
- **category_manager.py**: 分类管理器,提供可视化编辑分类规则的界面
- **categories.json**: 预设的文档分类规则配置
- **tests/**: 单元测试集合,确保核心功能的正确性
## 📝 使用说明
### 基本操作
1. 双击右键:快速保存剪贴板内容(文本或图片)
2. 系统托盘图标:
- 左键双击:打开主界面
- 右键单击:显示菜单选项(启动/停止监听、设置、退出等)
- 图标状态:绿色表示正在监听,灰色表示已停止
### 高级功能
1. 分类管理:
- 点击"分类管理"按钮打开分类管理器
- 添加、删除、编辑分类和关键词
- 实时预览分类效果
2. AI模型设置
- 点击"AI模型设置"按钮配置大模型
- 选择OpenAI或Ollama
- 测试连接确保可用性
3. 最近保存列表:
- 在主界面查看最近保存的文件
- 双击打开对应文件
### 配置说明
配置文件位于 `config.ini`
```ini
[Settings]
save_location = 文档保存位置
double_click_threshold = 0.3
[AI]
model_type = none/openai/ollama
api_key = 您的API密钥仅OpenAI
base_url = API地址
model = 模型名称
```
### 文档保存格式
```markdown
---
title: 自动提取或手动设置的标题
date: 2025-03-02 13:45:00
tags: [自动提取的标签]
category: 自动分类的目录
---
正文内容...
## 相关图片
![图片1](./image_20250302_134500_1.png)
![图片2](./image_20250302_134500_2.png)
```
### 目录结构
```
save_location/
├── 技术/ # 技术相关文档
├── 学习/ # 学习笔记
├── 工作/ # 工作文档
├── 想法/ # 想法和灵感
├── 资源/ # 资源文档
├── 图片/ # 图片文件
└── 未分类/ # 未分类文档
```
## 🔧 核心功能说明
### 标题提取算法
- 智能识别文档主题和重点
- 处理多种标题格式Markdown、HTML等
- 标点符号智能处理
- 长度自动优化
- **新增**: 大模型辅助标题提取,更加智能准确
### 文本和图片处理
- 保持原文格式和换行
- 智能去除冗余内容
- 优化空白行和段落间距
- 特殊字符处理
- **新增**: 图片提取和保存
- **新增**: 图文混合内容处理
### 自动分类系统
- 基于内容的智能分类
- 关键词匹配
- **新增**: 可视化分类规则编辑
- **新增**: 大模型辅助分类
- 默认分类支持
### 性能优化
- **新增**: 多线程处理避免UI卡顿
- **新增**: 异步图片下载和处理
- **新增**: 内存使用优化
## 📦 打包说明
### 生成可执行文件
1. 确保已安装所有依赖
```bash
.venv\Scripts\python.exe -m pip install pyinstaller
```
2. 使用 PyInstaller 打包
```bash
.venv\Scripts\python.exe -m pyinstaller --clean llmclipboard.spec
```
生成的可执行文件位于 `dist` 目录下:
- `LLMClipboard.exe`: 独立的可执行文件,包含所有依赖
### 打包配置说明
打包配置文件 `llmclipboard.spec` 包含以下设置:
- 无控制台窗口模式
- 自动包含所有必要的依赖
- 包含配置文件和分类规则文件
- 支持的 Python 版本3.10+
- 支持系统托盘功能,关闭窗口时程序继续在后台运行
### 系统托盘功能
- 关闭主窗口时,应用程序不会退出,而是最小化到系统托盘
- 双击系统托盘图标可以重新打开主窗口
- 右键点击系统托盘图标可以显示菜单:
- 显示主窗口
- 启动/停止监听
- 设置选项
- 退出应用程序
## 📝 日志说明
应用程序运行时的所有日志都保存在 `logs` 目录下:
- 日志文件:`llmclipboard.log`
- 日志级别INFO 及以上
- 日志轮转:单个文件最大 5MB保留 3 个备份文件
- 日志内容:包含所有控制台输出和错误信息
### 日志文件位置
- 开发环境:项目根目录下的 `logs` 文件夹
- 打包环境:可执行文件所在目录的 `logs` 文件夹
### 日志内容说明
- 应用程序启动和关闭信息
- 剪贴板操作记录
- 文件保存操作记录
- 错误和异常信息
- 调试信息DEBUG 级别,默认不记录)
- **新增**: AI模型调用日志
- **新增**: 图片处理日志
## 🔄 最近更新
### 2025-01-15
- 🔍 改进标题提取算法
- 优化对 Markdown 格式的处理
- 改进代码块标题处理
- 智能处理标点符号
- 保持标题简洁明了
- 📝 优化文本格式处理
- 保持原文换行格式
- 智能清理空白行
- 改进中文标点处理
- 🔧 改进日志输出
- 添加详细的调试信息
- 确保 UTF-8 编码支持
- 优化日志格式和可读性
### 2025-01-16 (v0.1.4)
- 添加应用程序打包支持
- 使用 PyInstaller 打包为独立可执行文件
- 添加打包配置文件 `llmclipboard.spec`
- 优化打包后的文件结构和依赖管理
- 改进日志系统
- 添加日志文件轮转功能,单个文件最大 5MB
- 优化日志文件路径处理,支持开发和打包环境
- 重定向控制台输出到日志文件
- 添加错误处理和临时日志备份机制
- 文档更新
- 添加打包说明和配置文档
- 补充日志系统使用说明
- 更新项目结构说明
### 2025-03-02 (v0.1.5)
- 🤖 添加AI模型集成
- 支持OpenAI兼容API
- 支持Ollama本地模型
- AI辅助标题提取、分类和标签生成
- 🖼️ 增强图片处理功能
- 支持剪贴板图片保存
- 自动提取HTML内容中的图片
- 支持网络图片和base64编码图片
- 图文混合内容处理
- 🎨 界面改进
- 全新扁平化设计风格
- 增强的系统托盘功能
- 添加最近保存列表
- 桌面通知系统
- 开机自启动支持
- 🔧 功能增强
- 添加可视化分类管理器
- 多线程处理避免UI卡顿
- 异步图片下载和处理
- 内存使用优化
## 🤝 贡献指南
1. Fork 项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'feat: 添加一些特性'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 提交 Pull Request
### 编码规范
- 遵循 PEP 8 规范
- 使用类型注解
- 编写单元测试
- 添加详细注释
## 📄 许可证
本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。
## 🙋‍♂️ 问题反馈
如果您遇到问题或有建议:
1. 提交 [Issue](../../issues)
2. 加入讨论组:[Discussions](../../discussions)
3. 发送邮件至:[your-email@example.com]