YMRwithNoworry/dsh-global-system-prompt ↗★ 0
dsh-global-system-prompt
cc-switch-style global prompt for DeepSeek Harness (dsh 0.1.5): one user-editable block injected into the system prompt of every conversation, mirrored into each session project's AGENTS.md, and naming the harness's user-global AGENTS.md by absolute path so the model stops hunting for it. Edited from the web settings panel. 适合需要统一配置全局指令、同步项目AGENTS文件的用户。
インストール
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:YMRwithNoworry/dsh-global-system-promptドキュメント
README 全文を読む ↗使用
打开 设置 → 全局提示词,在文本框里写内容,保存。
- 保存后下一次请求(下一轮对话)生效,当前已经发出的那一轮不变。
- 文件默认是
~/.dsh/global-prompt.md(即$DSH_HOME/global-prompt.md),也可以直接用任何编辑器改它——面板上的「重新读取」按钮会重新拉取。 - 文件存在但内容为空 = 不注入提示词正文(文件位置说明仍会附加,见
announcePaths),这也是临时静音的办法;删掉文件则回到配置里的text兜底(默认为空)。 - 面板会显示提示词文件路径、用户全局指令文件路径与状态、段落位置 order、实际注入字节数,还有一个「实际注入预览」可以展开看模型读到的原文;文件超过
maxBytes(默认 64 KiB)时超出部分不会注入。 - 面板底部还有两行关于项目
AGENTS.md的状态:本进程同步过哪些项目、最近一次动作(已创建 / 已更新 / 已是最新 / 已移除 / 已跳过 / 失败),以及「写入项目的区块」预览。
配置
配置写在行里。默认值如下(也就是本包的 cordis.patch.yml):
- id: global-prompt
config:
enabled: true
# file: ~/.dsh/global-prompt.md # 默认 $DSH_HOME/global-prompt.md;支持 ~ / ~/ / ~\
order: -900
text: ''
maxBytes: 65536
escapeBraces: true
announcePaths: true
# instructionsFile: ~/.dsh/AGENTS.md # 默认 $DSH_HOME/AGENTS.md;'' 表示不提
includeInstructions: false
pathsNote: ''
syncProjectAgents: true
# projectAgentsFileName: AGENTS.md # 写进项目根的这个文件;只能是文件名
# projectRootMarkers: ['.git'] # 向上找项目根用的标记
# projectAgentsFallback: cwd # 找不到标记:cwd 写会话目录本身 / skip 不写
# projectAgentsPreamble: 'Global rules — follow these in every task in this project:'
| 字段 | 默认值 | 含义 |
|---|---|---|
enabled | true | 总开关。false 时不注册段落、也不写项目 AGENTS.md(面板路由仍在,方便你先写好内容再打开) |
file | $DSH_HOME/global-prompt.md | 提示词文件;相对路径按进程工作目录解析 |
order | -900 | 段落位置。-1000 是 harness 身份行,0 是部署 persona 前缀,500 是 plan 策略;越小越靠前 |
text | '' | 仅当文件不存在时使用的兜底文本 |
maxBytes | 65536 | 注入内容的 UTF-8 字节上限,超出部分截断(面板会提示) |
escapeBraces | true | 中和文本里的 {{(见下);只影响系统提示词那条通道 |
announcePaths | true | 在末尾附加「文件位置说明」,写出下面两个文件的绝对路径(模型不必再找) |
instructionsFile | $DSH_HOME/AGENTS.md | dsh 自己的用户全局指令文件;用于位置说明。设为 '' 则完全不提它 |
includeInstructions | false | 把该文件的内容也并进这一段。默认关闭,因为 base 系 profile 里 dsh-agent-instructions 已经它会作为上下文注入;只有在没有挂那个插件的组装(比如自建 sdk-minimal)里才需要打开 |
pathsNote | '' | 自定义位置说明文案(原样使用、不支持占位符)。留空则用生成的英文说明 |
syncProjectAgents | true | 把提示词同步进会话项目的 AGENTS.md(见上)。false 只保留系统提示词那条通道 |
projectAgentsFileName | AGENTS.md | 项目文件的名字,只能是裸文件名(想写 CLAUDE.md 就改这里) |
projectRootMarkers | ['.git'] | 向上找项目根时的标记名;标记文件或目录都算 |
projectAgentsFallback | cwd | 一路没找到标记时:cwd 用会话工作目录本身,skip 干脆不写 |
projectAgentsPreamble | Global rules — follow these in every task in this project: | 区块开头那行给模型看的指令,原样写入;'' 只留正文 |
想覆盖某项时,在 profile 的 ~/.dsh/profiles//cordis.patch.yml 里按 id 改——patch 会整体替换该行的 config,所以要写全:
- id: global-prompt
config:
enabled: true
order: -1100 # 放到身份行之前
file: ~/.dsh/my-global-prompt.md
text: ''
maxBytes: 65536
escapeBraces: true
syncProjectAgents: true
projectAgentsPreamble: '全局规则,本项目所有任务都必须遵守:'
关于 escapeBraces(重要)
系统提示词段落会把 {{name}} 当作变量插值,遇到未注册的变量名会抛错并中断这一轮,而且没有转义语法。所以如果你会在全局提示词里写 JSON、模板、{{placeholder}} 这类内容,保持 escapeBraces: true(默认):插件会把每个 {{ 中间插入一个零宽空格(模型看不到,人眼也看不到),插值就不会命中。确实需要原样注入时才设为 false。