dsh-workspace-prompt

DSH PLUGIN记忆与知识

仓库 linbin-mk/dsh-workspace-prompt · npm @linbin-mk/dsh-workspace-prompt

记忆与知识 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为每个工作区配置专属提示词的 DSH plugin,写一次即可在该工作区每次会话启动时自动注入模型上下文,重启后依然保留。

一句话选型结论

按资料字段整理

dsh-workspace-prompt 是记忆与知识类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 4 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类记忆与知识 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-09-29 创建于 2026-09-22
README 16.3 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add @linbin-mk/dsh-workspace-prompt@0.6.0
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.0-rc.2 等 5 个;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.0-rc.2 等 5 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名@linbin-mk/dsh-workspace-prompt可用 npm view 查看包信息

能做什么

4 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-workspace-prompt:为 DeepSeek Harness 工作区自动注入专属提示词

  • 按工作区保存专属提示词
  • 会话启动自动注入上下文
  • 斜杠命令与设置页双入口
  • 重启后提示词不丢失

适用场景

记忆文件读写

上游标签

cordisdeepseekdeepseek-harnessdsh-pluginprompt

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
  • L4.4_RESOLVED_ARTIFACT 安装版本已解析 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.0-rc.2 等 5 个),按版本装不容易报错。
  • 列出了 4 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在记忆与知识场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-workspace-prompt当前 L5 · 运行验证通过 低风险 0 0.2.0-rc.2 等 5 个 有
ruflo L3 · 安装规范通过 低风险 7.4 万 未标注 无
OpenViking L3 · 安装规范通过 低风险 3.9 万 未标注 无
WeKnora L4 · 沙盒安装通过 低风险 3.3 万 未标注 有
distilly L4 · 沙盒安装通过 低风险 2.5 万 未标注 有
EverOS L4 · 沙盒安装通过 低风险 1.3 万 未标注 有

仓库档案

记忆与知识
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方linbin-mk仓库 dsh-workspace-prompt · 默认分支 main
分类记忆与知识memory
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-09-22 · 2026-09-29最后推送 2026-09-29
本站收录2026-09-27首次进入本站目录的时间

README 全文

16.3 KB
作者原文,中文版优先;只做安全转义,不改内容

English | 简体中文

_">

dsh-workspace-prompt

给每个工作区一段专属提示词。
写一次、打开开关,这个工作区的每个新会话都会带上它;每个会话第一次带上之前,只问你一次。

> 纯第三方 DeepSeek Harness 插件,不改 Harness 源码;界面只在 Web Client 提供。

它解决什么问题

同一个 Harness 里常常并排开着好几个仓库:前端要 pnpm 和中文提交信息,后端要 Gradle,文档库只想要简洁回答。把这些规则塞进每次对话既啰嗦又容易漏;写进全局提示词,又会串到别的项目里。

dsh-workspace-prompt 把提示词挂到工作区上:

  • 按工作区隔离 —— 以会话的绝对工作目录(cwd)为 key,不同工作区互不影响。
  • 默认不注入 —— 保存只是存下来;打开输入框工具行的开关,才真正进入模型上下文。
  • 每个会话只问一次 —— 第一次真正要注入时弹一张确认卡;选「不带」的会话不再询问、也不再注入,开关状态不变。
  • 重启不丢 —— 提示词与开关保存在插件 Config 里,由 Harness 的 user-settings provider 写入 profile 用户层。
  • 与 AGENTS.md 共存 —— 复用官方 agent-instructions 的注入形态,transcript 里显示为折叠的「上下文注入」行,而不是用户气泡。

界面一览

① 用斜杠命令配置

在任意会话里输入 /workspace-prompt,选择 配置工作区提示词。命令只在当前会话绑定了 cwd 时出现。

弹窗会回显已存的值;保存 写入该工作区,清除 连同开关状态一起删除。

② 打开输入框工具行的开关

保存后,输入框工具行出现「工作区提示词-关」;点一下变成「工作区提示词-开」并带一层浅灰底色(与输入框里 ⊕ 按钮同一个灰)。没有任何提示词的工作区不会出现这个开关。

③ 每个会话首次发送时确认一次

开关打开后,某个会话第一次真正需要注入时会出现这张卡:

  • 带上 —— 选项后面直接列出该工作区配置的提示词,选了就并入本会话的模型上下文;
  • 不带 —— 本会话不再询问、也不再注入,开关保持原状(下个会话会重新问一次)。

