前言¶
在 DeepSeek Harness(dsh)里做多轮对话或挂多个 agent preset 时,往往希望有一段「无论开哪个项目、哪条会话都生效」的说明——编码规范、回复语言、工具使用习惯等。若只在某个仓库的 AGENTS.md 里写,换目录或换工具就带不走;若每次手动粘贴进对话,又容易漏、难维护。
cc-switch 一类产品里有「全局提示词」的做法:一段用户文字,每次对话自动进系统提示。dsh-global-system-prompt 把同类能力接到 dsh 上,并在 Web 设置面板里直接编辑;保存后下一轮请求即生效,无需重启进程(改提示词内容时)。下面介绍它是什么、怎么装、怎么用,以及和项目 AGENTS.md、用户全局指令文件的关系。
这是什么¶
dsh-global-system-prompt 是社区维护的 dsh 插件(npm 包名 dsh-global-system-prompt,仓库 YMRwithNoworry/dsh-global-system-prompt),在 SkillHub 目录中归类为工作流。它维护一段可编辑的全局文字,通过两条通道生效:
- 系统提示词:注册为独立段落(默认
order: -900,紧跟 harness 身份行之后、persona 之前),根会话、preset 挂载的 agent、进程内 subagent 都会带上;段落名user:global-prompt不会被 preset 的 persona 覆盖。 - 项目
AGENTS.md:与会话所在项目根(向上找.git)下的AGENTS.md同步同一段正文,便于 Claude Code、Codex、Cursor、Zed 等读同一套规则,并随 git 提交。
默认提示词文件为 $DSH_HOME/global-prompt.md(即 ~/.dsh/global-prompt.md)。插件还会在注入内容末尾可选地附上两个文件的绝对路径(全局提示词文件与用户全局指令 $DSH_HOME/AGENTS.md),减少模型在磁盘上乱找「全局 AGENTS.md」的情况。
核心功能¶
系统提示词注入¶
- 每个 step 重新渲染时都会重新读文件,保存后下一次请求带上新内容。
- 内容不变时不额外污染 prompt 前缀缓存;只有这一段随编辑变化。
- 文件存在但内容为空时不注入正文(文件位置说明仍可按配置附加),可作为临时静音;文件不存在时使用配置里的
text兜底(默认为空)。 - 默认 UTF-8 注入上限
maxBytes: 65536(64 KiB),超出部分截断;Web 面板可查看实际注入字节数与预览。
同步到项目 AGENTS.md¶
会话开始时写一次,之后每个 step 复查(内容未变时开销很小)。在 AGENTS.md 末尾维护带标记的区块,区块外原有内容不动;写入采用临时文件再 rename,避免读到半截内容。提示词清空时移除区块;若文件仅由插件创建且无其他内容,会删除该文件。
Web 设置面板¶
路径:设置 → 全局提示词。可编辑、保存、重新从磁盘读取;面板展示文件路径、段落 order、项目同步状态及「写入项目的区块」预览。dsh Desktop 通过去掉跨站 Origin 等方式放行保存,避免桌面端 403。
与 preset、其他插件的分工¶
- 外部 CLI 子代理(如 Codex、Claude Code)自有提示词,不受本插件系统提示通道影响。
- 插件不写
$DSH_HOME/AGENTS.md(那是 dsh 与dsh-global-rules的用户全局指令);只在其路径说明里声明位置。 - 在 dsh 会话内,同一段规则可能既出现在系统提示词,又通过工作区
AGENTS.md被dsh-agent-instructions类上下文读入——前者是 dsh 实时通道,后者是跨工具通道;若不想在项目留痕,可关闭syncProjectAgents。
安装与启用¶
正式安装走 npm。包名必须是 dsh-global-system-prompt;npm 上另有无关包 dsh-global-prompt,不要装错。
Web 面板 profile:
dsh plugin --profile web add dsh-global-system-prompt
仅 TUI、无 Web 服务器时(注入与项目同步仍可用):
dsh plugin --profile dsh-tui add dsh-global-system-prompt
从 GitHub 安装或钉住提交:
dsh plugin --profile web add github:YMRwithNoworry/dsh-global-system-prompt
dsh plugin --profile web add github:YMRwithNoworry/dsh-global-system-prompt#<commit-sha>
dsh plugin add 会把包加入 profile 的 dependencies,并把声明了 dsh.bundle 的包追加到 dsh.profile.bundles。新增 bundle 属于启动边界,装完后需重启一次 dsh;之后只改提示词内容不需要重启。
装完可先验证配置是否合入(PowerShell 示例):
dsh --profile web --dump-config | Select-String -Context 0,8 'global-system-prompt'
应能看到 # == dsh-global-system-prompt 及 id: global-prompt 等行。
当前 npm 版本为 0.3.2(以 package.json 为准),许可证 MIT,运行环境要求 Node >= 22.19.0。插件在本地 dsh 进程内执行,安装前请自行查看仓库源码与许可证。
典型用法¶
- 按上文命令为
web或dsh-tuiprofile 安装插件,重启 dsh。 - 打开 Web:设置 → 全局提示词,在文本框写入规则(例如统一使用中文、commit 规范、禁止未请求的大范围重构),保存。
- 发起下一轮对话;当前已发出的那一轮不会变。
- 也可直接编辑
~/.dsh/global-prompt.md,再在面板点「重新读取」。 - 若希望规则进 git、给非 dsh 工具用,保持默认
syncProjectAgents: true,在会话项目根查看AGENTS.md中带BEGIN dsh-global-system-prompt的区块。
项目文件中区块形态(正文与全局提示词一致,路径以本机为准):
<!-- BEGIN dsh-global-system-prompt -->
<!--
Managed by the dsh-global-system-prompt plugin. The rules below are synced from:
(global-prompt.md 的绝对路径)
Edits inside this block are overwritten on the next sync; delete the block,
markers included, to stop syncing.
-->
Global rules — follow these in every task in this project:
(全局提示词原文)
<!-- END dsh-global-system-prompt -->
配置要点¶
默认配置在包的 cordis.patch.yml 中,段落 id 为 global-prompt。在 profile 的 ~/.dsh/profiles/<name>/cordis.patch.yml 里按 id 覆盖时,patch 会整体替换该行的 config,需写全字段。
| 字段 | 默认值 | 含义 |
|---|---|---|
enabled |
true |
总开关;false 时不注册段落、不写项目 AGENTS.md(面板路由仍在) |
file |
$DSH_HOME/global-prompt.md |
提示词文件 |
order |
-900 |
段落顺序,越小越靠前 |
text |
'' |
仅当提示词文件不存在时的兜底 |
maxBytes |
65536 |
注入 UTF-8 字节上限 |
escapeBraces |
true |
系统提示通道内中和 {{;不影响写入项目的原文 |
announcePaths |
true |
注入末尾附加两文件的绝对路径说明 |
syncProjectAgents |
true |
是否同步到项目 AGENTS.md |
projectAgentsPreamble |
Global rules — follow these in every task in this project: |
项目区块开头指令行;'' 则只留正文 |
常见组合:syncProjectAgents: false 只保留系统提示词;announcePaths: false 去掉路径说明;enabled: false 整插件停用。
适用场景与注意¶
适合:需要在所有 dsh 会话中固定 persona 之外的「用户全局规则」;希望同一套规则同步到项目 AGENTS.md,方便多工具协作与版本管理;希望模型明确知道 global-prompt.md 与 $DSH_HOME/AGENTS.md 的路径。
注意:
- 插件以当前 dsh 进程权限读写文件与项目目录;安装前请审查 GitHub 仓库 源码与 MIT 许可证。
- 项目
AGENTS.md超过 1 MiB、标记被手改坏或 IO 失败时,插件记 warning、保持原文件,系统提示注入仍继续。 - 若项目根解析到
$DSH_HOME/AGENTS.md,插件会跳过写入并 warning。 - DeepSeek Harness 生态强调「一切皆插件」;SkillHub 插件目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-global-system-prompt 用一块可编辑的全局文字,同时进入 dsh 每轮系统提示词与会话项目的 AGENTS.md,并在 Web 面板集中维护。装包后重启一次 dsh 即可开始用;之后改词保存,下一轮对话生效。