Repository navigation
Replies: 1 comment 1 reply
|
你引的第一处我信,第二处我核了,而且它说明只修
const active = conversation.activeTargets.size > 0
|| (!session.blank && !session.awaitingFirstTurn)
return active ? 'active' : session.promptAttempted ? 'engaging' : 'blank'在这个场景里两个条件都不成立。你引的那处 这就是为什么"命令执行了但什么都不显示"和"日志里 seq 3 就有 根因我认为不是某一个 写报告时我建议的措辞:不要说"chat 视图误判",说"命令节点不参与任何活动判定,而会话相位与视图活动性各自独立计算"。前者会被读成一个 另外一个可用的对照:在已有消息的会话里同一条命令显示正常,说明 |
1 reply
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.
环境
0.2.1-rc.2,web profile现象
在从未发送过任何消息的新会话里执行斜杠命令(
/balance、/versions、/model-sync均可复现),命令实际执行成功、结果也写进了会话日志,但界面完全没有任何显示。连续输入两次,两次都无反应,也没有任何错误提示。复现步骤
/balance回车期望
显示命令输出。
实际
停留在空白页,无输出、无报错。
证据:命令确实执行了
会话日志(
~/.dsh/sessions/.../session.v4.jsonl.zstd):{"type":"command/run","seq":3,"data":{"commandId":"cmd-…","name":"balance","args":" ","source":{"kind":"user"}}} {"type":"command/done","seq":4,"data":{"commandId":"cmd-…","kind":"success","text":"<命令输出已省略>"}}耗时约 180 ms,
kind: "success",输出文本完整写入。对比:同样的
/balance在已有消息的会话里执行,事件结构与上面完全一致、args也一样,显示正常。唯一差别是事件在日志里的位置:seq 3seq 543根因(已定位)
三处代码构成一条链:
①
@deepseek-ai/dsh-client-ui-chat/lib/client.js快照里全是
command节点时,.some()返回false→ chat 视图被判为不活跃。②
@deepseek-ai/dsh-client-ui-conversation/lib/client.js—activityTargets()遍历各视图的
isActive,chat 不活跃 → 返回空集合。③ 同文件 —
conversationPhase()纯命令会话:
activeTargets为空 + 从未发起过 prompt(awaitingFirstTurn仍为 true)+ 未在运行 → 判定为"blank"→ UI 走空白态,transcript 根本没进渲染。补充:命令节点本身是可见的 ——
isVisibleChatNode()只排除system-prompt和name === "permission"的命令,普通命令不会被隐藏。所以问题在「活跃性判定」,不在「可见性」。建议修复
理由:
isVisibleChatNode()已经单独排除了permission命令,isActive再排除全部命令属于重复且过头的过滤;而用户主动执行斜杠命令,显然应当算作"有活动"。已排除的可能
command/run与command/done都正常落盘,kind: success一个可验证的推论
在同一个空会话里先随便发一条消息(哪怕一个「.」),之前
/balance的结果应该会补显出来 —— 因为此时isActive变为 true、阶段翻成active,命令节点就进入渲染了。English TL;DR
Slash commands render nothing in a brand-new, message-less session. The command does execute — the
session log contains a successful
command/run+command/done(kind: "success", full text) —but
dsh-client-ui-chat'schatViewDefinition.isActiveevaluatesfalsefor a snapshot whose nodesare all
command, soactivityTargets()is empty andconversationPhase()(
dsh-client-ui-conversation/lib/client.js) falls through to"blank". The transcript is thereforenever rendered. The identical event pair displays fine in a session that already has messages.
Suggested one-line fix:
isActive: (snapshot) => snapshot.order.length > 0— command nodes arealready visible per
isVisibleChatNode(), which only excludespermission.All reactions