mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 09:21:24 +00:00
refactor(sessionHelper): Extract session ID directly from metadata.user_id
This commit is contained in:
@@ -4,7 +4,7 @@ const logger = require('./logger')
|
|||||||
class SessionHelper {
|
class SessionHelper {
|
||||||
/**
|
/**
|
||||||
* 生成会话哈希,用于sticky会话保持
|
* 生成会话哈希,用于sticky会话保持
|
||||||
* 基于Anthropic的prompt caching机制,优先使用cacheable内容
|
* 基于Anthropic的prompt caching机制,优先使用metadata中的session ID
|
||||||
* @param {Object} requestBody - 请求体
|
* @param {Object} requestBody - 请求体
|
||||||
* @returns {string|null} - 32字符的会话哈希,如果无法生成则返回null
|
* @returns {string|null} - 32字符的会话哈希,如果无法生成则返回null
|
||||||
*/
|
*/
|
||||||
@@ -13,15 +13,17 @@ class SessionHelper {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1. 优先提取metadata.user_id
|
// 1. 最高优先级:使用metadata中的session ID(直接使用,无需hash)
|
||||||
if (requestBody.metadata && requestBody.metadata.user_id) {
|
if (requestBody.metadata && requestBody.metadata.user_id) {
|
||||||
const hash = crypto
|
// 提取 session_xxx 部分
|
||||||
.createHash('sha256')
|
const userIdString = requestBody.metadata.user_id
|
||||||
.update(requestBody.metadata.user_id)
|
const sessionMatch = userIdString.match(/session_([a-f0-9-]{36})/)
|
||||||
.digest('hex')
|
if (sessionMatch && sessionMatch[1]) {
|
||||||
.substring(0, 32)
|
const sessionId = sessionMatch[1]
|
||||||
logger.debug(`📋 Session hash generated from metadata.user_id: ${hash}`)
|
// 直接返回session ID
|
||||||
return hash
|
logger.debug(`📋 Session ID extracted from metadata.user_id: ${sessionId}`)
|
||||||
|
return sessionId
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let cacheableContent = ''
|
let cacheableContent = ''
|
||||||
|
|||||||
Reference in New Issue
Block a user