问题描述
当前的翻译模型配置(api_key, base_url, model_id)、术语表(glossary dictionary)和翻译参数设置(temperature, thinking mode, chunk_size 等)全部仅存在于内存或单次请求参数中。服务重启后,所有配置都会丢失,用户必须重新配置。
影响范围
1. 翻译模型配置无法保存
api_key、base_url、model_id、provider 等参数每次都要重新填写。特别是 DeepSeek 的 API 密钥创建后只能查看一次,服务重启后密钥丢失会导致极大的不便。
涉及代码位置:
server/core.py:226-228 — TranslationService 所有任务状态用内存字典存储
mcp/server.py:144-152 — MCP 的 client_config 有 configure_client 接口但仅存于内存
app.py:912-964 — Web UI 的配置通过 Form 表单每次提交,无保存机制
sdk.py:154-187 — SDK Client 配置全在构造函数参数,用完即丢
2. 术语表(Glossary Dictionary)无法持久化
用户精心维护的术语翻译映射(如 {"Jobs": "乔布斯", "Shanghai": "上海"})无法保存,每次翻译都需要重新上传或粘贴。
涉及代码位置:
core/schemas.py:169-171 — glossary_dict 是请求级别的 Optional[Dict] 参数
agents/glossary_agent.py — 术语表生成后只作为任务结果返回,不持久化
3. 翻译参数偏好无法保留
temperature、thinking、chunk_size、concurrent、custom_prompt、to_lang 等偏好参数无法持久化,每次恢复为硬编码默认值。
涉及代码位置:
translator/__init__.py — 只有硬编码的 default_params 字典
建议方案
1. 引入配置文件机制
使用 YAML/TOML 配置文件(如 ~/.docutranslate/config.yaml)持久化保存:
- 多个翻译模型配置预设(可命名、切换)
- 翻译参数默认值(temperature、thinking、chunk_size 等)
- 目标语言偏好
- 加密存储敏感信息(API 密钥)
2. 术语表持久化管理
- 支持保存/加载多个命名术语表(如
tech_terms.csv、legal_terms.json)
- Web UI 提供术语表管理界面(CRUD)
- API 增加术语表管理端点
3. 配置管理 API
新增 REST API 端点:
GET /api/config — 获取当前配置
PUT /api/config — 更新保存配置
GET /api/glossaries — 列出所有术语表
POST /api/glossaries — 创建/更新术语表
DELETE /api/glossaries/{name} — 删除术语表
4. MCP 服务端优化
mcp/server.py 中现有的 client_config 和 configure_client 工具应该与持久化配置文件联动,配置一次即可跨会话生效。
环境信息
- 分支:feature/ui-redesign
- 当前唯一的外部配置方式是 MCP 模式下的 .env 环境变量,Web UI 完全无持久化
问题描述
当前的翻译模型配置(api_key, base_url, model_id)、术语表(glossary dictionary)和翻译参数设置(temperature, thinking mode, chunk_size 等)全部仅存在于内存或单次请求参数中。服务重启后,所有配置都会丢失,用户必须重新配置。
影响范围
1. 翻译模型配置无法保存
api_key、base_url、model_id、provider等参数每次都要重新填写。特别是 DeepSeek 的 API 密钥创建后只能查看一次,服务重启后密钥丢失会导致极大的不便。涉及代码位置:
server/core.py:226-228— TranslationService 所有任务状态用内存字典存储mcp/server.py:144-152— MCP 的 client_config 有 configure_client 接口但仅存于内存app.py:912-964— Web UI 的配置通过 Form 表单每次提交,无保存机制sdk.py:154-187— SDK Client 配置全在构造函数参数,用完即丢2. 术语表(Glossary Dictionary)无法持久化
用户精心维护的术语翻译映射(如
{"Jobs": "乔布斯", "Shanghai": "上海"})无法保存,每次翻译都需要重新上传或粘贴。涉及代码位置:
core/schemas.py:169-171— glossary_dict 是请求级别的 Optional[Dict] 参数agents/glossary_agent.py— 术语表生成后只作为任务结果返回,不持久化3. 翻译参数偏好无法保留
temperature、thinking、chunk_size、concurrent、custom_prompt、to_lang等偏好参数无法持久化,每次恢复为硬编码默认值。涉及代码位置:
translator/__init__.py— 只有硬编码的 default_params 字典建议方案
1. 引入配置文件机制
使用 YAML/TOML 配置文件(如
~/.docutranslate/config.yaml)持久化保存:2. 术语表持久化管理
tech_terms.csv、legal_terms.json)3. 配置管理 API
新增 REST API 端点:
GET /api/config— 获取当前配置PUT /api/config— 更新保存配置GET /api/glossaries— 列出所有术语表POST /api/glossaries— 创建/更新术语表DELETE /api/glossaries/{name}— 删除术语表4. MCP 服务端优化
mcp/server.py中现有的client_config和configure_client工具应该与持久化配置文件联动,配置一次即可跨会话生效。环境信息