dsh-projects-mode:DeepSeek Harness 的项目工作区模式

前言

DeepSeek Harness (DSH) 的核心理念是「一切皆插件」。在多会话并行开发或复杂任务拆解中,开发者常面临上下文混乱、记忆难以跨会话共享、以及长对话历史导致的 Token 消耗剧增等问题。dsh-projects-mode 是一个为 DSH Web GUI 打造的客户端插件,它引入了 WorkBuddy 风格的「项目模式」,旨在通过统一的项目视图和上下文管理机制,解决会话归属模糊、指令更新滞后和上下文冗余的问题。

核心功能

全屏管理台与侧边栏入口
插件在侧边栏功能行新增「📁 项目」入口,点击后会在中间栏全屏打开项目管理台。这是所有项目管理的操作中心,支持创建、重命名和删除项目(删除操作有二次确认,仅删除分组配置,不影响底层会话)。

实时上下文注入
这是该插件的核心差异化能力。它支持为项目编写「指令」和「记忆」:
* 指令:通过 DSH 的 system-prompt 动态段实现。写入后,指令会实时注入到本项目所有会话的上下文中,修改后立即生效,无需重启会话。
* 记忆:跨会话共享的记忆块。保存后,记忆内容会在下一个模型步骤中原位替换刷新,而非仅仅注入一次快照,确保上下文始终最新。

自动项目简报
为解决新会话建立时需要拖拽老会话历史导致 Token 消耗巨大的问题,插件会从本项目最近会话的真实历史中蒸馏出一份简报(包含标题、需求和会话时间)。
* 效果:新会话仅需约 1 千 token 的简报,相比拖拽完整历史可节省 95% 以上的 Token。
* 机制:简报按会话缓存 30 分钟,之后每步原位刷新。

Token 计量
在编辑指令或记忆的输入框中,插件会实时估算当前内容的 Token 占用。超过阈值(如 1500)会显示黄色警告,超过 4000 则显示红色,提醒开发者精简内容。

工作目录自动归属(v0.4)
在项目设置中指定工作目录路径后,该目录及其子目录下发起的会话会自动归入该项目,无需手动拖拽。
* 优先级:当多个项目路径重叠时,遵循「最长前缀优先」原则。
* 交互:手动归入会话会覆盖自动归属,且「退出选择」后不会被自动归属重新拉回。

失效归属清理与维护
* 清理:项目详情页提供「🧹 清理失效归属」功能,可一键移除指向已删除会话的记录。插件启动时会自动执行一轮清理。
* 活跃时间:会话的活跃时间基于日志文件的修改时间(mtime)计算,反映真实最后活动时刻。
* 状态行隐藏:插件会自动隐藏侧边栏底部的「Cordis Plugin · N running」状态行。

API 加固与安全
* 新增 Host 头校验和 Origin 同源校验,防止 DNS rebinding 和恶意页面跨域驱动 API。
* 简报缓存设置了上限(300 条)并在归属变更时修剪,防止长期运行导致内存膨胀。

安装与启用

请确保环境满足依赖要求:Node.js >= 20。

# 克隆插件到指定目录
git clone https://github.com/BertramWang12399/dsh-projects-mode.git ~/.dsh/plugins/dsh-projects-mode

# 通过 DSH CLI 注册插件
dsh plugin --profile web add link:$HOME/.dsh/plugins/dsh-projects-mode

安装完成后,需要重启 dsh web 进程(DSH Desktop 会自动拉起子进程)。在浏览器中,请执行硬刷新(Mac: Cmd+Shift+R,Windows: Ctrl+Shift+R)以清除缓存并加载新代码。

典型用法

  1. 启动项目台:点击侧边栏的「📁 项目」,在中间栏打开全屏管理台。
  2. 管理上下文:在管理台中编写项目的「指令」和「记忆」,保存后,新创建的会话或当前会话会立即获得这些上下文。
  3. 新建会话:在项目详情页点击「✨ 新建会话」,系统会自动注入项目简报,并立即将新会话归属到该项目。
  4. 监控 Token:在编辑指令或记忆时,观察输入框上方的实时 Token 估算,避免超出模型限制。
  5. 利用工作目录:将项目的工作目录设置为 /path/to/project,在该目录下打开新会话时,无需手动操作,系统会自动将其归入项目。
  6. 快速切换:在对话区右上角,点击浮动的项目徽标,可以快速切换当前会话所属的项目或移出项目。
  7. 维护会话列表:在项目详情页使用「🔎 过滤会话标题」快速定位特定会话,或在需要时使用「🧹 清理失效归属」清理数据。

注意事项

  • 数据存储:插件的数据文件保存在 ~/.dsh/.dsh-projects.,卸载时建议手动保留该文件(或迁移)。
  • 兼容性:该插件在 macOS arm64 平台及 DSH Desktop(DSH 0.1.1-rc.2)上经过验证,理论兼容 Linux 和 Windows。
  • 日志写入:插件不会向 session log 写入任何自定义事件,以避免触发上游事件白名单导致的读取问题。
  • 依赖:需要 Node.js 版本大于等于 20。

结语

dsh-projects-mode 通过将 DSH 的会话管理与项目化视图相结合,提供了一套从指令注入、记忆同步到 Token 优化的完整解决方案。对于需要在 DSH 中进行长期、多会话协作的开发者而言,这是一个实用的工具。

更多详情与源码:
GitHub 仓库
插件目录页

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

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

小夜