Files
yoyo/changelog.md
z.to b71f76c8b3 feat: 添加本地缓存功能,减少API调用
- 实现SQLite缓存模块,支持高效查询和存储
- 添加缓存键生成策略(基于原文+语言对的SHA256哈希)
- 集成缓存到Translator类,先查缓存再调用API
- 添加缓存管理命令:cache clear, cache stats, cache cleanup
- 实现组合缓存清理策略(数量限制+时间过期)
- 添加完整的单元测试
- 更新配置文件模板,添加缓存配置
- 更新文档和版本记录

版本: v0.5.1
2026-03-29 21:10:28 +08:00

10 KiB
Raw Blame History

变更日志 (changelog.md)

本文档记录所有版本变更,包含功能、修复和讨论链接。

使用说明

  • 版本号格式:主版本.次版本.修订版本(如 0.0.1
  • 第三位为00-99超过99时增加第二位
  • 每个版本包含指向讨论记录的链接

未来架构想法

  • 支持流式翻译输出
  • 添加本地缓存减少API调用 已完成
  • 实现插件系统支持自定义厂商
  • 支持批量翻译文件
  • 添加Web界面可选

待实现

  • 实现硅基流动厂商
  • 实现火山引擎厂商
  • 实现国家超算厂商
  • 实现Qwen厂商
  • 实现OpenAI兼容厂商
  • 配置文件热重载
  • 翻译历史记录

当前正实现

  • 项目基础架构搭建
  • 核心类设计实现

待修复BUG

版本历史

0.5.0 (2026-03-29) - 本地缓存功能

类型: 功能版本
状态: 已发布

变更内容:

  • 添加本地缓存模块 (internal/cache/)
  • 实现SQLite缓存存储层支持高效查询和存储
  • 实现缓存键生成策略(基于原文+语言对的SHA256哈希
  • 修改Translator类集成缓存功能先查缓存再调用API
  • 添加缓存配置到Config结构支持自定义缓存参数
  • 实现缓存管理命令cache clear, cache stats, cache cleanup
  • 添加组合缓存清理策略(数量限制+时间过期)
  • 更新配置文件模板,添加缓存配置示例
  • 更新帮助文档,添加缓存相关命令说明

技术实现:

  • 使用 github.com/mattn/go-sqlite3 作为SQLite驱动
  • 实现缓存接口 (Cache interface),支持多种存储后端
  • 缓存表包含完整字段原文、译文、语言对、模型、Prompt、用量统计
  • 自动清理过期缓存和超出数量限制的缓存
  • 异步保存缓存,不阻塞翻译结果返回

使用示例:

# 基本翻译(自动使用缓存)
yoyo "Hello world"
yoyo "Hello world"  # 第二次调用将从缓存返回

# 缓存管理命令
yoyo cache clear           # 清空翻译缓存
yoyo cache stats           # 查看缓存统计信息
yoyo cache cleanup         # 清理过期缓存

配置示例:

cache:
  enabled: true           # 是否启用缓存
  max_records: 10000      # 最大缓存记录数
  expire_days: 30         # 缓存过期天数
  db_path: "~/.config/yoyo/cache.db"  # 缓存数据库文件路径

讨论记录:

下一步:

  • 完善缓存功能测试
  • 添加缓存命中率统计
  • 实现按语言清理缓存功能
  • 优化缓存性能

0.5.1 (2026-03-29) - 缓存功能修复

类型: 修复版本
状态: 已发布

变更内容:

  • 修复缓存清空命令中的VACUUM事务错误
  • 修复缓存统计中的NULL值处理错误
  • 修复缓存过期清理策略支持expire_days=0时清理所有记录
  • 添加缓存模块单元测试
  • 更新版本号到v0.5.1

修复问题:

  • 缓存清空命令执行时出现"cannot VACUUM from within a transaction"错误
  • 缓存统计查询在空表时出现NULL值转换错误
  • 缓存过期清理策略在expire_days=0时不工作

测试结果:

  • 所有缓存模块测试通过
  • 缓存命令功能正常
  • 缓存集成功能正常

下一步:

  • 完善缓存功能测试
  • 添加缓存命中率统计
  • 实现按语言清理缓存功能
  • 优化缓存性能

0.4.0 (2026-03-29) - 管道符功能

类型: 功能版本
状态: 已发布

变更内容:

  • 添加管道符支持,允许与其他命令行工具联合使用
  • 实现管道输入检测 (isPipeInput函数)
  • 实现从标准输入读取 (readFromStdin函数)
  • 添加 --quiet 和 -q 参数控制统计信息输出
  • 更新帮助文档,添加管道使用示例
  • 修复 content/filter.go 中的正则表达式错误
  • 更新版本号到 v0.3.0

使用示例:

# 管道翻译文件
cat file.txt | yoyo
cat file.txt | yoyo --lang=en

# 管道翻译命令输出
echo "Hello world" | yoyo --lang=cn

# 静默模式,只输出翻译结果
echo "Hello world" | yoyo -q

# 与其他命令组合使用
cat file.txt | yoyo | grep "关键词"
yoyo "Hello" | wc -l

讨论记录:

下一步:

  • 实现更多厂商火山引擎、国家超算、Qwen、OpenAI兼容
  • 添加配置文件路径查找机制
  • 实现配置文件迁移工具
  • 完善错误处理和用户体验

0.3.0 (2026-03-29) - 内容过滤与代码处理

类型: 功能版本
状态: 已发布

变更内容:

  • 添加内容过滤模块 (internal/content/)
  • 实现基础字符过滤(移除控制字符、规范化换行符、截断超长符号)
  • 实现代码块和行内代码识别
  • 实现代码注释智能识别(支持 JS/TS/Java/Python/Go/HTML 等 30+ 语言)
  • 添加 go-enry 依赖实现编程语言智能检测
  • 添加 SkipKeywords 配置项,默认保留 TODO/FIXME/HACK 等关键词不翻译
  • 集成内容处理到 Translator 模块

新增文件:

  • internal/content/content.go - 模块入口
  • internal/content/filter.go - 基础字符过滤
  • internal/content/parser.go - 内容解析器和语言检测

配置更新:

  • configs/config.yaml 新增 skip_keywords 配置项
  • 支持用户自定义不翻译的关键词列表

使用示例:

# 翻译包含代码的文档,自动识别代码和注释
yoyo "这是一个文档 ```js // TODO: fix this ```"
# 代码块保持不变,只翻译注释中的词汇
# TODO: 修复这个

讨论记录:

下一步:

  • 实现更多厂商火山引擎、国家超算、Qwen、OpenAI兼容
  • 添加配置文件路径查找机制
  • 实现配置文件迁移工具
  • 完善错误处理和用户体验

0.2.0 (2026-03-29) - 语言支持和配置向导

类型: 功能版本
状态: 开发中

变更内容:

  • 添加语言代码智能解析模块 (internal/lang)
  • 支持 --lang 参数指定目标语言
  • 支持多种语言代码格式标准BCP47、别名、中文名称
  • 实现 onboard 交互式配置向导
  • 更新配置结构添加语言字段
  • 添加 survey 库依赖用于交互式界面
  • 改进CLI命令行接口
  • 添加语言模块单元测试

新增文件:

  • internal/lang/lang.go - 语言代码解析模块
  • internal/lang/lang_test.go - 语言模块测试
  • internal/onboard/onboard.go - 配置向导实现

支持的语言代码:

  • 标准格式: zh-CN, zh-TW, en-US, en-GB, ja, ko, es, fr, de 等
  • 简短别名: cn(中文), en(英文), jp(日文), kr(韩文) 等
  • 中文名称: chinese(中文), english(英文), japanese(日文) 等

使用示例:

# 基本翻译
yoyo "Hello world"
yoyo --lang=cn "Hello world"
yoyo --lang=en "你好世界"
yoyo --lang=zh-TW "Hello world"

# 配置向导
yoyo onboard
yoyo onboard --force

讨论记录:

下一步:

  • 实现更多厂商火山引擎、国家超算、Qwen、OpenAI兼容
  • 添加配置文件路径查找机制
  • 实现配置文件迁移工具
  • 完善错误处理和用户体验

0.0.3 (2026-03-29) - 环境变量加载修复

类型: 修复版本
状态: 开发中

变更内容:

  • 修复环境变量加载问题
  • 添加godotenv依赖
  • 更新memory.md记录踩坑经验
  • 测试CLI基本功能

讨论记录:

下一步:

  • 实现更多厂商
  • 添加更多测试
  • 完善错误处理

0.0.2 (2026-03-28) - 核心架构实现

类型: 功能版本
状态: 开发中

变更内容:

  • 实现Config配置类internal/config/config.go
  • 实现Provider接口和工厂模式internal/provider/
  • 实现硅基流动厂商internal/provider/siliconflow.go
  • 实现Translator核心翻译类internal/translator/
  • 实现Prompt管理器internal/translator/prompt.go
  • 创建CLI入口点cmd/yoyo/main.go
  • 添加配置文件模板configs/config.yaml
  • 添加单元测试internal/config/config_test.go
  • 初始化Git仓库和版本标签

讨论记录:

下一步:

  • 实现其他厂商火山引擎、国家超算、Qwen、OpenAI兼容
  • 添加更多测试
  • 实现批量翻译功能
  • 添加翻译历史记录
  • 实现配置文件热重载

0.0.1 (2026-03-28) - 项目初始化

类型: 初始化版本
状态: 开发中

变更内容:

  • 确定技术栈为Go语言
  • 设计OOP架构Config、Provider、Translator
  • 制定开发规范taolun.md、changelog.md、memory.md、why.md
  • 确定分支策略main、dev
  • 设计项目结构
  • 创建项目初衷文档why.md

讨论记录:

下一步:

  • 创建项目目录结构
  • 初始化Go模块
  • 实现Config类
  • 实现Provider接口
  • 用户填写why.md内容

版本号管理规则

版本号格式

主版本.次版本.修订版本(例如:1.2.3

更新规则

  1. 主版本(第一位):重大架构变更、不兼容更新
  2. 次版本(第二位):新功能、重要特性
  3. 修订版本第三位小修复、优化00-99

更新流程

  1. 完成开发并测试
  2. 更新changelog.md
  3. 更新taolun.md如有讨论
  4. 更新memory.md如有新知识
  5. 更新版本号
  6. 提交到dev分支
  7. 测试通过后合并到main
  8. 创建版本标签:git tag v0.0.1

示例版本递增

  • 0.0.10.0.2:小修复
  • 0.0.990.1.0:新功能(修订版本溢出)
  • 1.2.32.0.0:重大架构变更