dsh-ian-rules:把项目开发规则交给 DSH,自动注入每个会话

前言

用 DSH(DeepSeek Harness)做项目开发时,团队约定往往散落在 README、口头习惯或每次对话里临时提醒 agent。规则一多,要么占满上下文,要么某次会话忘了提,行为就不一致。常见做法是手写一段「用户规则」贴进 profile,或每个项目单独维护提示片段——改规则要动配置、新开对话才稳定生效,按仓库切换时还要自己换文案。

下面介绍 dsh-ian-rules:DSH 开源插件(MIT),在 Web GUI 右侧栏提供「开发规则」面板,可视化维护全局规则与按项目规则,并在每个会话组装系统提示时,按该会话工作目录解析生效规则并注入;也可在对话里通过 ian_rules 工具直接落库。插件由社区维护者 Wraindrock 在目录 skillhub.cn 收录,分类为 admin-security;源码与说明见 GitHub(仓库当前指向 Grant-Felix/dsh-ian-rules)。

这是什么

dsh-ian-rules 是标准的 DSH profile bundle(宿主 + 浏览器 双半体):走 DSH 原生 sidebarRightTabs + sidebar.right.pane.tab 契约,与「Docker 容器」等页并列出现「开发规则」。规则数据只读写本机 $DSH_HOME/ian-rules.json(默认 ~/.dsh/ian-rules.json),不联网、不上传。没有生效规则时注入空串,对会话无额外负担。

核心功能

规则组织与命中

能力 说明
全局规则 对所有会话生效,作为跨项目的底线约定
项目规则 每个项目在页签栏有独立一页;会话工作目录落在项目路径下即参与命中;多个项目按路径由短到长串成链,规则依次叠加
追加 / 覆盖 项目级 append(全局 + 本项目)或 override(仅本项目);链上最后一个 override 会挡掉其上的全局及更短路径层
分组 每条规则可填分组名;面板按分组归拢,注入文本中为 ### 组,其上一级为 ## 全局规则 或 ## 项目:名(路径)
单条开关 每条规则可停用(保留内容、不注入);面板顶部胶囊为总开关

路径支持 ~,保存时规范为绝对路径;工作目录走软链时会用 realpath 再匹配。手工编辑 JSON 会被宿主监听并重载(另有 15 秒轮询兜底)。

面板(右侧栏「开发规则」)

页签为 3 + N:全局规则 / 项目(名册)/ 每个项目一页 / 效果预览;页签条横向滚动不折行。

  1. 顶部说明当前规则条数,主按钮为 保存并生效(有改动才可点,Ctrl/Cmd + S 同效);导出、导入、重载等在「更多」中。
  2. 无规则时提供上手说明,可 「先插入 4 条虚构示例」 再改成自己的约定。
  3. 「项目」页只管目录、别名、与全局的关系、启用与删除;规则在对应项目页编辑。

「效果预览」可选任意目录,查看真正会注入的文本(含未保存修改、命中项目、是否截断),并给出字符数与估算 token。规则较多时支持按标题 / 正文 / 分组搜索;保存带 revision,磁盘被别处改掉时返回 409,可选择载入磁盘版或覆盖,保存前会写 ian-rules.json.bak。

自动注入与按场景

  • L1 常驻:mode: "always" 的规则全文进入系统提示 section(plugin:ian-rules,order 100)。
  • L2 / L3:mode: "auto" 的规则可只把标题与标签常驻,正文在命中当前任务时再送到对话末尾(需在「更多 → 按场景注入」开启 sceneMatching,默认可为 off)。

单次注入文本上限 12000 字符,超出时先裁全局、保留项目规则,并在提示开头说明少了哪些条。注入预览与卡片上会标出约多少字、对 token 预算的影响。

ian_rules 模型工具

在对话中可直接说「把这条记进开发规则」。工具 action 支持 list / lookup / add / update / remove,可指定 global / project 与分组;list 默认有界摘要,完整注入原文需 full: true。保存后正在运行的会话下一步即生效(也可选「只对新会话生效」以免长会话重算提示缓存)。

安全与其它

