dsh-project-context:把 DSH 工作区文件夹变成项目

前言

在 DSH 的插件化用法中,会话通常围绕工作区(workspace)组织。dsh-project-context 是 buhuikongpan 维护的客户端插件,许可证为 MIT。它解决的是一个具体问题:当模型进入一个已有工作区目录后,如何自动拿到一份简短的“项目工作区约定”。

这个插件把有真实 cwd 的 DSH 工作区会话视为项目:新会话自动注入精简的项目上下文,并在输入框旁提供每会话开关。

核心机制

  • 通过 agent/pre-step 钩子注入一条独立的 user 消息块,来源标记为 project-context
  • 每次在工作区打开新会话时自动注入项目工作区约定,不需要手动追加提示词。
  • 不注册 systemPrompt.context,不参与系统提示词拼接。
  • 仅对拥有真实 cwd 的会话生效;没有 cwd 的系统/后台会话不注入。
  • 客户端 Web UI 支持中文和英文界面语言跟随。

每会话开关

输入框右侧提供「项目」开关,默认开启。

关闭后,既有的上下文块不会被删除,而是渲染为“已降级为普通工作区”的状态提示。这样可以避免同一个会话里项目约定突然消失,让模型在下一轮步骤中能看到切换后的状态。

如果需要调整注入文本或降级提示文本,可以修改 lib/index.js 中的 projectContextText() / projectDisabledText()

安装与启用

使用安装命令:

dsh plugin --profile web add dsh-project-context

安装后重启 dsh 服务。

也可以从源码安装:

dsh plugin --profile web add https://github.com/buhuikongpan/dsh-project-context

注意:不要在本包自带的 cordis.patch.yml 激活行之外,再手写同样的 insert: id: project-context,否则可能触发 duplicate loader entry id 导致启动失败。

典型用法

1、安装并重启 dsh 服务。

2、在一个工作区文件夹里打开新会话。

3、查看对话中出现独立的 <project_context> 消息块;看到带 project-context 来源标记的独立 user 消息块,说明注入成功。

4、点击输入框右侧的「项目」按钮,在开启与关闭状态之间切换。

5、在源码中做语法检查和单元测试:

npm run check
npm test

适用场景与注意

适合在 DSH Web 客户端中,为有明确工作区目录的会话增加一个稳定的项目约定入口。它也适合在某个会话里临时关闭项目上下文,同时保留一条降级提示,避免模型误以为项目约定仍然有效。

插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

资料中还提到两个版本相关事项:旧版 0.1.x 的 plain-object 状态文件会在启动时一次性迁移并备份为 .migrated;v0.3.x 写自定义会话事件可能导致重启后拒读会话(SessionFormatUnsupportedError)。另外,英文资料与中文资料在开关状态存储方式上描述不一致,本文不把具体存储位置作为确定行为。

链接

  • 独立插件目录页:https://www.skillhub.cn/plugins/buhuikongpan/dsh-project-context
  • GitHub:https://github.com/buhuikongpan/dsh-project-context
羽毛球分组比赛记分
小程序二维码

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

小夜