You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
未选 Workspace 无法开始对话(Starting a conversation should not require picking a workspace)
#6176
/** * Start a New Session flow and navigate to its Session. * @param workspaceId - explicit target; absent inherits the current or most recent Workspace. */startSession(workspaceId?: WorkspaceId): void;// @deepseek-ai/dsh-client-ui-workspace lib/types/client/navigation.d.ts
Summary. In the dsh Web client, a user with no Workspace must pick a directory before the first
message can be sent. Directory choice is an execution-time need (cwd, sandbox root, tool roots), not a
precondition for talking, and for a new user it is a pure blocker: they are asked to make a decision
about a concept they have not met yet.
This is a UI-layer gate, not a model constraint. The harness already tolerates a Session with no
Workspace:
SessionCreateRequest.workspaceId and cwd are both optional
(@deepseek-ai/dsh-api-session-controller, lib/types/types.d.ts).
UiWorkspace.startSession(workspaceId?: WorkspaceId) takes an optional workspace and documents that
an absent value "inherits the current or most recent Workspace"
(@deepseek-ai/dsh-client-ui-workspace, lib/types/client/navigation.d.ts).
An "Ungrouped" session set already exists as the destination for sessions whose Workspace was
deleted (dsh-client-ui-workspace README, "Managing sessions").
Proposal. (1) Let the hero primary action work with no Workspace selected and file the session
under Ungrouped. (2) Lazy binding: request a directory only when a tool actually needs a cwd, with an
explicit "bind this session to a directory" action. (3) Reduce picker friction: most-recent first, a
"no project / scratch directory" shortcut, enter-to-confirm. (4) If the gate is intentional, say why
on the first screen instead of leaving new users to guess.
Impact. No host or protocol changes required (optional workspaceId and the Ungrouped bucket
already exist); the change is confined to the hero's enablement logic and its startSession() call
site, and workspace-grouped session management is unaffected.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
product-interaction0.1.5-rc.1,Windows,Web profile现象
Web 端在没有任何 Workspace 时,必须先选一个目录才能发出第一条消息。
对于"我只想问个问题 / 聊两句、不碰文件"的场景,输入被卡在一次目录决策上。
复现:打开 dsh web → 不添加任何 Workspace → 在输入框写消息 → 无法开始对话。
为什么值得改
不是用户表达一句话的前提。
关键点:模型层其实没有这个约束
这一点是我觉得最值得产品侧讨论的——"会话必须属于某个 Workspace"并不是数据模型的不变量:
SessionCreateRequest里 workspace 和 cwd 都是可选的:UiWorkspace.startSession的签名本身就允许不传 workspace,文档注释写明会继承当前或最近使用的 Workspace:已经存在 "Ungrouped" 这个不属于任何 Workspace 的会话集合:Workspace 被删除后,它的 Session
就留在 Ungrouped(见
dsh-client-ui-workspaceREADME 的 "Managing sessions")。也就是说:宿主和模型层都容得下"没有 Workspace 的会话",现成的容器(Ungrouped)也有了,
阻塞点是 hero 上那个 workspace picker 的前置校验。
建议(按改动量从小到大)
首条消息照常发送。数据模型零改动。
这条最贴近"想聊就聊、要干活再选目录"的直觉。
预期影响
startSession()的调用点。English version
Summary. In the dsh Web client, a user with no Workspace must pick a directory before the first
message can be sent. Directory choice is an execution-time need (cwd, sandbox root, tool roots), not a
precondition for talking, and for a new user it is a pure blocker: they are asked to make a decision
about a concept they have not met yet.
This is a UI-layer gate, not a model constraint. The harness already tolerates a Session with no
Workspace:
SessionCreateRequest.workspaceIdandcwdare both optional(
@deepseek-ai/dsh-api-session-controller,lib/types/types.d.ts).UiWorkspace.startSession(workspaceId?: WorkspaceId)takes an optional workspace and documents thatan absent value "inherits the current or most recent Workspace"
(
@deepseek-ai/dsh-client-ui-workspace,lib/types/client/navigation.d.ts).deleted (
dsh-client-ui-workspaceREADME, "Managing sessions").Proposal. (1) Let the hero primary action work with no Workspace selected and file the session
under Ungrouped. (2) Lazy binding: request a directory only when a tool actually needs a cwd, with an
explicit "bind this session to a directory" action. (3) Reduce picker friction: most-recent first, a
"no project / scratch directory" shortcut, enter-to-confirm. (4) If the gate is intentional, say why
on the first screen instead of leaving new users to guess.
Impact. No host or protocol changes required (optional
workspaceIdand the Ungrouped bucketalready exist); the change is confined to the hero's enablement logic and its
startSession()callsite, and workspace-grouped session management is unaffected.
All reactions