← 返回列表
未验证
逐段改写新会话系统提示词并实时预览效果
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/14 · 已提供中文文档
dsh 插件:编辑每个新会话组装后的系统提示词(自定义文本、人设、工具指引),并支持实时预览
综合分
29.7
GitHub 分
29.7
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add n0pe-sled/system-prompt-editor该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-settings@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-typert-protocol@deepseek-ai/dsh-typert-registry用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-system-prompt-editor
一个 dsh 插件,可在设置页面中编辑本机上每个新会话的系统提示词。组装后提示词的每个稳定部分都可编辑——harness 身份、源码检出说明行、Web 界面定位、人设、文件引用说明、工具指引文本段、交付物说明以及自定义尾部——此外还有通过预览发现的第三方部分。
| 字段 | 顺序 | 非空时的效果 |
|---|---|---|
| Harness 身份 | 顺序 −100 | 替换固定的身份开头。 |
| 源码检出 | 顺序 −99 | 替换 harness 源码检出说明行。 |
| Web 界面 | 顺序 −98 | 替换 Web 界面定位部分。 |
| 人设 | 顺序 0 | 替换部署人设部分。 |
| 文件引用说明 | 顺序 99 | 替换关于提及已创建/已修改文件的说明。 |
| 工具指引 | 顺序 100–199 | 用单个部分替换各工具指引文本部分。 |
| 交付物说明 | 顺序 190 | 替换关于提及主要输出的响应格式说明。 |
| 自定义系统提示词文本 | 顺序 200 | 原样追加在人设和工具指引之后。 |
所有覆盖项在每次组装时都会被求值/应用,因此保存后会在下一个请求立即生效。无需重启。
预览中带蓝色标记的部分——Plan 模式策略、Code 模式规则和 Code SDK 指引——由 DSH 状态或 Code 模式插件拥有,并以只读方式显示(“由 DSH 管理”):它们是 agent 状态的函数,覆盖它们会与其所属插件冲突。
三个操作(每个字段卡片)
| 操作 | 行为 |
|---|---|
| 保存 | 将草稿持久化到 system-prompt-editor 设置命名空间。以“已保存”确认,或在写入未落地时(宿主端拒绝 / 修订冲突)报告,并保留草稿以免丢失任何内容。 |
| 预览系统提示词 | 显示整个组装后的提示词,即模型将看到的内容——每个部分都应用了当前草稿——按顺序逐段标注,并标记由 DSH 管理的部分。{{model}}/{{provider}} 从真实的默认模型选择中解析;没有无作用域值的引用(如 {{cwd}})会按字面渲染,而不是报错。预览中看到的第三方部分会变为可编辑卡片(按部分的通用覆盖项)。 |
| 加载当前系统提示词 | 通过一次全新的宿主端组装(不含草稿)获取该部分的当前生效文本,并加载到编辑器中——若存在存储的覆盖项则使用该覆盖项,否则使用部署默认值——因此文本区中保存的是模型当前实际读取的内容,可直接编辑并保存。保存加载的默认值会将其存储为固定覆盖项;清空回空值则恢复默认值。 |
当设置作用域正在加载时,这些操作会被禁用;在远程
(非回环)浏览器中,页面会显示一条说明,指出设置是进程本地的,并保持惰性。空的已存储值不会影响部署默认值,因此清空某个字段会恢复原始提示词,而插件根本不知道它原本是什么。
安装
在包含 system-prompt-editor/ 的目录中:
dsh plugin --profile web add ./system-prompt-editor
(首次使用 dsh plugin 会用 @deepseek-ai/dsh-base 初始化配置文件。)由于清单声明了 dsh.bundle,会追加 bundle 层;同一补丁行还会将该包加入 Web 客户端名册(dsh.client.platform: "web"),因此设置页面无需额外接线即可出现。如果 dsh 不在你的 PATH 中,请在 dsh 源码检出目录中以 pnpm dsh ... 运行同一命令,或运行 node /bin.js ...。
注册表提供的是 lib/client.js,而不是源码——更改任一半部分后,请重新构建并重启宿主(宿主部分在启动时加载):
pnpm build
重启 Web GUI:正在运行的实例的宿主部分会保留其启动时的代码
工作原理
- 存储——设置文档的 system-prompt-editor 命名空间,与所有 dsh 设置一样是机器全局的。在随附的文件提供程序下,这是 $DSH_HOME/settings.yaml(包含 system-prompt-editor: 节,其中有 text:、persona:、toolGuidance:,以及一个以节名称为键的 sections: 映射,例如 harness:identity: "...")。保存的文本在重启后仍然存在,并由机器上的每个配置文件共享。
- 节目录——src/shared/catalog.ts 固定了此构建所针对的 dsh 版本的可编辑/只读节名称、规范顺序、标签和警告;两半部分都会打包它。UI 为每个精选条目渲染一张卡片;宿主用它来生成带状标签,并在给定装配中缺少某个节时,将其插入到规范位置。
- 自定义文本贡献——插件在可配置的 order(默认 200:位于顺序 0 的部署 persona 和顺序 100–199 的工具指导之后)注册一个节(user:system-prompt-editor)。空文本会产生一个空节,装配会将其丢弃——没有自定义文本就不消耗任何 token。{{name}} 变量引用(例如 {{cwd}}、{{model}}、{{provider}})会像任何其他节一样在请求时解析。
- 覆盖——一个 system-prompt/assemble 瀑布监听器(src/shared/overrides.ts,与预览共享)会替换 deployment:persona 文本(顺序 0),将工具说明带(顺序 100–199)折叠为顺序 150 处的一个 user:tool-guidance 节,并应用每个非空的 sections[name] 条目——就地替换该名称的已装配节,或在缺失时按其目录顺序插入(像文件引用说明这样的按代理节,其注册是有作用域的,在真实会话中会被替换,而在无作用域的预览中仅作为插入出现)。工具 schema 永远不会被改动;空的已存储值不会影响默认值。
- 预览端点 — 一个运行时注册的 Typert 调用
(systemPromptEditorPreview/preview) 在宿主侧组装完整提示词
(存储的值流经瀑布流),应用草稿,并以宽松方式渲染
({{model}}/{{provider}} 来自真实的默认模型选择;任何其他未解析的引用保持字面量——一个原装 web 人设引用 {{model}}/{{cwd}},而 {{cwd}} 只能按会话得知),
返回 { rendered, sections, effective }。客户端挂载相同的描述符并解包 RemoteResult。预览在没有特定 agent 的情况下组装,因此按 agent 的预设可能不同(在 UI 说明文字中注明);在无作用域组装中缺失的按 agent 区段会以其规范带中的插入形式显示。按工具的指导区段也按 agent 注册——瀑布流监听器从每次真实组装中快照它们,预览在带内重放该快照,这也是工具指导卡片的 Load 在没有任何存储时填充的内容。
- 配置 — 插件行配置中的 order: 200(profile
cordis.patch.yml 或 --patch 覆盖层)会移动自定义区段;schema 默认值为 200。
注意事项
- 模型可见 ⟺ 已记录:编辑是模型可见的输入;会话日志
已经记录 request/header,因此运行时缓存的 provider 前缀复用
从第一个变更的 token 起就失效——这是该功能的固有特性。
- 机器关键区段有警告:覆盖 harness:identity、
harness:source 或 app:web-surface 会移除 harness 所依赖的定位信息;UI 会相应地标记这些卡片,就像它对文件引用说明所做的那样(正是它使已更改文件的链接可点击)。
- 版本固定:区段名称/顺序是内部 dsh 契约,固定
到 dsh 0.1.1-rc.2(见 src/shared/catalog.ts);升级 harness 时请提升固定版本并审查目录。较新的 dsh 将人设拆分为前缀/后缀区段——目录为人设带识别这些名称,但不会为它们添加覆盖。
验证
dsh --profile web --dump-config # shows a "# == dsh-system-prompt-editor" layer
node tests/smoke.mjs # host-half smoke check (needs pnpm build first)
node tests/integration-real.mjs # real providers (dsh-system-prompt + dsh-settings-file in a temp dir)
然后打开 web GUI → Settings → System Prompt:编辑、保存,检查
$DSH_HOME/settings.yaml(sections: 映射会获得你的键),启动一个新
会话并询问模型关于其系统提示词的信息,或导出会话日志
并检查模型可见的消息。Load current system prompt 必须按字段往返;清除字段必须恢复部署默认值。
开发
pnpm install # devDependencies (cordis, schemastery, client type packages, tsdown, typescript, react)
pnpm typecheck # tsc --noEmit
pnpm build # tsdown: lib/index.js(Node 部分)+ lib/client.js(浏览器部分)
node tests/smoke.mjs # 针对桩服务的宿主部分冒烟检查
prepare 也会运行 tsdown,因此通过 git 安装时会自行构建(pnpm ≥ 10 会要求你在配置文件的 pnpm-workspace.yaml 中将该构建脚本加入允许列表)。扫码进群