TW Legal RAG

by aa0101181514 (community) · Claude Desktop, Claude Code, OpenCode, любой MCP-клиент, Windows, macOS, Linux

MCP MCP Servers Open Source v2.1.0 · 20.08.2026 активный

MCP-сервер + CLI для семантического поиска по тайваньским судебным решениям (2,25 млн документов: приговоры, административные разъяснения, решения конституционного суда) с проверкой цитирования. Только retrieval, свою LLM подключаете сами.

v2.1.0
20.08.2026 current

Установка
pip install twlegalrag
показать оригинал переведено ИИ

Taiwan Legal RAG (twlegalrag)

🌐 Язык / 語言 / 言語

繁體中文 ・ English ・ 日本語


Исходный код доступен для CLI семантического поиска судебных решений Тайваня, работающего на основе инфраструктуры поиска по 22 миллионам судебных решений Legal Detective.

CLI Taiwan Legal RAG извлекает решения судов Тайваня из публичной конечной точки TLR компании Legal Detective и подготавливает их для использования с вашими собственными AI-инструментами. Он не предоставляет юридические консультации, не вызывает какие-либо LLM и не гарантирует семантическую достоверность выходных данных сторонних моделей. Встроенная проверка цитирования проверяет только то, принадлежат ли цитируемые решения к извлечённому набору.

繁中:Taiwan Legal RAG CLI 是一個公開原始碼命令列工具,連接法律偵探建置的 2,250 萬筆 台灣裁判語義檢索服務(22,527,498 筆,截至 2026-08-22),讓你能用自然語言搜尋判決,並將檢索結果帶入自己的 AI 工具使用。

資料涵蓋(統計截至 2026-08-22,取自 production 資料庫)

一、法規範(依法位階)

位階 資料類型 數量 說明
憲法 憲法 1 部/197 條 中華民國憲法,含增修條文 12 條
憲法 釋字與憲判字 870 筆 大法官解釋 813 筆、憲法法庭判決 57 筆,有拘束全國各機關及人民之效力
法律 法律 1,083 部/45,620 條 定名為法、律、條例或通則者(中央法規標準法 §2)
命令 命令 7,474 部/132,760 條 定名為規程、規則、細則、辦法、綱要、標準或準則者(同法 §3)
命令 行政規則 83,778 筆 78 個機關發布之解釋性規定與裁量基準(行政程序法 §159),對外不生法規範效力
沿革 已廢止法規 3,230 部 法律 254 部、命令 2,974 部,及動員戡亂時期臨時條款等憲法位階規範,標示廢止狀態供查考

二、裁判與裁決

資料類型 數量 說明
裁判書(司法院各級法院) 22,527,498 筆 語義檢索+詞彙檢索+案號精確調卷;每日增量同步司法院公開資料
不當勞動行為裁決(勞動部裁決委員會) 400 筆 勞動議題查詢自動並列,明確標示為裁決、非法院判決

三、輔助資料

資料類型 數量 說明
審級關聯(上訴鏈) 4,510,000+ 筆 隨判決附 case_history,含主文「廢棄/駁回」旗標
函釋效力履歷 50,800+ 筆 廢止/停止適用/被取代狀態追蹤,引用前驗效力

法規範與裁判之取用方式:裁判書、行政規則走 hosted MCP 的語義檢索與字號精確查詢; 憲法、法律、命令於 dr-lawbot.com 站上檢索。

裁判書為每日增量同步(司法院公開資料釋出有數日時差,極新宣判的裁判請以官網為準)。 以上數字直接取自 production 資料庫並標註統計日,非估計值。

裁判書明細(依法院層級/案件類別)

法院層級 筆數
地方法院 16,686,158
地方法院簡易庭 3,268,495
高等法院及分院 1,328,661
最高法院 399,290
高等行政法院 200,600
最高行政法院 122,964
地方行政訴訟庭 78,891
智慧財產及商業法院 23,678
高雄少年及家事法院 22,113
其他專業法庭・委員會 32,250
未帶法院代碼欄位(計入總數,不列層級) 356,515
合計 22,527,498
案件類別 筆數
民事 14,232,712
刑事 7,332,321
行政 573,417
其他 24,650

行政規則發布機關明細(依文號編排者 74,685 筆)

機關 筆數
財政部 10,602
內政部國土管理署 8,769
經濟部智慧財產局 7,161
法務部 7,064
勞動部 6,257
行政院環境保護署 4,463
行政院公共工程委員會 4,104
銓敘部 3,988
經濟部 3,118
農業部 3,057
金管會 2,815
內政部 2,648
前司法行政部 1,432
法務部行政執行署 1,410
內政部戶政司 1,391
公務人員保障暨培訓委員會 684
主計總處 669
國科會 567
文化部文化資產局 561
農業部水保署 543
司法行政部 433
考選部 429
人事行政總處 322
核能安全委員會 227
原住民族委員會 224
海洋委員會 213
公平交易委員會 204
文化部 203
法務部矯正署 167
中央選舉委員會 112
農業部林業及自然保育署 103
客家委員會 97
國家發展委員會 86
考試院 85
個人資料保護委員會籌備處 73
故宮博物院 55
環境部 46
臺灣高等法院檢察署 41
法務部政風司 37
法務部廉政署 32
司法院 28
經濟部能源署 28
法務部調查局 20
其他 35 個機關(各未滿 20 筆) 88
合計 74,685

(機關名稱依函釋原始發文機關記載,含已改制機關之歷史名稱,如「行政院環境保護署」 「前司法行政部」;改制前後分列、不合併,以保留原始發文脈絡。)

為什麼不一樣

這不是一般關鍵字判決搜尋工具。背後連到的是法律偵探長期建置的 TLR 檢索服務:

  • 22,527,498 筆台灣裁判資料(截至 2026-08-22),經過結構化處理與向量化。
  • 語義模糊搜尋——不是只靠案號、法院、關鍵字,用自然語言就能找到 「概念相近但用詞不同」的判決;另有詞彙精確檢索模式供專有名詞查找。
  • 案號精確調卷——完整裁判字號自動切換精確調卷;查無時明確告知 「查無不代表該裁判不存在」,不拿語義近似結果充數。
  • 審級關聯 case_history——隨判決附上資料庫記錄的上下審級與主文 「廢棄/駁回」旗標,引用前就能看到判決是否已被上級審廢棄。
  • 行政規則雙工具——字號精確查詢(附效力狀態:已驗證有效/未驗證/已廢止/ 停止適用/已被取代)與語義檢索成對使用;函釋與判決嚴格分流,不混排、 不得引為法院見解。詳見 docs/mcp-anchor.zh.md。
  • 引用防護是一等公民——allowed_citations 白名單(只含實際讀入理由全文的 判決)、unread_candidates 標記、寫進每個 bundle 的驗證指示,加上 CLI 端的 citation check。整套設計針對法律 AI 最痛的幻覺型態:字號真實、見解捏造。
  • 本 CLI 不內建判決庫,也不暴露後端模型權重、向量索引或檢索管線細節; 它是連接公開 TLR retrieval endpoint 的工具。

與「官方網站 wrapper」型工具的差異

另一類常見做法是即時轉打司法院/法規官網的站內搜尋。兩者定位不同,可以互補:

官網 wrapper Taiwan Legal RAG
搜尋方式 官方站內關鍵字搜尋 自建 2,250 萬筆語料的語義檢索,概念相近、用詞不同也找得到
引用防護 通常無 read-whitelist + 驗證指示 + citation check
案號調卷 依官網功能 精確調卷,查無時明確告知不得臆測
審級關聯 需自行逐案追 case_history 直接附上,含廢棄標記
可用性 受官網 WAF / 改版影響,常需本地跑瀏覽器繞驗證 hosted endpoint,零本地環境需求
資料即時性 官網即時 極新公告的裁判請以官網為準
# TW Legal RAG

Сильной стороной официального wrapper-сайта являются оперативность и прямое подключение к официальным источникам; сильной стороной этого инструмента являются качество семантического поиска и дисциплина цитирования.

В отличие от инструментов юридического поиска, основанных только на ключевых словах, Taiwan Legal RAG CLI подключается к производственному бэкенду семантического поиска, построенному на основе более чем 22 миллионов судебных решений Тайваня, что обеспечивает нечёткий поиск на уровне понятий, сохраняя при этом веса моделей, инфраструктуру и частные индексы на стороне сервера.