卡片文案只显示一种语言,跟随 DSH 的界面语言:设置里选过语言就按它来,没选过则按宿主系统语言(本地 dsh web 下与浏览器的默认语言一致)。

确认卡走官方 ctx.userQuestions 通道(审批、计划评审用的是同一个通道),所以它会出现在该会话里,并且这一步会等你回答后才继续。

④ 设置页集中管理

设置 → 工作区提示词 用一张工作区列表集中管理:已配置的按名称排在前面(提示词预览、开关、展开箭头),中间用「未配置的工作区」分割行隔开,未配置的只读展示;点行就地展开编辑器,保存 / 清除都在编辑器内完成,右上角仍是原来的 添加工作区 菜单。

快速开始

安装

把已发布的包安装进自定义 Web profile。产物不含指向 Harness checkout 的路径依赖,dsh.bundle patch 会自动加入 Host 和 Client 插件行:

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

改为安装本地构建的 tarball:

pnpm install
pnpm build          # tsc 产出 lib/types/*.d.ts;tsdown 产出 lib/index.js + lib/client.js
pnpm pack
dsh plugin --profile web-prompt add ./linbin-mk-dsh-workspace-prompt-.tgz

包声明了 dsh.client 入口,插件进入组合树后 web shell 会自动加载 lib/client.js;node 端 lib/index.js 负责声明可实时编辑的 Config 并在 agent/pre-step 注入提示词。

五步用起来

  1. 打开要配置的工作区里的任意会话;
  2. 输入 /workspace-prompt,选择 配置工作区提示词,写好内容后点 保存;
  3. 在输入框工具行点击「工作区提示词」,标签从 -关 变为 -开;
  4. 正常发消息;本会话第一次需要注入时,在确认卡上选 带上 或 不带;
  5. 不再需要时,关掉开关,或在弹窗 / 设置页点 清除。

行为细节

项目 行为
作用域 提示词与开关都以会话的绝对工作目录(cwd)为 key;会话的 cwd 必须与设置页里的工作区路径完全一致。
默认状态 关闭。没有提示词的工作区不显示开关,输入框工具行与原生完全一样。
注入时机 开关打开后,在 agent/pre-step 钩子里注入;每一步先检查该内容是否已在会话上下文中,避免重复。
会话确认 每个会话只在首次真正注入时问一次。选过「带上」的会话,如果提示词文本变了、或上下文被压缩掉,会直接用最新文本重新注入,不再询问。
持久化 存在插件 Config 的 prompts / enabled 两个可实时编辑字段里,由 Harness 的 settings provider 落到 profile 用户层。
无提问通道时 profile 没有 userQuestions、headless 运行、子代理或被托管(DELEGATED_CALLER)时,退回开关语义直接注入;用户关闭/忽略(ASK_CANCELLED)视作本轮「不带」。
生效时机 改动从下一步生效:中途打开开关,当前会话的下一次请求就会带上;中途改文本,下一次请求追加新文本,历史里更早的值不变。

要求

  • Node.js ^22.19 或 >=24;
  • DeepSeek Harness 0.2.1-rc.3 或兼容的 0.2.1 预发布版本,以及提供 ctx.settings / ctx.configForms / ctx.agent 的 Web profile;会话首次确认还需要 ctx.userQuestions(Web profile 默认含 @deepseek-ai/dsh-user-questions,缺失时退回开关语义);
  • 本包只在 Web Client 端提供界面,不提供终端或桌面端入口。

工作原理

