dsh 规则、命令与技能管理:/rules 斜杠命令、设置面板可视化编辑规则(增改禁用删除、自由区域支持)、带参数的自定义命令、技能管理、AGENTS.md 自动备份与一键恢复。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-rules-manager
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:jilian-dsh/dsh-rules-manager#path:/dsh-rules-manager
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness(DSH)的规则、命令与技能管理插件:/rules 斜杠命令 + 设置页**「规则、命令与技能」面板**(可视化编辑规则、查看命令清单、自定义你自己的命令(支持禁用/启用)、管理技能(查看/禁用/启用/删除进回收站)、备份与一键恢复)。
⚡ 规则保存在
$DSH_HOME/AGENTS.md,任何修改实时生效(DSH 自动热加载),每次修改前自动备份,可随时一键恢复到任意备份时刻。当前版本 1.6.0(技能列表过滤无
SKILL.md的目录;技能卡片新增「用过 N 次/未使用」徽章与「⚠️ 核心」保护标记及开/关按钮;修正 CRLF 格式技能描述解析)。
✨ 功能
| 能力 | 入口 | 说明 |
|---|---|---|
| 列出 / 查看 / 新增 / 修改 / 删除 / 禁用 / 恢复规则 | /rules 命令 或 设置→规则、命令与技能 |
规则 = 用户全局规则(AGENTS.md),按分区组织,全文可视化编辑 |
| 命令清单 | 设置→规则、命令与技能 →「命令」 | 只读展示所有可用斜杠命令(名称/说明/用法) |
| 自定义命令 | 设置→规则、命令与技能 →「自定义命令」 | 你自己定义快捷指令:在聊天框输入 /名字,把预设内容发送给 AI 执行;支持带参数(见下);支持禁用/启用(禁用后斜杠命令停用、内容保留、随时恢复);预设内容较长时默认收起,点「详情」展开 |
| 技能管理 | 设置→规则、命令与技能 →「技能」 | 查看已安装技能(名称+简介+全文)、禁用(移出技能目录,内容原样保留)、启用(原样搬回)、删除(移入回收站 ~/.dsh/.backups/trash-<时间戳>/,随时可恢复);禁用/删除需重启 DSH 后完全生效 |
| 备份与恢复 | 设置→规则、命令与技能 →「备份与恢复」 | 查看所有自动备份(时间 / 规则条数 / 大小),一键恢复到某个备份时刻;打开本页时自动把超出的旧备份移入回收站(保留最近 5 份) |
使用示例
/rules 列出全部规则
/rules show 2 查看规则 2 全文
/rules add 我的规则|这是正文 新增规则(| 分隔标题和正文,全角半角均可)
/rules edit 2 新正文 修改规则 2 正文
/rules delete 3 删除规则 3(编号不复用)
/rules health 规则体检:统计条数/分区/自由区域,检查缺等级/空正文/长正文/重复标题
自定义命令:设置页定义 hello = "请热情地欢迎我",聊天框输入 /hello 即可触发。
⚖️ 执行等级(新用户必读)
每条规则的标题末尾写着执行等级,例如 ### [规则 9] PS 编码与命令执行(执行等级:A+D)。它决定规则被机器强制执行的程度:
| 等级 | 含义 | 机器行为 |
|---|---|---|
| A | 硬拦 | 违反规则的工具调用被直接拒绝(模型无法自行绕过) |
| B | 纠察 | 检测到违规文本时审计留痕 + 注入提醒 |
| C | 时序 | 按事件顺序判定,违规拒绝(如先授权后操作) |
| D | 自证 | 需要你(或 AI)自证说明,不硬拦 |
| M | 元规则 | 管规则本身的规则 |
- 等级可组合(如
A+D= 硬拦 + 自证)。 - 新增规则时,如果标题没写执行等级,会自动补
(执行等级:D)并提示——D 级只是自证提示、不会硬拦。想要硬拦效果,请在标题里写(执行等级:A)(可带其他等级组合)。 - 规则引擎(dsh-rule-engine)只对标题带等级、且等级含 A/C/M 的规则做工具层硬拦;B/D 级做文本纠察与自证提示。
自定义命令带参数(迭代③)
命令名后面可以跟参数,参数会拼进预设内容再发给 AI。规则 3 条:
- 预设内容里写了
{input}→ 参数整体替换到每个{input}位置(可多处使用);该命令不带参数时会提示用法,不发送残缺内容; - 没写
{input}且有参数 → 参数自动追加到预设内容末尾(换行分隔); - 没写
{input}且不带参数 → 只发预设内容本身(和之前行为完全一致,老命令不受影响)。
预设:请用一句话总结:{input}
输入:/summarize 本周工作进展
发送:请用一句话总结:本周工作进展
预设:请生成周报
输入:/weekly-report 本月收入 5 万
发送:请生成周报
本月收入 5 万 ← 参数自动追加到末尾
预设:请热情地欢迎我
输入:/hello ← 不带参数
发送:请热情地欢迎我
🕊️ 自由区域(Free Zone)支持(1.4.3)
AGENTS.md 支持一个自由区域:被 <!-- free-zone:start --> / <!-- free-zone:end --> 注释标记框住的区段。模型可读、正常生效,但规则引擎(dsh-rule-engine)不解析、不强制(不硬拦、不审计、不进 /guard rules)——适合放"想生效但不想被机器强制"的软约束、第三方守则(如法律工作守则)等。
- 区内条目格式:
### [规则 F<n>](F = Free 前缀,如F1、F2),禁止使用主编号### [规则 N]; - 管理:自由区域条目在
/rules list与设置页「规则」中以独立「自由区域」分组展示,可编辑 / 禁用 / 删除(与普通规则操作一致); - 新增普通规则:
/rules add自动插入到free-zone:start之前,不会掉进自由区; - 新增自由规则:需手动在
free-zone:start/end标记内写### [规则 F2]格式; - 转正:把 F 编号改为主编号并移出本区,规则引擎自动接管强制执行;
- 命令支持:
/rules show F1、/rules edit F1 新正文、/rules delete F1(1.4.3 起支持字母编号)。
📝 新增一条自由规则(零基础三步)
/rules add 不能把规则加进自由区域(这是刻意设计,防止普通规则掉进"引擎不强制"的区域)。请按下面三步操作:
若装有 dsh-rule-engine:先在聊天框输入
/guard unlock(AGENTS.md 受写保护,unlock 默认放行 10 分钟,钥匙只在用户手里);用记事本打开
$DSH_HOME/AGENTS.md($DSH_HOME即本机 DSH 数据目录,Windows 默认%USERPROFILE%\.dsh),拉到文件末尾,找到<!-- free-zone:start -->和<!-- free-zone:end -->两行标记,在两行之间按下面格式粘贴(编号从 F2 开始顺延,F1 已被示例占用,不能与已有编号重复):### [规则 F2] 你的守则标题 守则正文内容(想写多行就多写几行)。保存文件——立即生效,无需重启。也可以直接让 AI 助手帮你写(同样先
/guard unlock)。
注意:不要把内容写在 free-zone 标记之外,否则会被规则引擎按普通规则解析(不带执行等级则不会硬拦,但会进 /guard rules 清单)。
🛡️ 安全设计
- 自动备份:每次修改 AGENTS.md 前,完整备份到
$DSH_HOME/.backups/AGENTS.md-<时间戳>.bak,时间戳含毫秒,同一秒内连续操作也不会互相覆盖; - 保留最近 5 份(移入回收站):自动保留最近 5 份备份;超出部分移入回收站(
.backups/trash-<时间戳>/,可恢复,不永久删除)。打开「备份与恢复」页时也会自动执行一次超额清理; - 一键恢复(双保险):恢复备份时,先把当前 AGENTS.md 再自动备份一份再写回——恢复错了也能随时退回,永远不会丢数据;
- 删除不改编号:删除规则后其余编号不变,避免引用错乱;
- 命令名冲突防护:自定义命令与系统命令(/rules、/compact 等)同名会被拒绝;
- 命令名规范:只能小写字母、数字、连字符或下划线(
/^[a-z][a-z0-9_-]*$/); - 参数拼装:预设内容里的
{input}占位符会被命令后输入的内容替换(可多处使用);没写{input}时参数自动追加到预设末尾(换行分隔);含{input}的命令不带参数会提示用法(不发送残缺内容),不含{input}的命令不带参数则只发预设内容(兼容旧行为)。 - 技能管理防乱序:技能以目录名为唯一标识,无编号无分区——禁用=整目录移走、启用=原样搬回、删除=整目录进回收站,不存在"插回排序"逻辑,天然不会乱序;启用时目标已存在会被拒绝(绝不覆盖);技能名仅限字母/数字/连字符/下划线(防路径穿越)。
- 命令禁用防乱序:禁用/启用只改
commands.json条目上的disabled字段,不搬移、不改列表顺序。
🔐 权限、依赖、外部服务与失败边界(DSH STORE 披露)
面向插件商城(DSH STORE)自动审核与安装者;普通用户可跳过。 声明原则:只陈述实际能力,不因申请自动上架而省略或弱化。
- 文件访问:读写
$DSH_HOME/AGENTS.md(规则文件)与$DSH_HOME/commands.json、$DSH_HOME/disabled-rules.json(自定义命令与禁用状态);技能管理对$DSH_HOME/skills/下的技能目录做重命名/移动(禁用=移出、启用=移回、删除=移入.backups/trash-<时间戳>/,可恢复);规则修改前自动备份到$DSH_HOME/.backups/AGENTS.md-<时间戳>.bak。与规则引擎联动展示时只读rule-engine-tools.json/rule-engine.log.jsonl(服务面板)。 - 网络:无。本插件不发起任何网络请求。
- 命令执行:无。本插件不执行系统命令或子进程;"命令"指 DSH 生态的斜杠命令(如
/rules)数据操作。 - 凭据:无。不读取环境变量、API Key、令牌等凭据。
- 依赖:
dsh-rules-manager-client(配套设置面板 UI,与主包同仓库、同发布);peer 依赖@deepseek-ai/cordis、@deepseek-ai/dsh-home-paths、@deepseek-ai/dsh-typert-protocol(DSH 官方运行时接口)。package.json无安装期生命周期脚本(无 preinstall/install/postinstall/prepare)。 - 外部服务:无。
- 失败边界:规则修改先备份后写入,写失败保持原文件;技能移动采用"整目录改名",目标已存在时拒绝(绝不覆盖);恢复备份前会把当前文件再备份一次(双保险);所有操作失败均不静默——详见上文「🛡️ 安全设计」与下文「⚠️ 已知问题与踩坑」。
- 权限等级(保守自评):高(可写用户规则/命令/技能数据并移动技能目录)——建议安装前阅读「安全设计」章节并按需二次审查。
- 发行固定源:见文末「发行固定源」章节(唯一真相源,由发布脚本自动维护)。
⚠️ 已知问题与踩坑
- 投递消息必须带
id(严重,已修复):早期版本自定义命令投递给 AI 的用户消息缺id字段,会写坏 DSH 会话日志、锁死整个会话历史(history unavailable … lacks an identified message)。修复:消息补id: randomUUID(),测试已加 id 断言。 - 这是 DSH 自身的机制缺口:写入路径(
agent.followup→inbox.splice、session.append)对消息id零校验,加载路径(Session.fromRestore → assertMessageEventShape)严格校验——不对称导致坏数据落盘后整会话拒载。已反馈官方:https://github.com/deepseek-ai/deepseek-harness/discussions/1121 - 详细排查与修复记录见
docs/dsh-session-message-id-bug.md。
📦 安装
方式一:bundle 一键安装(推荐,标准 DSH 插件)
dsh-rules-manager 是符合官方规范的 bundle 包(package.json 声明 dsh.bundle,包内自带 cordis.patch.yml),可通过官方插件命令一键安装:
dsh plugin --profile web add dsh-rules-manager
dsh 会自动:安装本包及其依赖(含配套面板 dsh-rules-manager-client)、把本包追加进该 profile 的 dsh.profile.bundles、加载包内 cordis.patch.yml 挂载三个插件行(host 命令 / Remote 服务 / client 面板)。重启 DSH 后设置页出现「规则、命令与技能」,聊天框可用 /rules。
卸载:
dsh plugin --profile web remove dsh-rules-manager
本 bundle 同时满足插件市场(如 DSH Creative Workshop 类目录)的
dsh.bundle.patch结构验证收录条件。
方式二:npm 安装 + 手动装配(自动管理依赖,保持原装配方式)
本插件发布在 npm,包名 dsh-rules-manager(配套面板 dsh-rules-manager-client):
# 在 $DSH_HOME/profiles/web 目录下安装(或你配置的插件目录)
npm install dsh-rules-manager dsh-rules-manager-client
然后在 $DSH_HOME/profiles/web/cordis.patch.yml 装配(见下方「DSH 插件装配三步」第 2 步,host 引用改成 npm 包名),重启 DSH 即可。
注:npm 包与下方「拷贝」方式内容一致,二选一即可;DSH 依赖(
@deepseek-ai/*)会自动按 peerDependencies 解析。
方式三:源码拷贝(DSH 插件装配三步)
本仓库包含两个包,都需要装配:
拷贝:把
dsh-rules-manager/放到$DSH_HOME/profiles/web/下;把dsh-rules-manager-client/放到$DSH_HOME/profiles/node_modules/下;装配:在
$DSH_HOME/profiles/web/cordis.patch.yml追加:- insert: - id: rules-manager name: './rules-manager/index.js' - id: rules-manager-service name: './rules-manager/service.js' - id: rules-manager-client name: 'dsh-rules-manager-client'重启 DSH(Electron 窗口 ✕ → 重新打开)。设置页出现「规则、命令与技能」,聊天框可用
/rules。
说明:client 包必须放在
profiles/node_modules/(DSH 的 client 插件发现机制按 npm 包名解析);依赖通过profiles/node_modules的 junction 森林解析 DSH 自带包。
🏗️ 架构
dsh-rules-manager/ host 插件(纯 Node,无需构建)
├── index.js /rules 斜杠命令(聊天框管理规则)
├── service.js Remote 服务(TypertRemoteService,供设置面板调用)
├── rules-core.js 共享核心:AGENTS.md 解析 / 备份 / 增删改
dsh-rules-manager-client/ client 插件(浏览器 bundle)
├── index.js host 面占位入口
└── client.js 设置页「规则、命令与技能」面板(手写 __ModuleLoader__ bundle)
- host 端定位 home 用
@deepseek-ai/dsh-home-paths的resolveDshHome(); - client→host 通过 Typert Remote:
ctx.remote.$mount({package, descriptors})+ctx.get("remote.rulesManager"); - 自定义命令执行时用
invocation.agent.followup(message)把预设内容投递给 AI(官方投递通道)。
🧪 开发与测试
node test-service.js # 101 项断言:Remote 标记 + 规则 CRUD + 用户命令(含参数)+ 备份恢复(隔离环境)
node test-local.js # 33 项断言:/rules 命令全场景(含规则体检,隔离环境)
两个测试都用临时 DSH_HOME + AGENTS.md 副本,不触碰真实文件。
版本历史
| 版本 | 日期 | 要点 |
|---|---|---|
| 1.6.0 | 2026-09-14 | 技能列表过滤无 SKILL.md 的目录;新增技能使用次数统计(记分板口径,dsh-skill-scoreboard)与核心资产保护机制——是否保护由技能自声明(其 SKILL.md frontmatter 写 protected: true),面板可标记/取消;修复 CRLF 换行技能描述解析(影响 9 个技能) |
| 1.5.4 | 2026-09-07 | 规则 / 命令 / 技能三面板稳定版;技能管理支持查看、禁用/启用、删除进回收站 |
更早版本见 git 提交历史。
发行固定源
- 1.6.0(当前) 固定于 main Commit
1a8ff53(git checkout 1a8ff53可复现 npmdsh-rules-manager@1.6.0与 GitHub Release v1.6.0 同源代码)。
1.5.4 固定于 main 分支的发布提交(
git checkout <hash>可复现 npmdsh-rules-manager@1.5.4与 GitHub Release v1.5.4 同源代码)。发布 commit 由发布脚本在三通道完成后自动回填。
📄 许可证
MIT。版权 (c) 2026 dsh-rules-manager contributors。
本项目为社区插件,与 DeepSeek Harness 官方仓库相互独立。发现方式:GitHub 话题 dsh-plugin。
链接
同类插件
yjh051108/dsh-routing-suite★ 6993
一个仓库三件套:DSH 插件包的运行时注入器(注入、热重载、卸载、开发侧挂区一键转正、路由自愈,外带设置页插件管理:列出、卸载、拖入文件夹内化)、任务感知的思维模式路由 agent 预设(router-standard / router-spec / router-react)、以及分级两级任务协议(commit_star / lock_stage / revise_do / edit_plan / mark_task / redteam_verdict 六个工具,任务状态落盘)。注入器实现直接在库内,安装的是它自己的行为而不是一份依赖清单。
strukto-ai/mirage#dsh★ 3672
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 326
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
weijiafu14/pi2dsh★ 210
Pi Host ABI 兼容引擎:装一次之后,npm 上的 Pi 扩展原包经 `dsh plugin add <pi-package>` 直接作为 DSH 原生插件挂载。已在官方 DSH 上端到端验证 pi-mcp-adapter(完整 MCP 管理面:OAuth、resources、prompts、MCP Apps、elicitation、sampling)、@tintinweb/pi-subagents、pi-code、pi-hermes-memory、pi-background-tasks;`pi2dsh inspect` 在安装前报告一个包的兼容情况。
lire1131/dsh-undo-savepoint★ 169
DSH 撤销/回退系统:配置变更自动存档,一键撤销/恢复/回退到任意版本,支持 WebUI 与离线 CLI/GUI 工具(DSH 启动失败也能救)。
Fishquito7/dsh-skill-mcp-panel★ 166
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。