Skip to content

feat(buddy): 支持文件、浏览器与产物选区引用 - #245

Open
QAyong wants to merge 2 commits into
useLexora:masterfrom
QAyong:codex/feature-selection-references
Open

QAyong wants to merge 2 commits into
useLexora:masterfrom
QAyong:codex/feature-selection-references

Conversation

@QAyong

@QAyong QAyong commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

背景与关联 / Context and related issue

  • 问题或目标 / Problem or goal: 之前只有"把整份文件/整个页面塞进上下文"的粗糙做法,用户看到一段内容想作为上下文时,无法精确引用它,也无法从回答回到原文位置。常见场景:把 Markdown 里的一段文字、文件里的几行、内置浏览器页面上的某个元素、插件产物的文本片段带进对话。
  • 关联 Issue / Related issue: N/A

主要改动 / Changes

  • 变更 / Change:
    • 文件与 Markdown 选区引用:在资源面板的文件/Markdown 预览里选中文本即可生成引用(含来源路径、格式、范围与偏移),输入框与消息中显示为引用卡片。
    • 浏览器元素引用:在内置浏览器里选择页面元素,生成带选择器与文本快照的引用;从消息可以回到该页面并定位/高亮元素,定位失败时给出提示而不是静默失败。
    • 插件产物引用:可引用插件产物中的文本片段(读取走受限 RPC,不直接读本地文件)。
    • 引用统一走 createDesktopSelectionReferences 与 WorkbenchSelectionReferences:负责来源身份校验(页面 id/URL/文档版本、文件 revision 等)、跨会话/独立面板的作用域归属,以及"定位到来源"和"编辑引用"入口。
    • 投影与展示:buddyUserContentProjection 统一快照文案(文本片段与网页元素快照),ResourceQuoteStrip 等负责引用条与卡片的展示与移除。
    • 桌面 IPC:新增选区引用的编辑命令通道(selectionReferenceEdit,仅接受受信窗口)。
    • 测试:desktopSelectionReferences、ResourceReferenceUi、useBrowserElementReference、browserQuotes、BrowserElementPicker、registerBrowserDesktopIpc、composerDraftRepository。

验证 / Verification

  • 自动检查 / Automated checks: pnpm --filter @uselexora/lexora-buddy type-check 通过;改动文件 eslint 通过;定向测试 unit 4 个文件 + runtime 3 个文件全部通过(test:unit / test:runtime)。
  • 手动验证 / Manual verification: 在文件、Markdown 与内置浏览器页面里选区生成引用,发送后从消息点回原文定位;删除/变更来源后引用失效并提示。
  • 未执行 / Not run: 完整仓库 pnpm lint(只对改动文件跑了 eslint);Playwright 端到端用例未在本地跑。

兼容与风险 / Compatibility and risks

界面变更 / UI changes

  • 输入框与消息中新增引用条/引用卡片;内置浏览器新增元素选择与定位高亮。

@QAyong
QAyong force-pushed the codex/feature-selection-references branch from 4936a37 to fee513a Compare October 8, 2026 06:46

This branch has not been deployed

No deployments
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