Merge pull request #338 from sususu98/dev

Extract session ID directly from metadata.user_id->session
This commit is contained in:
Wesley Liddick
2025-09-04 10:45:57 +08:00
committed by GitHub

View File

@@ -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 = ''