dsh-personal-system-rules: Integrating Personal Rules into System Prompts with Three Agent Guards

前言

在 DeepSeek Harness(dsh)里跑 Agent 时,常见两类问题:一是希望有一套长期生效的「全局规则」(编码风格、回复语言、禁止事项),又不想每次手动粘贴进对话;二是模型有时会连续多步只调工具、不写说明,或在相同工具调用上打转,todo 列表长期停在 in_progress 却不再更新。单靠模型自律不够稳,需要在 harness 层做注入与步进守卫。

下面介绍社区插件 dsh-personal-system-rules(维护者 NingYuanLee),分类为工作流。它把用户指定的 Markdown 规则文件注册为系统提示段,并在每步 Agent 执行前可选启用静默提醒、重复工具调用检测、任务状态(stale todo)守卫;规则正文与守卫参数可在 dsh 设置弹窗「个性化规则」里编辑并热更新。当前 npm 包版本为 0.6.0,许可证 MIT。

这是什么

dsh-personal-system-rules 是一个 dsh 插件:将 ~/.dsh/PERSONAL-SYSTEM-RULES.md(或通过 config.file 指定的文件)以段名 user:agents-md 注入系统提示,默认 order 为 10150;同时通过 agent/pre-step 钩子挂载三类可选守卫。设置入口与插件详情页共用同一页面「设置 → 个性化规则」。

与「只在 Cursor Rules 或单次对话里写提示」相比,这里的规则挂在 dsh profile 与官方 settings 机制上,改文件后约 1 秒轮询生效,改守卫参数保存后热更新,无需重启 dsh。

核心功能

系统提示段

插件把规则 Markdown 原样注入系统提示,并可配置注入前的 header 说明段。默认文件路径为 $DSH_HOME/PERSONAL-SYSTEM-RULES.md;watchFile 以 1 秒轮询,保存后下一次模型请求即生效。

静默提醒(silent-step)

当连续 maxSilentSteps 步(默认 2)没有可见文本输出时,注入一条提醒,要求模型说明进展;同一条 Agent 链只提醒一次。设为 0 关闭。

重复操作循环检测

当连续 repeatLimit 步执行完全相同的工具调用(工具名 + 归一化后的参数)时触发。repeatAction 可选:

  • remind:注入提醒(默认行为)
  • stop:走与用户点停止相同的取消路径(agent.cancel,保留排队输入)

默认 repeatLimit: 0 表示关闭。文本回复、参数变化或新用户轮次会重置重复计数。

任务状态守卫(stale-todo)

若本轮存在 todo 列表且仍有 in_progress 项,连续 maxStaleTodoSteps 步(默认 6)未重写列表时提醒一次,之后每隔同样步数再提醒。本轮未建列表(短任务)或全部完成时不触发;0 关闭。自定义提醒文案可含占位符 {count}(未更新步数)、{inProgress}(进行中项数)。

设置界面

「规则正文」与「守卫」两块可在弹窗编辑;保存经官方 settings 写回 profile 的 cordis.patch.yml 并热更新。file、header、order 为普通配置,需在 patch 中修改;改 file 后需重载插件。

安装与启用

安装前请确认环境:Node.js >= 22.19.0,dsh >= 0.2.1-rc.2 且 < 0.3.0-0。极简预设下系统提示被截断,本插件不生效;插件停用或加载失败时不注入任何内容。

从 npm(推荐):

先用 --dump-config 准备好 profile,再添加插件:

dsh --profile my-profile --from-default-profile web --dump-config
dsh plugin --profile my-profile add dsh-personal-system-rules

从 git(固定 tag v0.6.0):

dsh plugin --profile my-profile add "git+https://github.com/NingYuanLee/dsh-personal-system-rules.git#v0.6.0"

从 GitHub Release tarball:

dsh plugin --profile my-profile add "https://github.com/NingYuanLee/dsh-personal-system-rules/releases/download/v0.6.0/dsh-personal-system-rules-0.6.0.tgz"

包不含 prepare / postinstall,安装不会执行构建脚本。

配置要点

插件在 profile 中典型片段如下(字段含义以 README 为准):

- id: system-agents-md
  name: dsh-personal-system-rules
  config:
    # file 缺省为 $DSH_HOME/PERSONAL-SYSTEM-RULES.md
    header: |
      # 用户全局系统层规则
      以下内容来自用户全局 PERSONAL-SYSTEM-RULES.md,是系统层指令,必须遵守。
    maxSilentSteps: 2
    silentReminder: ''
    repeatLimit: 0
    repeatAction: remind
    repeatReminder: ''
    maxStaleTodoSteps: 6
    staleTodoReminder: ''

maxSilentSteps、silentReminder、repeatLimit、repeatAction、repeatReminder、maxStaleTodoSteps、staleTodoReminder 为 volatile() 字段,可在设置弹窗编辑并热更新。需要更强循环约束时,可将 repeatLimit 设为大于 0 的正整数,并按需选择 remind 或 stop。

典型用法

  1. 安装插件后,在 $DSH_HOME/PERSONAL-SYSTEM-RULES.md 写入你的全局规则(例如「始终用中文回复」「改代码前先读周边文件」)。
  2. 打开 dsh 设置 → 个性化规则,在「规则正文」中直接编辑或确认与文件一致的内容;在「守卫」里按任务类型调整 maxSilentSteps、repeatLimit、maxStaleTodoSteps。
  3. 发起 Agent 任务:规则随系统提示生效;若模型长时间无文字、重复同一工具调用或 todo 长期不更新,守卫按配置注入提醒或中止本轮。

三个守卫共用同一 agent/pre-step 钩子,检测逻辑为纯函数并在仓库内独立测试,便于理解行为边界。

适用场景与注意

适合: 需要在 dsh 层统一 Agent 行为约束的开发者;长跑工具链任务中希望减少「无声刷步骤」、工具死循环、todo 假进行中的情况。

注意:

  • 循环检测只认「工具名 + 参数完全相同」的连续调用;换参数、插入文本步骤或新用户消息会重置计数。
  • repeatAction: stop 不是强杀进程,而是与用户停止同一路径的取消。
  • 安装任意 dsh 插件都会以当前 dsh 进程的用户权限运行第三方代码;安装前请阅读 源码 与 MIT 许可证。
  • DeepSeek Harness 生态理念是「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-personal-system-rules 把个人规则文件固定进系统提示,并用可配置的步进守卫约束 Agent 的常见失控模式;规则与守卫均可从设置弹窗维护。进一步了解可访问社区目录页与 GitHub 仓库:

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

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

Xiaoye