Host 端(src/index.ts + src/inject.ts,作为 Cordis 插件加载)

  • 声明 Cordis Config:prompts: Record 与 enabled: Record,都标记为 .volatile(),因此可以在设置表单里实时编辑。loader 行 id workspace-prompt 就是它的 settings 命名空间,Host 侧改动由 Harness 的 settings provider 落到 profile 用户层并实时推给插件。插件自带设置页,因此 apply 里用 ctx.settings.configure({ auto: false }) 关掉自动生成的配置页。
  • 监听 agent/pre-step。每一步读取会话的 header.cwd;只有该工作区的 enabled 为 true 时才去取 prompts。命中且该内容还没出现在会话上下文里时,先通过 ctx.get('userQuestions')?.ask(...) 问一次(每个会话只问一次,答案在整个会话里复用),选「带上」才生成一条包在 ` 里的user/message`,在 agent inbox 中维护它,并并入该步的决策,使其进入首个模型请求与持久化日志。提问前按界面语言只生成一种文案,并把提示词原文放在「带上」选项的说明里。
  • 纯注入、开关判定与 inbox 对账逻辑在 src/inject.ts(promptFor / enabledFor);提问载荷与判定在 src/confirm.ts(confirmQuestions / readInclude / SessionDecisions);文案语言的选择在 src/language.ts(优先 locale.preference,否则宿主系统语言);src/index.ts 负责把它们接到 Cordis 上下文上。
  • 问不到人时不阻塞:没有 userQuestions 服务、没人能应答(headless 运行)、当前 agent 是子代理或被托管(DELEGATED_CALLER)时,插件退回开关语义直接注入。

Client 端(src/client/index.ts,作为插件的 dsh.client 半加载)

  • 注册名为 workspace-prompt 的 CommandContribution;斜杠菜单项仅在当前会话有 cwd 时出现。
  • 注册一个 shell.overlay 模态框(WorkspacePromptModal),接到一个小的 HostObservable 上。选择该命令时通过共享配置表单(ctx.configForms.get('workspace-prompt'),entry id 与 loader 行 id 一致)读取当前值并打开模态框;表单不可写(未就绪或 Host 拒绝写入)时,保存/清除按钮保持禁用。
  • 保存 / 清除 通过同一个共享配置表单回写(form.mutate,对 prompts. 执行 set / unset 路径操作;清除会同时 unset enabled.;Host 拒绝时表单返回 false,界面按失败提示),因此回显的值与注入的值共用同一数据源。
  • 注册输入框工具行的开关(conversation.input.left,WorkspacePromptToggle):用 useSessions 取当前会话的 cwd,只在状态里存在该工作区的提示词时渲染;点击写 enabled.。两态是同一个 chip 的两种底色与两种标签:关闭 = 透明底 + 次要文字色 + -关,开启 = --dsw-specific-selector 浅灰底 + 主文字色 + -开。写失败、配置只读、以及 Host 半仍是升级前版本 时,控件用 aria-disabled + 变灰而不是真 disabled(真 disabled 会吞掉 tooltip),悬停时说明原因。
  • 注册 设置 → 工作区提示词 总览页(settings.section)。页面是一张工作区列表:已配置的按名称排在前面、显示提示词预览与开关,未配置的以只读行排在「未配置的工作区」分割行之后;点行就地展开编辑器,保存 / 清除在编辑器内完成。添加工作区 下拉的数据来自 useWorkspaces 标准钩子,只列出尚未配置提示词的已注册工作区。页面同样订阅共享配置表单:写入结果与 Host 侧变更都会立即反映到列表,表单未就绪或不可写时所有写入控件禁用。页面样式是 WorkspacePromptsSection.module.css,构建时内联进 client bundle 并自动加 wsp- 前缀。

为什么入口是斜杠命令,而不是工作区「更多」弹出菜单

packages/client/ui-workspace 里的工作区操作菜单(重命名 / 删除工作区)在 Rows.tsx 中是硬编码的,没有留给菜单项的 slot 或扩展点。不改 Harness 源码的插件无法在那两行之间插入自己的项。本插件改用已有的 commandUi + shell.overlay 扩展点,无需改动 Harness。(如果你确实想让它出现在那个弹出菜单里,需要在 ui-workspace 加一行扩展点——属于改 Harness 源码。)

