loulangogogo/dsh-plugins-loulan--packages-rules ↗★ 1
dsh-loulan-rules
读取本地规则文件并注入会话上下文 适合需要将全局或项目专属的Markdown规范、约定自动注入AI会话的用户。
安裝
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:loulangogogo/dsh-plugins-loulan#c6abbd5cce7efcdf7c8434be5cc52e6f4e88945e&path:packages/rules說明文件
閱讀完整 README ↗4. 使用
4.1 写规则文件
全局规则放 ~/.dsh/rules/,项目规则放 /.dsh/rules/:
~/.dsh/rules/
├── All.md # 所有项目通用的行为准则
└── Code.md # 通用编码规范
/.dsh/rules/
├── Team.md # 本项目的协作约定
└── Python.md # 本项目 Python 相关要求
文件内容是自由文本(Markdown 即可),会按原文注入,不做任何摘要或改写。
4.2 查找与排序
- 两个目录都递归收集所有普通文件;
- 目录不存在、无文件、或读取失败时静默跳过,不影响会话;
- 目录内按绝对路径排序;
- 符号链接(文件与目录)一律跳过——既避免环路,也让规则集保持确定性。
4.3 注入时机与位置
| 项 | 行为 |
|---|---|
| 时机 | 会话第一次进入的 agent/pre-step;空的首批进入(不会发起请求)保持原样 |
| 位置 | 折在用户直接输入之后、驱动追加的运行时上下文之前 |
| 作用域 | 每个会话独立;规则随该会话的历史持久保留 |
| 重复 | 可见历史或本轮已领取消息里已有本插件规则消息就跳过(恢复会话不重复) |
| 变更 | 不监听运行中的文件变化;改了规则需新开会话才生效 |
4.4 注入形态
整条消息由固定的前言、可选的省略说明,以及每个文件一个 Rules from: 段落组成:
From this point forward, please treat the content I provide next as the **persistent behavioral rules for this conversation**.
…(固定前言,约 1.5 KB,完整文本见 src/render.ts 的 INTRO)
**The following content defines the rules you must continue to follow:**
Rules from: ~/.dsh/rules/All.md
Rules from: .dsh/rules/Team.md
前言是固定的,它的字节数也计入 maxBytes。因此把 maxBytes 调到比前言还小时,所有规则文件都会因放不下而被省略。
4.5 预算与省略
| 情况 | 行为 |
|---|---|
单文件 > maxSourceBytes | 该文件整个省略,记入省略说明 |
加入某文件后整条消息 > maxBytes | 该文件整个省略,继续尝试后续更小的文件 |
| 收尾时省略说明本身撑破预算 | 从尾部继续丢弃文件,保证最终文本 ``) |
省略的文件会以「(已省略超出预算或过大的规则文件:…)」的形式列在消息开头。
5. 配置
| 字段 | 说明 | 默认 |
|---|---|---|
dshHome | DSH home 目录(全局规则位于其下的 rules/) | $DSH_HOME 或 ~/.dsh |
maxBytes | 整条规则消息的 UTF-8 字节上限;<=0 或非有限值禁用注入 | 65536(64 KiB) |
maxSourceBytes | 单个规则文件的 UTF-8 字节上限,超过则省略 | 262144(256 KiB) |
配置项均可省略;插件不导出 schemastery schema,直接使用上面的默认值。在 profile 的 cordis.patch.yml 中覆盖:
- id: rules
name: dsh-loulan-rules
config:
dshHome: /path/to/.dsh
maxBytes: 65536
maxSourceBytes: 262144