Add conversation references and queued AI handoffs across chat, orchestration, and workflows
维护者通常 1 天内回复
@paullizer 已经在做这个了。
开始于 2026年10月23日。
评估
这个 Issue 还没有评估数据。
描述
Summary
Add two complementary capabilities to SimpleChat: conversation references that pull focused source material into another task, and Send To Conversation handoffs that deliver a focused request/context packet and start AI work in a different conversation. Support manual use, orchestration, plan-editor Ask AI, and personal workflows/workflow Ask AI.
This issue records an investigation and agreed product direction, not an implemented feature. Investigated on the React V2 branch at application version 0.261.380.
User Value
Keep conversations isolated to their specific task or purpose while reusing useful findings from other conversations. Users should not need to paste entire transcripts into a single ever-growing chat. Orchestration and workflows should be able to find relevant prior work, reference it explicitly, and delegate a focused task to another conversation.
Proposed Behavior
Confirmed scope and interaction
- First release: V2 controls with shared backend support; only the authenticated user's own private conversations. Shared/group conversations are deferred, including sources, destinations, and workflow disclosure paths.
- Use
~as a dedicated conversation shortcut, leaving#documents/context,@mentions, and/prompts unchanged. - Display selected conversations as named pills, including inline in the composed/sent message. Stable conversation identity travels separately from its display title.
- Add Reference Conversation and Send To Conversation actions to each eligible conversation's menu. Referencing must not copy the full transcript, change source history, or start work there. Include a portable-reference copy/paste path.
- References retrieve bounded relevant excerpts from the latest visible source messages, with a stable selection for the current turn/workflow run. A new turn/run refreshes that selection.
- Send To Conversation always starts AI work in the destination. If it is busy, queue the handoff until the current turn completes; do not interrupt or replace the active stream.
- Orchestration/workflows may send within the scope explicitly authorized by an approved plan/workflow. New destinations require new approval; merely saving a draft or using Ask AI is not execution approval.
Orchestration and workflows
- Manual references provide the foundation for typed, read-only conversation search/read capabilities requested by the user.
- Ask AI may add or remove explicit conversation sources in a revised plan or workflow draft, with validated operations and source provenance.
- Personal workflows may bind specific conversations or use explicitly configured conversation lookup steps. Resolve under the actual authorized execution identity, not a caller-supplied user ID.
- Sending is a separate side-effect capability, not an implicit consequence of referencing, and not the existing workflow handoff/result-delivery mechanism.
- Source and destination retain focused provenance/status links rather than recursively importing each other's histories. No automatic conversational ping-pong.
Acceptance Criteria
-
~opens an accessible conversation picker; duplicate/renamed titles, removal, keyboard navigation, ordinary tilde/code text, and copied-reference paste work without changing existing#,@, or/behavior. - Manual references work in V2 chat and Ask AI surfaces and remain typed through send, reload, retry/edit, plan revisions, workflow save/load, and execution.
- Ownership/private-scope authorization happens before titles, snippets, messages, or dependent data are exposed and again at execution/reuse. Foreign, shared, deleted, and newly inaccessible references fail safely.
- Search/excerpts exclude full masks, masked ranges, deleted messages, inactive/replaced attempts, hidden artifacts, and disallowed content before matching, ranking, summarization, or model use. Raw metadata/tool payloads and source instructions are not promoted into trusted instructions.
- Context budgets and partial-result/truncation reporting prevent transcript flooding. Source conversation/message provenance is available in answers and workflow results.
- A reviewed manual send creates a durable handoff and one attributed destination turn that starts AI work; the user's active draft/navigation remain intact.
- Busy destinations execute handoffs in order without replacing ongoing work. Refresh/restart, duplicate submissions, cancellation, worker contention, and crash recovery do not duplicate destination messages or blindly replay uncertain AI/tool effects.
- AI/workflow sends are constrained to approved destinations and payload/source rules, with authorization rechecks, bounded chaining/rate controls, and visible queued/running/completed/failed states.
- Existing document workflows, ordinary chat, classic callers without the new fields, and current workflow result delivery retain their behavior.
- Runtime functional tests, route authorization/policy coverage, and Azure-Playwright-compatible V2 UI tests cover success and failure paths. Feature/user/control documentation and generated surface inventory are updated; increment only the third application version segment when implementation lands.
Notes
Investigation evidence
application/v2_ui/src/components/chat/ComposerEditor.tsx,ComposerHighlight.tsx,ConversationRail.tsx: existing picker/inline-token/menu surfaces.application/v2_ui/src/lib/chatContext.ts,chatContextTokens.ts,composerDraft.ts, andstores/chatStore.ts: existing document-oriented context and request contracts. Conversation IDs must not be passed as document IDs or accidentally enable workspace search.application/single_app/route_backend_conversations.py: owned reads, feed and advanced search. Existing advanced search performs broad cross-partition reads before filtering, so it is not a drop-in bounded private-conversation retrieval service.application/single_app/route_backend_chats.py: streaming/non-streaming generation, history and reconnect support.ActiveConversationStreamRegistry.start_sessionreplaces an existing active stream; a durable queue/admission boundary is needed for noninterrupting sends.functions_orchestration_registry.py,functions_orchestration_schema.py,functions_orchestration_adapters.py,functions_orchestration_source_context.py, andfunctions_orchestration_plan_editing.py: capability, typed-source, approval and Ask AI seams.functions_workflow_definitions.py,functions_workflow_bindings.py,functions_workflow_assist*.py: durable reference inputs, per-run binding and validated draft editing.functions_workflow_chat_delivery_worker.pyandfunctions_orchestration_continuation.py: useful durable-delivery/idempotency/lease patterns, but their existing record semantics must not be overloaded for cross-conversation sends.
Related issues and constraints
- Refs #1556 (document references in plan-editor Ask AI); this extends the source family rather than duplicating that request.
- Refs #1650 (message masking bypasses). The new service must not inherit known raw-history/search/MCP masking gaps. Broader remediation of unrelated existing readers remains separately tracked.
- No automatic Azure AI Search indexing/embedding of all conversations is assumed for the initial release; start with bounded authorized lookup and explicit paging/coverage reporting.
- Reference invalidation prevents future retrieval/reuse; it must not imply that already generated prose elsewhere can be retroactively erased.
- Roadmap triage: P2, XL, assigned to @paullizer. XL reflects staged cross-cutting UI, retrieval, durable queue/AI invocation, workflow and authorization work.
- 主要语言
- Python
- 星标
- 157
- 派生
- 117
- 平均合并
- 3 小时 31 分钟
- 30 天内合并 PR
- 226
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoft/simplechat 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 84/100
microsoft/simplechat#1491 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 84/100
microsoft/simplechat#1370 ·
维护者通常 1 天内回复
-
Stale activeGroupOid after group removal interrupts chat in legacy and React V2可能已有人在做 @paullizer 于 3 天前认领。 未关闭bug P1
microsoft/simplechat#1816 · 已指派 1 人 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 55/100
microsoft/simplechat#1804 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 48/100
microsoft/simplechat#1803 ·
维护者通常 1 天内回复
查看 microsoft/simplechat 的全部 Issue
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 72/100
slavakurilyak/awesome-ai-agents#845 ·
维护者通常 1 天内回复
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directory可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭difficulty:2 enhancement good first issue
难度 1/5 1-3 小时 新手友好度 92/100
MakazhanAlpamys/Soup#2178 ·
维护者通常 1 天内回复
-
[BUG] dcg.waggr permutation p-values are folded twice, so near-zero scores get the smallest p-values未关闭
难度 2/5 1-3 小时 新手友好度 75/100
scverse/rapids-singlecell#854 ·
维护者通常 1 天内回复
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGL可能已有人在做 @ninglinLiu 今天认领。 未关闭area:frontend backend:slang bug direction:input
难度 2/5 1-3 小时 新手友好度 70/100
维护者通常 1 天内回复
-
random_elements(unique=True) on an OrderedDict: ZeroDivisionError once only zero weights remain, AssertionError with use_weighting=False可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 13 天内回复