内容
# adrkit
[](./LICENSE)
**人类和智能体编写的计划的决策记忆。**
架构决策记录可被机器读取,在CI中强制执行,并对智能体可读 —— 无需离开git。
> 状态:早期,正在积极开发中。模式、`@adrkit/core`和`@adrkit/cli`已经实现 —— `adr lint`、`new`、`graph`、`explain`和`migrate --from madr`都有效,包括`affects`解析和增量、原位MADR迁移。尚未构建:CI接口(GitHub Action)、确定性评估器和MCP服务器。参见[`plan.md`](./plan.md)。
---
## 问题
您的组织做出了某个决定。六个月后,没有人记得了,该决定又被重新讨论,代码也偏离了原有的约定。现在,智能体也编写计划 —— 比任何人都能更快地编写,但没有人记得已经做出的和被拒绝的决定。
大多数ADR工具只是markdown模板和静态网站生成器。那样只能记录决策,并不能让决策真正起作用。
## 想法
将决策记录视为**带有markdown正文的键值数据**,并添加一个关键字段 —— `affects`,声明决策管辖的范围:
```yaml
---
id: "0042"
title: 使用服务器端渲染认证路由
status: 已接受
reversibility: 单向门户
blastRadius: 跨团队
affects:
- type: 路径
pattern: "apps/web/app/(authed)/**"
- type: 包
pattern: "next@>=16"
---
```
现在,工具可以回答 *"哪些决策管辖了这个拉取请求?"* —— 并将答案放在下一个决策实际做出时。
## 功能
- **`adr lint`** — 验证记录,捕获继承周期,找到相互矛盾的决策
- **`adr migrate --from madr`** — 采用现有的MADR语料库,原地增量迁移,不破坏当前工具链
- **`adr explain <path>`** — 打印管理文件的每个决策和触发的匹配器
- **`adr check <files...>`** — 验证更改的记录,并列出管理更改文件集的决策;确定性,与提供者无关, `--json`适用于工具
- **CI评论** — `@adrkit/ci` GitHub Action在触及它们的PR上显示管辖决策。只读和评论 —— 无数据库,无审批([0004](docs/adr/));使用`node24`运行器上的默认`GITHUB_TOKEN`运行,并从提交的自包含包中降级(永不使作业失败)在只读fork令牌上
- **MCP服务器** — 让智能体检索先前的决策,包括被拒绝的决策,然后在提出已经尝试过的建议之前
- **评估器** — 根据发布的标准评估提案并路由它们;确定性检查优先于人工检查
它永远不会批准任何事物。它会路由,人工会决策。
## 设计承诺
这些是强制执行的,而不是期望的。每个都链接到做出决策的记录。
| 承诺 | 记录 |
|---|---|
| Git是事实来源;每个机器写入都打开一个PR | [0001](docs/adr/), [0004](docs/adr/) |
| 模式是MADR的严格超集;迁移是增量的 | [0002](docs/adr/) |
| 干净的克隆无需凭证即可构建,测试和lint绿色 | [0007](docs/adr/) |
| 每个集成都是可选适配器;核心依赖于无 | [0007](docs/adr/) |
| 匹配解析是纯函数 —— 在CI中可复制 | [0009](docs/adr/) |
| 确定性检查在任何模型调用之前运行 | [0005](docs/adr/) |
| Bun仅是开发依赖项;发布的工件在Node上运行 | [0010](docs/adr/) |
| 解析器是确定性的;模型建议,但从不解析 | [0008](docs/adr/) |
## 狗粮
该项目中的每个决策都由该项目管辖。存储库的第一个提交是其自身的决策语料库 —— 参见[`docs/adr/`](docs/adr/)。评估器标准本身就是一个ADR,其更改随校准数据一起发布。
## 许可证
Apache-2.0 — 参见 [LICENSE](./LICENSE)。
**例外:** [`schema/`](./schema/)中的内容另外在[CC0](./schema/LICENSE)下发布。模式旨在成为共享合同;竞争实现应能够在无需考虑许可证的情况下采用它。
## 工具链
使用 [Bun](https://bun.com)构建 —— 参见
[ADR-0010](docs/adr/0010-bun-toolchain.md)。**Bun仅是开发依赖项。** 该项目发布的任何内容都不需要它:CLI、GitHub Action和MCP服务器都针对Node,并将在CI中针对Node 22和24进行烟雾测试(参见[`plan.md`](./plan.md))。
## 贡献
参见 [CONTRIBUTING.md](./CONTRIBUTING.md)。贡献需要DCO签名,并且必须从干净的克隆中构建,无需配置凭证。