Skip to content

feat(webui): add temporary side conversations - #5364

Open
bingqilinweimaotai wants to merge 3 commits into
HKUDS:mainfrom
bingqilinweimaotai:feature/side-conversation
Open

feat(webui): add temporary side conversations#5364
bingqilinweimaotai wants to merge 3 commits into
HKUDS:mainfrom
bingqilinweimaotai:feature/side-conversation

Conversation

@bingqilinweimaotai

Copy link
Copy Markdown
Contributor

Summary

  • Add /side to open a temporary conversation beside the current WebUI topic.
  • Support multiple isolated side conversations with tab switching, independent drafts/messages/streaming state, and parallel sending from the main and side composers.
  • Keep side conversations transient: they inherit the source topic context, use Restricted workspace access, are not added to topic history, and are discarded on close or disconnect.
  • Add Chinese and English UI copy, documentation, and regression coverage for desktop and compact/mobile layouts.

Design

This builds on the existing tabbed PaneWorkbench introduced in #5322. The source topic remains in the left pane, while the right pane hosts a tabbed set of temporary side conversations. Side-pane layout state stays transient and does not modify the persisted workbench layout.

The backend creates an independently owned transient session for each side conversation by copying the source session context. The implementation keeps the agent core small: no changes are made to the main AgentLoop turn loop.

Preview

image

Validation

  • vitest run src/tests/app-layout.test.tsx src/tests/pane-workbench.test.tsx (73 tests passed)
  • tsc -p tsconfig.build.json
  • vite build

@chengyongru chengyongru added documentation Improvements or additions to documentation feature priority: p2 Normal backlog: minor bug, enhancement, docs, cleanup, edge case, or unvalidated proposal. test webui labels Aug 13, 2026
@chengyongru

chengyongru commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

我们不是已经有临时聊天了嘛,而且输命令才能打开侧边聊天的ux可能不是特别明确诶

@bingqilinweimaotai

Copy link
Copy Markdown
Contributor Author

我们不是已经有临时聊天了嘛,而且输命令才能打开侧边聊天的ux可能不是特别明确诶

可能您指的临时聊天是指从某条消息处进行fork,我认为fork更适合作为一个项目不同方向或者可能性的探讨,因为在codex中fork和/side是两个功能且并不冲突。虽然他们都是继承自主窗口的上下文,但fork会被持久化而/side是真正临时的,且/side因为在主窗口侧边而不是一个新会话,所以在窗口的归属上视觉看起来会更加直观。因为在codex中我个人比较喜欢这个功能,当然如果nanobot并不需要这样的临时会话的话可以关闭此PR

@bingqilinweimaotai

bingqilinweimaotai commented Aug 13, 2026

Copy link
Copy Markdown
Contributor Author

另外我注意到 #5322 的窗格会话目前想要"关闭"或者“移出”的交互逻辑统一在左侧的会话栏,需要点击“...”然后再选择操作,是否有计划在各个窗格右上角增加一个导航栏来进行关闭或者移出等一系列操作进而简化交互

@chengyongru

Copy link
Copy Markdown
Collaborator
image

@chengyongru

Copy link
Copy Markdown
Collaborator

另外我注意到 #5322 的窗格会话目前想要"关闭"或者“移出”的交互逻辑统一在左侧的会话栏,需要点击“...”然后再选择操作,是否有计划在各个窗格右上角增加一个导航栏来进行关闭或者移出等一系列操作进而简化交互

这个可以有, 不过ui、ux怎么设计我得想想

@bingqilinweimaotai

Copy link
Copy Markdown
Contributor Author
image

这个是空会话的临时聊天而不是基于已有会话创建的吧

@chengyongru

Copy link
Copy Markdown
Collaborator

是的, 我懂了, 你想要那种 /btw式的东西是吧?

@bingqilinweimaotai

Copy link
Copy Markdown
Contributor Author

是的, 我懂了, 你想要那种 /btw式的东西是吧?

对的,在cc中是/btw,codex中是/side,我个人认为这个功能很不错

@chengyongru

Copy link
Copy Markdown
Collaborator

那我不建议用slash command的方式去做入口,slash command可能比较适合tui, webui应该有更好的ui设计, 而且你不觉得两个大输入框有点点奇怪嘛🤔

@bingqilinweimaotai

bingqilinweimaotai commented Aug 13, 2026

Copy link
Copy Markdown
Contributor Author

那我不建议用slash command的方式去做入口,slash command可能比较适合tui, webui应该有更好的ui设计, 而且你不觉得两个大输入框有点点奇怪嘛🤔

确实,我主要是参考了codex的ui和交互设计,如果只需要一个输入框类似 #5322 通过焦点切换的方式也可行,UI设计方面我觉得可以在这两个方向做添加?或者您有什么更好的想法
image
如果真的需要这个功能的话我可以进一步做修改 没有计划的也可以CLose🙂

@chengyongru

Copy link
Copy Markdown
Collaborator

感觉确实这个功能确实会在某些场景下有用,具体设计我暂时也没有太好的想法,不过没关系,可以先放着,我把 #5358 搞定后, 尝试来改改这个功能, 到时候我们可以讨论一下相关的问题

@bingqilinweimaotai

Copy link
Copy Markdown
Contributor Author

OK🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation feature priority: p2 Normal backlog: minor bug, enhancement, docs, cleanup, edge case, or unvalidated proposal. test webui

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants