Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

erha19
Copy link
Member

@erha19 erha19 commented Apr 25, 2025

Types

  • 🎉 New Features

Background or solution

image image

Changelog

support code reference and reference bar

Summary by CodeRabbit

  • 新功能
    • 聊天输入和提及组件现支持文件、文件夹和代码片段的上下文管理,可动态添加、移除或清空引用。
    • 聊天输入支持插入代码符号引用,并在上下文中展示已附加的文件和文件夹。
    • 新增“清空上下文”按钮,便捷管理引用内容。
    • 提及输入组件新增“代码”类型提及,支持基于大纲树的代码符号搜索与选择。
    • 优化最近文件夹列表,排除工作区根目录及根路径,提升提及项准确性。
  • 样式
    • 优化了提及输入组件的高度、图标和上下文展示样式,提升界面一致性和可用性。
  • 本地化
    • 新增中英文“清空上下文”、“引用数量描述”等相关界面文案。

@erha19 erha19 requested review from ensorrow, Aaaaash and Ricbet April 25, 2025 07:24
@erha19
Copy link
Member Author

erha19 commented Apr 25, 2025

/next

@opensumi opensumi bot added the 🎨 feature feature required label Apr 25, 2025
Copy link
Contributor

coderabbitai bot commented Apr 25, 2025

## Walkthrough

本次更改为 AI 聊天输入和上下文管理引入了“代码”引用的新占位符(`{{@code:...}}`),支持指定文件及其行范围,并在界面中集成了上下文文件/文件夹的管理功能。`LLMContextService` 现已作为新属性传递给相关组件,实现了上下文文件的动态添加、移除和清空。Mentions 输入组件与 OutlineTreeService 集成,支持代码符号的智能引用。样式文件也针对上下文展示做了增强,并新增了相关的本地化条目。

## Changes

| 文件或路径分组 | 变更摘要 |
|---|---|
| packages/ai-native/src/browser/chat/chat.view.tsx | 移除对 `llmContextService.addFileToContext``addFolderToContext` 的直接调用,新增 `{{@code:...}}` 占位符处理,并将 `contextService` 作为新属性传递。 |
| packages/ai-native/src/browser/components/ChatMentionInput.tsx | 集成 OutlineTreeService,支持“代码”类型 mention,缓存并筛选符号,完善最近文件夹筛选逻辑,新增 `contextService` 属性。 |
| packages/ai-native/src/browser/components/mention-input/mention-input.module.less | 调整 mention 输入组件的高度、图标、描述等样式,新增上下文相关样式类。 |
| packages/ai-native/src/browser/components/mention-input/mention-input.tsx | 增强 MentionInput,集成上下文文件管理,支持文件/文件夹/代码引用的动态添加、移除和清空,新增上下文清空 UI。 |
| packages/ai-native/src/browser/components/mention-input/types.ts | `MentionItem` 类型新增 `symbol``kind` 属性,`MentionInputProps` 新增 `contextService` 属性。 |
| packages/ai-native/src/browser/context/llm-context.service.ts | `onDidContextFilesChangeEmitter` 事件负载新增 `attachedFolders` 字段。 |
| packages/ai-native/src/browser/types.ts | `ChatInputRender` 类型新增可选属性 `contextService`|
| packages/ai-native/src/common/llm-context.ts | `LLMContextService``onDidContextFilesChangeEvent` 事件类型新增 `attachedFolders` 字段。 |
| packages/i18n/src/common/en-US.lang.ts<br>packages/i18n/src/common/zh-CN.lang.ts | 新增上下文管理相关的本地化字符串。 |
| configs/ts/tsconfig.build.json | 调整 `tsconfig.outline.json` 在引用列表中的顺序。 |
| packages/ai-native/package.json | 新增对 `@opensumi/ide-outline` 的 workspace 依赖。 |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant User
    participant ChatInput
    participant MentionInput
    participant LLMContextService
    participant OutlineTreeService

    User->>ChatInput: 输入内容(含@file/@folder/@code占位符)
    ChatInput->>MentionInput: 渲染 mention 列表
    MentionInput->>OutlineTreeService: 获取代码符号(@code)
    OutlineTreeService-->>MentionInput: 返回符号列表
    User->>MentionInput: 选择文件/文件夹/代码引用
    MentionInput->>LLMContextService: addFileToContext / addFolderToContext
    LLMContextService-->>MentionInput: 更新上下文文件事件
    MentionInput->>ChatInput: 插入 mention 标签
    User->>MentionInput: 按下清空上下文按钮
    MentionInput->>LLMContextService: cleanFileContext
    LLMContextService-->>MentionInput: 更新上下文文件事件

