前言¶
DeepSeek Harness(DSH)里,每个 agent 的系统提示词由预设和部署级配置组合而成。若你希望「所有会话、所有 agent(含子 agent)都按同一套习惯回复」——例如先给结论、代码用大白话、语气干脆少客套——在会话里临时说一遍可以,但新开会话就要重说,子 agent 也带不上这些偏好。
更直觉的做法是去改 dsh-system-prompt 的 personaPrefix,但官方 Agent 预设会为每个 agent 挂 @deepseek-ai/dsh-persona,其段落名与部署级人设同名,语义是「遮蔽」而非并列追加,因此那样改往往不会生效且不会报错:配置里能读到,模型却收不到。
dsh-prompt-editor 是社区维护的 DSH 客户端插件(维护者 AGImentu,MIT 许可证,当前 package 版本 0.1.0)。它在「更多设置」里增加一页,用来查看、修改并保存所有 agent 共用的全局系统提示词;保存后由 Loader 立即重组,下一轮对话即生效。下文介绍它的定位、能力、安装方式与使用注意。
这是什么¶
一句话:dsh-prompt-editor 把「个人回复偏好」做成一份全局设置——在设置页写一次,之后所有 agent、子 agent 与新开会话都会自动带上,无需逐个交代。
插件纯 JavaScript(ESM),无编译步骤,不改 DSH 内核,只使用官方公开的插槽与服务。宿主侧注册独立段落名 prompt-editor:global-instructions(order 10),插入位置在官方身份行与人设前缀之后、第一方工具说明之前;因名字唯一,不会被 Agent 预设遮蔽。
分类上属于客户端插件:浏览器半边往 settings.section 插槽注册设置页(order 310),界面跟随 --dsw-alias-* 主题变量,支持中英文文案。
核心功能¶
以下能力均来自仓库 README 与 package.json 描述,安装前可在 GitHub 自行核对源码。
- 打开即显示当前保存的全局指令文本,读取的是当前 profile 的真实配置。
- 保存即生效:写入当前 profile 的
cordis.patch.yml,由 Loader 立即重组,下一轮对话使用新提示词,无需重启客户端(仅改浏览器半边client.js时刷新页面即可)。 - 清空即取消自定义:输入框清空再保存后,配置中的覆盖项会被移除。
- 设置页第一行脚注会显示当前配置来源文件路径,便于对照本机 profile 目录。
安装与启用¶
前置条件:DSH 能正常运行(Electron 桌面客户端或 dsh web)。
方式一:插件管理器(推荐,尤其桌面版)
侧栏「插件」→「添加插件」→ 粘贴本仓库的本地绝对路径(例如 D:\Desktop\dsh-prompt-editor)→ 安装。管理器会自动完成 pnpm 链接、把本包加入 dsh.profile.bundles,并通过 HMR 立即激活。
方式二:CLI
dsh plugin --profile <profile> add github:AGImentu/dsh-prompt-editor
Electron 桌面客户端的 profile 由应用独占管理,CLI 会拒绝操作(例如提示 profile "desktop" is managed exclusively by the Electron application)。桌面版请用方式一。
方式三:手动 link(CLI 不可用时)
在 $DSH_HOME/profiles/<profile> 目录执行:
pnpm add "link:<本仓库的绝对路径>"
然后把 dsh-prompt-editor 加入同一 package.json 的 dsh.profile.bundles 数组。
安装后重启客户端(或等待 HMR 重组),「更多设置」中会出现全局系统提示词页面(README 截图显示其位置在「费用统计」等插件页附近,具体以你本机侧栏为准)。
典型用法¶
- 打开客户端「更多设置」,进入本插件注册的全局系统提示词页。
- 在文本框中编写或修改希望所有 agent 遵循的指令(例如回复结构、语气、代码解释方式等)。
- 保存;下一轮对话即带上新段落。若需撤销自定义,清空文本框后再次保存。
配置落盘形态示例(写在当前 profile 的 cordis.patch.yml):
- id: prompt-editor
name: "dsh-prompt-editor"
config:
text: |-
...你的提示词...
可在设置页通过「打开配置文件」类入口定位到上述文件(以插件实际 UI 为准)。提示词中可使用 DSH 渲染期变量,例如 {{model}}、{{cwd}} 由框架保证存在;写错变量名会导致提示词组装失败,DSH 会明确报错,不会静默降级。
工作原理(简要)¶
宿主半边(index.js)通过 ctx.systemPrompt.section({ name, order, text }) 注册段落,并通过 ctx.webServer.register 提供 GET /prompt-editor/prompt 与 POST 读写;写入使用 ctx.configEditor.edit(),具备校验、原子替换与立即重组,被更高层覆盖时会明确拒绝而非写入无效文件。
浏览器半边(client.js)仅向 settings.section 注册一页 UI(React,无 JSX 构建步骤)。
| 文件 | 职责 |
|---|---|
index.js |
宿主:注册系统提示词段落与 HTTP 路由 |
client.js |
客户端:设置页 UI |
cordis.patch.yml |
向 profile 组合包插入宿主行 |
package.json |
声明 dsh.bundle.patch 与 dsh.client |
适用场景与注意¶
适合谁:需要在 DSH 内长期统一 agent 行为风格、且不想每个会话重复口述偏好的开发者或重度用户。
权限与安全:插件以当前 DSH 进程权限运行;安装前应阅读仓库源码与 MIT 许可证,确认路由与配置写入行为可接受。README 注明:读写路由与其它本地插件路由一样仅监听本机,没有额外的 cookie 校验,本机其它程序理论上也可调用并改写提示词。
已知限制(来自 README):
- 修改宿主
index.js后需重启客户端(Node 侧不参与热更)。 - 只作用于当前 profile:
dsh web与桌面客户端是不同 profile,需分别配置。 - 不要依赖直接改
personaPrefix来达到同样效果;本插件的设计目的就是绕过预设遮蔽问题。
DSH 生态理念是「一切皆插件」;社区插件目录(如 skillhub.cn)为独立站点,与 DeepSeek / 幻方无官方从属关系。本插件在目录页与 GitHub 上的星标等信息以各站点当时展示为准(抓取时 GitHub 星标为 0)。
结尾¶
若你的痛点是「全局一次设定、所有 agent 与新旧会话一致生效」,dsh-prompt-editor 提供官方插槽之上的可维护路径:设置页编辑、cordis.patch.yml 落盘、保存后下一轮对话生效。