dsh-prompt-editor:在「更多设置」里统一管理全局系统提示词

前言

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 自行核对源码。

  1. 打开即显示当前保存的全局指令文本,读取的是当前 profile 的真实配置。
  2. 保存即生效:写入当前 profile 的 cordis.patch.yml,由 Loader 立即重组,下一轮对话使用新提示词,无需重启客户端(仅改浏览器半边 client.js 时刷新页面即可)。
  3. 清空即取消自定义:输入框清空再保存后,配置中的覆盖项会被移除。
  4. 设置页第一行脚注会显示当前配置来源文件路径,便于对照本机 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 截图显示其位置在「费用统计」等插件页附近,具体以你本机侧栏为准)。

典型用法

  1. 打开客户端「更多设置」,进入本插件注册的全局系统提示词页。
  2. 在文本框中编写或修改希望所有 agent 遵循的指令(例如回复结构、语气、代码解释方式等)。
  3. 保存;下一轮对话即带上新段落。若需撤销自定义,清空文本框后再次保存。

配置落盘形态示例(写在当前 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 落盘、保存后下一轮对话生效。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