前言¶
DeepSeek Harness(DSH)在装配系统提示词时会注入 runtime 上下文、工具 schema、AGENTS.md、时间读数等系统侧内容。对某些场景来说,这些输入不仅多余,还可能干扰模型行为或消耗 token。在 DSH 生态中,一切皆插件,社区开发者可以通过插件扩展或覆盖这些行为。本文介绍的「系统提示词工作室」插件,就是用来编辑初始系统提示词,并按需屏蔽各类系统侧注入,同时提供普通/仅聊天/自定义模式切换与记忆支持。
插件定位¶
- 插件名称:dsh-prompt-studio(系统提示词工作室)
- 维护者:irislilymoon
- 分类:模型推理
- 星标:0
- 定位:DSH 桌面端 / Web 端插件,用于编辑初始系统提示词,按需屏蔽 runtime 上下文、工具 schema、AGENTS.md、时间读数等系统侧输入,支持普通/仅聊天/自定义模式切换与实时生效。
核心功能¶
模式¶
插件提供三种模式,通过设置页的「新对话默认模式」决定新会话的初始模式,已有对话可在输入框上方单独切换:
- 普通模式:完全使用 DSH 自带的系统提示词与完整工具。
- 仅聊天:只发送设置页里的「仅聊天提示词」,默认全量替换并屏蔽所有系统侧输入;可在「仅聊天屏蔽与记忆」里按需放行记忆、时间读数或个别工具。
- 自定义模式:每套模式独立保存名称、系统提示词、屏蔽总开关、单项 allow/deny、记忆开关和工具基线保护。
当前版本没有全局模式;设置页编辑的是仅聊天提示词与它自己的屏蔽/记忆配置;普通模式固定使用 DSH 默认提示词,其他组合通过自定义模式保存。
细粒度屏蔽¶
仅聊天和自定义模式都支持细粒度屏蔽,四类屏蔽项各有可折叠的单项列表:
- 屏蔽 runtime 上下文:工作目录、沙箱/审批策略、skill 目录等快照。总开关会拦截整份快照;展开单项后可以只屏蔽其中几项,或只保留工作目录。
- 屏蔽工具 schema:工具定义走独立协议字段,通常是最大的一笔 token。总开关会移除全部工具;展开单项后可以只保留个别工具。
- 屏蔽 AGENTS.md / 时间等注入:
agent-instructions、time-context、skill-catalog、skill-invocation。展开单项后可以只保留时间读数等某一项。 - 屏蔽所有非用户注入:用户角色里只要不是用户自己发的消息都过滤,包括 plan-mode、goal、schedule、session reference 等。
设置页的「仅聊天屏蔽与记忆」只作用于仅聊天模式:
- 总开关:保持「全部屏蔽」语义,未列出的新工具、新注入也会被拦截。
- 单项:默认折叠。勾选表示屏蔽该项;总开关打开时,未勾选的项会被放行;总开关关闭后,勾选单项可以只屏蔽这一项。
- 全选:把某一类的所有普通单项都勾上会自动回到总开关语义,和之前一样连未知项一起拦截;带「记忆默认」的项单独处理。
记忆¶
仅聊天和自定义模式都可以开启记忆,插件会在当前会话的工作目录读取两个文件,并在每轮装配时注入系统提示词:
SOUL.md:人格、语气、价值观和边界。文件不存在时,只在你明确要求设置人格时才建议模型创建。MEMORY.md:跨对话保留的用户偏好、项目背景和决定。文件不存在时,模型可以在学到耐久事实后自行创建。
注入内容按字面处理,不参与 {{变量}} 插值;单文件最多注入 12000 字符,超出会截断并提示模型用 read 查看全文。符号链接、指向工作目录外的文件和非普通文件会被拒绝读取。
同时默认放行这些工具/注入(带「记忆默认」标记,仍可在单项里勾选屏蔽,但记忆可能失效):
- 工具:
read、write、edit、str_replace_editor。 - 注入:
time-context(当前时间与间隔读数)。 - runtime:
working-directory:current(仅当 runtime 总开关打开时)。
记忆按工作目录隔离:不同工作区的 MEMORY.md 相互独立。想要一份跨项目共享的记忆,可以固定使用同一个工作区聊天。普通模式不使用这里的记忆开关,始终是 DSH 默认提示词 + 完整工具。
自定义模式¶
设置页的「自定义模式」板块可以新建、编辑、删除模式。每套模式独立配置:
- 提示词模式:不覆盖 / 全量替换 / 只替换开场白。
- 不覆盖:完全使用 DSH 自带的系统提示词。
- 全量替换:整个系统提示词只保留模式里的正文;Agent Teams、工具指引、plan 策略等其余段全部去掉。
- 只替换开场白:用正文替换
harness:identity和deployment:persona-prefix,其他段保留。 - 系统提示词正文:按字面注入,不参与 DSH 的
{{变量}}插值;只有{{model}}会被替换成当前模型名。 - 屏蔽总开关 + 单项:runtime、工具 schema、AGENTS.md / 时间注入、非用户注入四类总开关,以及每类的可折叠单项列表。总开关打开时,单项用于放行例外;总开关关闭时,单项用于只屏蔽选中项。
- 记忆开关:与仅聊天相同的记忆最小放行范围。
- 工具基线保护:在会话首轮和声明序列重启时保留完整工具一轮,避免之后重新打开工具被服务端拒绝(首轮会多约 9k token)。
新建模式默认使用「全量替换」,并把当前仅聊天提示词作为起点,屏蔽总开关和记忆默认关闭,可以按需调整。
安装与启用¶
桌面端插件页(推荐)¶
将插件目录放到任意位置,然后在 DSH 中打开:
设置 → 插件 → 添加插件 → 填写该目录的绝对路径:
<插件目录>\dsh-prompt-studio
安装后插件会出现在「已安装插件」,确认开关是开启状态即可;客户端部分会热更新,宿主部分按提示重启 DSH。
卸载:设置 → 插件 → 系统提示词工作室 → 卸载。
命令行(仅非桌面 profile)¶
桌面 profile 由 Electron 应用独占管理,dsh plugin --profile desktop ... 会被拒绝。桌面端请使用上面的插件页;Web / CLI profile 可以用:
dsh plugin --profile <profile-name> add "<插件目录>/dsh-prompt-studio"
典型用法¶
场景一:纯对话而不带工具与系统注入¶
在设置页编辑「仅聊天提示词」,然后在「仅聊天屏蔽与记忆」里保持默认的四类屏蔽总开关打开,不开启记忆。每轮对话只会携带你提供的提示词,不包含 DSH 默认的系统侧输入。如果你需要模型具备记忆能力,可以在「仅聊天屏蔽与记忆」里打开记忆总开关,并在单项里放行 read / write / edit / str_replace_editor 和 time-context。
场景二:默认提示词 + 完整工具 + 记忆¶
新建一个自定义模式:
- 提示词模式选择「不覆盖」,使用 DSH 默认系统提示词。
- 在「仅聊天屏蔽与记忆」里开启记忆总开关,放行上述工具与注入。
- 保存模式。
在「新对话默认模式」中选择该自定义模式。新对话会使用默认提示词 + 完整工具 + 记忆,且不会在系统提示词层面覆盖 DSH 默认内容。
场景三:切换模式实时生效¶
在已有对话的输入框上方切换模式(例如从仅聊天切到普通模式),下一轮请求会触发 startsRequestSeries: true,DSH 会用新模式替换当前激活的 system 节点,并清空后续旧节点。这意味着切换模式后不会继续沿用历史里的旧提示词,而是从新提示词开始重建请求序列。
适用场景与注意¶
适合希望精细控制系统提示词和系统侧注入的用户,例如:
- 需要纯对话而不受 DSH 默认工具、runtime 上下文干扰的场景。
- 需要保存多套提示词与屏蔽配置,在不同对话中快速切换。
- 需要在工作区中持久化记忆(
SOUL.md/MEMORY.md),让模型跨对话保持一致性。
使用前应检查源码与许可证(MIT),确保符合你的安全与合规要求。插件以当前 DSH 进程权限运行,不要在不受信任的仓库中打开包含敏感内容的 SOUL.md / MEMORY.md,以免将它们当作背景数据注入系统提示词。
短结尾¶
系统提示词工作室通过细粒度屏蔽与模式切换,让 DSH 的初始提示词与系统侧注入变得可控,适合需要纯净对话或定制系统提示词的开发者。插件目录与 GitHub 仓库见下:
- 插件目录页:https://www.skillhub.cn/plugins/irislilymoon/dsh-prompt-studio
- GitHub:https://github.com/irislilymoon/dsh-prompt-studio