- Add godotenv dependency for .env file loading - Update main.go to load environment variables - Update memory.md with troubleshooting notes - Test basic CLI functionality Version: 0.0.3
151 lines
4.1 KiB
Markdown
151 lines
4.1 KiB
Markdown
# 讨论记录 (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](changelog.md#001)
|
||
|
||
---
|
||
|
||
### [2026-03-28 23:00] 版本 0.0.1 - 设计OOP架构
|
||
**原因**: 用户要求面向对象开发模式
|
||
**分析**:
|
||
- Go不是传统OOP语言,但可通过结构体和接口实现
|
||
- 需要三个核心类:配置、厂商、翻译器
|
||
|
||
**解决方案**:
|
||
- `Config`类:全局配置管理
|
||
- `Provider`接口:厂商抽象
|
||
- `Translator`类:核心翻译逻辑
|
||
- `ProviderFactory`:工厂模式创建厂商实例
|
||
|
||
**相关链接**:
|
||
- [AGENTS.md#OOP设计模式](AGENTS.md#oop设计模式)
|
||
- [changelog.md#0.0.1](changelog.md#001)
|
||
|
||
---
|
||
|
||
### [2026-03-28 23:30] 版本 0.0.1 - 制定开发规范
|
||
**原因**: 建立规范的开发流程
|
||
**分析**:
|
||
- 需要记录讨论过程、版本变更和知识积累
|
||
- 版本号需要遵循语义化版本规范
|
||
|
||
**解决方案**:
|
||
- 创建taolun.md记录讨论
|
||
- 创建changelog.md记录版本
|
||
- 创建memory.md记录知识纠正
|
||
- 版本号格式:大版本.新功能.小修复(00-99)
|
||
|
||
**关联文档**:
|
||
- [changelog.md#0.0.1](changelog.md#001)
|
||
- [memory.md#版本管理](memory.md#版本管理)
|
||
|
||
---
|
||
|
||
### [2026-03-28 23:45] 版本 0.0.1 - 创建项目初衷文档
|
||
**原因**: 需要一个地方记录项目初衷和愿景
|
||
**分析**:
|
||
- 项目需要明确的目标和方向
|
||
- 创始人需要记录个人想法和灵感
|
||
- 与其他文档(taolun.md、changelog.md、memory.md)区分
|
||
|
||
**解决方案**:
|
||
- 创建`why.md`文件专门记录项目初衷
|
||
- 规定只能由项目所有者编辑
|
||
- 提供基本结构建议,但不强制内容
|
||
|
||
**文档规范**:
|
||
- 文件位置:项目根目录
|
||
- 权限:仅用户可编辑
|
||
- 内容:项目愿景、目标、个人笔记等
|
||
|
||
**关联文档**:
|
||
- [AGENTS.md#文档管理](AGENTS.md#开发规范)
|
||
- [changelog.md#0.0.1](changelog.md#001)
|
||
|
||
---
|
||
|
||
### [2026-03-28 23:50] 版本 0.0.2 - 实现核心架构
|
||
**原因**: 开始实现项目核心功能
|
||
**分析**:
|
||
- 根据OOP设计模式实现三个核心类
|
||
- 需要先实现配置加载和厂商接口
|
||
- 创建基本的CLI入口点
|
||
|
||
**解决方案**:
|
||
1. **Config类实现**:
|
||
- 支持YAML配置文件加载
|
||
- 环境变量替换
|
||
- 配置验证和默认值
|
||
|
||
2. **Provider接口实现**:
|
||
- 定义统一的翻译接口
|
||
- 工厂模式创建厂商实例
|
||
- 实现硅基流动厂商作为示例
|
||
|
||
3. **Translator类实现**:
|
||
- 核心翻译逻辑
|
||
- Prompt管理
|
||
- 超时控制
|
||
|
||
4. **CLI入口点**:
|
||
- 命令行参数解析
|
||
- 配置加载
|
||
- 翻译执行
|
||
|
||
**技术细节**:
|
||
- 使用`gopkg.in/yaml.v3`处理YAML
|
||
- 实现工厂模式注册机制
|
||
- 使用context处理超时和取消
|
||
- 添加基本单元测试
|
||
|
||
**关联文档**:
|
||
- [AGENTS.md#OOP设计模式](AGENTS.md#oop设计模式)
|
||
- [changelog.md#0.0.2](changelog.md#002)
|
||
|
||
---
|
||
|
||
### [2026-03-29 00:00] 版本 0.0.3 - 环境变量加载修复
|
||
**原因**: 测试CLI时发现环境变量没有正确加载
|
||
**分析**:
|
||
- 配置文件中使用`${ENV_VAR}`语法
|
||
- Go的`os.ExpandEnv`只在加载时替换
|
||
- 需要先加载.env文件到环境变量
|
||
|
||
**解决方案**:
|
||
1. 添加`github.com/joho/godotenv`依赖
|
||
2. 在main函数开始时调用`godotenv.Load()`
|
||
3. 更新memory.md记录踩坑经验
|
||
|
||
**技术细节**:
|
||
- godotenv会自动查找当前目录的.env文件
|
||
- 如果文件不存在会返回错误,可以忽略
|
||
- 不影响已有的环境变量
|
||
|
||
**关联文档**:
|
||
- [memory.md#环境变量加载问题](memory.md#环境变量加载问题)
|
||
- [changelog.md#0.0.3](changelog.md#003) |