dsh-project-groups:用项目标签重组 DSH 侧栏工作区

前言

在 DeepSeek Harness(DSH)里,官方侧栏「工作区」按目录所有权组织会话:Header 里不可变的 cwd 必须等于某工作区的 path,成员关系每次读取时现算,并没有单独存成「项目归属」。这套模型适合事先固定目录的开发方式;若你习惯完全权限、不按目录切工作,会遇到几个硬约束——没有 RPC 能在工作区之间搬运会话,cwd 在设计上被冻结;新建工作区会强制选目录,标题往往只是文件夹名。侧栏因此很难回答「这段对话属于哪个项目」。

下面介绍社区插件 dsh-project-groups(维护者 ThinkofRain1213,分类:客户端)。它在 DSH 0.2.1 系壳上以 1:1 方式接管官方工作区浏览区,把分组从目录上摘下来,改成纯前端的项目标签;并为每个项目配工作文档、格式规范与关联链接。关掉插件后,注入与监听器随插件 fiber 销毁,官方 @deepseek-ai/dsh-client-ui-workspace 重新启用,行为回到原版。

这是什么

dsh-project-groups 是为 DSH 写的客户端插件,核心定位可以概括为四件事:

  1. 接管侧栏「工作区」浏览区,用项目分组替代官方的按工作区分组;
  2. 给每个项目一份工作文档,并把当前格式规范注入会话;
  3. 登记关联链接(如 GitHub 上游),随会话一起注入;
  4. 在设置页展示插件此刻真正写入运行时上下文的文本,以及各状态下的分块差异。

项目没有目录字段,只是贴在会话上的标签;会话仍落在插件配置的「底层工作区」上。源码与说明见 GitHub 仓库,社区目录页:skillhub.cn/plugins/ThinkofRain1213/dsh-project-groups。DSH 生态强调「一切皆插件」;SkillHub 等目录是独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

侧栏:1:1 复刻 + 项目分组

插件在自有 bundle id 下运行官方工作区浏览器的行为副本,并通过 cordis.patch.yml 禁用官方 ui-workspace 行——单槽位不能双占用,否则是硬启动错误。在此之上叠加:

  • 项目行与「未分组」桶,替代官方按工作区分组;
  • 拖拽归类:会话在项目间拖动,或拖回「未分组」;
  • 项目的新建 / 重命名 / 删除 / 拖拽排序(标题唯一);
  • 新会话落点:项目行「+」、未分组「+」、顶栏按钮均落在底层工作区;
  • 搜索:结果行显示所属项目,而非工作区;
  • 关联链接:编辑项目时可登记上游链接,与「关联目录」并列;格式不对只提示,不拦截保存。

关掉插件后,patch 中的 disable 不再生效,官方侧栏行恢复,界面与行为应与未安装时一致(README 建议以此作为验证方式之一)。

工作文档与文档规范

每个项目对应一份 md 工作文档,统一存放在 $DSH_HOME/project-groups/;上传的规范放在同目录的 specs/。路径不可自定义,换机器路径仍一致。

设置页「文档规范」有三种全局来源:

选项 含义
无 不强制更新格式:无既定格式则自由写,有则在其基础上写
默认 使用插件内置规范(随包升级而变)
自定义 上传自有 md 规范,可逐个上传 / 切换 / 删除

另有「为每项目单独调整文档规范」:开启后,新建与编辑项目时可选择 跟随全局 / 无 / 默认 / 各已上传规范。

规范的身份是内容哈希,不是文件名。覆盖同名规范或插件升级改动内置规范,都会被识别为「规范变了」。若发现文档仍按旧规范书写,注入会要求模型通过 ask_user_question 询问用户:

① 按新规范重写   ② 本次忽略   ③ 在规范再次变更前忽略

选 ① 时按仓库内 spec/REWRITE-FLOW.md 执行;约束是不得因格式迁移丢失信息。注入并非每步都发生,而是在会话首轮、压缩后、以及影响渲染的值真正变化时提交,因此「本次忽略」不记状态也不会反复打扰。

注入预览

设置页直接展示插件当前会注入的完整文本,内容来自真实渲染器而非示例文案,并按段说明「空 / 一条 / 多条」等形态的差异。便于核对模型侧实际看到的项目文档、规范与关联链接。

安装与启用

插件要求 DSH 0.2.1-rc.2(README 写明插件跑在 0.2.1 壳上,vendor 源码同步自该版本)。安装前请确认本机 DSH 版本,并在信任维护者源码的前提下阅读 MIT 许可证。插件以当前 dsh 进程权限运行,安装即扩展客户端 bundle 与 Host 逻辑,请自行评估风险。

官方安装命令(来自 README):

dsh plugin add dsh-project-groups

之后重启 DSH。cordis.patch.yml 会插入插件 bundle 并禁用官方工作区 UI 行。

验证要点:

  1. 侧栏树、搜索、视图选项、对话框应与原版 DSH 观感一致,只是分组维度变为项目;
  2. 在插件管理器中关闭插件后,官方行重新启用,行为完全回到原版。

典型用法

  1. 安装并重启后,在侧栏用项目行管理归属:新建项目、拖拽会话归类,未归属的留在「未分组」。
  2. 在设置页选择全局文档规范(无 / 默认 / 自定义),必要时开启「为每项目单独调整文档规范」。
  3. 编辑项目时填写关联链接(如 GitHub 仓库 URL),便于注入上下文;格式校验仅提示,不改写内容。
  4. 打开设置页的注入预览,确认当前会话会收到的项目文档与规范片段。
  5. 当规范变更且旧文档结构不匹配时,按模型提问在「重写 / 忽略 / 变更前忽略」中选一项。

新会话请从项目或未分组的「+」或顶栏入口创建,它们都会落在插件配置的底层工作区,而不是按目录拆多个工作区。

适用场景与注意

更适合:

  • 使用完全权限、不按目录划分日常对话,但仍希望侧栏按「项目」整理会话;
  • 需要每项目一份结构化工作文档,且希望规范演进时模型先问再迁移;
  • 希望把项目与上游仓库等链接写进运行时上下文,并在设置里核对注入内容。

需要注意:

  • 依赖 bundle patch 替换官方 UI 模块;DSH 大版本升级时,插件需与 harness 线版本对齐(README 说明 vendor 副本当前来源为 0.2.1-rc.2,升级 DSH 意味着可能要重同步 vendor)。
  • 工作文档与规范路径固定于 $DSH_HOME/project-groups/,备份或迁移 DSH 配置时需一并考虑。
  • 社区目录页星标等元数据以站点展示为准;仓库 README 侧重功能与安装,不以营销数据为证。

结尾

dsh-project-groups 把 DSH 侧栏从「目录即分组」改成「项目即标签」,并补上工作文档、可演进规范、关联链接与注入预览,适合不按目录切工作、又需要项目级整理的用法。关闭插件即可零残留恢复官方工作区行为。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