Files
map-client-vue/todolist.md
2025-11-01 17:57:04 +08:00

98 lines
4.3 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.

# todolist
## 实现
1. 从cherry-studio代码中移植:
“模型服务”
“显示设置”
“MCP”
模块使用typescript+vue3实现。
火山:
https://ark.cn-beijing.volces.com/api/v3
853e780d-a789-42fc-8f9e-c6a8c3c97082
阿里
https://dashscope.aliyuncs.com/compatible-mode/v1
sk-2546da09b6d9471894aeb95278f96c11
3. 阿里模型直接使用模型ID。
以后再考虑不要使用接口去获取。(先跑通)
🚩
4. MCP 功能叠加。
## 优化
1. 该项目经过反复重构,重构过程关注功能实现,没有关注性能、结构合理性、和实现的优雅性。全量分析,提供优化点及思路。
**先优化,在做数据库改造**。
### 重构进度 (2025-10-16)
#### Phase 1: 核心服务拆分 (Day 1-2) ✅ 已完成
- ✅ Step 1: 创建服务目录结构 `/web/src/services/chat/`
- ✅ Step 2: 提取 MessageService - 消息 CRUD 操作20+ 方法)
- ✅ Step 3: 提取 ConversationService - 对话管理10+ 方法)
- ✅ Step 4: 创建统一日志系统 Logger (支持日志级别、命名空间、格式化)
- ✅ Step 5: 创建错误处理体系 AppError (ValidationError, NetworkError, APIError, ServiceError, StorageError + ErrorHandler)
- ✅ Step 6: 提取 StreamProcessor - 流式响应处理(性能监控、批量输出、工具集成)
- ✅ Step 7: 提取 ToolExecutor - 工具调用执行(递归调用链、错误处理)
- ✅ Step 8: 创建 ChatOrchestrator - 协调所有服务(话题管理、消息管理、流式发送、持久化 + togglePin/Favorite/Archive
- ✅ Step 9: 更新 chatStore 使用新服务已完成chatService → chatOrchestrator
- ⏸️ Step 10: 测试验证,确保无功能回归
**✅ Phase 1 重构完成!旧的 chatService.ts (1147行) 已完全被新架构替代。**
**服务架构总结:**
```
ChatOrchestrator (协调器)
├── MessageService (消息 CRUD)
├── ConversationService (对话管理)
├── StreamProcessor (流式处理)
└── ToolExecutor (工具执行)
工具层:
├── Logger (统一日志)
└── AppError + ErrorHandler (错误处理)
```
#### Phase 2: 优化与集成 (Day 3-4)
- ⏸️ 替换所有 console.log 为 logger
- ⏸️ 实现虚拟滚动优化消息列表
- ⏸️ 添加数据库索引
- ⏸️ 优化重渲染 (shallowRef)
#### Phase 3: 新功能开发 (Week 2+)
- ⏸️ 在干净的架构上开发新功能
## 问题
1. 优化消息交互。比如标题\内容超长怎么处理❓
2. 上下文的问题?上下文由谁维护❓以及如何维护❓
可以在cherry-studio中验证。
3. 大模型选择不知道是否生效?
4. 前端本地持久化localStorage, 后端Node/Express不使用数据库运行时内存保存。
Pinia store、localStorage、内存状态三处保存数据
使用sqlite3 vs. better-sqlite3持久化性能开销
没有统一的数据源?
5. 当前实现client参数重带图片pathserver收到后按path发布图片。目前client/server部署在同一个服务器测试没问题因为server可以从path找到图片。
但问题是server部署如果部署在远程服务器上用户是client需要使用mcp server发布文章图片在client侧处理好需要送到远程服务器上否则server找不到图片。在多client用户使用mcp server下进一步需要考虑几个问题
- 图片通过什么方式传送到远程服务器?
- 用户publish content时需要等待图片上传完成等待时间根据网络状态可能会很长
本来用户发布文章到xhs本地之间上传图片到xhs现在多了一个环节图片上传mcp servermcp server在上传图片到xhs。
- 图片上传和发布文章能不能解耦比如用户先传送图片缓存到mcp server。需要的时候再发布文章。
但这样,用户操作会很繁琐。
- 上传图片到mcp server还有一个存放位置问题。client的path参数用什么上传到哪个目录发布时从哪个目录寻找
如果上传图片最好约定一套策略path中只要填文件名mcp server的路径不需要client考虑。
- 如果用上传图片方式大量client接入的排队机制怎么处理client采用异步方式递交点击发送/发布,可以去喝茶了,不必考虑多久完成。
- mcp server侧需要考虑的机制。