dsh-prompt-balance:用字节数看清 system prompt 构成,并把操作协议放在规则块之前

前言

在 DeepSeek Harness(DSH)里跑长期智能体时,规则会不断叠加:AGENTS.md、工作区策略、模板说明、数据安全附录往往叠在一起,却很少有人量过最终拼出来的 system prompt 里各占多少。README 里举过一种真实拆分:约 65% 是规则、约 10.7% 是身份——模型第一眼看到的往往是十几 KB 的「不要」,而「为谁工作、什么叫做得好」几乎被挤到后面。

没有数字,讨论 prompt 质量很难落地;「感觉太臃肿」改不动,「规则占 64,902 字节里的 42,331,且排在最前」才有依据。顺序同样重要:同样一条指令,放在组装结果靠前处,比埋在约束墙后面权重更高。

下面介绍社区插件 dsh-prompt-balance(维护者 penghao73551,分类:模型推理)。它在 DSH 上挂两个 hook、无构建步骤、无运行时依赖,用来测量各 section 的字节占比,并在规则类 section 之前插入一段可配置的 operator-protocol,同时在 agent 每步前补一段身份摘要,减轻 AGENTS.md 被上下文压缩「折叠」后身份帧丢失的问题。

这是什么

dsh-prompt-balance 的定位是:Measure what your system prompt is actually made of — then make sure the model reads the operating protocol before it reads the prohibitions(先量清 system prompt 的构成,再让模型先读操作协议、后读禁止项)。

插件通过 Cordis patch 接入 DSH,当前 package 版本为 1.0.0,许可证 MIT。社区目录页:https://www.skillhub.cn/plugins/penghao73551/dsh-prompt-balance;源码与说明:https://github.com/penghao73551/dsh-prompt-balance。SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系;安装前建议自行查看仓库源码与许可证——插件以当前 DSH 进程权限运行。

核心功能

插件只做两件事,对应两个 hook:

Hook 作用
system-prompt/assemble 把每个 section 的字节大小写入 ~/.dsh/prompt-balance.log;在所有规则类 section 之前 prepend 一段较短的 <operator-protocol>。幂等:不会重复叠第二层 gate。
agent/pre-step AGENTS.md 会以普通消息进入上下文,压缩时可能被摘要掉细节;本 hook 在指令前加约 250 字节的身份 digest,让「为谁服务」这一帧在 fold 之后仍保留。

日志里的 rules 是对名称匹配 instruction|agents|workspace|memory|rule 的 section 字节求和;若宿主命名不同,该比例仅供参考,应看 top= 列表里的 section 名与字节。

安装与启用

官方安装命令如下(来自 README,勿自行拼接 github:owner/repo):

dsh plugin --profile desktop add dsh-prompt-balance

若要先试本地目录,可使用 link 形式(路径改为你本机绝对路径):

dsh plugin --profile desktop add link:/absolute/path/to/dsh-prompt-balance

安装后重启应用。插件会在安装时写一行日志、每次 assemble 再写一行,可用下面命令确认是否生效:

tail -f ~/.dsh/prompt-balance.log

卸载:

dsh plugin --profile desktop remove dsh-prompt-balance

日志文件仍留在 ~/.dsh/prompt-balance.log,需要可自行删除。

配置

默认身份块是占位内容;gate 要发挥作用,需要在 ~/.dsh/prompt-balance.json 里写真实身份与检查项。两个键彼此独立、均可选:

  • identity:字符串数组,用换行拼接;用于 gate 与 pre-step digest。
  • gate:字符串数组;第一行是 framing,其余为编号检查项。

删除该 JSON 即恢复默认。插件不会改写你的其它 DSH 配置,除上述文件外无可配项。

示例(结构与 README 一致,内容请按你的场景改写):

{
  "identity": [
    "I am the assistant to one person: a regional manager running a multi-city store network",
    "Their output is analysis, slide decks, and operating ledgers.",
    "",
    "Their five recurring failures: claiming done without verifying, coarse self-review,",
    "pasting parts without classifying them, skipping workflow steps, acting before review.",
    "",
    "So: concrete things first, structure second; every conclusion carries its source;",
    "find the flaws yourself before shipping."
  ],
  "gate": [
    "You serve one person, not a ticket queue. Six checks before you answer:",
    "1. Enumerate before you abstract...",
    "2. Specific beats categorical..."
  ]
}

日志里能看到什么

典型一行 assemble 日志类似:

[2026-10-30T07:12:51.902Z] assemble: sections=30 in=19805B out=20862B gate=1057B rules=12943B (65.4%) top=genui:fence:5068 dsh-taste-skill:2949 identity:2402

in / out / gate 均为字节数,可单独核算 gate 成本。pre-step 行会标明 instructions 字节是否因 digest 发生变化。

兼容性与注意

  • DSH kernel 0.2.1-rc.* 及更高;README 说明已与 @deepseek-ai/dsh-system-prompt 的 waterfall 三参数 (assembly, context, next) 对齐,错误的多参数 handler 会导致 next is not a function 并拖垮工具调用。
  • Node 20+;无运行时 npm 依赖。
  • import 阶段不抛错:加载失败时桌面端会走恢复对话框,插件内部步骤会包一层并写入日志。

适合:已经在 DSH desktop profile 上跑 agent、且 system prompt 由多段规则拼装的开发者——需要先量化再谈裁剪与顺序,并愿意维护 prompt-balance.json 里的身份与 gate 文案。

不适合:期望插件自动改写 AGENTS.md 或全局 DSH 配置的用法;本插件只测量、prepend gate、pre-step 补 digest。

结尾

dsh-prompt-balance 把「prompt 里规则占比多少、谁排在最前」从感觉变成日志里的字节与 section 名,再用可配置的 operator-protocol 把操作协议挪到规则块之前,并用 pre-step 身份 digest 对抗长对话里的上下文折叠。若你在 Harness 生态里做模型推理与 agent 编排,可从目录页或 GitHub 安装,用 tail -f ~/.dsh/prompt-balance.log 观察第一次 assemble 的构成再决定是否写 ~/.dsh/prompt-balance.json。

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

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

小夜