Skip to content

feat(agent): 新增可移植会话引用块【已审核 PR】 - #1311

Open
Andreaseszhang wants to merge 1 commit into
proma-ai:mainfrom
Andreaseszhang:feat/agent-session-quote-202607271952
Open

feat(agent): 新增可移植会话引用块【已审核 PR】#1311
Andreaseszhang wants to merge 1 commit into
proma-ai:mainfrom
Andreaseszhang:feat/agent-session-quote-202607271952

Conversation

@Andreaseszhang

Copy link
Copy Markdown
Contributor

概述

新增 Agent 消息选区的可移植会话引用能力。用户可复制单条 Agent 消息中的精确选区并粘贴到 Scratch Pad 或任意 Agent 输入框;界面显示可点击 chip,模型获得带来源的静态快照,并可跳回原始会话消息。

改动

  • apps/electron/src/renderer/lib/agent-quote-reference.ts — 新增引用数据模型、可移植 token、Clipboard HTML/纯文本格式、模型上下文构建与 XML 闭合标签防护。
  • apps/electron/src/renderer/components/agent/AgentQuoteReference.tsx — 新增 TipTap inline atom 与可点击会话引用 chip。
  • apps/electron/src/renderer/components/agent/AgentQuoteNavigationListener.tsxAgentMessages.tsx — 支持从 chip 跨会话打开来源会话、定位并高亮原始消息。
  • AgentHistorySelectionLayer.tsxSelectionActionPopover.tsx — 新增“复制为会话引用块”操作及用途 tooltip;跨消息选区保持拒绝。
  • rich-text-input.tsxScratchPadView.tsxmarkdown-rich-text.tsmessage.tsx — 支持粘贴、渲染、草稿恢复和历史消息中的引用 chip。
  • agent-message-queue.tsAgentView.tsxagent-orchestrator.ts、共享 Agent 类型 — 将历史展示/持久化文本与 SDK 上下文分离:紧凑 token 写入历史,精确选区快照只发给模型;同时保留既有附件和临时选区元数据。
  • agent-quote-reference.test.tsagent-message-queue.test.ts — 覆盖 token 往返、草稿降级恢复、静态上下文隔离、附件/临时选区历史保留。
  • docs/plans/2026-07-27-agent-selection-quote-blocks.md — 记录 MVP 范围和实现决策。

测试方法

  1. 执行 bun install --frozen-lockfile 同步最新上游依赖。
  2. 执行 bun run typecheck,确认全部工作区包通过。
  3. 执行 bun test apps/electron/src/renderer/lib/agent-quote-reference.test.ts apps/electron/src/renderer/lib/agent-message-queue.test.ts apps/electron/src/renderer/lib/markdown-rich-text.test.ts,26 项测试通过。
  4. 执行 bun run --cwd apps/electron build:renderer,构建通过。
  5. 在 Electron 窗口中验证:复制 Agent 消息选区、粘贴到 Scratch Pad/Agent 输入框、切换会话恢复 chip、发送后点击 chip 回跳来源消息。

备注

  • 本 PR 基于最新 origin/main3e45726a)创建。
  • 引用仅支持单条消息内的连续选区;回跳以 messageId 精确定位,轮次仅用于显示。
  • 已完成代码审查并修复附件/临时选区持久化回归和外层引用上下文标签闭合问题。

Made with Proma · GitHub

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