当 DSH 会话多到管不过来:我给 DeepSeek Harness 写了一个「Coding驾驶舱」 DSH-Coding-Workspace

发布时间:2026/9/12 20:32:21
当 DSH 会话多到管不过来:我给 DeepSeek Harness 写了一个「Coding驾驶舱」 DSH-Coding-Workspace 介绍下我的开源项目 dsh-coding-workspace——一个把 DeepSeek Harness(dsh)的单会话界面改造成多工作区并行开发驾驶舱的插件。痛点:AI 编程的「会话泛滥」!用 AI Coding Agent 干活的第 N 天,我遇到了所有重度用户的共同困境:会话开太多。修一个 bug 开一个会话,写一个特性开一个会话,加上子代理,侧栏里躺着一排「无标题会话」,哪个对应哪个任务全靠记忆。任务和代码对不上号。会话不关心它在改哪个目录、哪条分支——但我在乎。三个会话同时动一个仓库,改完互相覆盖,git status 一片红。切来切去太累。看代码要开 IDE,看 git 状态要开终端,看会话要切回 dsh——工具链断成三截。git worktree 是并行开发的正解:每个任务一条分支一个目录,物理隔离互不干扰。但 worktree 的管理体验太原始:git worktree add敲命令、目录散落在磁盘各处、哪个 worktree 上跑着哪个会话全靠脑子记。既然 dsh 是插件化的,为什么不让它自己长出这层工作台?于是有了 dsh-coding-workspace。它长什么样一句话:以 git worktree 并行开发为地基,把 dsh 的单会话界面变成多工作区驾驶舱。项目分组侧栏:三级树看清并行任务侧栏被替换成「项目 → 工作区 → 会话」三级树: demo-app ← 项目组头(git 主仓) main [主要] ← 主工作区(分支名 TAG) feature/login ← worktree(备注/图标/颜色可定制) 修复登录跳转… ← 会话(鲸鱼图标 消息摘要 相对时间) feature/payment几个我特别喜欢的设计:一键导入项目:选一个 git 仓,自动枚举主仓 全部 worktree 批量注册归组,血缘由.git指针文件自动推断,零手动配置。状态是「推」出来的,不是「轮」出来的:会话行的运行中(像素矩阵动画)、等待确认(琥珀点)、后台完成(绿色对勾)全部订阅宿主 mux 帧推送,零轮询。子代理自动嵌套:子代理会话折叠到父会话名下,父行一个▸N胶囊,树再深也不乱。右缘停靠面板:资源管理器 Git,不切窗口面板停靠在右缘真推挤(VSCode 式),两个 TAB 解决「切窗口」问题:资源管理器:文件类型图标、git 状态染色(IDEA 风:修改蓝/新增绿/忽略橙黄,目录聚合整片状态)、右键菜单(默认程序打开、添加到对话、行内重命名、删除)。双击文件直接进编辑器。Git Changes:diffstat(27 -28挂行尾)、Changelist 分组拖拽、勾选子集做部分提交、hover 一键放弃更改。Git Logs:IDEA 风格 lane 拓扑(SVG 贝塞尔连线),任意分支查看,点 commit 的变更文件直接看该提交的 diff。AI commit message:按所选文件的 diff 仓库现有提交风格,流式生成完整的「标题 正文」,生成时输入框锁定防手滑。文件编辑器:编辑器里长出 diff 和「给 AI 的注释」这是我私心最重的部分:编辑视图内联 diff:打开文件即见改动——HEAD 删除的行以红色删除带内联插在原位,新增行绿底,右缘状态条随敲代码实时刷新。可编辑性一点没少:CtrlS、撤回重做、脏标记全保留。行评论(Note for AI):在任意行(或划选一段区间)挂备注,像给同事留 code review 意见一样——然后一键「发送到会话」,格式化好的上下文直接进 AI 的输入框。注释随代码持久化在 sidecar JSON 里,下次打开还在。给 AI 留言这件事,第一次有了「住进代码里」的形态。分栏多分组:文件 TAB 拖到边缘合并成组,多组并存、切离休眠、点击恢复,左边改代码右边看 diff。会话与文件 TAB 顶部混排,中键关闭/归档,滚轮横滚。技术上有几处可以聊的如果你也是插件/前端开发者,这几段踩坑或许有价值:1. Cordis 微内核的 slot 体系。dsh 基于 Cordis,扩展点全靠 slot:侧栏是singleslot(按 priority 遮蔽,插件直接替换官方工作区列表),浮层走shell.overlayadditive list slot(面板/顶栏/编辑器覆盖层各占一枚 entry)。宿主还通过 slot 的 standardProps 白送useSessions/useWorkspaces等响应式快照 hook——插件与宿主共用同一数据源,这是「零轮询」的根基。2. 「CSS 变量桥」停靠推挤。面板要真推挤(内容区让位)而不是浮层遮挡,但又不能碰宿主 inline style——解法是插件自己写 CSS 变量,注入#root { margin-right: var(--panel-width) }让宿主「自愿」让位;检测到同类冲突插件自动退回浮层。顶栏同理,但只推对话列(_centerCol),否则侧栏 LOGO 会被一起压下去。3. 逆向 RPC 之死(教训向)。早期我逆向了宿主前端的内部 RPC(POST /api/workspace.list)拿数据,用得好好的——直到宿主 0.1.2 把 RPC 重组为 Typert Remote 体系,逆向端点全部 404,而 404 响应体是纯文本,被res.json()吃掉后报出来的错误是Unexpected token o,完全看不出和 RPC 有关。最终修法是彻底弃逆向、改吃官方快照源。结论:插件消费宿主数据,只走官方出口,逆向能跑一时,跑不过一次升级。4. diff 是自己写的。unified diff 的行对齐是一个 LCS 纯函数(LCS 行对齐 CRLF 归一 预算截断),独立单测;语法高亮是移植的 highlight.js,逐行渲染 块状态机混合(块注释/模板串整行判定,位置猜法会把单行 JSDoc 误判为未闭合,之后整文件连坐变灰)。168 个单测守着这些纯函数。安装dsh plugin--profileprofile-nameadddsh-coding-workspace如果你也在用 dsh 做多任务并行开发,欢迎试用 提 issue;如果觉得有意思,点个 star 是对独立开发者最大的鼓励。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询