- Add language code intelligent parsing module (internal/lang) - Support --lang parameter for target language specification - Support multiple language code formats (BCP47, aliases, Chinese names) - Implement interactive onboard configuration wizard - Update Config struct with language fields - Add survey library dependency for interactive UI - Improve CLI command interface - Add comprehensive unit tests for language module - Update documentation (AGENTS.md, changelog.md, taolun.md, memory.md) Supported language codes: - Standard: zh-CN, zh-TW, en-US, en-GB, ja, ko, es, fr, de - Aliases: cn, en, jp, kr, es, fr, de - Chinese names: chinese, english, japanese Commands: - yoyo "Hello world" - basic translation - yoyo --lang=cn "Hello world" - specify target language - yoyo onboard - start configuration wizard - yoyo onboard --force - force reconfiguration Version: 0.2.0
6.8 KiB
6.8 KiB
讨论记录 (taolun.md)
本文档记录开发过程中的重要讨论,以时间轴方式存储,便于版本追溯。
使用说明
- 每次重要讨论后更新此文件
- 使用上下文压缩总结,突出重点
- 格式:时间 - 版本号 - 主题
时间轴记录
[2026-03-28 22:30] 版本 0.0.1 - 确定技术栈
原因: 项目启动,需要确定技术栈 分析:
- 比较Go、Deno+TS、Node.js+TS
- Go优势:原生二进制、性能好、CLI工具友好
- 用户不会Go但愿意学习
解决方案:
- 使用Go语言开发
- 采用面向对象设计模式
- 支持多个大模型厂商
相关决策:
- 项目结构采用
cmd/和internal/布局 - 使用YAML配置文件
- 实现工厂模式和策略模式
关联版本: changelog.md#0.0.1
[2026-03-28 23:00] 版本 0.0.1 - 设计OOP架构
原因: 用户要求面向对象开发模式 分析:
- Go不是传统OOP语言,但可通过结构体和接口实现
- 需要三个核心类:配置、厂商、翻译器
解决方案:
Config类:全局配置管理Provider接口:厂商抽象Translator类:核心翻译逻辑ProviderFactory:工厂模式创建厂商实例
相关链接:
[2026-03-28 23:30] 版本 0.0.1 - 制定开发规范
原因: 建立规范的开发流程 分析:
- 需要记录讨论过程、版本变更和知识积累
- 版本号需要遵循语义化版本规范
解决方案:
- 创建taolun.md记录讨论
- 创建changelog.md记录版本
- 创建memory.md记录知识纠正
- 版本号格式:大版本.新功能.小修复(00-99)
关联文档:
[2026-03-28 23:45] 版本 0.0.1 - 创建项目初衷文档
原因: 需要一个地方记录项目初衷和愿景 分析:
- 项目需要明确的目标和方向
- 创始人需要记录个人想法和灵感
- 与其他文档(taolun.md、changelog.md、memory.md)区分
解决方案:
- 创建
why.md文件专门记录项目初衷 - 规定只能由项目所有者编辑
- 提供基本结构建议,但不强制内容
文档规范:
- 文件位置:项目根目录
- 权限:仅用户可编辑
- 内容:项目愿景、目标、个人笔记等
关联文档:
[2026-03-28 23:50] 版本 0.0.2 - 实现核心架构
原因: 开始实现项目核心功能 分析:
- 根据OOP设计模式实现三个核心类
- 需要先实现配置加载和厂商接口
- 创建基本的CLI入口点
解决方案:
-
Config类实现:
- 支持YAML配置文件加载
- 环境变量替换
- 配置验证和默认值
-
Provider接口实现:
- 定义统一的翻译接口
- 工厂模式创建厂商实例
- 实现硅基流动厂商作为示例
-
Translator类实现:
- 核心翻译逻辑
- Prompt管理
- 超时控制
-
CLI入口点:
- 命令行参数解析
- 配置加载
- 翻译执行
技术细节:
- 使用
gopkg.in/yaml.v3处理YAML - 实现工厂模式注册机制
- 使用context处理超时和取消
- 添加基本单元测试
关联文档:
[2026-03-29 00:00] 版本 0.0.3 - 环境变量加载修复
原因: 测试CLI时发现环境变量没有正确加载 分析:
- 配置文件中使用
${ENV_VAR}语法 - Go的
os.ExpandEnv只在加载时替换 - 需要先加载.env文件到环境变量
解决方案:
- 添加
github.com/joho/godotenv依赖 - 在main函数开始时调用
godotenv.Load() - 更新memory.md记录踩坑经验
技术细节:
- godotenv会自动查找当前目录的.env文件
- 如果文件不存在会返回错误,可以忽略
- 不影响已有的环境变量
关联文档:
[2026-03-29 10:00] 版本 0.2.0 - 语言代码解析设计
原因: 用户需要通过 --lang 参数指定目标语言,支持多种语言代码格式
分析:
- 需要支持标准BCP47格式(如
zh-CN、en-US) - 需要支持简短别名(如
cn、en) - 需要支持中文名称(如
chinese、english) - 需要智能解析和错误提示
解决方案:
- 创建
internal/lang/lang.go模块 - 实现语言代码映射表和解析函数
- 支持大小写不敏感和模糊匹配
- 提供语言名称获取和建议功能
技术细节:
- 使用
map[string]string存储语言代码映射 - 实现
ParseLanguageCode()函数进行智能解析 - 支持30+种语言和变体
- 添加完整的单元测试
关联文档:
[2026-03-29 10:30] 版本 0.2.0 - onboard配置向导
原因: 用户需要友好的配置界面,特别是第一次使用时 分析:
- 需要交互式配置向导
- 需要支持选择厂商、输入API密钥、设置默认值
- 需要生成标准的YAML配置文件
- 需要支持强制重新配置
解决方案:
- 使用
github.com/AlecAivazis/survey/v2库 - 实现分步配置流程:选择厂商 → 配置厂商 → 全局设置 → 保存
- 提供友好的错误处理和用户提示
- 支持
--force参数强制重新配置
技术细节:
- 使用
survey.Select、survey.Input、survey.Confirm组件 - 实现厂商默认配置和自定义选项
- 生成完整的配置文件包含所有必要字段
- 支持配置文件存在性检查
关联文档:
[2026-03-29 11:00] 版本 0.2.0 - 分阶段迁移策略
原因: 需要平衡开发便利性和最终上线需求 分析:
- 开发阶段需要简单配置方式(
.env+configs/config.yaml) - 上线前需要迁移到用户配置目录(
~/.config/yoo/yoo.yml) - 需要平滑的迁移路径和向后兼容性
解决方案:
- 第一阶段(当前): 继续使用
.env+configs/config.yaml - 第二阶段(上线前): 实现配置文件路径查找和迁移工具
- 第三阶段(最终): 移除
.env依赖,完全使用配置文件
技术细节:
- 配置文件路径优先级:命令行 > 环境变量 > 用户目录 > 当前目录
- 保持向后兼容性,支持旧配置格式
- 提供配置验证和错误提示
- 实现配置迁移工具(计划)
关联文档: