Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: support intelligent completions always visible preference #4043

Merged
merged 3 commits into from
Sep 26, 2024

Conversation

Ricbet
Copy link
Member

@Ricbet Ricbet commented Sep 25, 2024

Types

  • 🪚 Refactors

Background or solution

智能补全与下拉补全同时显示的问题由 preference 管控比较好。
删除了原来的 alwaysVisible api 的设计。

现在即使是插件或者其他模块注册的 inline completion provider 都能一直显示出来,不会因下拉补全的出现而消失

Changelog

新增 intelligentCompletions.always.visible 配置

Summary by CodeRabbit

  • 新功能

    • 引入智能补全功能,替代原有的行内补全。
    • 新增设置选项“智能补全始终可见”。
  • 变更

    • 更新了设置标识符,反映从行内补全到智能补全的转变。
    • 移除行内补全相关的属性和方法,简化了代码结构。
  • 本地化

    • 更新了语言包,替换行内补全的键为智能补全的键。

Copy link

railway-app bot commented Sep 25, 2024

This PR was not deployed automatically as @Ricbet does not have access to the Railway project.

In order to get automatic PR deploys, please add @Ricbet to the project inside the project settings page.

Copy link
Contributor

coderabbitai bot commented Sep 25, 2024

Warning

Rate limit exceeded

@Ricbet has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 1 minutes and 6 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Files that changed from the base of the PR and between 5e17628 and 9b9ae0c.

Walkthrough

此次变更主要涉及将“内联补全”功能重命名为“智能补全”,并相应地更新了相关的设置、接口和本地化字符串。多个文件中删除了与内联补全相关的代码,新增了智能补全的逻辑和配置。整体结构进行了简化和重构,以提高可维护性和清晰度。

Changes

文件路径 变更摘要
packages/ai-native/src/browser/ai-core.contribution.ts 移除了InlineCompletionSingleHandler,更新了设置以反映智能补全的相关内容。
packages/core-common/src/settings/ai-native.ts 更新了AINativeSettingSectionsId中的标识符,反映智能补全的变化。
packages/i18n/src/common/en-US.lang.ts 更新了本地化字符串,替换了与内联补全相关的键为智能补全的键。
packages/i18n/src/common/zh-CN.lang.ts 更新了中文本地化字符串,反映了智能补全的变化。

Possibly related PRs

Suggested labels

⚙️ refactor

Suggested reviewers

  • bytemain
  • erha19

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@opensumi opensumi bot added the 🎨 feature feature required label Sep 25, 2024
@Ricbet Ricbet linked an issue Sep 25, 2024 that may be closed by this pull request
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Outside diff range and nitpick comments (9)
packages/ai-native/src/browser/preferences/schema.ts (2)

37-39: 重命名偏好设置键符合PR目标

重命名 InlineCompletionsPromptEngineeringEnabledIntelligentCompletionsPromptEngineeringEnabled 符合PR的目标,即将内联补全更改为智能补全。这个改动保持了功能不变,只是更新了命名。

建议更新相关文档以反映这一命名变更,确保用户和开发者能够正确理解和使用这个设置。


49-52: 新增的智能补全可见性设置

新增的 IntelligentCompletionsAlwaysVisible 设置很好地实现了PR的目标,即允许用户控制智能补全的可见性。将默认值设为 false 是一个明智的选择,让用户可以选择性地启用这个新功能。

建议:

  1. 在用户文档中详细说明这个新设置的作用和使用方法。
  2. 考虑添加一个简短的注释,解释这个设置的具体影响,例如:
[AINativeSettingSectionsId.IntelligentCompletionsAlwaysVisible]: {
  type: 'boolean',
  default: false,
  description: '控制智能补全是否始终可见,即使在显示下拉补全时'
},
packages/ai-native/src/browser/contrib/inline-completions/promptCache.ts (1)

45-45: 更改符合 PR 目标,建议小幅改进以提高一致性。

这个更改将事件监听器中的设置标识符从 InlineCompletionsCacheEnabled 更新为 IntelligentCompletionsCacheEnabled,与之前的更改保持一致,符合 PR 的目标。实现逻辑正确。

为了提高代码的可维护性和一致性,建议将这个标识符提取为一个常量或枚举值,这样可以在整个类中统一使用,减少潜在的拼写错误。例如:

private static readonly CACHE_ENABLED_SETTING = AINativeSettingSectionsId.IntelligentCompletionsCacheEnabled;

// 然后在构造函数和事件监听器中使用这个常量
this._isCacheEnabled = this.preferenceService.getValid(PromptCache.CACHE_ENABLED_SETTING, true);

this.preferenceService.onSpecificPreferenceChange(PromptCache.CACHE_ENABLED_SETTING, (e) => {
  // ...
});
packages/ai-native/src/browser/contrib/inline-completions/completeProvider.ts (1)

74-74: 设置监听器更新与之前的更改保持一致

将偏好设置更改监听器更新为使用新的设置标识符 IntelligentCompletionsDebounceTime 是正确的,与之前的更改保持一致。这确保了当用户更改设置时,inlineComletionsDebounceTime 变量会被正确更新。

为了保持一致性,建议考虑将 inlineComletionsDebounceTime 变量重命名为 intelligentCompletionsDebounceTime。这样可以使变量名与设置标识符保持一致,提高代码的可读性。例如:

- inlineComletionsDebounceTime: number;
+ intelligentCompletionsDebounceTime: number;

- this.inlineComletionsDebounceTime = this.preferenceService.getValid(
+ this.intelligentCompletionsDebounceTime = this.preferenceService.getValid(
    AINativeSettingSectionsId.IntelligentCompletionsDebounceTime,
    150,
  );

  this.addDispose(
    this.preferenceService.onSpecificPreferenceChange(
      AINativeSettingSectionsId.IntelligentCompletionsDebounceTime,
      ({ newValue }) => {
-       this.inlineComletionsDebounceTime = newValue;
+       this.intelligentCompletionsDebounceTime = newValue;
      },
    ),
  );

这个小改动可以进一步提高代码的一致性和可读性。

packages/ai-native/src/browser/contrib/inline-completions/model/inlineCompletionRequestTask.ts (2)

159-161: 改进了状态栏反馈,提升用户体验。

这些更改通过在完成请求前后更新状态栏项目,显著改善了用户反馈。现在,状态栏能更准确地反映操作的当前状态,这与PR提升用户体验的目标相符。

建议:考虑在catch块中也添加类似的状态更新逻辑,以处理错误情况下的用户反馈。

建议在catch块中也添加状态更新:

      } catch (error) {
+       this.aiCompletionsService.updateStatusBarItem('error', false);
        this.aiCompletionsService.reporterEnd(relationId, {
          success: false,
          replytime: Date.now() - requestStartTime,
          message: error.toString(),
        });
        this.aiCompletionsService.hideStatusBarItem();
        return [];
      }

发现未更新的旧术语

在以下文件中仍使用旧术语 'InlineCompletions':

  • packages/monaco/src/browser/monaco-api/languages.ts
  • packages/extension/src/hosted/api/vscode/language/inlineCompletion.ts
  • packages/extension/src/hosted/api/vscode/ext.host.language.ts
  • packages/extension/src/common/vscode/languages.ts
  • packages/extension/src/browser/vscode/api/main.thread.language.ts
  • packages/ai-native/src/browser/ai-core.contribution.ts
  • packages/ai-native/src/browser/contrib/inline-completions/completeProvider.ts
  • packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.source.ts
  • packages/ai-native/src/browser/types.ts
  • packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts

请确保在这些文件中也进行了相应的术语更新,以保持代码库的一致性。

🔗 Analysis chain

Line range hint 1-285: 总体评审:变更符合PR目标,改进了用户体验

本次更改主要集中在两个方面:

  1. 将 'InlineCompletions' 重命名为 'IntelligentCompletions',提高了术语的一致性。
  2. 改进了状态栏的反馈机制,为用户提供了更清晰的操作状态信息。

这些修改与PR的目标(支持智能补全始终可见的偏好设置)保持一致,并且显著提升了用户体验。代码变更保持了一致性,没有引入明显的问题或与现有代码的冲突。

建议:

  1. 考虑在其他相关文件中也进行类似的术语更新,以保持整个代码库的一致性。
  2. 可以考虑添加单元测试来验证新的状态栏更新逻辑。

为了确保术语更新的一致性,请运行以下脚本来检查是否还有其他文件使用旧术语:

这将帮助我们识别可能需要更新的其他文件。


为了确保术语更新的一致性,请运行以下脚本来检查是否还有其他文件使用旧术语:


为了确保术语更新的一致性,请运行以下脚本来检查是否还有其他文件使用旧术语:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 搜索包含旧术语 'InlineCompletions' 的文件
rg --type typescript 'InlineCompletions(?!PromptEngineeringEnabled)' -l

Length of output: 339


Script:

#!/bin/bash
# 使用PCRE2支持负向前瞻的正则表达式搜索包含旧术语 'InlineCompletions' 的文件
rg --pcre2 --type typescript 'InlineCompletions(?!PromptEngineeringEnabled)' -l

Length of output: 116


Script:

#!/bin/bash
# 使用 PCRE2 和文件扩展名搜索包含旧术语 'InlineCompletions' 的 TypeScript 文件
rg --pcre2 --glob '*.ts' --glob '*.tsx' 'InlineCompletions(?!PromptEngineeringEnabled)' -l

Length of output: 763

packages/ai-native/src/browser/ai-core.contribution.ts (1)

332-348: 设置更新符合新功能,建议小改进

设置注册的修改反映了从"内联补全"到"智能补全"的转变,这与PR的目标一致。新的配置选项 intelligentCompletions.always.visible 已正确添加。

建议:为保持一致性,考虑将 IntelligentCompletionsAlwaysVisible 重命名为 IntelligentCompletionsAlwaysVisibleEnabled,以匹配其他布尔类型设置的命名模式。

packages/i18n/src/common/en-US.lang.ts (1)

1491-1491: 新增的空行看起来是多余的

这里添加了一个空行,但它似乎是不必要的。考虑移除这个空行以保持代码的整洁性。

建议删除这个空行:

-
packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.source.ts (1)

96-96: 建议直接使用空字符串进行判断

在第96行,使用 change.text === empty 判断文本是否为空。为提高代码可读性,建议直接使用 change.text === '' 进行比较。

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between b4dd6d7 and 2ffea83.

📒 Files selected for processing (13)
  • packages/ai-native/src/browser/ai-core.contribution.ts (2 hunks)
  • packages/ai-native/src/browser/contrib/inline-completions/completeProvider.ts (1 hunks)
  • packages/ai-native/src/browser/contrib/inline-completions/model/inlineCompletionRequestTask.ts (2 hunks)
  • packages/ai-native/src/browser/contrib/inline-completions/promptCache.ts (1 hunks)
  • packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts (6 hunks)
  • packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.source.ts (3 hunks)
  • packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.ts (0 hunks)
  • packages/ai-native/src/browser/preferences/schema.ts (1 hunks)
  • packages/core-common/src/settings/ai-native.ts (1 hunks)
  • packages/i18n/src/common/en-US.lang.ts (1 hunks)
  • packages/i18n/src/common/zh-CN.lang.ts (1 hunks)
  • packages/startup/entry/sample-modules/ai-native/ai-native.contribution.ts (0 hunks)
  • packages/startup/entry/sample-modules/ai-native/ai.back.service.ts (0 hunks)
💤 Files not reviewed due to no reviewable changes (3)
  • packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.ts
  • packages/startup/entry/sample-modules/ai-native/ai-native.contribution.ts
  • packages/startup/entry/sample-modules/ai-native/ai.back.service.ts
🔇 Additional comments not posted (27)
packages/core-common/src/settings/ai-native.ts (3)

15-17: 重命名枚举值以反映新的智能补全功能

枚举值的重命名从"inline completions"到"intelligent completions"与PR的目标一致,提高了代码的一致性和可读性。


18-18: 新增智能补全始终可见的设置选项

新增的IntelligentCompletionsAlwaysVisible枚举值直接对应PR中描述的新功能,允许用户控制智能补全的可见性。这个添加很好地实现了PR的主要目标。


15-18: 总体评价:更改符合PR目标并提高了代码质量

这些更改很好地实现了PR的目标,通过重命名相关设置并添加新的控制选项来支持智能补全的始终可见性。代码变更保持了一致性,并提高了整体可读性。没有发现任何问题或需要进一步改进的地方。

packages/ai-native/src/browser/preferences/schema.ts (2)

45-47: 一致的命名更新

InlineCompletionsCacheEnabled 重命名为 IntelligentCompletionsCacheEnabled 与之前的更改保持一致。这个改动保持了功能不变,只是更新了命名。

为确保所有相关的命名都已更新,建议运行以下脚本进行全面检查:

#!/bin/bash
# 描述:检查是否还有其他使用"InlineCompletions"前缀的设置

# 测试:搜索可能遗漏的旧命名。预期:没有结果。
rg --type typescript "InlineCompletions(?!PromptEngineeringEnabled|DebounceTime|CacheEnabled)"

41-43: 保持一致性的重命名

InlineCompletionsDebounceTime 重命名为 IntelligentCompletionsDebounceTime 与之前的更改保持一致。这个改动维持了功能不变,仅更新了命名。

为确保整个代码库的一致性,建议运行以下脚本检查是否有遗漏的重命名:

✅ Verification successful

修正搜索脚本以确保一致性

之前的搜索脚本由于正则表达式不被支持导致失败。请使用以下修正后的脚本重新运行:


修正文件类型以正确搜索旧命名项

上一个脚本中的 --type typescript 未被识别。请使用以下修正后的脚本,通过指定文件扩展名来搜索 InlineCompletionsDebounceTime


一致性检查通过

已确认 InlineCompletionsDebounceTime 已在代码库中全部重命名为 IntelligentCompletionsDebounceTime,未发现残留引用。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 描述:检查是否还有其他使用旧命名的地方

# 测试:搜索可能遗漏的旧命名。预期:没有结果。
rg --type typescript "InlineCompletionsDebounceTime"

Length of output: 388


Script:

#!/bin/bash
# 描述:检查是否还有其他使用旧命名的地方

# 修正:启用 PCRE2 以支持高级正则表达式
rg --pcre2 --type typescript "InlineCompletionsDebounceTime"

Length of output: 95


Script:

#!/bin/bash
# 描述:检查是否还有其他使用旧命名的地方

# 修正:使用 --glob 指定 TypeScript 文件扩展名
rg --pcre2 --glob '*.ts' --glob '*.tsx' "InlineCompletionsDebounceTime"

Length of output: 71

packages/ai-native/src/browser/contrib/inline-completions/promptCache.ts (2)

39-39: 更改符合 PR 目标,代码逻辑正确。

这个更改将设置标识符从 InlineCompletionsCacheEnabled 更新为 IntelligentCompletionsCacheEnabled,与 PR 的目标一致,即支持智能补全功能。实现逻辑正确,没有发现问题。


39-45: 建议检查其他可能受影响的代码部分

这些更改将设置标识符从 InlineCompletionsCacheEnabled 更新为 IntelligentCompletionsCacheEnabled,符合 PR 的目标。然而,这种更改可能会影响到代码库的其他部分。

建议:

  1. 检查是否有其他文件或模块引用了旧的设置标识符 InlineCompletionsCacheEnabled,确保所有相关部分都已更新。
  2. 更新相关文档,包括用户文档和开发者文档,以反映这一变化。
  3. 如果有单元测试涉及到这个设置,请确保也进行了相应的更新。

可以使用以下脚本来检查可能受影响的其他文件:

✅ Verification successful

验证通过,无发现使用旧标识符的代码部分

更改后的设置标识符 IntelligentCompletionsCacheEnabled 已在所有相关部分更新,无需进一步操作。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 搜索可能使用旧标识符的文件
rg "InlineCompletionsCacheEnabled" --type typescript

Length of output: 87


Script:

#!/bin/bash
# 搜索可能使用旧标识符的 TypeScript 文件
rg "InlineCompletionsCacheEnabled" -g "*.ts" -g "*.tsx"

Length of output: 55

packages/ai-native/src/browser/contrib/inline-completions/completeProvider.ts (1)

68-68: 设置标识符更新提高了清晰度

将设置标识符从 InlineCompletionsDebounceTime 更改为 IntelligentCompletionsDebounceTime 是一个很好的改进。这个变更使得代码更加清晰,并且与PR的目标保持一致,即支持智能补全功能。

packages/ai-native/src/browser/contrib/inline-completions/model/inlineCompletionRequestTask.ts (2)

70-72: 更新了首选项键名,提高了一致性。

这个更改将首选项键从 'InlineCompletionsPromptEngineeringEnabled' 更新为 'IntelligentCompletionsPromptEngineeringEnabled',与PR的目标保持一致,提高了术语的一致性。


76-77: 首选项监听器更新,保持一致性。

这个更改与之前的修改保持一致,确保了监听器正确设置为新的首选项键。这种一致性有助于维护代码的可读性和可维护性。

packages/ai-native/src/browser/ai-core.contribution.ts (3)

Line range hint 271-287: 代码简化符合PR目标

onDidStart 方法的修改移除了 inlineCompletionSingleHandler.load() 的调用,这与PR的目标一致,即移除先前的 alwaysVisible API设计。这一变更简化了方法,并移除了内联补全的初始化。


Line range hint 1-1: 建议全面检查旧内联补全系统的引用

本PR的更改将内联补全替换为智能补全,这是一个重大的重构。虽然当前文件的更改看起来很全面,但建议进行全面检查,以确保整个代码库中所有对旧内联补全系统的引用都已更新。

请运行以下脚本来检查整个代码库中是否还存在对旧内联补全系统的引用:

#!/bin/bash
# 描述:检查整个代码库中是否存在对旧内联补全系统的引用

# 测试:搜索与旧内联补全系统相关的术语。预期:除了本文件外,不应有其他匹配项。
rg --type typescript "inlineCompletion(?!s)|InlineCompletionSingleHandler" -g '!**/ai-core.contribution.ts'

# 测试:搜索可能需要更新为"intelligentCompletions"的"inlineCompletions"引用。预期:没有遗漏的更新。
rg --type typescript "inlineCompletions" -g '!**/ai-core.contribution.ts'

如果脚本返回任何结果,请仔细检查这些位置,确保所有相关引用都已正确更新为新的智能补全系统。


Line range hint 1-1: 验证 InlineCompletionSingleHandler 的完全移除

根据AI生成的摘要,InlineCompletionSingleHandler 已从 AINativeBrowserContribution 类中移除。这符合PR的重构目标。

请运行以下脚本以验证 InlineCompletionSingleHandler 及其相关代码已被完全移除,确保没有遗留任何未使用的代码:

如果脚本返回任何结果,请检查这些位置并确保它们不是遗漏的需要删除的代码。

packages/i18n/src/common/zh-CN.lang.ts (3)

1252-1255: 新增的 AI 原生相关设置项翻译准确

这些新增的设置项翻译准确且符合上下文。建议在 "控制 Chat 面板默认的展示方式" 后面添加冒号,以保持与其他设置项描述的一致性。

建议修改如下:

- 'preference.ai.native.chat.visible.type': '控制 Chat 面板默认的展示方式',
+ 'preference.ai.native.chat.visible.type': '控制 Chat 面板默认的展示方式:',

1257-1262: 智能补全相关设置项翻译准确

新增的智能补全(intelligentCompletions)相关设置项翻译准确。不过,为了保持一致性,建议在每个描述的末尾添加句号。

建议修改如下:

- 'preference.ai.native.intelligentCompletions.title': '智能补全',
+ 'preference.ai.native.intelligentCompletions.title': '智能补全',
- 'preference.ai.native.intelligentCompletions.promptEngineering.enabled':
-   '是否启用提示词工程,一些 LLM 模型在提示词工程上可能表现不佳。',
+ 'preference.ai.native.intelligentCompletions.promptEngineering.enabled':
+   '是否启用提示词工程,一些 LLM 模型在提示词工程上可能表现不佳。',
- 'preference.ai.native.intelligentCompletions.debounceTime': '智能补全的延迟时间(毫秒)',
+ 'preference.ai.native.intelligentCompletions.debounceTime': '智能补全的延迟时间(毫秒)。',
- 'preference.ai.native.intelligentCompletions.cache.enabled': '是否启用智能补全的缓存',
+ 'preference.ai.native.intelligentCompletions.cache.enabled': '是否启用智能补全的缓存。',
- 'preference.ai.native.intelligentCompletions.always.visible': '是否总是展示智能补全',
+ 'preference.ai.native.intelligentCompletions.always.visible': '是否总是展示智能补全。',

Line range hint 1-1262: 总体评价:翻译质量良好,仅需少量调整

本次更新主要涉及 AI 功能和智能补全相关的翻译,整体质量良好,符合现有的翻译风格。建议进行少量调整以提高一致性:

  1. 在 "控制 Chat 面板默认的展示方式" 后添加冒号。
  2. 在智能补全相关设置项的描述末尾统一添加句号。

这些小的改进将使翻译更加统一和专业。

packages/i18n/src/common/en-US.lang.ts (1)

1492-1497: 新增了智能补全相关的设置项翻译

这些新增的翻译项与智能补全(Intelligent Completions)功能相关,替换了之前的内联补全(Inline Completions)。翻译看起来准确且一致。

新增的翻译项如下:

  1. 智能补全的标题
  2. 提示工程(prompt engineering)的启用选项
  3. 智能补全的防抖时间
  4. 智能补全的缓存启用选项
  5. 是否始终显示智能补全的选项

这些新增项很好地覆盖了智能补全功能的各个方面,提供了全面的用户配置选项。

packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.source.ts (3)

37-37: 确认 monacoEditor 是否确实可选

构造函数中的参数 monacoEditor 被标记为 @Optional()。请确认在未提供 monacoEditor 的情况下,类的功能是否正常。如果 monacoEditor 是必需的,建议移除 @Optional() 注解。


67-67: 确认 affectsSome 方法的使用

在第67行,使用了 e.affectsSome(inlineVisibleKey)。请确保 affectsSome 方法适用于传入的 Set 类型参数,并符合预期行为。


117-117: 确保 groupId 更改的一致性

在第117行,groupId 被修改为 'ai-native-intelligent-completions'。请确认代码库中所有引用旧 groupId 'ai-native-inline-completions' 的地方都已更新,以避免潜在问题。

运行以下脚本以检查是否存在对旧 groupId 的引用:

✅ Verification successful

已验证 groupId 更改的一致性

在代码库中未发现对旧的 groupId 'ai-native-inline-completions' 的引用,确认所有引用已更新。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 查找代码库中所有引用旧的 groupId 'ai-native-inline-completions' 的位置
rg --type typescript "'ai-native-inline-completions'"

Length of output: 96


Script:

#!/bin/bash
# 查找代码库中所有引用旧的 groupId 'ai-native-inline-completions' 的位置
rg "'ai-native-inline-completions'"

Length of output: 43

packages/ai-native/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts (7)

1-1: 添加 PreferenceService 的导入

在第 1 行,导入了 PreferenceService,为后续获取用户偏好设置提供了支持。


53-56: 新增 preferenceService 的获取器

在第 53-55 行,添加了 preferenceService 的 getter 方法,遵循了依赖注入的模式,方便在类中访问用户偏好设置。


62-62: 新增 inlineCompletionsSource 属性

在第 62 行,添加了 private inlineCompletionsSource: InlineCompletionsSource,为内联补全功能提供了属性支持。


69-69: 初始化 inlineCompletionsSource

在第 69 行,于 mount 方法中初始化了 inlineCompletionsSource,确保内联补全源在编辑器挂载时被正确设置。


71-74: 调用 registerFeaturehandlerAlwaysVisiblePreference 方法

在第 71-72 行,调用了 this.registerFeature(this.monacoEditor);this.handlerAlwaysVisiblePreference();,正确地注册了特性并处理了“始终可见”偏好设置。


365-365: registerFeature 方法中调用 this.inlineCompletionsSource.fetch()

在第 365 行,添加了对 this.inlineCompletionsSource.fetch() 的调用,确保在注册特性时立即获取内联补全数据。


Line range hint 330-365: registerFeature 方法从 public 修改为 private 可能影响外部依赖

在第 330 行,将 registerFeature 方法的访问修饰符从 public 更改为 private,且返回类型从 IDisposable 变为 void。这可能导致依赖该方法的外部代码出现问题。

请确认在代码库中,没有其他模块依赖于 registerFeature 方法。可以运行以下脚本进行验证:

✅ Verification successful

验证通过:registerFeature 方法无外部依赖

根据搜索结果,代码库中不存在对 registerFeature 方法的外部调用。此更改不会影响外部依赖。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# 描述:检查代码库中是否存在对 `registerFeature` 方法的外部调用

# 搜索对 `registerFeature` 方法的引用,排除当前文件
rg --type typescript 'registerFeature' --glob '!.*/intelligent-completions.controller.ts'

Length of output: 124


Script:

#!/bin/bash
# 描述:检查代码库中是否存在对 `registerFeature` 方法的外部调用

# 搜索对 `registerFeature` 方法的引用,排除当前文件
rg --type ts 'registerFeature' --glob '!.*/intelligent-completions.controller.ts'

Length of output: 557

@Ricbet
Copy link
Member Author

Ricbet commented Sep 25, 2024

/next

Copy link

codecov bot commented Sep 25, 2024

Codecov Report

Attention: Patch coverage is 5.40541% with 70 lines in your changes missing coverage. Please review.

Project coverage is 54.38%. Comparing base (17643d8) to head (9b9ae0c).
Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...-completions/intelligent-completions.controller.ts 0.00% 33 Missing and 5 partials ⚠️
...gent-completions/intelligent-completions.source.ts 0.00% 27 Missing and 3 partials ⚠️
...e-completions/model/inlineCompletionRequestTask.ts 0.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4043      +/-   ##
==========================================
- Coverage   54.39%   54.38%   -0.01%     
==========================================
  Files        1584     1584              
  Lines       97064    97083      +19     
  Branches    19863    19871       +8     
==========================================
+ Hits        52800    52801       +1     
- Misses      36764    36783      +19     
+ Partials     7500     7499       -1     
Flag Coverage Δ
jsdom 49.92% <5.40%> (-0.01%) ⬇️
node 15.57% <5.40%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@opensumi
Copy link
Contributor

opensumi bot commented Sep 25, 2024

🎉 PR Next publish successful!

3.3.4-next-1727252366.0

erha19
erha19 previously approved these changes Sep 25, 2024
@Ricbet Ricbet dismissed stale reviews from bytemain and erha19 via b695cc2 September 25, 2024 09:30
@Ricbet Ricbet force-pushed the refactor/intelligent-completions-alway-visible branch from b695cc2 to 9b9ae0c Compare September 25, 2024 09:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🎨 feature feature required
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE] 保证 Intelligent Completion 的高优先级
3 participants