HTTP 接口校验 Origin / Sec-Fetch-Site(跨站 403),POST 要求 Content-Type: application/json。若安装了插件市场,面板顶部在有新版本时会出现更新提示。

安装与启用

前置:已安装 dsh CLI(npm install -g @deepseek-ai/dsh)与 pnpm。本插件尚未以 npm 包名 dsh-ian-rules 发布到 registry,对外以 git 来源安装(README 原文如下,请按网络选一条):

# 能直连 GitHub
dsh plugin --profile web add github:Grant-Felix/dsh-ian-rules

# 国内走 Gitee 镜像(pnpm 没有 gitee: 简写,用完整地址)
dsh plugin --profile web add git+https://gitee.com/Grant-Felix/dev-rules.git

# 仓库开发调试:链到本地检出
dsh plugin --profile web add link:$PWD

装完后 重启该 profile(侧边栏底部 ↻),右侧栏页面列表中应出现「开发规则」。升级可用 dsh plugin --profile web update dsh-ian-rules,或面板 / 插件市场的更新入口;卸载:

dsh plugin --profile web remove dsh-ian-rules

卸载后 ian-rules.json 仍留在 $DSH_HOME,不会随插件删除。

若曾使用旧包名 dsh-agent-rules,需先 remove 旧包再 add 新地址;启动时若仅有 agent-rules.json / dev-rules.json,会自动复制为 ian-rules.json(原文件保留)。

典型用法

1. 在面板里建全局与项目规则

打开右侧栏「开发规则」→「全局规则」添加条目(标题 + 正文 + 可选分组)→ 在「项目」页新建项目(填写目录与别名,选择追加或覆盖)→ 进入该项目页维护规则 → 保存并生效。

2. 用效果预览核对某目录

切到「效果预览」,输入或选择目录,点「查看」,确认命中哪条项目链、全局是否被 override 挡掉、最终注入 Markdown 与字数。

3. 数据文件结构(节选)

规则持久化在 ian-rules.json,版本字段为 version: 2。示意(字段含义以 README 为准):

{
  "version": 2,
  "enabled": true,
  "sceneMatching": "off",
  "global": [
    {
      "id": "g1",
      "title": "提交前跑测试",
      "content": "npm test 必须绿",
      "group": "提交",
      "enabled": true,
      "mode": "always",
      "tags": []
    }
  ],
  "projects": [
    {
      "id": "p1",
      "path": "~/项目/foo",
      "label": "示例项目",
      "enabled": true,
      "mode": "append",
      "rules": [
        {
          "id": "r1",
          "title": "本项目用 pnpm",
          "content": "禁止 npm install",
          "group": "依赖",
          "enabled": true,
          "mode": "auto",
          "tags": ["依赖", "包管理"]
        }
      ]
    }
  ]
}

项目级 mode 为 append 或 override;规则级 mode 为 always(常驻)或 auto(按场景)。支持导出 / 导入 JSON 或 Markdown(可替换或合并)。

4. 对话内维护

对 agent 说明要写入 global 或某 project 的规则内容,由其调用 ian_rules 的 add / update 等 action;需要核对全文时用 lookup,列举项目时用 list 并视需要传 all: true。

适用场景与注意

适合谁:长期在 DSH 里做多仓库开发、希望 agent 稳定遵守同一套提交规范、依赖策略、目录约定,又不想每次手工重复提示的开发者。

权限与信任:插件以当前 dsh 进程权限读写本机 $DSH_HOME 与提供 Web API;安装前应在 GitHub 阅读源码与 MIT 许可证(NOTICE.md 说明 ian-rules.json 归使用者本人)。DSH 生态强调「一切皆插件」;skillhub.cn 为社区目录,与 DeepSeek / 幻方无官方从属关系。

改动生效:修改宿主或浏览器半体源码后,常规安装部署需 重启 profile 才能加载新 bundle;日常只改规则 JSON 或面板保存即可即时或按所选策略生效。

结尾

dsh-ian-rules 把「项目开发规则」从散落的文档和重复提醒,收拢到右侧栏可视化维护,并自动注入每个会话的系统提示(可选按场景追加正文),减少遗漏与上下文浪费。

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

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

Xiaoye