DeepSeek 历史对话管理系统设计

1. 数据存储方案

1.1 数据库设计

conversations

CREATE TABLE conversations (
    id VARCHAR(36) PRIMARY KEY,
    user_id VARCHAR(36) NOT NULL,
    title VARCHAR(255) NOT NULL,
    model VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    is_deleted BOOLEAN DEFAULT FALSE,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

messages

CREATE TABLE messages (
    id VARCHAR(36) PRIMARY KEY,
    conversation_id VARCHAR(36) NOT NULL,
    role ENUM('user', 'assistant', 'system') NOT NULL,
    content TEXT NOT NULL,
    tokens INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (conversation_id) REFERENCES conversations(id)
);

1.2 存储策略

  1. 实时写入:每条消息生成后立即写入数据库
  2. 定期归档:超过3个月未活跃的对话自动归档
  3. 软删除机制:标记删除而非物理删除
  4. 内容加密:敏感内容加密存储

2. 完整API接口文档

2.1 历史对话列表

GET /api/conversations - 获取用户所有对话列表

请求参数

参数 类型 说明
limit int 每页数量 (默认20)
offset int 偏移量 (默认0)
archived bool 是否包含归档对话 (默认false)

响应示例

{
  "conversations": [
    {
      "id": "conv_abc123",
      "title": "Python编程问题",
      "model": "deepseek-coder",
      "created_at": "2023-11-20T12:00:00Z",
      "updated_at": "2023-11-21T08:30:00Z",
      "message_count": 5
    }
  ],
  "total": 15
}

2.2 获取单条对话详情

GET /api/conversations/{conversation_id} - 获取对话完整内容

响应示例

{
  "id": "conv_abc123",
  "title": "Python编程问题",
  "model": "deepseek-coder",
  "created_at": "2023-11-20T12:00:00Z",
  "messages": [
    {
      "id": "msg_001",
      "role": "user",
      "content": "如何用Python处理JSON数据?",
      "created_at": "2023-11-20T12:00:00Z"
    },
    {
      "id": "msg_002",
      "role": "assistant",
      "content": "可以使用json模块...",
      "created_at": "2023-11-20T12:00:05Z"
    }
  ]
}

2.3 修改对话属性

PATCH /api/conversations/{conversation_id} - 修改对话属性

请求体

{
  "title": "新的对话标题",
  "tags": ["编程", "Python"]
}

响应

{
  "status": "success",
  "updated_at": "2023-11-22T09:15:00Z"
}

2.4 删除对话

DELETE /api/conversations/{conversation_id} - 删除对话

请求参数

参数 类型 说明
permanent bool 是否永久删除 (默认false)

响应

{
  "status": "success",
  "deleted_at": "2023-11-22T10:00:00Z"
}

2.5 批量操作

POST /api/conversations/batch - 批量操作

请求体

{
  "action": "archive", // 或 "delete", "restore"
  "conversation_ids": ["conv_abc123", "conv_def456"]
}

响应

{
  "success_count": 2,
  "failed_count": 0
}

2.6 搜索对话

GET /api/conversations/search - 搜索对话

请求参数

参数 类型 说明
query string 搜索关键词
start_date string 开始日期 (ISO格式)
end_date string 结束日期 (ISO格式)
model string 筛选模型

响应

{
  "results": [
    {
      "id": "conv_abc123",
      "title": "Python问题",
      "preview": "如何用Python处理JSON数据...",
      "matched_message_id": "msg_001"
    }
  ],
  "total": 1
}

3. 高级功能接口

3.1 导出对话

GET /api/conversations/{conversation_id}/export - 导出对话

请求参数

参数 类型 说明
format string 导出格式 (json/markdown/txt)

响应:直接返回文件流

3.2 对话统计

GET /api/conversations/stats - 获取对话统计

响应

{
  "total_conversations": 42,
  "active_conversations": 15,
  "messages_per_day": 8.5,
  "most_used_model": "deepseek-coder"
}

4. 安全与权限控制

  1. 访问控制

    • 用户只能访问自己的对话
    • 管理员可访问所有对话(需特殊权限)
  2. 操作日志

    CREATE TABLE conversation_audit_logs (
        id VARCHAR(36) PRIMARY KEY,
        user_id VARCHAR(36) NOT NULL,
        conversation_id VARCHAR(36) NOT NULL,
        action VARCHAR(20) NOT NULL, -- 'create', 'update', 'delete'
        changed_fields JSON,
        ip_address VARCHAR(45),
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    
  3. 敏感词过滤

    • 写入前自动检测并标记敏感内容

5. 客户端实现建议

  1. 本地缓存

    • 最近10条对话缓存在localStorage
    • 使用IndexedDB存储更多历史记录
  2. 同步策略

    // 伪代码
    async function syncConversations() {
      const lastSync = localStorage.getItem('lastSync');
      const response = await fetch(`/api/conversations?since=${lastSync}`);
      // 合并本地和服务器数据
      // 更新lastSync时间戳
    }
    
  3. 离线模式

    • 允许离线查看历史对话
    • 网络恢复后自动同步更改

6. 性能优化

  1. 分页加载:消息列表分段加载
  2. 延迟加载:对话详情按需加载
  3. 数据压缩:消息内容Gzip压缩存储
  4. 定期清理:自动清理6个月未活动的对话

这套方案完整覆盖了DeepSeek官网风格的历史对话管理需求,既保证了数据安全又提供了丰富的操作接口。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