Repository navigation
Replies: 1 comment
|
开发了一个插件 https://github.com/zhengmz/dsh-auto-fold 补齐自动折叠能力,供参考 实现如果设置了 Compact 后,在切换对话时,会自动折叠回合。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
DSH 版本:0.1.2-rc.1(实测,问题稳定复现);官方最新 master(0.1.5-rc.2, commit c291e79)代码依旧存在该问题
使用形态:浏览器 Web UI(localhost:3080);触发配置:
ui-chat的transcriptView: compact(紧凑视图)问题描述
开启紧凑视图(compact)后,历史轮次的工具调用过程会折叠成一个摘要按钮。但刷新页面后折叠全部失效——所有轮次都展开显示完整工具调用;只有当再点击一次「较早轮次」导航(触发历史翻页加载)后,折叠才恢复。
现象稳定复现,且与会话长度相关(会话越长越明显)。
复现步骤
transcriptView: compact根因分析
折叠渲染入口在
packages/client/ui-chat/src/client/chat/ChatNodeSeat.tsx:historyIncomplete来自ChatView.tsx:即只要会话还有未加载的历史(
hasMore === true),所有轮次的折叠被全局禁用,与具体轮次是否完整无关。而刷新页面时会话只加载尾部一页(
packages/api/session-controller/src/client/sessions/session.ts:首次打开maxMessages: 50)。长会话必然hasMore === true→historyIncomplete === true→ 全部轮次折叠被禁。跳转历史轮次时loadThrough(seq)以每页 200 条向前翻页,目标靠前则加载完整个日志 →hasMore === false→ 折叠恢复。这解释了「跳转后才生效」的现象。为什么值得修
turn/start边界切割,窗口内每个 turn 都是完整的;processSpec本身也只在 turn 完整时才存在。!historyIncomplete作为全局开关禁用的不止「窗口边缘的不完整 turn」,而是所有 turn。已本地验证:直接移除该条件后,折叠在所有场景(刷新、长会话、跳转)都正常工作,未观察到副作用。
建议修复
!historyIncomplete。折叠所需的processSpec/turnClosed/processPresentation仅在该 turn 完整落在加载窗口内时才成立,不完整的 turn 不会进入折叠逻辑,有兜底。processStartSeq早于窗口头部 seq 时才禁用」——只对真正跨越窗口边界的 turn 保守处理。备注
All reactions