Skip to content

feat(chat): 支持 Desktop 与 WebUI 的结构化会话引用 - #660

Open
yovinchen wants to merge 7 commits into
Stack-Cairn:mainfrom
yovinchen:feat/conversation-references-658
Open

feat(chat): 支持 Desktop 与 WebUI 的结构化会话引用#660
yovinchen wants to merge 7 commits into
Stack-Cairn:mainfrom
yovinchen:feat/conversation-references-658

Conversation

@yovinchen

@yovinchen yovinchen commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

关联 Issue

Closes #658

功能摘要

  • 在 Composer 的 @ 菜单中增加资源类型层,将原有文件/文件夹引用与历史会话引用分开。
  • 支持搜索和引用其他项目的历史会话,同时优先展示当前工作区中的会话。
  • 增加结构化会话引用 Chip,并确保引用经过草稿、排队发送、历史持久化、编辑重发和消息渲染后不会丢失。
  • 支持在 Desktop 和 WebUI 中把侧栏会话拖入 Composer。Composer 投放区优先于 Workbench 分屏投放区,拖到 Composer 之外时仍保留原有分屏行为。
  • 增加条件启用、只读的 ReadConversation 系统工具。工具只能读取当前用户消息明确引用的会话,并通过有界、绑定历史修订版本的分页机制按需读取。
  • 通过 Gateway WebSocket、protobuf 传输和能力协商传递结构化会话引用,使 Desktop 与 WebUI 使用一致的授权和降级规则。
  • 在系统工具目录和设置页面中注册 ReadConversation,明确展示其只读、条件启用属性。

改动范围

  • 模块:agent-uiagent-guiagent-gui/src-tauriagent-gatewayagent-gateway/web
  • 主要路径:
    • crates/agent-ui/src/components/chat/MentionComposer*
    • crates/agent-ui/src/components/chat/ChatHistorySidebarRows.tsx
    • crates/agent-ui/src/pages/chat/ChatComposerBar.tsx
    • crates/agent-ui/src/lib/chat/conversationReferenceDrag.ts
    • crates/agent-ui/src/lib/chat/conversationSearch.ts
    • crates/agent-ui/src/lib/chat/mentionReferences.ts
    • crates/agent-ui/src/lib/chat/composerDraft.ts
    • crates/agent-ui/src/lib/tools/builtinToolCatalog.ts
    • crates/agent-gui/src/lib/tools/conversationTools.ts
    • crates/agent-gui/src/pages/chat/**
    • crates/agent-gui/src-tauri/src/services/gateway/**
    • crates/agent-gateway/internal/**
    • crates/agent-gateway/proto/v2/gateway.proto
    • crates/agent-gateway/web/src/**

截图与运行预览

image image image image image image image image image

截图清单:

  1. 打开 Composer 的 @ 菜单,展示“文件和文件夹”与“会话”两个资源类型入口。
  2. 搜索另一个项目中的会话,并将其插入为会话引用 Chip。
  3. 把侧栏会话拖入 Composer,展示投放提示以及生成的会话引用 Chip。
  4. 确认拖到 Composer 之外时仍会显示并触发原有 Workbench 分屏目标。
  5. 打开“设置 → 系统工具”,展示条件启用、只读的 ReadConversation 工具。
  6. 在 WebUI 中重复会话选择和拖拽引用流程。

Issue #658 中的参考图片仅用于说明产品方向,不能作为本次实现的运行证据。

验证结果

  • mise exec -- pnpm test:gui
    • Desktop 前端共发现并通过 280 个测试文件。
  • mise exec -- pnpm test:webui
    • WebUI 测试 632/632 通过。
  • cargo test -p liveagent --lib
    • 982 项通过,3 项忽略,0 项失败。
  • mise exec -- go test ./...
    • Agent Gateway 全部 Go 包测试通过。
  • mise exec -- pnpm build:gui
    • Desktop 生产构建通过。
  • mise exec -- pnpm build:webui
    • WebUI 生产构建通过。
  • git diff --check origin/main...HEAD
    • 检查通过。
  • 已合并 origin/maindbca2cd1,不存在剩余冲突。

提交前检查

  • 已关联需求 Issue。
  • 已同步目标分支,不存在合并冲突。
  • 改动范围聚焦,不包含无关修改。
  • 不包含密钥、令牌或个人数据。
  • 已补充 Desktop 与 WebUI 实际运行截图。
  • 已更新面向用户的文档,或明确确认本次无需更新。

@yovinchen yovinchen changed the title feat(chat): support structured conversation references across Desktop and WebUI feat(chat): 支持 Desktop 与 WebUI 的结构化会话引用 Aug 28, 2026
@yovinchen
yovinchen marked this pull request as ready for review August 28, 2026 19:35
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.

[Feature] Composer 支持历史会话引用(@ 选择、拖拽与跨项目按需读取)

1 participant