Skip to content

Fix/context pipeline reentrancy#82

Merged
littleCareless merged 8 commits intodevelopfrom
fix/context-pipeline-reentrancy
Jan 29, 2026
Merged

Fix/context pipeline reentrancy#82
littleCareless merged 8 commits intodevelopfrom
fix/context-pipeline-reentrancy

Conversation

@littleCareless
Copy link
Owner

No description provided.

- Add GenerationGate for transaction-level deduplication
- Add SCMContextCache for short-term SCM context caching (3s TTL)
- Add GenerationOrchestrator for unified generation scheduling
- Make CommitContextBuilder idempotent with requestId
- Update StreamingGenerationHelper to use requestId
- Update SCMDetectorService to populate SCMContextCache

This resolves duplicate SCM detection and context construction
that occurred during commit message generation.

Closes: Context Pipeline Reentrancy Bug
- 新增 SessionManager 类集中管理 Webview 会话生命周期
- 实现握手机制确保与扩展端通信同步
- 优化 App.tsx 启动流程,添加 LoadingPage 显示加载状态
- 移除 ExtensionStateContext 中重复的 webviewDidLaunch 消息发送
- 重构设置页面组件,集成会话管理防止重复初始化
- 优化功能开关设置,使用 sessionStorage 缓存提升性能
- 精简国际化文本,移除冗余说明
-【Breaking Change】应用启动逻辑变更,UI 组件需适配新的会话管理机制
- 引入 `WebviewSessionManager` 类,负责管理 Webview 会话生命周期、消息幂等性控制和去重
- 实现握手 (`webview.handshake`) 协议,通过 `sessionId` 建立和验证会话,取代旧的 `webviewDidLaunch` 机制
- 使用 `withIdempotency` 方法包裹消息处理逻辑,确保消息的幂等性,防止重复处理
- 移除旧的防抖逻辑 (`_lastMessage`),由会话管理器统一处理消息的唯一性
- 在新会话建立后,立即发送存储状态以解锁前端路由守卫
- 调整日志记录器的名称为 'Dish AI Commit',优化代码格式以提升可读性和兼容性
- 整体目标是将 UI 会话逻辑从业务处理中解耦,提升 Webview 组件的模块化和健壮性
-【架构优化】删除冗余的优化版命令文件(generate-commit-command-optimized.ts、streaming-generation-helper-optimized.ts),简化入口逻辑,集中依赖协调
-【性能提升】在上下文构建器中移除实例缓存,将缓存功能转移至流式生成辅助器,避免状态管理耦合
-【缓存机制】为流式生成辅助器引入配置缓存(baseRequestParams、lastConfigHash),减少重复计算系统提示与请求参数
-【兼容性】保留 invalidateCache 方法签名并标记为已弃用,确保 API 兼容性
-【日志优化】统一日志记录方式,将 console.log 替换为 this.logger.debug,提升调试体验
-【流水线优化】新增 parsedDiff 参数支持,允许传入预解析 diff 数据以优化性能
-【代码清理】移除过时的缓存重用逻辑与日志输出,保持代码精简
- 将 `console.log` 和 `console.warn` 替换为结构化的 `Logger` 方法,提升日志可观测性
- 调整导入语句顺序,符合代码规范
- 统一方法参数签名格式,增加逗号分隔符
- 为流式生成方法添加更详细的调试日志,便于追踪消息构建过程
- 优化错误处理和令牌统计逻辑,增强健壮性
- 重构AI提示词生成辅助函数,优化代码格式和结构
- 调整import语句顺序,将`PromptKey`从外部包导入移到文件底部
- 为函数参数和模板字符串添加尾逗号以符合代码规范
- 移除调试用的console.log语句
- 优化多行模板字符串的格式化,提升可读性
- 统一函数签名和参数格式,增强代码一致性
- 保持抽象接口不变,确保向后兼容性
- 新增UIRequest.Webhandshake和ExtensionResponse.WebviewHandshakeAck消息类型,为会话连接建立提供基础通信协议
- 新增shared/types/sessions.ts文件,定义Webview会话生命周期、握手消息结构、去重机制和服务初始化状态
- 为会话管理器提供完整的类型支持,确保消息处理的幂等性和会话状态跟踪
- 新增Logger类支持条件日志记录,替换原有console.log调用
- 在buildWithRetry方法中,仅在开发模式下输出调试信息
- 添加ContextLengthExceededError的警告日志
- 调整代码格式,统一在构造函数和方法调用参数列表后添加逗号
- 增强日志工具,添加开发环境调试功能,包括终端输出、对象日志和链路追踪
- 提升日志可控性和代码可维护性,优化开发体验和问题诊断能力
@claude
Copy link

claude bot commented Jan 29, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

@littleCareless littleCareless merged commit 75c6a3f into develop Jan 29, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant