全球法律装进一个Git仓库,每个提交对应一部法律生效
tools/mcp_server.py 是最直接的入口。它是一个 Model Context Protocol 服务器,Claude 或其他支持 MCP 的客户端接上它,就能问某条法律在某天说了什么。它带 18 个只读工具、3 个提示词和一个资源模板。
工具覆盖的范围包括:找条款、按日期读条款、比较两个日期、看一条款的历史。也能列出两个日期之间生效的法律,搜索条文和变更说明,查一个词何时进入或离开法律。剩下的工具管检查先例、解析一份文书里的引注、判断哪个文本适用于一个案子。
服务器只用 Python 3.10+ 和 git。在本机通过 stdio 运行,读仓库,不改动任何东西,不发网络请求。
支撑这些查询的是一个 Git 仓库。每个司法管辖区的法律是它自己的仓库。每个提交是一部法律生效,作者写的是那部法律本身。外层仓库把子仓库按司法管辖区排列,再按变更生效的顺序把历史交错起来。所以外层的一个提交,就是所有管辖区在某一天的状态。
第一条提交日期是 1970 年 1 月 1 日,里面只有管辖树和语料库清单,没有法律。之后每个提交恰好把一个语料库推进到它的下一个提交。提交信息里的 trailer 写明语料库、语料库提交、法律和生效日期。
不写代码也能用。git log --first-parent 得到一条世界法律生效的年表。git grep --recurse-submodules <词> <提交> 搜某个时刻所有国家在施行的法律。git diff --submodule=diff <提交> <提交> 看两个时刻之间每个国家改了什么。
覆盖范围很不均匀。管辖树里有 193 个联合国成员国、其他有自己 ISO 代码的领土和欧盟。德国部分收了 1949 年以来的《基本法》和 2019 年以来的所有联邦法案。爱沙尼亚有国家法律史。法国目前只有 jurisdiction.json 和 SOURCES.md,没有历史。
捷克、西班牙、瑞士、格鲁吉亚、马耳他收的是整部成文法。美国语料库只有美国法典的 9 个标题,英国语料库是特殊教育需求法。
历史记录分三种。in-force 是带日期的官方版本。replayed 是逐个应用修正法案重建出来的,验证信息会说明检查了哪些日期。current-only 只有今天的文本。
查不到文件有两种可能:那条条款当时还没生效,或者这个语料库没覆盖到那么早。每个语料库只覆盖它 README 写明的范围。
许可是 CC0。fork、在上面做东西、装进产品,都不需要许可,也不需要署名。但法律文本本身放在各国家自己的仓库里,受那些仓库自己的条款约束。这个项目是同类美国法典项目的扩展,后者曾登上 Hacker News 榜首。
Git 存不了 1970 年以前的日期。《基本法》早期生效的变更带着 1970 年的提交日期,彼此相差一秒,顺序是对的。权威的是 In-force trailer,工具读的就是它。直接用 git log --before=1960-01-01 会得到一个错误答案,而且不报错。
只有实际生效的法律才会被固定。已通过但未生效的留在每个语料库的 future 分支上。主线只保留构建日期时仍在施行的内容。追溯适用的法律记在语料库的提交信息里,但不会改动那些更早日期显示的文本。
几个操作上的坑。看旧时刻要用 git worktree add ../then <提交>,不要在当前目录 checkout 一个旧提交。checkout 会留下当时还不存在的语料库文件夹。工具住在最后一个提交里,会跟着一起消失。语料库被维护者重建并强制推送之后,要跑 git submodule update --init。然后进那个语料库目录,跑 git fetch --force --tags。普通的 fetch 会保留同名的旧标签。
逐词归属要用 law.py words。git blame 按行工作,一行只改了一部分,整行还是记到最后一个碰它的法律上。words 逐版本比较,把每个词记到具体来源。想知道一个语料库里哪条被改得最多,进它的目录跑:
git log --format= --name-only | sort | uniq -c | sort -rn | head
日期必须写成 YYYY-MM-DD。日期落在记录开始之前或结束之后,工具会在 stderr 里说明。每个语料库自己的标签会被复制到它的路径下,比如 germany/bund/acts/gg/36。
构建是确定性的。某个语料库重建后,整个仓库从零重建并强制推送。48 个测试检查管辖树、时间线、各国已知读数。它们也检查这里的答案与各语料库自身工具读出来的是否一致。REPRODUCE.md 记录了构建命令、所用软件、固定住的提交和人工做的决定。它也没漏掉一个 AI 模型做了什么、没做什么。
关键事实
- 该项目将全球法律组织成一个Git历史,每个国家一个子模块,每个提交对应一部法律生效。
- 项目是US Code(美国法典)同类项目的扩展,后者曾登上Hacker News榜首。
- 项目采用CC0许可,可自由使用、构建、产品化,无需许可或署名。
- 法律文本存放在各国家自己的仓库中,遵循该仓库的条款。
- 每个司法管辖区的法律是其自己的仓库,每个提交是一部法律生效,由该法律写入。
- 该仓库按司法管辖区排列这些仓库,并按生效顺序交错其历史,因此一个提交代表所有管辖区在某一天的状态。
- 项目包含193个联合国成员国、其他有ISO代码的领土以及欧盟。
- 德国部分包含自1949年以来的《基本法》和自2019年以来的所有联邦法案。