说明 / 限制

  • 开关与提示词的改动都在下一步生效:中途打开开关,当前会话的下一次请求就会带上提示词;中途改文本,下一次请求追加新文本,历史里更早的值保持不变。
  • 模态框入口是斜杠命令,不是工作区「更多」弹出菜单(见上文)。
  • 本包要求 DeepSeek Harness 0.2.1-rc.3 或兼容的 0.2.1 预发布版本(插件配置即 Cordis Config,浏览器侧通过 ctx.configForms 读写)。它是独立的第三方插件,不受 Harness packages/* 的测试/覆盖率门禁约束;集成效果必须在运行中的 Harness 中验证。
  • 提示词只在开关打开时占用该工作区的上下文预算;写得越长,留给对话的空间越少。
  • 开关按工作区记忆:在一个会话里打开,该工作区的其他会话(含之后新建的)也会带上提示词,直到再次关闭。
  • 每个会话只问首次:选过「不带」的会话不会再问、也不会再注入(想在会话中途改主意,把开关关掉再打开即可——新会话自然重新问)。选过「带上」的会话若后来改了提示词文本、或上下文被压缩掉,会直接用最新文本重新注入,不再询问。
  • 确认卡文案跟随 DSH 的界面语言,只显示中文或英文中的一种:优先读设置里的 locale.preference,没选过时按宿主系统语言判断(问题协议没有本地化通道,宿主只能在提问前二选一);「带上」选项的说明直接展示该工作区配置的提示词。

故障排查

  • 斜杠菜单里没有这一项 —— 只有当前会话有 cwd 时才提供该命令;在未绑定工作区的会话里它不会出现。
  • 提示词没有注入 —— 先看输入框工具行:开关默认是 关;没有这个开关就说明当前工作区还没配置提示词。开关是 开 时,再确认提示词保存在当前会话所属工作区的 key(绝对路径)下——会话的 cwd 与你在设置页看到的工作区路径必须完全一致。
  • 输入框里没有这个开关 —— 该工作区尚未配置提示词(设计如此);用 /workspace-prompt 或设置页先保存一段。
  • 点了发送却没有出现确认卡 —— 说明这次发送本来就不需要注入:提示词已经在当前会话上下文里(只有真正要注入时才问),或者该 profile 没有 userQuestions 通道(headless / 子代理会话),此时按开关语义直接注入。
  • 升级插件后开关点不动 / 只变灰 —— 浏览器里的 client 半是每次刷新从磁盘取的,Host 半只在进程启动时加载:dsh plugin add 之后必须重启 dsh web,否则旧的 Host 会拒绝新字段(插件会直接在开关上提示这一点)。重启后旧的提示词仍保持关闭状态,需要为各工作区重新打开开关。
  • 重启后界面里没有插件 —— 用 dsh --profile web-prompt --dump-config 确认插件行已被组合进 profile;插件缺失时该行不会出现。

开发

pnpm install
pnpm build          # 构建 lib/(提交进仓库,随包发布);client 样式模块内联进 bundle
pnpm test           # vitest run

tests/manifest-identity.spec.ts 断言 package.json 的 name、cordis.patch.yml 的 insert[].name 与 tsdown.config.ts 里的 PLUGIN_ID(banner 与样式注入共用它)三者一致——改名时它会变红,而不是安静地装上一个加载不起来的包。

许可证

MIT © 2026 linbin-mk

本包为独立第三方插件,与 DeepSeek 无隶属关系。它不包含任何第三方素材,因此没有 NOTICE 文件;构建期与运行期依赖的第三方包各自遵循其自身许可证(运行时依赖以 peer dependency 形式提供,不随本包分发)。

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-workspace-prompt 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add @linbin-mk/dsh-workspace-prompt@0.6.0` 即可。对应的 npm 包名是 `@linbin-mk/dsh-workspace-prompt`。

dsh-workspace-prompt 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-workspace-prompt 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-workspace-prompt 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-workspace-prompt 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1、0.1.6-alpha.2。

dsh-workspace-prompt 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-workspace-prompt 有哪些功能?

按工作区保存专属提示词、会话启动自动注入上下文、斜杠命令与设置页双入口、重启后提示词不丢失。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

记忆与知识
按星标排序,可作替代方案

ruflo

ruflo

L3 · 安装规范通过 7.4 万 星

OpenViking

OpenViking

面向 DeepSeek Harness 的 OpenViking 记忆与上下文插件:pre-step 自动召回与画像注入、会话捕获、`vik

L3 · 安装规范通过 3.9 万 星

WeKnora

WeKnora

把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己

L4 · 沙盒安装通过 3.3 万 星

distilly

distilly

Distilly — Distill how they think into reusable Skills for any Agent o

L4 · 沙盒安装通过 2.5 万 星

EverOS

EverOS

L4 · 沙盒安装通过 1.3 万 星

MemOS

MemOS

L4 · 沙盒安装通过 1.2 万 星

linbin-mk 的其它插件

3 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。