Possibly related PRs

  • chore: improve chat context #4407: 该 PR 也涉及 LLMContextService 的结构与事件负载调整,与本次 PR 在上下文文件管理和事件结构方面有直接代码层面的关联。

Suggested labels

🎨 feature

Suggested reviewers

  • Aaaaash
  • Ricbet

<!-- walkthrough_end -->
<!-- This is an auto-generated comment: all tool run failures by coderabbit.ai -->

> [!WARNING]
> There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.
> 
> <details>
> <summary>🔧 ESLint</summary>
> 
> > If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.
> 
> yarn install v1.22.22
> [1/4] Resolving packages...
> warning [email protected]: This version is no longer supported. Please see https://eslint.org/version-support for other options.
> warning eslint > @humanwhocodes/[email protected]: Use @eslint/config-array instead
> warning eslint > @humanwhocodes/config-array > @humanwhocodes/[email protected]: Use @eslint/object-schema instead
> warning eslint > file-entry-cache > flat-cache > [email protected]: Rimraf versions prior to v4 are no longer supported
> warning eslint > file-entry-cache > flat-cache > rimraf > [email protected]: Glob versions prior to v9 are no longer supported
> warning eslint > file-entry-cache > flat-cache > rimraf > glob > [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
> warning eslint-import-resolver-typescript > [email protected]: Glob versions prior to v9 are no longer supported
> error Couldn't find any versions for "@opensumi/ide-dev-tool" that matches "workspace:*"
> info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
> 
> 
> 
> </details>

<!-- end of auto-generated comment: all tool run failures by coderabbit.ai -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 10fad97596316fc0ad3914d8be308bc813483998 and b35515eda0454d220b67c2a27e78f4d252dbc57b.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `yarn.lock` is excluded by `!**/yarn.lock`, `!**/*.lock`

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `packages/ai-native/src/browser/components/mention-input/mention-input.tsx` (10 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* packages/ai-native/src/browser/components/mention-input/mention-input.tsx

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (9)</summary>

* GitHub Check: 🚀🚀🚀 Next Version for pull request
* GitHub Check: unittest (ubuntu-latest, 18.x, jsdom)
* GitHub Check: unittest (ubuntu-latest, 18.x, node)
* GitHub Check: unittest (macos-latest, 18.x, node)
* GitHub Check: unittest (macos-latest, 18.x, jsdom)
* GitHub Check: build (ubuntu-latest, 20.x)
* GitHub Check: build-windows
* GitHub Check: ubuntu-latest, Node.js 20.x
* GitHub Check: build (macos-latest, 20.x)

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->

<details open="true">
<summary>✨ Finishing Touches</summary>

- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---

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.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=opensumi/core&utm_content=4519):

- 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 generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this 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](https://docs.coderabbit.ai/guides/configure-coderabbit) 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](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

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: 6

🧹 Nitpick comments (2)
packages/ai-native/src/browser/components/ChatMentionInput.tsx (1)

71-73: 符号缓存未随活动文件变化而刷新
prevOutlineItems 只在首次拉取时赋值,之后若用户切换到其他文件,其 outline 变化不会反映到缓存,可能出现符号过期。建议在 currentUri 变化时清空缓存:

useEffect(() => {
  prevOutlineItems.current = [];
+}, [outlineTreeService.currentUri]);
packages/ai-native/src/browser/components/mention-input/mention-input.tsx (1)

1024-1091: 清空上下文按钮应在无附件时隐藏或禁用
变量 hasContext 已计算但未被使用,导致即使没有任何文件/文件夹也渲染“清空上下文”按钮且计数显示为 0。可以按如下方式改进:

-          <Popover
+          {hasContext && (
+            <Popover
@@
-          </Popover>
+            </Popover>
+          )}

这样可避免 UI 冗余并减少用户困惑。

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 24334e4 and 41af4cf.

📒 Files selected for processing (10)
  • packages/ai-native/src/browser/chat/chat.view.tsx (2 hunks)
  • packages/ai-native/src/browser/components/ChatMentionInput.tsx (6 hunks)
  • packages/ai-native/src/browser/components/mention-input/mention-input.module.less (5 hunks)
  • packages/ai-native/src/browser/components/mention-input/mention-input.tsx (10 hunks)
  • packages/ai-native/src/browser/components/mention-input/types.ts (3 hunks)
  • packages/ai-native/src/browser/context/llm-context.service.ts (1 hunks)
  • packages/ai-native/src/browser/types.ts (2 hunks)
  • packages/ai-native/src/common/llm-context.ts (1 hunks)
  • packages/i18n/src/common/en-US.lang.ts (1 hunks)
  • packages/i18n/src/common/zh-CN.lang.ts (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (3)
packages/ai-native/src/browser/context/llm-context.service.ts (1)
packages/ai-native/src/common/llm-context.ts (1)
  • FileContext (49-52)
packages/ai-native/src/browser/types.ts (1)
packages/ai-native/src/common/llm-context.ts (1)
  • LLMContextService (3-47)
packages/ai-native/src/browser/components/mention-input/types.ts (1)
packages/ai-native/src/common/llm-context.ts (1)
  • LLMContextService (3-47)
⏰ Context from checks skipped due to timeout of 90000ms (5)
  • GitHub Check: 🚀🚀🚀 Next Version for pull request
  • GitHub Check: build-windows
  • GitHub Check: build (ubuntu-latest, 20.x)
  • GitHub Check: build (macos-latest, 20.x)
  • GitHub Check: ubuntu-latest, Node.js 20.x
🔇 Additional comments (15)
packages/i18n/src/common/en-US.lang.ts (1)

1466-1468: 添加关于 AI 聊天上下文的新本地化条目

这些新增的本地化条目为 AI 聊天组件提供了上下文管理功能的文本,包括清除上下文的按钮标签、显示引用总数的描述以及清除引用的操作提示。这些文本将用于增强用户对聊天上下文和引用的管理体验。

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

31-31: 为 ChatInputRender 类型添加上下文服务支持

这个变更导入并添加了可选的 contextService 属性到 ChatInputRender 类型接口中,使聊天输入组件能够访问 LLM 上下文服务。这是实现上下文管理功能的必要类型支持,与新增加的本地化条目相对应。

Also applies to: 170-170

packages/ai-native/src/browser/context/llm-context.service.ts (1)

48-48: 扩展上下文变更事件以支持文件夹引用

在事件负载中添加 attachedFolders 属性,使 LLMContextService 能够跟踪和管理文件夹上下文。这与现有的文件上下文管理方式保持一致,增强了上下文服务的功能,允许用户在聊天中引用整个文件夹。

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

1234-1236: 添加 AI 聊天上下文的中文本地化条目

新增三个中文本地化条目,对应英文版的上下文管理功能文本。这些文本很好地表达了清空上下文、显示引用计数以及清空引用的操作,翻译准确且符合中文使用习惯。

packages/ai-native/src/common/llm-context.ts (1)

32-37: 扩展了上下文文件变化事件的数据结构

事件接口中添加了 attachedFolders 属性,使上下文服务能够跟踪并通知已附加文件夹的变化。这个更改与 addFolderToContext 方法配合,完善了上下文管理功能。

packages/ai-native/src/browser/components/mention-input/types.ts (3)

1-4: 添加了必要的符号和上下文服务导入

这些导入支持代码符号引用功能,让组件能够处理和展示来自 Monaco 编辑器的文档符号信息。


15-17: 增强了 MentionItem 支持符号信息

MentionItem 接口添加的 symbolkind 属性使其能够携带文档符号的元数据,这对于实现代码引用功能至关重要。


91-91: 集成上下文服务到输入组件

LLMContextService 作为可选属性添加到 MentionInputProps 接口,使输入组件能够访问和管理上下文文件和文件夹,提升了组件的上下文感知能力。

packages/ai-native/src/browser/chat/chat.view.tsx (1)

896-896: 将上下文服务传递给聊天输入组件

通过将 llmContextService 作为 contextService 属性传递给 ChatInputWrapperRender 组件,实现了聊天输入与上下文管理服务的集成。这种设计使相关组件能够共享上下文状态,提高了代码的可维护性。

packages/ai-native/src/browser/components/mention-input/mention-input.module.less (6)

22-24: 优化了编辑器区域的高度设置

调整了行高和高度限制,为用户提供更舒适的输入体验。行高增加到24px,最小高度设为72px,最大高度为120px,使文本输入区域更加宽敞。


143-179: 添加了上下文容器的样式

新增的上下文容器样式支持显示已附加的文件和文件夹,包括悬停交互效果,提升了用户体验。当用户悬停时,将显示关闭图标替代外链图标,使界面操作更加直观。


227-230: 优化了提及项左侧区域的显示

添加了 max-width: 100% 限制,防止内容溢出导致布局问题,提高了组件在不同内容长度下的稳定性。


237-238: 调整了图标的尺寸和行高

图标尺寸增加到22px并强制设置行高,使图标与文本更好地对齐,提升了视觉上的一致性。


256-256: 修改了描述文本的方向

添加 direction: rtl 属性改变了文本方向,这样在文本过长需要截断时,会从右侧开始显示,保留了更重要的路径部分信息。


277-309: 添加了上下文项的样式定义

新增的上下文项样式提供了清晰的视觉展示,包括背景色、边框圆角和悬停效果。这些样式使上下文项在界面中易于识别和操作,特别是移除按钮的悬停透明度变化提供了良好的交互反馈。

Comment on lines +719 to +737
const codePattern = /\{\{@code:(.*?)\}\}/g;
const codeMatches = processedContent.match(codePattern);
if (codeMatches) {
for (const match of codeMatches) {
const filePathWithLineRange = match.replace(/\{\{@code:(.*?)\}\}/, '$1');
const [filePath, lineRange] = filePathWithLineRange.split(':');
let range: [number, number] = [0, 0];
if (lineRange) {
const [startLine, endLine] = lineRange.slice(1).split('-');
range = [parseInt(startLine, 10), parseInt(endLine, 10)];
}
const fileUri = new URI(filePath);
const relativePath = (await workspaceService.asRelativePath(fileUri))?.path || fileUri.displayName;
processedContent = processedContent.replace(
match,
`\`<attached_file>${relativePath}:L${range[0]}-${range[1]}\``,
);
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

实现了代码引用的占位符处理

添加了对 {{@code:...}} 模式的支持,可以指定文件路径和行范围,格式转换为 `<attached_file>relativePath:Lstart-end`。处理流程与文件和文件夹的处理保持一致。

有一点需要注意的是,当行范围格式不符合预期时,代码缺少健壮的错误处理。建议增加对格式错误的检查和处理。

 const [filePath, lineRange] = filePathWithLineRange.split(':');
 let range: [number, number] = [0, 0];
 if (lineRange) {
-  const [startLine, endLine] = lineRange.slice(1).split('-');
-  range = [parseInt(startLine, 10), parseInt(endLine, 10)];
+  try {
+    if (lineRange.startsWith('L')) {
+      const [startLine, endLine] = lineRange.slice(1).split('-');
+      if (startLine && endLine) {
+        range = [parseInt(startLine, 10) || 0, parseInt(endLine, 10) || 0];
+      }
+    }
+  } catch (e) {
+    console.warn('解析行范围失败:', lineRange, e);
+  }
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const codePattern = /\{\{@code:(.*?)\}\}/g;
const codeMatches = processedContent.match(codePattern);
if (codeMatches) {
for (const match of codeMatches) {
const filePathWithLineRange = match.replace(/\{\{@code:(.*?)\}\}/, '$1');
const [filePath, lineRange] = filePathWithLineRange.split(':');
let range: [number, number] = [0, 0];
if (lineRange) {
const [startLine, endLine] = lineRange.slice(1).split('-');
range = [parseInt(startLine, 10), parseInt(endLine, 10)];
}
const fileUri = new URI(filePath);
const relativePath = (await workspaceService.asRelativePath(fileUri))?.path || fileUri.displayName;
processedContent = processedContent.replace(
match,
`\`<attached_file>${relativePath}:L${range[0]}-${range[1]}\``,
);
}
}
const [filePath, lineRange] = filePathWithLineRange.split(':');
let range: [number, number] = [0, 0];
if (lineRange) {
try {
if (lineRange.startsWith('L')) {
const [startLine, endLine] = lineRange.slice(1).split('-');
if (startLine && endLine) {
range = [parseInt(startLine, 10) || 0, parseInt(endLine, 10) || 0];
}
}
} catch (e) {
console.warn('解析行范围失败:', lineRange, e);
}
}

Comment on lines +127 to +133
description: `${relativePath?.root ? relativePath.path : ''}:L${treeNode.raw.range.startLineNumber}-${
treeNode.raw.range.endLineNumber
}`,
kind: treeNode.raw.kind,
contextId: `${outlineTreeService.currentUri?.codeUri.fsPath}:L${treeNode.raw.range.startLineNumber}-${treeNode.raw.range.endLineNumber}`,
icon: getSymbolIcon(treeNode.raw.kind) + ' outline-icon',
};
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

contextId 包含行号信息导致 URI 无效
contextId 既包含 fsPath 又拼接了 :Lstart-end,而 handleSelectItem 中又将同一字符串包进 new URI(...),这会生成非法 URI,并在 addFileToContext 时重复传递行号信息。
建议:

  1. contextId 仅保存文件绝对路径;
  2. 行号信息通过额外字段(如 range)传递。
- contextId: `${outlineTreeService.currentUri?.codeUri.fsPath}:L${treeNode.raw.range.startLineNumber}-${treeNode.raw.range.endLineNumber}`,
+ contextId: outlineTreeService.currentUri?.codeUri.fsPath,
+ range: [treeNode.raw.range.startLineNumber, treeNode.raw.range.endLineNumber],

后续在 handleSelectItem 中读取 item.range 传入 addFileToContext

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
description: `${relativePath?.root ? relativePath.path : ''}:L${treeNode.raw.range.startLineNumber}-${
treeNode.raw.range.endLineNumber
}`,
kind: treeNode.raw.kind,
contextId: `${outlineTreeService.currentUri?.codeUri.fsPath}:L${treeNode.raw.range.startLineNumber}-${treeNode.raw.range.endLineNumber}`,
icon: getSymbolIcon(treeNode.raw.kind) + ' outline-icon',
};
description: `${relativePath?.root ? relativePath.path : ''}:L${treeNode.raw.range.startLineNumber}-${
treeNode.raw.range.endLineNumber
}`,
kind: treeNode.raw.kind,
contextId: outlineTreeService.currentUri?.codeUri.fsPath,
range: [treeNode.raw.range.startLineNumber, treeNode.raw.range.endLineNumber],
icon: getSymbolIcon(treeNode.raw.kind) + ' outline-icon',

Comment on lines 710 to 716
// 创建图标容器
const iconSpan = document.createElement('span');
iconSpan.className = cls(
styles.mention_icon,
item.type === 'file' ? labelService?.getIcon(new URI(item.text)) : getIcon('folder'),
item.type === MentionType.FILE ? labelService?.getIcon(new URI(item.text)) : getIcon('folder'),
);
mentionTag.appendChild(iconSpan);
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

文件图标解析使用了不完整路径
此处 new URI(item.text) 仅为文件名,缺少目录信息,labelService.getIcon 可能无法解析正确图标。建议改用 item.contextId

- item.type === MentionType.FILE ? labelService?.getIcon(new URI(item.text)) : getIcon('folder'),
+ item.type === MentionType.FILE ? labelService?.getIcon(new URI(item.contextId)) : getIcon('folder'),
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// 创建图标容器
const iconSpan = document.createElement('span');
iconSpan.className = cls(
styles.mention_icon,
item.type === 'file' ? labelService?.getIcon(new URI(item.text)) : getIcon('folder'),
item.type === MentionType.FILE ? labelService?.getIcon(new URI(item.text)) : getIcon('folder'),
);
mentionTag.appendChild(iconSpan);
// 创建图标容器
const iconSpan = document.createElement('span');
iconSpan.className = cls(
styles.mention_icon,
item.type === MentionType.FILE
? labelService?.getIcon(new URI(item.contextId))
: getIcon('folder'),
);
mentionTag.appendChild(iconSpan);

@erha19
Copy link
Member Author

erha19 commented Apr 25, 2025

/next

@erha19
Copy link
Member Author

erha19 commented Apr 25, 2025

/next

@opensumi
Copy link
Contributor

opensumi bot commented Apr 25, 2025

🎉 PR Next publish successful!

3.8.3-next-1745566910.0

Copy link

codecov bot commented Apr 25, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 53.12%. Comparing base (24334e4) to head (b35515e).
Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #4519   +/-   ##
=======================================
  Coverage   53.11%   53.12%           
=======================================
  Files        1665     1665           
  Lines      102731   102731           
  Branches    22248    22248           
=======================================
+ Hits        54566    54574    +8     
+ Misses      40066    40059    -7     
+ Partials     8099     8098    -1     
Flag Coverage Δ
jsdom 48.61% <ø> (+<0.01%) ⬆️
node 12.12% <ø> (ø)

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.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@erha19
Copy link
Member Author

erha19 commented Apr 25, 2025

/next

@opensumi
Copy link
Contributor

opensumi bot commented Apr 25, 2025

🎉 PR Next publish successful!

3.8.3-next-1745568063.0

@erha19 erha19 requested a review from life2015 April 27, 2025 04:05
@erha19 erha19 merged commit 909296f into main Apr 27, 2025
12 of 14 checks passed
@erha19 erha19 deleted the feat/improve-chat-context branch April 27, 2025 06:04
@erha19 erha19 mentioned this pull request May 20, 2025
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.

2 participants