dsh-workspace-prompt:按工作区挂载自定义提示词

前言

在 DeepSeek Harness(DSH)里同时开着多个仓库时,常见矛盾是:前端项目需要 pnpm 和中文提交说明,后端要 Gradle,文档库又希望回答尽量短。把这些规则写进每次对话既重复又容易漏;写进全局提示词,又会串到别的项目。

下面介绍的插件把提示词绑在工作区(会话的绝对工作目录 cwd)上:写一次、按需打开开关,该工作区的新会话可以带上这段上下文,且与 AGENTS.md 一样以折叠的「上下文注入」形式出现,而不是用户气泡。

这是什么

dsh-workspace-prompt(npm 包名 @linbin-mk/dsh-workspace-prompt)是第三方 DeepSeek Harness 插件,由 linbin-mk 维护,不改 Harness 源码;配置与开关界面只在 Web Client 提供。

社区目录页:linbin-mk/dsh-workspace-prompt
源码与文档:GitHub

核心功能

资料中明确的行为如下。

按工作区隔离
提示词与开关都以会话 cwd 的绝对路径为 key;不同工作区互不影响。会话的 cwd 须与设置页里的工作区路径完全一致。

默认不注入
保存只写入插件 Config;在输入框工具行打开「工作区提示词」开关后,才会在 agent/pre-step 钩子里进入模型上下文。没有配置提示词的工作区不显示该开关。

每个会话只问一次
开关打开后,某会话第一次真正需要注入时,通过官方 ctx.userQuestions 弹出确认卡:选「带上」则并入本会话上下文(选项说明里会展示配置的提示词原文);选「不带」则本会话不再询问、也不再注入,开关状态不变(下个新会话会重新问)。选过「带上」的会话,若提示词文本变更或上下文被压缩,会用最新文本直接重新注入,不再询问。

持久化
数据落在插件 Config 的 prompts 与 enabled 两个可实时编辑字段,由 Harness 的 user-settings provider 写入 profile 用户层,重启不丢。

与 AGENTS.md 共存
复用官方 agent-instructions 的注入形态,transcript 里显示为折叠的「上下文注入」行。

集中管理
除斜杠命令与输入框开关外,设置 → 工作区提示词 提供工作区列表:已配置的排在前面(预览、开关),未配置的只读展示;行内可编辑、保存或清除。

无 userQuestions、headless、子代理或被托管(DELEGATED_CALLER)时,退回「开关语义」直接注入;用户关闭或忽略提问视作本轮「不带」。

安装与启用

环境要求(来自 README):Node.js ^22.19 或 >=24;DeepSeek Harness 0.2.1-rc.2 或兼容的 0.2.1 预发布版本,以及提供 ctx.settings / ctx.configForms / ctx.agent 的 Web profile;会话首次确认还需要 ctx.userQuestions(Web profile 默认含 @deepseek-ai/dsh-user-questions)。

把已发布包装进自定义 Web profile 时,按官方 README 执行:

dsh --profile web-prompt --from-default-profile web --dump-config
dsh plugin --profile web-prompt add @linbin-mk/dsh-workspace-prompt
dsh --profile web-prompt

dsh.bundle patch 会自动加入 Host 与 Client 插件行;包声明了 dsh.client 入口,web shell 会加载 lib/client.js,Host 端 lib/index.js 负责 Config 与 agent/pre-step 注入。

本地从 tarball 安装时,在插件仓库内构建并 pack 后:

pnpm install
pnpm build
pnpm pack
dsh plugin --profile web-prompt add ./linbin-mk-dsh-workspace-prompt-<version>.tgz

插件以当前 DSH 进程权限运行;安装前应自行查看 源码 与 MIT 许可证。

典型用法

README 给出的五步流程可直接复现:

  1. 在要配置的工作区里打开任意会话;
  2. 输入 /workspace-prompt,选择 配置工作区提示词,编辑后点 保存(命令仅在当前会话绑定了 cwd 时出现);
  3. 在输入框工具行点击「工作区提示词」,标签从 -关 变为 -开;
  4. 正常发消息;本会话第一次需要注入时,在确认卡上选 带上 或 不带;
  5. 不再需要时关闭开关,或在弹窗 / 设置页点 清除(清除会连同该工作区的开关状态一起删除)。

改动从下一步生效:中途打开开关,当前会话的下一次请求就会带上提示词;中途改文本,下一次请求追加新文本,历史里更早的值不变。

适用场景与注意

适合
多仓库并行、各项目规范不同(包管理器、语言、回答风格等),又希望避免全局提示词污染其他工作区的 DSH Web 用户。

界面入口
配置入口是斜杠命令 /workspace-prompt,不是工作区侧栏「更多」菜单:官方 ui-workspace 的操作菜单未提供插件扩展点,本插件通过 commandUi 与 shell.overlay 扩展,无需改 Harness 源码。

上下文预算
提示词只在开关打开时占用该工作区的上下文;内容越长,留给对话的空间越少。开关按工作区记忆:在一个会话里打开,同工作区的其他会话也会生效,直到再次关闭。

平台
本包只在 Web Client 提供界面,不提供终端或桌面端入口。

生态说明
DSH 采用「一切皆插件」的架构;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-workspace-prompt 把「项目专属规则」从全局提示词和重复粘贴里拆出来,按 cwd 隔离、默认关闭、会话首次确认后再注入,并与官方上下文注入形态对齐。需要试用或贡献时,见 目录页 与 GitHub 仓库。

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

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

Xiaoye