mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 21:17:30 +00:00
fix: allow new session binding after /clear command
- 移除 isOldSession 检查,信任客户端的 session ID 作为新会话标识 - 将 sessionBindingTtlDays 默认值从 30 天改为 1 天,避免 Redis 内存累积 - 添加新会话绑定的监控日志(包含 sessionId、messages 数量、accountId 等) - 完美支持 Claude Code /clear 等合法的新会话场景 - 同步更新前端界面的默认值配置 问题背景: 用户在 Claude Code 中执行 /clear 后,会生成新的 session ID, 但旧的逻辑会检查请求内容判定为"旧会话",导致返回"本地session已污染"错误。 修复方案: 采用方案2(放宽新会话检测)+ TTL 优化,信任客户端的 session ID, 不再检查请求内容是否"看起来像旧会话",由 1 天的 TTL 自动清理过期绑定。 影响范围: - src/routes/api.js (流式和非流式两处) - src/services/claudeRelayConfigService.js - web/admin-spa/src/views/SettingsView.vue
This commit is contained in:
@@ -1676,7 +1676,7 @@ const claudeConfig = ref({
|
||||
claudeCodeOnlyEnabled: false,
|
||||
globalSessionBindingEnabled: false,
|
||||
sessionBindingErrorMessage: '你的本地session已污染,请清理后使用。',
|
||||
sessionBindingTtlDays: 30,
|
||||
sessionBindingTtlDays: 1,
|
||||
userMessageQueueEnabled: false, // 与后端默认值保持一致
|
||||
userMessageQueueDelayMs: 200,
|
||||
userMessageQueueTimeoutMs: 5000, // 与后端默认值保持一致(优化后锁持有时间短无需长等待)
|
||||
@@ -1952,7 +1952,7 @@ const loadClaudeConfig = async () => {
|
||||
globalSessionBindingEnabled: response.config?.globalSessionBindingEnabled ?? false,
|
||||
sessionBindingErrorMessage:
|
||||
response.config?.sessionBindingErrorMessage || '你的本地session已污染,请清理后使用。',
|
||||
sessionBindingTtlDays: response.config?.sessionBindingTtlDays ?? 30,
|
||||
sessionBindingTtlDays: response.config?.sessionBindingTtlDays ?? 1,
|
||||
userMessageQueueEnabled: response.config?.userMessageQueueEnabled ?? false, // 与后端默认值保持一致
|
||||
userMessageQueueDelayMs: response.config?.userMessageQueueDelayMs ?? 200,
|
||||
userMessageQueueTimeoutMs: response.config?.userMessageQueueTimeoutMs ?? 5000, // 与后端默认值保持一致
|
||||
|
||||
Reference in New Issue
Block a user