(Пояснение формулировки: публикуется исходный код CLI, а не модели или векторной базы данных; серверная служба поиска, веса моделей и частные индексы остаются на стороне сервера и не публикуются вместе с этим инструментом.)

Что он делает / чего не делает

Делает: поиск судебных решений на естественном языке → получение структурированного списка, фрагментов полного текста решений (excerpt), ссылок для цитирования → упаковка в bundle и передача вашему собственному ИИ; также может выполнять проверку цитирования на уровне bundle для ответов, сгенерированных ИИ.

Не делает: этот инструмент не вызывает никаких LLM, не формирует юридические заключения и не одобряет выводы каких-либо моделей. Ответы должны генерироваться выбранным вами ИИ (ChatGPT / Claude / Gemini / локальная модель).

Что может проверить встроенная проверка цитирования

check — это проверка строк на уровне bundle, выполняемая по принципу "best effort", которая проверяет только:

  • находится ли номер судебного решения, на который ссылается ответ, внутри bundle (обнаружение "ссылки на номер, отсутствующий в bundle" =疑似 выдумка);
  • нет ли ссылок на решения, отсутствующие в bundle или несуществующие;
  • существование цитаты (на уровне bundle): встречается ли дословное предложение, которое ответ приписывает "суду", где-либо в тексте bundle.

Что он не может проверить (важно)

  • Является ли цитата из того самого решения, на которое указывает ответ (проверка существования лишь смотрит, "есть ли это предложение во всём bundle", не привязываясь к конкретному решению);
  • Правильно ли понята позиция суда;
  • Не выдаются ли требования сторон (истец/ответчик/апеллянт) за позицию суда;
  • Не выдаются ли попутные рассуждения за основной авторитет решения;
  • Не является ли перефразированная (paraphrase) интерпретация галлюцинацией.

Всё это требует чтения полного текста решения для оценки — именно поэтому в bundle включены фрагменты полного текста решений и инструкции по верификации, требующие от нижестоящей модели самостоятельной проверки. pass означает лишь "идентичность указанного номера соответствует bundle", а не "юридическое рассуждение корректно" или "цитата действительно из этого решения". Кроме того, check сравнивает только содержимое bundle, а не всю базу данных юридического детектива — если вы впоследствии сами откроете полный текст решения и перепишете ответ, check по-прежнему будет смотреть только на фрагменты, упакованные в bundle изначально.

Установка

pip install twlegalrag

Зависит только от httpx / typer / rich. Не требует никаких LLM-пакетов или ключей — этот инструмент не вызывает LLM.

Использование

# 1) 純檢索 — 列出符合的判決
twlegalrag search "勞資 加班費" -n 5 --read

# 2) 打包 — 產生可交給任何 AI 的 bundle ★主流程
twlegalrag pack "車禍對方全責,我可以求償什麼?" -o bundle.json
#   → 把 bundle.json 貼給 ChatGPT / Claude / Gemini,要求它只引用 bundle 內的判決

# 3) 引用檢查 — 對任何 AI 產生的答案做 bundle 層級檢查
twlegalrag check bundle.json answer.txt

# 服務是否正常
twlegalrag health

Создаваемый командой pack bundle содержит query, citation_id для каждого решения (J1, J2, ...), citation_text, citation_url, doc_id, список Layer-1, fulltext_excerpt (извлечённый фрагмент мотивировочной части решения, с ограничением по длине), case_history (связи между инстанциями, записанные в базе данных, v1.1), allowed_citations, а также раздел verification_instructions, который явно требует от нижестоящей модели цитировать только решения из bundle и помечать неподтверждённые утверждения как unverified. В stderr также выводится уведомление AI USE NOTICE.

Начиная с v1.1, verification_instructions дополнительно включает правила самопроверки на уровне интерпретаций (OPINION-LAYER SELF-CHECK), требующие от нижестоящей модели после формирования ответа последовательно проверить: (a) что интерпретация, приписанная какому-либо решению, действительно присутствует в excerpt этого решения (а не в другом, не является выводом); (b) что направление результата рассмотрения дела (удовлетворение иска / отказ / отмена / отклонение / возврат дела) не перепутано; (c) что решения, которые согласно case_history были отменены вышестоящей инстанцией, не цитируются как действующая правовая позиция. Это дополняет проверку номеров на уровне bundle в check — подлинность номера не означает подлинности интерпретации; проверку уровня интерпретаций может выполнить только модель, прочитавшая полный текст, и эти правила вписывают это действие в каждый bundle как жёсткое требование.

