Repository navigation
Replies: 1 comment
|
你的定位全对,而且你能只凭 bundle 就推断出 region 对应的源码路径,相当准。我把你没拿到的那部分补齐:准确文件与行号、以及一条会拦住你那个一行修法的既有测试(这条最关键 —— 你没有源码仓库,看不到它)。 1. 你推断的源码路径全部命中
你引的那段 2. 你说的"内部矛盾"确实存在 —— 而且
|
|
你的定位全对,而且你能只凭 bundle 就推断出 region 对应的源码路径,相当准。我把你没拿到的那部分补齐:准确文件与行号、以及一条会拦住你那个一行修法的既有测试(这条最关键 —— 你没有源码仓库,看不到它)。 1. 你推断的源码路径全部命中
你引的那段 2. 你说的"内部矛盾"确实存在 —— 而且
|
Uh oh!
There was an error while loading. Please reload this page.
摘要
一个已完成的轮次里,如果模型在调用工具之前先输出一段正文,收起抬头「已完成,用时 N 秒」后,这段正文会整条消失,展开才可见。可见回答于是从半句话开始,读起来像被砍了头。
本机实测的那一轮:
[reasoning, text("明白,我一路做到完,不再中途问你。先立个目标把这件事绑住(避免半路停下):"), tool-call(create_goal)][reasoning, text("目标已立(上限 6 轮…)…")]← 最终答案流式期间看不到这个问题:轮次未关闭时
liveProcess / alwaysOpen为真,整轮控件强制展开;turn/end之后折叠才生效——所以现象只在「完成输出之后」出现,用户会以为模型漏答了开场。环境
@deepseek-ai/dsh@0.2.0-rc.2(当前 latest),Web GUI@deepseek-ai/dsh-client-ui-chat@0.2.1-alpha.2复核:判定逻辑相同,因此不是已修问题compact/standard/detailed均可复现(foldCompletedTurns: true);verbose不折叠,不复现代码定位
本机只有发布包、没有源码仓库;下面的 region 名取自 bundle 内的构建注释,源码路径按 region 命名推断(如有出入请以实际文件为准)。
切分侧(region
lib/types/client/conversation-nodes/process-groups.js,推断源码packages/client/ui-chat/src/client/conversation-nodes/process-groups.ts)在rebuild()里已经明确区分两部分——推理进过程组,正文作为过程组之外的独立根节点:折叠侧(region
lib/types/client/chat/ChatNodeSeat.js,推断源码packages/client/ui-chat/src/client/chat/ChatNodeSeat.tsx)的整轮成员判定只看锚点窗口,唯一照顾groupPart的豁免只给「最终答案那一步」:于是出现内部矛盾:同一个
assistant-step节点,切分器判定「正文不属于过程」,折叠器判定「属于过程」,并且只有answerStep享受groupPart豁免。只要轮次里存在「工具调用前的正文」,它就会连同 reasoning、工具行一起被隐藏。answerAnchorSeq来自 regionlib/types/client/conversation-nodes/turn-process.js的latestAnswer():只承认最后一步、不含 tool-call、且有正文的那一步。TurnProcessSpec.messageCount的注释本身就写着 "Reply-bearing durable Assistant messages before the final answer"——这些正文被计入过程窗口,但它们在 UI 上属于回复而不是过程。期望行为
groupPart === "response"的 assistant 位置永远不应成为过程成员;可折叠的应只有 reasoning 部分与工具/过程行。这样「隐藏思考」的心智模型成立,正文在任何模式下都完整。messageCount仅作为data-turn-process-messages存在。让它显示「· 已折叠 N 条过程消息」,可以避免任何内容无声消失。备注
packages/client/ui-chat/README.md#turn-process-folding的措辞是「收起符合条件的已完成轮次,不隐藏最终答案」。按最小契约只有最终答案被保证可见,所以这可以被读成「设计如此」;但分组侧已经切出response这一事实说明实现内部并不认为正文属于过程——把两者对齐,比收缩文档承诺更接近本意。0.2.1-alpha.2新增了data-turn-process-member属性,看起来成员判定近期正在被调试,但规则未变。All reactions