前言¶
在 DeepSeek Harness(DSH)里做智能体开发时,往往希望有一段「对所有会话都生效」的指令:项目约定、回复语言、工具使用习惯等。若每次手动编辑 ~/.dsh/AGENTS.md,或靠外部编辑器改完再重启,步骤多、也不直观。
DSH 官方 bundle @deepseek-ai/dsh-agent-instructions 会在会话开始时读取用户级 AGENTS.md 并注入 Agent 上下文;社区插件 dsh-global-prompt(维护者 Y-King666)则在 Web 设置页提供分区,用大输入框编辑并保存同一文件,注入仍走官方机制,插件只负责写入。
这是什么¶
dsh-global-prompt 是 DSH 的客户端类插件:在设置页增加「全局提示词」分区(大输入框 + 保存 / 取消),内容写入用户级全局指令文件 ~/.dsh/AGENTS.md(即 $DSH_HOME/AGENTS.md)。分类归属 SkillHub 目录中的「客户端」;仓库见 GitHub,目录页见 SkillHub。
为什么不必自己实现注入¶
@deepseek-ai/dsh-agent-instructions 在 dsh-base 中默认启用(配置项 maxBytes: 65536)。会话开始时它会读取 join(dshHome, "AGENTS.md"),包成 <system-reminder> 注入上下文,并在每一步通过 reconcileInstructionContext 比对文件版本。因此本插件只写文件,不重复造注入逻辑。
README 中的实测说明:在 Web GUI 保存后,同一会话的下一步即可收到形如 Instructions from: ~/.dsh/AGENTS.md 的提醒;删除文件后会收到 Instructions removed: ~/.dsh/AGENTS.md,无需等新会话。
核心功能¶
设置页编辑¶
客户端通过 settings.section 注册分区;宿主在 lib/index.js 注册 HTTP 路由,读写目标文件。
HTTP 接口¶
基础路径:/global-prompt/api。
- GET 返回 JSON,字段包括:
ok、exists、content、bytes、mtimeMs、path、displayPath、budgetBytes、limitBytes。 - POST,请求体
{ "content": string },上限 1 MiB,返回写入后的同结构快照。
webServer 的普通路由不经过 connection 层 token 鉴权;handler 使用与 dsh-mcp-connector 类似的 isTrustedWebRequest:Host 须为回环或属于 webRuntime.trustedHosts,拒绝 sec-fetch-site: cross-site,Origin 须与 Host 同源。
写入采用同目录临时文件再 rename 的原子替换,避免 Agent 读到半截内容;Windows 上 rename 偶发失败时退回直接写。
与官方注入的衔接¶
保存的内容即 DSH 会在各 Agent 会话中注入的用户级指令来源;体积与官方 maxBytes: 65536 等限制以运行时配置为准,GET 响应中的 budgetBytes、limitBytes 可供界面展示参考。
设置导航图标¶
第三方 settings section 在官方 shell 中默认显示兜底齿轮。本插件客户端采用 DOM 观察方式,在设置对话框导航里按分区 label 替换为接近官方 IconContextInjectionOutline 的 SVG;若结构变化找不到对应行,则保留齿轮且不抛错。
安装与启用¶
资料中的启用方式假定插件已作为 profile 的 link 依赖存在(安装路径示例:%USERPROFILE%\.dsh\plugins\dsh-global-prompt,profile 通过 junction 链到 %USERPROFILE%\.dsh\profiles\<profile>\node_modules\dsh-global-prompt,改源码可即时生效,无需重启)。
需要重新打开 bundle 时,在 DSH 中执行:
plugin_manager(action: "set_bundle", target: "dsh-global-prompt", enabled: true)
具体安装步骤以你使用的 profile 的 package.json 里 dsh.profile.bundles 及 SkillHub / 仓库说明为准;不要凭插件名自行拼接未在文档出现的 dsh plugin add 命令。
运行环境:package.json 要求 Node >=22;许可证 MIT,当前版本 1.0.0。
典型用法¶
- 在 DSH Web 界面打开设置,找到「全局提示词」(或插件注册的等价分区 label)。
- 在大输入框中编写或修改全局指令(Markdown 文本,对应
AGENTS.md全文)。 - 点击保存,内容写入
~/.dsh/AGENTS.md;点击取消则放弃未保存编辑(以界面行为为准)。 - 回到当前或新的 Agent 对话,在下一步观察上下文是否出现来自
~/.dsh/AGENTS.md的<system-reminder>;清空并保存等效于删除或清空文件后的官方移除提示。
如需脚本或外部工具同步内容,也可直接编辑同一路径文件;插件 GET/POST 接口面向本机受信 Web 请求,一般通过设置页调用即可。
适用场景与注意¶
适合:希望在 DSH 内统一管理「用户级、跨会话」Agent 指令的开发者;已使用或计划使用官方 dsh-agent-instructions 注入 AGENTS.md 的环境。
注意:
- 插件宿主半边不能
import @deepseek-ai/*:profile 的node_modules中通常没有该作用域,核心包仅在 asar 的 installAnchor 下可见。 - 不要为插件声明
peerDependencies指向@deepseek-ai/dsh*,否则evaluatePluginCompatibility可能因版本范围校验拒绝安装。 - 客户端 bundle 由宿主原样投递,无构建步骤;
lib/client.js为自注册脚本形态。 - DSH 插件在当前 dsh 进程权限下运行,安装或启用前请自行查看 仓库源码 与 MIT 许可证,确认符合你的安全与合规要求。
结尾¶
dsh-global-prompt 把「写用户级 AGENTS.md」收敛到设置页的一次保存,注入仍由官方 dsh-agent-instructions 完成,职责清晰。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。DSH 生态强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。