allowed_citations — это белый список "цитируемых решений", содержащий только те решения, полный текст мотивировочной части которых был фактически прочитан. CLI pack читает каждое решение, поэтому эти два списка совпадают. В Hosted Remote MCP search_bundle (/v1/pack), если read_top < max_results, читаются только первые read_top решений; остальные решения по-прежнему перечислены в judgments для просмотра, но перемещаются в unread_candidates (не являются авторитетными источниками, на них нельзя ссылаться как на судебную аргументацию). Подробнее см. docs/mcp-anchor.zh.md.

Настройка (необязательно)

По умолчанию используется публичная конечная точка https://tlr.dr-lawbot.com, работающая без ключа. Если поставщик услуг выдал вам API-ключ, его можно поместить в переменную окружения или в ~/.twlegalrag/config.toml (файл в git-ignore, никогда не коммитьте его):

export TWLEGALRAG_TLR_BASE_URL=https://tlr.dr-lawbot.com   # 預設
export TWLEGALRAG_TLR_API_KEY=...                          # 選用
[tlr]
# base_url = "https://tlr.dr-lawbot.com"
# api_key  = "..."

Конфиденциальность и потоки данных

Сначала чётко укажем, что никогда не проходит через сервер TLR:

  • Полное содержимое ваших диалогов с ИИ (Claude / ChatGPT / локальная модель), загруженные документы и ответы, сгенерированные ИИ, — всё это происходит между вами и вашим провайдером ИИ и никогда не проходит через TLR. TLR — это сервер, предназначенный только для поиска; единственное, что он получает, — это строка поискового запроса, которую ваш ИИ-клиент решает отправить, и номера решений, запрашиваемые впоследствии.
  • Регистрация аккаунта не требуется: публичная REST-конечная точка работает без ключа, у этого сервиса нет системы пользовательских аккаунтов, и запросы не привязаны к какой-либо учётной записи.
  • Сами данные о решениях — это публичные судебные документы Тайваня; содержимое, возвращаемое по запросу, не содержит непубличных персональных данных.

Остальное, что важно понимать о сетевой передаче:

  • Ваши поисковые термины / вопросы отправляются на поисковую конечную точку TLR (https://tlr.dr-lawbot.com) для получения решений.
  • TLR может записывать текст вашего запроса, время, метаданные, полученные из IP-адреса, и количество результатов для анализа качества поиска. Не отправляйте личные секреты или конфиденциальные факты. Запросы не используются для обучения генеративных моделей.
  • Этот инструмент не вызывает LLM и не использует серверные токены; если вы сами передаёте bundle какому-либо ИИ, эта передача и расходы происходят между вами и выбранным вами провайдером ИИ и не связаны с этим инструментом.
  • API-ключ конечной точки (если есть) помещайте в переменную окружения, не коммитьте файл конфигурации.

Как работает проверка цитирования

twlegalrag/faithful/ — это набор чистых функций с нулевыми зависимостями (используют только стандартную библиотеку re + unicodedata). Получая текст ответа и фрагменты решений из bundle, возвращают pass / needs_review / fail. По замыслу консервативны: при неуверенности возвращают needs_review, а не fail, чтобы снизить количество ложных срабатываний. Они не вызывают LLM, не обращаются к базе данных и представляют собой детерминированный анализ строк.

⚠️ Этот каталог является снимком внутренней программы; некоторые функции в нём (например, check_party_as_court / run_all_checks) не используются CLI. Их наличие не означает, что CLI может выполнять проверку уровня интерпретаций / семантическую проверку — CLI использует только две проверки уровня bundle. Пожалуйста, не воспринимайте список файлов как список функций. Подробнее см. twlegalrag/faithful/VENDORED.md.

Обновление серверной части от 2026-08-20 (hosted MCP / REST)

  • К ответу bundle добавляется result_token, позволяющий напрямую запрашивать полный текст любого решения из bundle.
  • К каждому результату добавляется hit_excerpt (предпросмотр релевантного фрагмента); цитирование по-прежнему основывается на полном тексте мотивировочной части.
  • get_judgment_fulltext поддерживает разбивку на страницы с помощью excerpt_offset, что позволяет полностью прочитать длинные решения.
  • Усилен режим точного лексического поиска (search_type: keyword / phrase), подходящий для имён собственных и технических терминов; для концептуальных вопросов рекомендуется режим hybrid по умолчанию.

Вышеперечисленное — возможности серверной части, доступные через REST и Remote MCP интерфейсы с сегодняшнего дня. CLI v2.1.0 уже обновлён: pack автоматически разбивает на страницы и полностью читает длинные решения (бюджет полного текста для каждого решения в bundle удвоен) и включает релевантный фрагмент hit_excerpt в bundle.

Другие способы подключения (тот же бэкенд TLR)

Этот CLI — один из способов подключения к службе поиска TLR. Тот же бэкенд tlr.dr-lawbot.com также поддерживает прямое подключение поиска по решениям к вашему ИИ-инструменту через Remote MCP. В обоих случаях используется одна и та же MCP-конечная точка https://tlr.dr-lawbot.com/mcp; при подключении автоматически выполняется OAuth (динамическая регистрация, без необходимости самостоятельно подавать заявку или настраивать API-ключ):

  • Claude (Remote MCP): Settings → Connectors → Add custom connector, в поле URL введите https://tlr.dr-lawbot.com/mcp.
  • ChatGPT(MCP 连接器):在 Connectors 中新增自定义 MCP 服务器,URL 填写 https://tlr.dr-lawbot.com/mcp。
  • Claude Code(Skill,走 CLI 而非 MCP):本仓库附有一个现成的 skill,位于 skills/tw-legal-rag/,将整个文件夹放到你项目的 .claude/skills/ 即可。它封装了本 CLI 的 pack 子命令,让 Claude 在你问到 台湾判决/法律论据时自动检索,并要求只引用 bundle 内的 citation_id。 skill 内附的 scripts/search_judgments.py 会自动定位可执行文件,并处理 Windows 上的两个踩雷点(详见 skill 内的 SKILL.md)。

Remote MCP 接口现有五个工具:search_bundle、search_judgments、 get_judgment_fulltext,以及 2026-08 新增的 get_legal_reference 与 search_legal_references(行政函释字号精确查询与语义检索,见 docs/mcp-anchor.zh.md);后两者尚未接入本 CLI。

本服务已登记于官方 MCP Server Registry, 名称为 io.github.aa0101181514/tw-legal-rag。

不论走 CLI、MCP 还是 Claude Code skill,答案都由你自己的 AI 生成,本服务只提供 判决内容与可验证的引用链接。

架构

你的問題
   │
[檢索]  TLR /v1/search   ──►  Layer-1 listings + result_token
   │    TLR /v1/fulltext ──►  每篇判決理由全文片段 (excerpt, 有上限)
   │
[打包]  pack ──► bundle.json (citation_id / allowed_citations / verification rules)
   │            └─► 交給你自己的 AI 工具
   │
[檢查]  check ──► bundle 層級引用檢查 (在/不在 bundle + bundle 內引文存在性)

判决库、embedding、检索逻辑都在服务器端,不在本仓库。本 CLI 是公开源代码的客户端 与引用检查工具。

免责

本工具是分析辅助,不是法律意见,也不是律师。务必自行阅读引用的判决全文。 通过 API 取得的判决为台湾公开裁判资料,你需为自己的使用负责。

License

v2.0.0 起采用 Elastic License 2.0(ELv2)。可自由使用、复制、修改与 再分发,包含商业与企业内部使用,仅有两项限制:不得将本软件本身作为 托管/代管服务提供给第三人,以及不得移除授权与声明保护。 1.2.2 以前的版本维持 MIT。

托管 API 与判决语料库从未在代码授权范围内,详见 TERMS.md。 项目名称与标识不在授权范围,详见 TRADEMARK.md。 本项目不接受外部 pull request(单一作者授权策略),详见 CONTRIBUTING.md。

Войдите, чтобы оставить комментарий