feat(chat): add message summary provider to ChatFeatureRegistry#4573
Conversation
|
""" Walkthrough本次更改为聊天功能引入了消息摘要提供器的注册与获取机制。通过扩展注册表和类型接口,允许异步获取会话摘要,以优化聊天视图标题的展示逻辑。涉及的主要变动包括注册表、类型声明和视图组件的调整,以及在示例模块中注册具体的摘要提供器实现。 Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant DefaultChatViewHeader
participant ChatFeatureRegistry
participant IMessageSummaryProvider
User->>DefaultChatViewHeader: 进入聊天界面
DefaultChatViewHeader->>ChatFeatureRegistry: 获取MessageSummaryProvider
alt 存在摘要提供器
DefaultChatViewHeader->>IMessageSummaryProvider: getMessageSummary(消息列表)
IMessageSummaryProvider-->>DefaultChatViewHeader: 返回摘要或undefined
alt 返回摘要
DefaultChatViewHeader->>DefaultChatViewHeader: 设置标题为摘要(截断)
else 未返回摘要
DefaultChatViewHeader->>DefaultChatViewHeader: 设置标题为最新用户消息(截断)
end
else 不存在摘要提供器
DefaultChatViewHeader->>DefaultChatViewHeader: 设置标题为最新用户消息(截断)
end
Suggested labels
Suggested reviewers
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
💤 Files with no reviewable changes (1)
⏰ Context from checks skipped due to timeout of 90000ms (8)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
packages/ai-native/src/browser/types.ts (1)
303-308: 接口设计良好,但建议增强错误处理
IMessageSummaryProvider接口设计简洁明确,方法签名合理。不过建议考虑以下增强:
- 添加取消令牌参数以支持长时间运行的摘要生成任务的取消
- 考虑添加错误类型定义以便更好地处理异常情况
可选的增强建议:
export interface IMessageSummaryProvider { /** * @param sessionId 会话 ID + * @param token 取消令牌,用于支持长时间运行任务的取消 */ - getMessageSummary(sessionId: string): Promise<string | undefined>; + getMessageSummary(sessionId: string, token?: CancellationToken): Promise<string | undefined>; }packages/ai-native/src/browser/chat/chat.feature.registry.ts (1)
33-39: 方法实现正确但可以考虑增强方法实现简洁正确,遵循了类中其他提供器注册方法的模式。建议考虑以下增强:
- 在
registerMessageSummaryProvider中添加重复注册的警告日志,与registerSlashCommand方法保持一致- 考虑返回
IDisposable以支持注销功能可选的增强建议:
public registerMessageSummaryProvider(provider: IMessageSummaryProvider): void { + if (this.messageSummaryProvider) { + this.logger.warn('ChatFeatureRegistry: messageSummaryProvider already exists, replacing'); + } this.messageSummaryProvider = provider; }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
packages/ai-native/src/browser/chat/chat.feature.registry.ts(3 hunks)packages/ai-native/src/browser/chat/chat.view.tsx(2 hunks)packages/ai-native/src/browser/types.ts(2 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (3)
packages/ai-native/src/browser/types.ts (1)
packages/ai-native/src/browser/chat/chat-model.ts (1)
sessionId(307-309)
packages/ai-native/src/browser/chat/chat.feature.registry.ts (1)
packages/ai-native/src/browser/types.ts (1)
IMessageSummaryProvider(303-308)
packages/ai-native/src/browser/chat/chat.view.tsx (3)
packages/core-browser/src/react-hooks/injectable-hooks.tsx (1)
useInjectable(16-39)packages/core-common/src/types/ai-native/index.ts (1)
ChatFeatureRegistryToken(297-297)packages/ai-native/src/common/utils.ts (1)
cleanAttachedTextWrapper(60-66)
⏰ Context from checks skipped due to timeout of 90000ms (8)
- GitHub Check: build-windows
- GitHub Check: build (ubuntu-latest, 20.x)
- GitHub Check: build (macos-latest, 20.x)
- GitHub Check: unittest (macos-latest, 18.x, node)
- GitHub Check: ubuntu-latest, Node.js 20.x
- GitHub Check: unittest (ubuntu-latest, 18.x, jsdom)
- GitHub Check: unittest (ubuntu-latest, 18.x, node)
- GitHub Check: unittest (macos-latest, 18.x, jsdom)
🔇 Additional comments (4)
packages/ai-native/src/browser/types.ts (1)
137-138: 接口扩展设计合理在
IChatFeatureRegistry接口中添加registerMessageSummaryProvider方法的设计是合理的,与现有的注册模式保持一致。方法签名清晰,参数类型正确。packages/ai-native/src/browser/chat/chat.feature.registry.ts (2)
5-11: 导入语句正确新增的
IMessageSummaryProvider导入语句正确,与其他类型导入保持一致的格式。
23-23: 私有字段声明合理私有字段
messageSummaryProvider的声明遵循了类中其他类似字段的模式,使用可选类型是合适的设计。packages/ai-native/src/browser/chat/chat.view.tsx (1)
921-921: 依赖注入正确通过
useInjectable钩子注入ChatFeatureRegistry的方式正确,与文件中其他服务注入保持一致。
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #4573 +/- ##
===========================================
+ Coverage 12.07% 52.78% +40.70%
===========================================
Files 1673 1681 +8
Lines 102620 103740 +1120
Branches 20965 22484 +1519
===========================================
+ Hits 12394 54758 +42364
+ Misses 76037 40736 -35301
+ Partials 14189 8246 -5943
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
/next |
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
packages/ai-native/src/browser/chat/chat.view.tsx(2 hunks)packages/ai-native/src/browser/types.ts(3 hunks)packages/startup/entry/sample-modules/ai-native/ai-native.contribution.ts(3 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- packages/ai-native/src/browser/chat/chat.view.tsx
- packages/ai-native/src/browser/types.ts
⏰ Context from checks skipped due to timeout of 90000ms (5)
- GitHub Check: 🚀🚀🚀 Next Version for pull request
- GitHub Check: build (macos-latest, 20.x)
- GitHub Check: build-windows
- GitHub Check: build (ubuntu-latest, 20.x)
- GitHub Check: ubuntu-latest, Node.js 20.x
🔇 Additional comments (2)
packages/startup/entry/sample-modules/ai-native/ai-native.contribution.ts (2)
38-38: 导入添加正确正确添加了
ChatMessageRole导入,这是下面新功能所需要的类型。
249-282: 消息摘要提供器实现良好实现包含了以下优秀的实践:
- 限制消息数量(最近10条)避免请求过大
- 清晰的提示工程,包含具体要求和示例
- 适当的错误处理(取消和错误码检查)
- 返回空字符串作为降级处理
代码逻辑正确且健壮。
|
🎉 PR Next publish successful! 3.9.1-next-1748425792.0 |
|
/next |
|
🎉 PR Next publish successful! 3.9.1-next-1748523870.0 |
Types
Background or solution
Changelog
Summary by CodeRabbit