Repository navigation
Replies: 1 comment
|
更细分的单会话迁移,是否也可以做一下, |
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.
痛点
工作区目录只能「新建时选一次」,之后改不了。两个常见场景都很难受:
D:\A\B,项目结构调完整理后想换成D:\A。D:\A\B1和D:\A\B2其实是同一个项目的两块,想并到一个工作区下。现在唯一的做法是「新建会话 → 重新选目录」,代价是:旧会话的历史、标题、审批记录、工具调用全留在旧工作区下,要回去翻;原来那个工作区变成一个再也用不上的空壳。
期望:左侧工作区目录上右键,多两个入口 —— 迁移工作区…、合并到…。
现状核对(本地 0.2.1-rc.2 实测)
@deepseek-ai/dsh-api-workspace-controllercreate / rename / remove / reorder / reorderSessions / archive / unarchive。rename改的是标题,不是目录;没有任何 rebind / migrate。@deepseek-ai/dsh-workspaceREADME.zh.md:174路径实际散在四层持久化里:会话 header 的
cwd、sessions 目录路径、workspace registry(workspace.json)、投影缓存;另有运行时状态(持久终端 cwd、workspace-write 策略根、子进程继承的 cwd)。所以这不是改一个字段能解决的,需要一次显式的「重新归属(rehome)」。相关但不等价的既有讨论:#4953(stale absolute cwd)、#3277(目录移动后 bash/grep/glob 一直 spawn ENOENT,且错误信息误导)、#1315(目录迁移后启动崩溃,希望支持会话重新归属)、#430(没有工作区的全局会话)。社区还长出了
dsh-mv-session、dsh-workspace-mover、dsh-session-mgr这类第三方补丁 —— 需求是真的,只是每个都得停机一次、且各自实现一遍。建议的实现语义
迁移工作区(单工作区换目录)
A是B的前缀或反之都该拒绝并说明)。cwd为目标路径。合并工作区(多对一)
cwd),源工作区条目删除。一个必须写进注释的坑
session.jsonl.zstd是多帧 zstd 流,帧 0 恰好是一行 header,启动时用assertZstdHeaderFrame断言「帧 0 解压出来正好是一行」。所以改写cwd只能逐帧解压 → 只重写 header 帧 → 按原帧边界重新压回。千万不能「整文件解压 → 改 → 再压一遍」:那样会把多帧塌成一帧,
dsh web直接启动崩溃,而且现场很难看出是编码问题。这条建议的提出者已经踩过一次,希望实现时别踩第二次。验收标准
spawn ENOENT/ stale cwd 一类错误;如果暂时不打算做
那至少补两件事,成本很低:
rename的语义写清楚 —— 它只改标题、不改目录,这一点在 UI 和文档里都不明显,很容易被当成「重命名工作区目录」。环境:Windows,DSH Desktop 0.2.1-rc.2(
deepseek-harness桌面端)。All reactions