Grant-Felix/dev-rules ↗★ 0

dsh-dev-rules

Felix 项目开发规则:DSH 个人插件。在 Web GUI 右侧栏提供「开发规则」面板(与「Docker 容器」并列,全局规则 + 按项目覆盖),并把当前项目生效的规则自动注入每个会话的系统提示,让 agent 开发项目时自动遵守;另含 dev_rules 工具,便于在对话里直接维护规则。 适合使用Agent进行项目开发,并需要规范其代码编写规则的开发者。

패키지
dsh-dev-rules
호환성
미검증
버전
26.9.21-1
라이선스
MIT
최근 업데이트
2026. 9. 21.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Grant-Felix/dev-rules

想验「使用者装到的到底是什么」:把来源换成发布的那份再起

DSH_SANDBOX_SOURCE=github:Grant-Felix/dev-rules npm run sandbox DSH_SANDBOX_SOURCE=git+https://gitee.com/Grant-Felix/dev-rules.git npm run sandbox


沙箱有独立的 `DSH_HOME`,所以它读写的是自己的 `dev-rules.json`,**不会碰你的真实规则文件**;脚本还会拒绝把沙箱 home 指到真实 home。默认端口可用 `DSH_SANDBOX_PORT` 改。

- `lib/rules.js` 纯逻辑(规范化 / 路径匹配 / 生效规则 / 渲染 / 分组 / token 估算 / Markdown 往返),宿主、面板与测试共用;路径匹配的 win32 分支通过 platform 参数可测。
- `lib/index.js` 宿主半体:存储、提示变量注入、`/dev-rules/*` 接口、`dev_rules` 工具。
- `lib/client.js` 浏览器半体:手写的 `window.__ModuleLoader__.load({ id, factory })` bundle,只依赖 `react`,不需要打包器;纯函数内部件(token 估算 / 导入合并 / 更新提示判定)通过 `exports.__internal` 暴露给测试。
- `scripts/sandbox.sh`:上面那套隔离环境的实现(独立 `DSH_HOME` + 独立端口 + 安全闸)。
- 测试:`test/rules.test.mjs`(逻辑)、`test/host.test.mjs`(接口 / 备份 / 409 / 403 / 415 / 软链回退 / 工具)、`test/client.test.mjs`(槽位接线 / 服务晚出现 / 内部件)。
- CI:`.github/workflows/ci.yml` 在 node 20 / 22 / 24 上跑语法检查 + 测试。

## 八、代码托管

本仓遵循「本地 Forgejo 开发 / GitHub 与 Gitee 对外并受理反馈」的三平台分工:代码与提交历史以**本地 Forgejo** 为准,两个公开平台只做对外窗口与镜像。

| 平台 | 角色 | 状态 |
| --- | --- | --- |
| 本地 Forgejo(私有,走回环) | **开发主仓**,代码与历史以它为准 | 已建仓并推送(默认分支 `main`) |
| GitHub  | 对外窗口 + 反馈受理 | 已发布(公开,MIT) |
| Gitee  | 国内镜像 + 同样受理反馈 | 已发布(由 GitHub 单向同步) |

代码**单向**流动:本地 Forgejo → GitHub → Gitee,禁止把某个平台的提交反向直推到另一个平台(会造成历史分叉与重复改动)。两个平台上的 Issue 与 PR 都一样受理,但同一个问题只在**先提出的那一侧**开正式讨论,另一侧贴链接引导过去,避免两边各说各话。

推送凭据按平台分开配置:每个 host 各有一个 git credential helper,且都**校验 `host=`**、只对自己那一个平台应答,其它 host 一律静默退出 —— 否则会把 A 平台的令牌回给 B 平台。

发版版本号用**发布日期式**:`..-`,如 `26.9.21-1`(2026-09-21 当天第 1 个版本),同日第 2 个是 `26.9.21-2`;年月日**不补零**(`26.09.21-1` 不合法——semver 禁止数字标识符带前导零)。标签、清单 `version`、Release 标题与产物名用**同一串**(tag 加 `v` 前缀),三个平台推同一个 tag。

> `-x` 在 semver 里是 **prerelease**,两点要记住:**一直用它、别与不带序号的 `26.9.21` 混用**(排序上 `26.9.21-1  **代码与规则内容分开。** 本仓只装插件(开源,MIT);作者本人维护的规则内容不在本仓、也不随本仓分发,只存在于作者本机。这条边界由文件位置本身保证,不靠约定去守 —— 详见 [`NOTICE.md`](https://github.com/Grant-Felix/dev-rules/blob/83c5ff329a1ecb9e8dc37da02eee17998f904dee/NOTICE.md)。

## 九、许可

**代码开源、规则内容闭源**:

| 范围 | 许可 |
| --- | --- |
| 本仓源代码(`lib/`、`test/` 等) | **MIT**(见 `LICENSE`) |
| 本仓内的示例规则 | 随代码 MIT —— **全部虚构**,不是作者的真实规则 |
| 作者本人的规则内容 | **不开源,也不在本仓**:只存在于作者本机的 `~/.dsh/dev-rules.json` |
| 使用者自己的规则内容 | 归使用者所有,与本项目许可无关 |

范围与边界见 [`NOTICE.md`](https://github.com/Grant-Felix/dev-rules/blob/83c5ff329a1ecb9e8dc37da02eee17998f904dee/NOTICE.md)。